fix fatal CKStateChunk error

This commit is contained in:
2023-09-01 14:55:31 +08:00
parent eea15c2028
commit 5c1af5be24
11 changed files with 153 additions and 6 deletions

View File

@ -0,0 +1,20 @@
#include "CK3dEntity.hpp"
#include "../CKStateChunk.hpp"
namespace LibCmo::CK2::ObjImpls {
bool CK3dEntity::Save(CKStateChunk* chunk, CKFileVisitor* file, CKDWORD flags) {
bool suc = CKRenderObject::Save(chunk, file, flags);
if (!suc) return false;
return true;
}
bool CK3dEntity::Load(CKStateChunk* chunk, CKFileVisitor* file) {
bool suc = CKRenderObject::Load(chunk, file);
if (!suc) return false;
return true;
}
}

View File

@ -0,0 +1,32 @@
#pragma once
#include "../../VTAll.hpp"
#include "CKRenderObject.hpp"
namespace LibCmo::CK2::ObjImpls {
class CK3dEntity : public CKRenderObject {
public:
CK3dEntity(CKContext* ctx, CK_ID ckid, CKSTRING name) :
CKRenderObject(ctx, ckid, name),
m_Meshes(), m_CurrentMesh(nullptr), m_WorldMatrix()
{}
virtual ~CK3dEntity() {}
LIBCMO_DISABLE_COPY_MOVE(CK3dEntity);
virtual CK_CLASSID GetClassID(void) override {
return CK_CLASSID::CKCID_3DENTITY;
}
//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;
protected:
XContainer::XObjectPointerArray m_Meshes;
CKMesh* m_CurrentMesh;
VxMath::VxMatrix m_WorldMatrix;
};
}

View File

@ -0,0 +1,28 @@
#pragma once
#include "../../VTAll.hpp"
#include "CK3dEntity.hpp"
namespace LibCmo::CK2::ObjImpls {
class CK3dObject : public CK3dEntity {
public:
CK3dObject(CKContext* ctx, CK_ID ckid, CKSTRING name) :
CK3dEntity(ctx, ckid, name)
{}
virtual ~CK3dObject() {}
LIBCMO_DISABLE_COPY_MOVE(CK3dObject);
virtual CK_CLASSID GetClassID(void) override {
return CK_CLASSID::CKCID_3DOBJECT;
}
// CK3dObject do not implement any load/save functions
//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;
protected:
};
}

View File

@ -0,0 +1,8 @@
#include "CKRenderObject.hpp"
#include "../CKStateChunk.hpp"
namespace LibCmo::CK2::ObjImpls {
// nothing to compile now
}

View File

@ -0,0 +1,28 @@
#pragma once
#include "../../VTAll.hpp"
#include "CKBeObject.hpp"
namespace LibCmo::CK2::ObjImpls {
class CKRenderObject : public CKBeObject {
public:
CKRenderObject(CKContext* ctx, CK_ID ckid, CKSTRING name) :
CKBeObject(ctx, ckid, name)
{}
virtual ~CKRenderObject() {}
LIBCMO_DISABLE_COPY_MOVE(CKRenderObject);
virtual CK_CLASSID GetClassID(void) override {
return CK_CLASSID::CKCID_RENDEROBJECT;
}
// CKRenderObject do not implement any load/save functions
//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;
protected:
};
}