#pragma once #include "../../VTInternal.hpp" #include "CKRenderObject.hpp" namespace LibCmo::CK2::ObjImpls { class CK3dEntity : public CKRenderObject { public: CK3dEntity(CKContext* ctx, CK_ID ckid, CKSTRING name); virtual ~CK3dEntity(); YYCC_DEL_CLS_COPY_MOVE(CK3dEntity); virtual CK_CLASSID GetClassID(void) override { return CK_CLASSID::CKCID_3DENTITY; } virtual void CheckPreDeletion() override; // 2 RW functions virtual bool Save(CKStateChunk* chunk, CKFileVisitor* file, CKDWORD flags) override; virtual bool Load(CKStateChunk* chunk, CKFileVisitor* file) override; // it have special Show and IsVisible method virtual void Show(CK_OBJECT_SHOWOPTION show = CK_OBJECT_SHOWOPTION::CKSHOW) override; virtual bool IsVisible() const override; const VxMath::VxMatrix& GetWorldMatrix() const; void SetWorldMatrix(const VxMath::VxMatrix& mat); CK_3DENTITY_FLAGS GetEntityFlags() const; void SetEntityFlags(CK_3DENTITY_FLAGS flags); VxMath::VX_MOVEABLE_FLAGS GetMoveableFlags() const; void SetMoveableFlags(VxMath::VX_MOVEABLE_FLAGS flags); CKDWORD GetZOrder() const; void SetZOrder(CKDWORD ord); void AddPotentialMesh(CKMesh* mesh); void RemovePotentialMesh(CKMesh* mesh); CKDWORD GetPotentialMeshCount() const; CKMesh* GetPotentialMesh(CKDWORD idx) const; CKMesh* GetCurrentMesh() const; void SetCurrentMesh(CKMesh* mesh); protected: XContainer::XObjectPointerArray m_PotentialMeshes; CKMesh* m_CurrentMesh; VxMath::VxMatrix m_WorldMatrix; CKDWORD m_ZOrder; // replace the whole heavy CKSceneGraphNode VxMath::VX_MOVEABLE_FLAGS m_MoveableFlags; CK_3DENTITY_FLAGS m_3dEntityFlags; }; }