libcmo21/LibCmo/CK2/ObjImpls/CKMaterial.hpp

59 lines
1.4 KiB
C++
Raw Normal View History

2023-09-14 17:03:09 +08:00
#pragma once
#include "../../VTAll.hpp"
#include "CKBeObject.hpp"
#include <array>
namespace LibCmo::CK2::ObjImpls {
class CKMaterial : public CKBeObject {
public:
CKMaterial(CKContext* ctx, CK_ID ckid, CKSTRING name);
virtual ~CKMaterial();
LIBCMO_DISABLE_COPY_MOVE(CKMaterial);
virtual CK_CLASSID GetClassID(void) override {
return CK_CLASSID::CKCID_MATERIAL;
}
virtual void CheckPreDeletion() override;
2023-09-14 17:03:09 +08:00
// 2 RW functions
2023-09-14 17:03:09 +08:00
virtual bool Save(CKStateChunk* chunk, CKFileVisitor* file, CKDWORD flags) override;
virtual bool Load(CKStateChunk* chunk, CKFileVisitor* file) override;
protected:
VxMath::VxColor m_Diffuse;
VxMath::VxColor m_Ambient;
VxMath::VxColor m_Specular;
VxMath::VxColor m_Emissive;
2023-09-16 18:31:25 +08:00
CKFLOAT m_SpecularPower;
2023-09-14 17:03:09 +08:00
std::array<CKTexture*, 4> m_Textures;
CKDWORD m_TextureBorderColor;
VxMath::VXTEXTURE_BLENDMODE m_TextureBlendMode;
VxMath::VXTEXTURE_FILTERMODE m_TextureMinMode;
VxMath::VXTEXTURE_FILTERMODE m_TextureMagMode;
2023-09-14 21:53:21 +08:00
VxMath::VXTEXTURE_ADDRESSMODE m_TextureAddressMode;
2023-09-14 17:03:09 +08:00
VxMath::VXBLEND_MODE m_SourceBlend;
VxMath::VXBLEND_MODE m_DestBlend;
VxMath::VXFILL_MODE m_FillMode;
VxMath::VXSHADE_MODE m_ShadeMode;
2023-09-14 21:53:21 +08:00
bool m_EnableAlphaTest;
bool m_EnableAlphaBlend;
bool m_EnablePerspectiveCorrection;
2023-09-14 17:03:09 +08:00
bool m_EnableZWrite;
bool m_EnableTwoSided;
CKBYTE m_AlphaRef;
2023-09-14 21:53:21 +08:00
VxMath::VXCMPFUNC m_AlphaFunc;
VxMath::VXCMPFUNC m_ZFunc;
2023-09-14 17:03:09 +08:00
VxMath::VX_EFFECT m_Effect;
};
}