You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openmw/components/nif/property.cpp

108 lines
2.1 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->getBoolean();
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);
if (i == 5 && textures[5].inUse) // Bump map settings
{
envMapLumaBias = nif->getVector2();
bumpMapMatrix = 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();
}
}