write some printer for ck class

This commit is contained in:
2023-09-22 16:40:10 +08:00
parent ddf596faec
commit d37a552873
11 changed files with 440 additions and 34 deletions

View File

@ -106,6 +106,11 @@ namespace LibCmo {
#define PRIiCKINT PRIi32
#define PRIfCKFLOAT "f"
#define PRIfCKDOUBLE "lf"
#define PRIeCKFLOAT "e"
#define PRIeCKDOUBLE "le"
#define PRIxCKPTR PRIx32
#define PRIXCKPTR PRIX32

View File

@ -26,7 +26,7 @@ namespace LibCmo::CK2::ObjImpls {
return true;
}
bool CKBeObject::IsInGroup(CKGroup* group) {
bool CKBeObject::IsInGroup(CKGroup* group) const {
if (group == nullptr) return false;
CKDWORD idx = group->GetGroupIndex();
return XContainer::NSXBitArray::IsSet(m_Groups, idx);

View File

@ -14,12 +14,16 @@ namespace LibCmo::CK2::ObjImpls {
virtual CK_CLASSID GetClassID(void) override {
return CK_CLASSID::CKCID_BEOBJECT;
}
//virtual void PreSave(CKFileVisitor* file, CKDWORD flags) override;
virtual bool Save(CKStateChunk* chunk, CKFileVisitor* file, CKDWORD flags) override;
virtual bool Load(CKStateChunk* chunk, CKFileVisitor* file) override;
//virtual void PostLoad() override;
bool IsInGroup(CKGroup* group);
/**
* @brief Check whether this object is in specified group.
* @param group[in] The group to be checked.
* @return True if in it.
*/
bool IsInGroup(CKGroup* group) const;
/**
* @brief Directly set group data.
* @param pos

View File

@ -82,7 +82,7 @@ namespace LibCmo::CK2::ObjImpls {
}
}
CKDWORD CKGroup::GetGroupIndex() {
CKDWORD CKGroup::GetGroupIndex() const {
return m_GroupIndex;
}
@ -134,12 +134,12 @@ namespace LibCmo::CK2::ObjImpls {
m_ObjectArray.clear();
}
CKBeObject* CKGroup::GetObject(CKDWORD pos) {
CKBeObject* CKGroup::GetObject(CKDWORD pos) const {
if (pos >= m_ObjectArray.size()) return nullptr;
else return static_cast<CKBeObject*>(m_ObjectArray[pos]);
}
CKDWORD CKGroup::GetObjectCount() {
CKDWORD CKGroup::GetObjectCount() const {
return static_cast<CKDWORD>(m_ObjectArray.size());
}

View File

@ -26,7 +26,7 @@ namespace LibCmo::CK2::ObjImpls {
// it only have special Show method
virtual void Show(CK_OBJECT_SHOWOPTION show = CK_OBJECT_SHOWOPTION::CKSHOW) override;
CKDWORD GetGroupIndex();
CKDWORD GetGroupIndex() const;
// ===== Insert =====
CKERROR AddObject(CKBeObject *o);
@ -37,8 +37,8 @@ namespace LibCmo::CK2::ObjImpls {
void Clear();
// ===== Access =====
CKBeObject* GetObject(CKDWORD pos);
CKDWORD GetObjectCount();
CKBeObject* GetObject(CKDWORD pos) const;
CKDWORD GetObjectCount() const;
protected:
XContainer::XObjectPointerArray m_ObjectArray;

View File

@ -381,6 +381,10 @@ namespace LibCmo::CK2::ObjImpls {
SetLineCount(0);
}
VxMath::VXMESH_FLAGS CKMesh::GetMeshFlags() const {
return m_Flags;
}
void CKMesh::BuildNormals() {
if (m_FaceCount == 0 || m_VertexCount == 0) return;

View File

@ -27,6 +27,7 @@ namespace LibCmo::CK2::ObjImpls {
// ===== Misc Section =====
public:
void CleanMesh();
VxMath::VXMESH_FLAGS GetMeshFlags() const;
protected:
void BuildNormals();
void BuildFaceNormals();