2025-09-03 13:13:30 -04:00
|
|
|
#include "xmaterial.h"
|
|
|
|
|
|
|
|
|
|
XMaterial::XMaterial()
|
|
|
|
|
: XAsset()
|
|
|
|
|
, mInfo()
|
2025-12-19 23:06:03 -05:00
|
|
|
, mStateBitsEntry(34)
|
2025-09-03 13:13:30 -04:00
|
|
|
, mTextureCount(0)
|
|
|
|
|
, mConstantCount(0)
|
|
|
|
|
, mStateBitsCount(0)
|
|
|
|
|
, mStateFlags(0)
|
|
|
|
|
, mCameraRegion(0)
|
2025-09-05 18:35:17 -04:00
|
|
|
, mTechniqueSet()
|
|
|
|
|
, mTextureTable()
|
|
|
|
|
, mConstantTable()
|
|
|
|
|
, mStateBitsTable()
|
2025-09-03 13:13:30 -04:00
|
|
|
{
|
2025-09-05 18:35:17 -04:00
|
|
|
SetType(ASSET_TYPE_MATERIAL);
|
|
|
|
|
SetName("Material");
|
2025-09-03 13:13:30 -04:00
|
|
|
}
|
|
|
|
|
|
2025-09-10 21:58:26 -04:00
|
|
|
void XMaterial::ParseData(XDataStream *aStream)
|
2025-09-03 13:13:30 -04:00
|
|
|
{
|
2025-09-07 23:16:02 -04:00
|
|
|
mInfo.ParseData(aStream);
|
2025-12-19 23:06:03 -05:00
|
|
|
AddSubAsset(&mInfo);
|
2025-09-07 23:16:02 -04:00
|
|
|
|
2025-12-19 23:06:03 -05:00
|
|
|
for (int i = 0; i < 34; i++)
|
2025-09-07 23:16:02 -04:00
|
|
|
{
|
2025-12-19 23:06:03 -05:00
|
|
|
mStateBitsEntry[i] = aStream->ParseUInt8(QString("%1 state bits entry %2").arg(GetName()).arg(i + 1));
|
2025-09-07 23:16:02 -04:00
|
|
|
}
|
|
|
|
|
|
2025-12-19 23:06:03 -05:00
|
|
|
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()));
|
2025-09-07 23:16:02 -04:00
|
|
|
|
|
|
|
|
aStream->skipRawData(1);
|
|
|
|
|
|
2025-12-19 23:06:03 -05:00
|
|
|
mTechniqueSet.SetCommonInfo(GetCommonInfo());
|
2025-09-07 23:16:02 -04:00
|
|
|
mTechniqueSet.ParsePtr(aStream, false);
|
2025-12-19 23:06:03 -05:00
|
|
|
mTextureTable.SetCommonInfo(GetCommonInfo());
|
2025-09-07 23:16:02 -04:00
|
|
|
mTextureTable.ParsePtr(aStream, false);
|
2025-12-19 23:06:03 -05:00
|
|
|
mConstantTable.SetCommonInfo(GetCommonInfo());
|
2025-09-07 23:16:02 -04:00
|
|
|
mConstantTable.ParsePtr(aStream, false);
|
2025-12-19 23:06:03 -05:00
|
|
|
mStateBitsTable.SetCommonInfo(GetCommonInfo());
|
2025-09-07 23:16:02 -04:00
|
|
|
mStateBitsTable.ParsePtr(aStream, false);
|
|
|
|
|
|
2025-12-19 23:06:03 -05:00
|
|
|
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);
|
2025-09-03 13:13:30 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void XMaterial::Clear()
|
|
|
|
|
{
|
|
|
|
|
mInfo.Clear();
|
|
|
|
|
mStateBitsEntry.clear();
|
|
|
|
|
mTextureCount = 0;
|
|
|
|
|
mConstantCount = 0;
|
|
|
|
|
mStateBitsCount = 0;
|
|
|
|
|
mStateFlags = 0;
|
|
|
|
|
mCameraRegion = 0;
|
2025-09-05 18:35:17 -04:00
|
|
|
mTechniqueSet = XMaterialTechniqueSet();
|
|
|
|
|
mTextureTable = XMaterialTextureDef();
|
|
|
|
|
mConstantTable = XMaterialConstantDef();
|
|
|
|
|
mStateBitsTable = XGfxStateBits();
|
2025-09-03 13:13:30 -04:00
|
|
|
}
|
2025-12-19 23:06:03 -05:00
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|