XPlor/libs/xassets/xmaterial.cpp

192 lines
4.3 KiB
C++

#include "xmaterial.h"
XMaterial::XMaterial()
: XAsset()
, mInfo()
, mStateBitsEntry(34)
, mTextureCount(0)
, mConstantCount(0)
, mStateBitsCount(0)
, mStateFlags(0)
, mCameraRegion(0)
, mTechniqueSet()
, mTextureTable()
, mConstantTable()
, mStateBitsTable()
{
SetType(ASSET_TYPE_MATERIAL);
SetName("Material");
}
void XMaterial::ParseData(XDataStream *aStream)
{
mInfo.ParseData(aStream);
AddSubAsset(&mInfo);
for (int i = 0; i < 34; i++)
{
mStateBitsEntry[i] = aStream->ParseUInt8(QString("%1 state bits entry %2").arg(GetName()).arg(i + 1));
}
mTextureCount = aStream->ParseUInt8(QString("%1 texture count").arg(GetName()));
mConstantCount = aStream->ParseUInt8(QString("%1 constant count").arg(GetName()));
mStateBitsCount = aStream->ParseUInt8(QString("%1 state bits count").arg(GetName()));
mStateFlags = aStream->ParseUInt8(QString("%1 state flags").arg(GetName()));
mCameraRegion = aStream->ParseUInt8(QString("%1 camera region").arg(GetName()));
aStream->skipRawData(1);
mTechniqueSet.SetCommonInfo(GetCommonInfo());
mTechniqueSet.ParsePtr(aStream, false);
mTextureTable.SetCommonInfo(GetCommonInfo());
mTextureTable.ParsePtr(aStream, false);
mConstantTable.SetCommonInfo(GetCommonInfo());
mConstantTable.ParsePtr(aStream, false);
mStateBitsTable.SetCommonInfo(GetCommonInfo());
mStateBitsTable.ParsePtr(aStream, false);
XString materialName = mInfo.MaterialName();
materialName.SetRemoveString(",");
materialName.ParseDataSafe(aStream);
AddSubAsset(&materialName);
SetDisplayName(materialName.GetString());
mInfo.SetMaterialName(materialName);
mTechniqueSet.ParseDataSafe(aStream);
AddSubAsset(&mTechniqueSet);
mTextureTable.ParseDataSafe(aStream);
AddSubAsset(&mTextureTable);
mConstantTable.ParseDataSafe(aStream);
AddSubAsset(&mConstantTable);
mStateBitsTable.ParseDataSafe(aStream);
AddSubAsset(&mStateBitsTable);
}
void XMaterial::Clear()
{
mInfo.Clear();
mStateBitsEntry.clear();
mTextureCount = 0;
mConstantCount = 0;
mStateBitsCount = 0;
mStateFlags = 0;
mCameraRegion = 0;
mTechniqueSet = XMaterialTechniqueSet();
mTextureTable = XMaterialTextureDef();
mConstantTable = XMaterialConstantDef();
mStateBitsTable = XGfxStateBits();
}
XMaterialInfo XMaterial::Info() const
{
return mInfo;
}
void XMaterial::SetInfo(const XMaterialInfo &aInfo)
{
mInfo = aInfo;
}
QVector<quint8> XMaterial::StateBitsEntry() const
{
return mStateBitsEntry;
}
void XMaterial::SetStateBitsEntry(const QVector<quint8> &aStateBitsEntry)
{
mStateBitsEntry = aStateBitsEntry;
}
quint8 XMaterial::TextureCount() const
{
return mTextureCount;
}
void XMaterial::SetTextureCount(quint8 aTextureCount)
{
mTextureCount = aTextureCount;
}
quint8 XMaterial::ConstantCount() const
{
return mConstantCount;
}
void XMaterial::SetConstantCount(quint8 aConstantCount)
{
mConstantCount = aConstantCount;
}
quint8 XMaterial::StateBitsCount() const
{
return mStateBitsCount;
}
void XMaterial::SetStateBitsCount(quint8 aStateBitsCount)
{
mStateBitsCount = aStateBitsCount;
}
quint8 XMaterial::StateFlags() const
{
return mStateFlags;
}
void XMaterial::SetStateFlags(quint8 aStateFlags)
{
mStateFlags = aStateFlags;
}
quint8 XMaterial::CameraRegion() const
{
return mCameraRegion;
}
void XMaterial::SetCameraRegion(quint8 aCameraRegion)
{
mCameraRegion = aCameraRegion;
}
XMaterialTechniqueSet XMaterial::TechniqueSet() const
{
return mTechniqueSet;
}
void XMaterial::SetTechniqueSet(const XMaterialTechniqueSet &aTechniqueSet)
{
mTechniqueSet = aTechniqueSet;
}
XMaterialTextureDef XMaterial::TextureTable() const
{
return mTextureTable;
}
void XMaterial::SetTextureTable(const XMaterialTextureDef &aTextureTable)
{
mTextureTable = aTextureTable;
}
XMaterialConstantDef XMaterial::ConstantTable() const
{
return mConstantTable;
}
void XMaterial::SetConstantTable(const XMaterialConstantDef &aConstantTable)
{
mConstantTable = aConstantTable;
}
XGfxStateBits XMaterial::StateBitsTable() const
{
return mStateBitsTable;
}
void XMaterial::SetStateBitsTable(const XGfxStateBits &aStateBitsTable)
{
mStateBitsTable = aStateBitsTable;
}