mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-31 02:56:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			109 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "property.hpp"
 | |
| 
 | |
| #include "data.hpp"
 | |
| #include "controlled.hpp"
 | |
| 
 | |
| namespace Nif
 | |
| {
 | |
| 
 | |
| void Property::read(NIFStream *nif)
 | |
| {
 | |
|     Named::read(nif);
 | |
|     flags = nif->getUShort();
 | |
| }
 | |
| 
 | |
| void NiTexturingProperty::Texture::read(NIFStream *nif)
 | |
| {
 | |
|     inUse = !!nif->getInt();
 | |
|     if(!inUse) return;
 | |
| 
 | |
|     texture.read(nif);
 | |
|     clamp = nif->getUInt();
 | |
|     nif->skip(4); // Filter mode. Ignoring because global filtering settings are more sensible
 | |
|     uvSet = nif->getUInt();
 | |
| 
 | |
|     // Two PS2-specific shorts.
 | |
|     nif->skip(4);
 | |
|     nif->skip(2); // Unknown short
 | |
| }
 | |
| 
 | |
| void NiTexturingProperty::Texture::post(NIFFile *nif)
 | |
| {
 | |
|     texture.post(nif);
 | |
| }
 | |
| 
 | |
| void NiTexturingProperty::read(NIFStream *nif)
 | |
| {
 | |
|     Property::read(nif);
 | |
|     apply = nif->getUInt();
 | |
| 
 | |
|     unsigned int numTextures = nif->getUInt();
 | |
| 
 | |
|     if (!numTextures)
 | |
|         return;
 | |
| 
 | |
|     textures.resize(numTextures);
 | |
|     for (unsigned int i = 0; i < numTextures; i++)
 | |
|     {
 | |
|         textures[i].read(nif);
 | |
|         // Ignore these at the moment
 | |
|         if (i == 5 && textures[5].inUse) // Bump map settings
 | |
|         {
 | |
|             /*float lumaScale =*/ nif->getFloat();
 | |
|             /*float lumaOffset =*/ nif->getFloat();
 | |
|             /*const Vector4 *lumaMatrix =*/ nif->getVector4();
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| void NiTexturingProperty::post(NIFFile *nif)
 | |
| {
 | |
|     Property::post(nif);
 | |
|     for(int i = 0;i < 7;i++)
 | |
|         textures[i].post(nif);
 | |
| }
 | |
| 
 | |
| void NiFogProperty::read(NIFStream *nif)
 | |
| {
 | |
|     Property::read(nif);
 | |
| 
 | |
|     mFogDepth = nif->getFloat();
 | |
|     mColour = nif->getVector3();
 | |
| }
 | |
| 
 | |
| void S_MaterialProperty::read(NIFStream *nif)
 | |
| {
 | |
|     ambient = nif->getVector3();
 | |
|     diffuse = nif->getVector3();
 | |
|     specular = nif->getVector3();
 | |
|     emissive = nif->getVector3();
 | |
|     glossiness = nif->getFloat();
 | |
|     alpha = nif->getFloat();
 | |
| }
 | |
| 
 | |
| void S_VertexColorProperty::read(NIFStream *nif)
 | |
| {
 | |
|     vertmode = nif->getInt();
 | |
|     lightmode = nif->getInt();
 | |
| }
 | |
| 
 | |
| void S_AlphaProperty::read(NIFStream *nif)
 | |
| {
 | |
|     threshold = nif->getChar();
 | |
| }
 | |
| 
 | |
| void S_StencilProperty::read(NIFStream *nif)
 | |
| {
 | |
|     enabled = nif->getChar();
 | |
|     compareFunc = nif->getInt();
 | |
|     stencilRef = nif->getUInt();
 | |
|     stencilMask = nif->getUInt();
 | |
|     failAction = nif->getInt();
 | |
|     zFailAction = nif->getInt();
 | |
|     zPassAction = nif->getInt();
 | |
|     drawMode = nif->getInt();
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| }
 |