XPlor/libs/xassets/xmaterial.h

60 lines
1.9 KiB
C++

#ifndef XMATERIAL_H
#define XMATERIAL_H
#include "xmaterialtechniqueset.h"
#include "xgfxstatebits.h"
#include "xmaterialinfo.h"
#include "xmaterialtexturedef.h"
#include "xmaterialconstantdef.h"
class XMaterial : public XAsset
{
public:
explicit XMaterial();
~XMaterial() = default;
virtual void ParseData(XDataStream* aStream) override;
virtual void Clear() override;
XMaterialInfo Info() const;
void SetInfo(const XMaterialInfo &aInfo);
QVector<quint8> StateBitsEntry() const;
void SetStateBitsEntry(const QVector<quint8> &aStateBitsEntry);
quint8 TextureCount() const;
void SetTextureCount(quint8 aTextureCount);
quint8 ConstantCount() const;
void SetConstantCount(quint8 aConstantCount);
quint8 StateBitsCount() const;
void SetStateBitsCount(quint8 aStateBitsCount);
quint8 StateFlags() const;
void SetStateFlags(quint8 aStateFlags);
quint8 CameraRegion() const;
void SetCameraRegion(quint8 aCameraRegion);
XMaterialTechniqueSet TechniqueSet() const;
void SetTechniqueSet(const XMaterialTechniqueSet &aTechniqueSet);
XMaterialTextureDef TextureTable() const;
void SetTextureTable(const XMaterialTextureDef &aTextureTable);
XMaterialConstantDef ConstantTable() const;
void SetConstantTable(const XMaterialConstantDef &aConstantTable);
XGfxStateBits StateBitsTable() const;
void SetStateBitsTable(const XGfxStateBits &aStateBitsTable);
XString MaterialName() const;
void SetMaterialName(const XString &aName);
private:
XMaterialInfo mInfo;
QVector<quint8> mStateBitsEntry;
quint8 mTextureCount;
quint8 mConstantCount;
quint8 mStateBitsCount;
quint8 mStateFlags;
quint8 mCameraRegion;
XMaterialTechniqueSet mTechniqueSet;
XMaterialTextureDef mTextureTable;
XMaterialConstantDef mConstantTable;
XGfxStateBits mStateBitsTable;
};
#endif // MATERIAL_H