update project
This commit is contained in:
parent
d66716acd7
commit
0a85832d63
@ -135,12 +135,6 @@ typedef enum CK_OBJECT_SHOWOPTION {
|
|||||||
CKHIERARCHICALHIDE =2
|
CKHIERARCHICALHIDE =2
|
||||||
} CK_OBJECT_SHOWOPTION;
|
} CK_OBJECT_SHOWOPTION;
|
||||||
|
|
||||||
typedef enum CK_OBJECT_CANBEHIDE {
|
|
||||||
CKCANNOTHIDE =0, // the object cannot be hidden
|
|
||||||
CKCANHIDE =1, // the object can be hidden
|
|
||||||
CKCANHIERARCHICALHIDE =2 // the object can be hidden and hierarchically hidden
|
|
||||||
} CK_OBJECT_CANBEHIDE;
|
|
||||||
|
|
||||||
/***************************************************
|
/***************************************************
|
||||||
{filename:CK_OBJECT_FLAGS}
|
{filename:CK_OBJECT_FLAGS}
|
||||||
Summary: CKObject Flags
|
Summary: CKObject Flags
|
||||||
|
@ -144,11 +144,6 @@ namespace LibCmo::CK2 {
|
|||||||
CKSHOW = 0x1,
|
CKSHOW = 0x1,
|
||||||
CKHIERARCHICALHIDE = 0x2,
|
CKHIERARCHICALHIDE = 0x2,
|
||||||
};
|
};
|
||||||
enum class CK_OBJECT_CANBEHIDE : CKDWORD {
|
|
||||||
CKCANNOTHIDE = 0, /**< the object cannot be hidden */
|
|
||||||
CKCANHIDE = 1, /**< the object can be hidden */
|
|
||||||
CKCANHIERARCHICALHIDE = 2, /**< the object can be hidden and hierarchically hidden */
|
|
||||||
};
|
|
||||||
/**
|
/**
|
||||||
CKObject Flags
|
CKObject Flags
|
||||||
@remark
|
@remark
|
||||||
|
@ -116,11 +116,13 @@ namespace LibCmo::CK2::ObjImpls {
|
|||||||
|
|
||||||
// copy visible data
|
// copy visible data
|
||||||
// process direct visible
|
// process direct visible
|
||||||
// todo add if visible
|
if (EnumsHelper::Has(m_ObjectFlags, CK_OBJECT_FLAGS::CK_OBJECT_VISIBLE)) {
|
||||||
// and set or unset VX_MOVEABLE_VISIBLE
|
EnumsHelper::Add(m_MoveableFlags, VxMath::VX_MOVEABLE_FLAGS::VX_MOVEABLE_VISIBLE);
|
||||||
|
} else {
|
||||||
|
EnumsHelper::Rm(m_MoveableFlags, VxMath::VX_MOVEABLE_FLAGS::VX_MOVEABLE_VISIBLE);
|
||||||
|
}
|
||||||
// process indirect visible
|
// process indirect visible
|
||||||
if (EnumsHelper::Has(m_ObjectFlags, CK_OBJECT_FLAGS::CKBEHAVIORLINK_ACTIVATEDLASTFRAME)) {
|
if (EnumsHelper::Has(m_ObjectFlags, CK_OBJECT_FLAGS::CK_OBJECT_HIERACHICALHIDE)) {
|
||||||
EnumsHelper::Add(m_MoveableFlags, VxMath::VX_MOVEABLE_FLAGS::VX_MOVEABLE_HIERARCHICALHIDE);
|
EnumsHelper::Add(m_MoveableFlags, VxMath::VX_MOVEABLE_FLAGS::VX_MOVEABLE_HIERARCHICALHIDE);
|
||||||
} else {
|
} else {
|
||||||
EnumsHelper::Rm(m_MoveableFlags, VxMath::VX_MOVEABLE_FLAGS::VX_MOVEABLE_HIERARCHICALHIDE);
|
EnumsHelper::Rm(m_MoveableFlags, VxMath::VX_MOVEABLE_FLAGS::VX_MOVEABLE_HIERARCHICALHIDE);
|
||||||
@ -157,4 +159,29 @@ namespace LibCmo::CK2::ObjImpls {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CK3dEntity::Show(CK_OBJECT_SHOWOPTION show) {
|
||||||
|
CKObject::Show(show);
|
||||||
|
|
||||||
|
EnumsHelper::Rm(m_MoveableFlags, EnumsHelper::Merge({
|
||||||
|
VxMath::VX_MOVEABLE_FLAGS::VX_MOVEABLE_VISIBLE,
|
||||||
|
VxMath::VX_MOVEABLE_FLAGS::VX_MOVEABLE_HIERARCHICALHIDE,
|
||||||
|
}));
|
||||||
|
switch (show) {
|
||||||
|
case CK_OBJECT_SHOWOPTION::CKSHOW:
|
||||||
|
EnumsHelper::Add(m_MoveableFlags, VxMath::VX_MOVEABLE_FLAGS::VX_MOVEABLE_VISIBLE);
|
||||||
|
break;
|
||||||
|
case CK_OBJECT_SHOWOPTION::CKHIERARCHICALHIDE:
|
||||||
|
EnumsHelper::Add(m_MoveableFlags, VxMath::VX_MOVEABLE_FLAGS::VX_MOVEABLE_HIERARCHICALHIDE);
|
||||||
|
break;
|
||||||
|
case CK_OBJECT_SHOWOPTION::CKHIDE:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CK3dEntity::IsVisible() const {
|
||||||
|
// MARK: originally there is a call to this->IsHiddenByParent.
|
||||||
|
// but we drop the support of parent, so we drop that condition.
|
||||||
|
return CKObject::IsVisible();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,10 @@ namespace LibCmo::CK2::ObjImpls {
|
|||||||
virtual bool Save(CKStateChunk* chunk, CKFileVisitor* file, CKDWORD flags) override;
|
virtual bool Save(CKStateChunk* chunk, CKFileVisitor* file, CKDWORD flags) override;
|
||||||
virtual bool Load(CKStateChunk* chunk, CKFileVisitor* file) override;
|
virtual bool Load(CKStateChunk* chunk, CKFileVisitor* file) override;
|
||||||
//virtual void PostLoad() override;
|
//virtual void PostLoad() 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;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
XContainer::XObjectPointerArray m_PotentialMeshes;
|
XContainer::XObjectPointerArray m_PotentialMeshes;
|
||||||
|
@ -54,6 +54,16 @@ namespace LibCmo::CK2::ObjImpls {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CKGroup::Show(CK_OBJECT_SHOWOPTION show) {
|
||||||
|
CKObject::Show(show);
|
||||||
|
|
||||||
|
// call Show for all sub object
|
||||||
|
for (auto& ptr : m_ObjectArray) {
|
||||||
|
if (ptr == nullptr) continue;
|
||||||
|
ptr->Show(show);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CKDWORD CKGroup::GetGroupIndex() {
|
CKDWORD CKGroup::GetGroupIndex() {
|
||||||
return m_GroupIndex;
|
return m_GroupIndex;
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,9 @@ namespace LibCmo::CK2::ObjImpls {
|
|||||||
virtual bool Load(CKStateChunk* chunk, CKFileVisitor* file) override;
|
virtual bool Load(CKStateChunk* chunk, CKFileVisitor* file) override;
|
||||||
//virtual void PostLoad() override;
|
//virtual void PostLoad() override;
|
||||||
|
|
||||||
|
// it only have special Show method
|
||||||
|
virtual void Show(CK_OBJECT_SHOWOPTION show = CK_OBJECT_SHOWOPTION::CKSHOW) override;
|
||||||
|
|
||||||
CKDWORD GetGroupIndex();
|
CKDWORD GetGroupIndex();
|
||||||
|
|
||||||
// ===== Insert =====
|
// ===== Insert =====
|
||||||
|
@ -33,10 +33,7 @@ namespace LibCmo::CK2::ObjImpls {
|
|||||||
|
|
||||||
// read flag
|
// read flag
|
||||||
if (chunk->SeekIdentifier(CK_STATESAVEFLAGS_MESH::CK_STATESAVE_MESHFLAGS)) {
|
if (chunk->SeekIdentifier(CK_STATESAVEFLAGS_MESH::CK_STATESAVE_MESHFLAGS)) {
|
||||||
CKDWORD flags;
|
chunk->ReadStruct(m_Flags);
|
||||||
chunk->ReadStruct(flags);
|
|
||||||
|
|
||||||
m_Flags = static_cast<VxMath::VXMESH_FLAGS>(flags);
|
|
||||||
EnumsHelper::Mask(m_Flags, VxMath::VXMESH_FLAGS::VXMESH_ALLFLAGS);
|
EnumsHelper::Mask(m_Flags, VxMath::VXMESH_FLAGS::VXMESH_ALLFLAGS);
|
||||||
|
|
||||||
// I don't know why, just interpter the IDA code.
|
// I don't know why, just interpter the IDA code.
|
||||||
@ -226,6 +223,16 @@ namespace LibCmo::CK2::ObjImpls {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CKMesh::Show(CK_OBJECT_SHOWOPTION show) {
|
||||||
|
CKObject::Show(show);
|
||||||
|
|
||||||
|
if (show == CK_OBJECT_SHOWOPTION::CKSHOW) {
|
||||||
|
EnumsHelper::Add(m_Flags, VxMath::VXMESH_FLAGS::VXMESH_VISIBLE);
|
||||||
|
} else {
|
||||||
|
EnumsHelper::Rm(m_Flags, VxMath::VXMESH_FLAGS::VXMESH_VISIBLE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma region Misc Section
|
#pragma region Misc Section
|
||||||
|
|
||||||
void CKMesh::CleanMesh() {
|
void CKMesh::CleanMesh() {
|
||||||
|
@ -19,7 +19,10 @@ namespace LibCmo::CK2::ObjImpls {
|
|||||||
virtual bool Save(CKStateChunk* chunk, CKFileVisitor* file, CKDWORD flags) override;
|
virtual bool Save(CKStateChunk* chunk, CKFileVisitor* file, CKDWORD flags) override;
|
||||||
virtual bool Load(CKStateChunk* chunk, CKFileVisitor* file) override;
|
virtual bool Load(CKStateChunk* chunk, CKFileVisitor* file) override;
|
||||||
//virtual void PostLoad() override;
|
//virtual void PostLoad() override;
|
||||||
|
|
||||||
|
// it only have special Show method
|
||||||
|
virtual void Show(CK_OBJECT_SHOWOPTION show = CK_OBJECT_SHOWOPTION::CKSHOW) override;
|
||||||
|
|
||||||
// ===== Misc Section =====
|
// ===== Misc Section =====
|
||||||
public:
|
public:
|
||||||
void CleanMesh();
|
void CleanMesh();
|
||||||
|
@ -28,9 +28,6 @@ namespace LibCmo::CK2::ObjImpls {
|
|||||||
void CKObject::SetObjectFlags(CK_OBJECT_FLAGS flags) {
|
void CKObject::SetObjectFlags(CK_OBJECT_FLAGS flags) {
|
||||||
m_ObjectFlags = flags;
|
m_ObjectFlags = flags;
|
||||||
}
|
}
|
||||||
bool CKObject::IsHierarchicallyHide() const {
|
|
||||||
return EnumsHelper::Has(m_ObjectFlags, CK_OBJECT_FLAGS::CK_OBJECT_HIERACHICALHIDE);
|
|
||||||
}
|
|
||||||
CKContext* CKObject::GetCKContext() const {
|
CKContext* CKObject::GetCKContext() const {
|
||||||
return m_Context;
|
return m_Context;
|
||||||
}
|
}
|
||||||
@ -92,14 +89,6 @@ namespace LibCmo::CK2::ObjImpls {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CKObject::IsHiddenByParent() const {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
CK_OBJECT_CANBEHIDE CKObject::CanBeHide() const {
|
|
||||||
return CK_OBJECT_CANBEHIDE::CKCANNOTHIDE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CKObject::IsVisible() const {
|
bool CKObject::IsVisible() const {
|
||||||
return EnumsHelper::Has(m_ObjectFlags, CK_OBJECT_FLAGS::CK_OBJECT_VISIBLE);
|
return EnumsHelper::Has(m_ObjectFlags, CK_OBJECT_FLAGS::CK_OBJECT_VISIBLE);
|
||||||
}
|
}
|
||||||
|
@ -14,8 +14,6 @@ Implement as original meaning:
|
|||||||
- GetClassID()
|
- GetClassID()
|
||||||
|
|
||||||
- Show()
|
- Show()
|
||||||
- IsHiddenByParent()
|
|
||||||
- CanBeHide()
|
|
||||||
- IsVisible()
|
- IsVisible()
|
||||||
|
|
||||||
- CheckPreDeletion()
|
- CheckPreDeletion()
|
||||||
@ -27,6 +25,9 @@ No implement because don't care:
|
|||||||
- PrepareDependencies()
|
- PrepareDependencies()
|
||||||
- RemapDependencies()
|
- RemapDependencies()
|
||||||
|
|
||||||
|
- IsHiddenByParent()
|
||||||
|
- CanBeHide()
|
||||||
|
|
||||||
Implement moved into other location:
|
Implement moved into other location:
|
||||||
- Copy(): Use CKObject::CKObject(CK_ID newid, const CKObject* obj) ctor and CKClassDesc to implement.
|
- Copy(): Use CKObject::CKObject(CK_ID newid, const CKObject* obj) ctor and CKClassDesc to implement.
|
||||||
- PreDelete(): Write in dtor.
|
- PreDelete(): Write in dtor.
|
||||||
@ -46,7 +47,6 @@ namespace LibCmo::CK2::ObjImpls {
|
|||||||
void SetName(CKSTRING u8_name);
|
void SetName(CKSTRING u8_name);
|
||||||
CK_OBJECT_FLAGS GetObjectFlags(void) const;
|
CK_OBJECT_FLAGS GetObjectFlags(void) const;
|
||||||
void SetObjectFlags(CK_OBJECT_FLAGS flags);
|
void SetObjectFlags(CK_OBJECT_FLAGS flags);
|
||||||
bool IsHierarchicallyHide() const;
|
|
||||||
CKContext* GetCKContext() const;
|
CKContext* GetCKContext() const;
|
||||||
|
|
||||||
virtual CK_CLASSID GetClassID(void) {
|
virtual CK_CLASSID GetClassID(void) {
|
||||||
@ -73,27 +73,12 @@ namespace LibCmo::CK2::ObjImpls {
|
|||||||
*/
|
*/
|
||||||
virtual void Show(CK_OBJECT_SHOWOPTION show = CK_OBJECT_SHOWOPTION::CKSHOW);
|
virtual void Show(CK_OBJECT_SHOWOPTION show = CK_OBJECT_SHOWOPTION::CKSHOW);
|
||||||
/**
|
/**
|
||||||
* @brief Returns whether this object is hidden (and also hides its children).
|
* @brief Returns whether this object is visible
|
||||||
* @return true if hierarchically hidden.
|
* @return TRUE if the object is visible, FALSE otherwise
|
||||||
* @remark
|
* @remark
|
||||||
* + This methods returns if this object is hidden and also hides all its sub-hierarchy.
|
* + Only CKRenderObject and derived classes(CK2dEntity,CK3dEntity),CKMesh and CKGroup return relevant information about their visibility state. Other classes may return any values.
|
||||||
* + See CKObject::Show¡ì for more details on hierarchically hidden objects.
|
* + An object can return CKSHOW and still be hidden if its parent (see CK3dEntity::GetParent and CK2dEntity::GetParent) is hierarchically hidden (see CKObject::Show)
|
||||||
*/
|
*/
|
||||||
virtual bool IsHiddenByParent() const;
|
|
||||||
/**
|
|
||||||
* @brief Returns whether this object class allows it to be shown or hidden.
|
|
||||||
* @return 3 possible value according to its type.
|
|
||||||
* + CKCANNOTHIDE if the object cannot be hidden
|
|
||||||
* + CKCANHIDE if the object can be hidden
|
|
||||||
* + CKCANHIERARCHICALHIDE if the object can be hidden and hierarchically hidden
|
|
||||||
* @remark
|
|
||||||
* + This virtual function is mainly used by the Virtools interface to known if visibility flags have an impact on a specific object class.
|
|
||||||
* + CKRenderObject and derived classes,can be triggered as to be shown or hidden or hierarchically hidden and will return 2 to this function.
|
|
||||||
* + CKMesh and CKGroup can be triggered as to be shown or hidden and will return 1 to this function.
|
|
||||||
* + Other classes will return 0 which means CKObject::Show function will not have any impact on them.
|
|
||||||
|
|
||||||
*/
|
|
||||||
virtual CK_OBJECT_CANBEHIDE CanBeHide() const;
|
|
||||||
virtual bool IsVisible() const;
|
virtual bool IsVisible() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
#include "CKRenderObject.hpp"
|
|
||||||
#include "../CKStateChunk.hpp"
|
|
||||||
|
|
||||||
namespace LibCmo::CK2::ObjImpls {
|
|
||||||
|
|
||||||
// nothing to compile now
|
|
||||||
|
|
||||||
}
|
|
@ -16,11 +16,13 @@ namespace LibCmo::CK2::ObjImpls {
|
|||||||
virtual CK_CLASSID GetClassID(void) override {
|
virtual CK_CLASSID GetClassID(void) override {
|
||||||
return CK_CLASSID::CKCID_RENDEROBJECT;
|
return CK_CLASSID::CKCID_RENDEROBJECT;
|
||||||
}
|
}
|
||||||
|
|
||||||
// CKRenderObject do not implement any load/save functions
|
// CKRenderObject do not implement any load/save functions
|
||||||
//virtual void PreSave(CKFileVisitor* file, CKDWORD flags) override;
|
//virtual void PreSave(CKFileVisitor* file, CKDWORD flags) override;
|
||||||
//virtual bool Save(CKStateChunk* chunk, CKFileVisitor* file, CKDWORD flags) override;
|
//virtual bool Save(CKStateChunk* chunk, CKFileVisitor* file, CKDWORD flags) override;
|
||||||
//virtual bool Load(CKStateChunk* chunk, CKFileVisitor* file) override;
|
//virtual bool Load(CKStateChunk* chunk, CKFileVisitor* file) override;
|
||||||
//virtual void PostLoad() override;
|
//virtual void PostLoad() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
#include "CKSceneObject.hpp"
|
|
||||||
#include "../CKStateChunk.hpp"
|
|
||||||
|
|
||||||
namespace LibCmo::CK2::ObjImpls {
|
|
||||||
|
|
||||||
//bool CKSceneObject::Save(CKStateChunk* chunk, CKFileVisitor* file, CKDWORD flags) {
|
|
||||||
// return false;
|
|
||||||
//}
|
|
||||||
|
|
||||||
//bool CKSceneObject::Load(CKStateChunk* chunk, CKFileVisitor* file) {
|
|
||||||
// return false;
|
|
||||||
//}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -192,8 +192,6 @@
|
|||||||
<ClCompile Include="CK2\ObjImpls\CKMaterial.cpp" />
|
<ClCompile Include="CK2\ObjImpls\CKMaterial.cpp" />
|
||||||
<ClCompile Include="CK2\ObjImpls\CKMesh.cpp" />
|
<ClCompile Include="CK2\ObjImpls\CKMesh.cpp" />
|
||||||
<ClCompile Include="CK2\ObjImpls\CKObject.cpp" />
|
<ClCompile Include="CK2\ObjImpls\CKObject.cpp" />
|
||||||
<ClCompile Include="CK2\ObjImpls\CKRenderObject.cpp" />
|
|
||||||
<ClCompile Include="CK2\ObjImpls\CKSceneObject.cpp" />
|
|
||||||
<ClCompile Include="CK2\ObjImpls\CKTexture.cpp" />
|
<ClCompile Include="CK2\ObjImpls\CKTexture.cpp" />
|
||||||
<ClCompile Include="VTEncoding.cpp" />
|
<ClCompile Include="VTEncoding.cpp" />
|
||||||
<ClCompile Include="CK2\CKFileReader.cpp" />
|
<ClCompile Include="CK2\CKFileReader.cpp" />
|
||||||
|
@ -84,18 +84,12 @@
|
|||||||
<ClCompile Include="CK2\CKStateChunkOthers.cpp">
|
<ClCompile Include="CK2\CKStateChunkOthers.cpp">
|
||||||
<Filter>Sources\CK2</Filter>
|
<Filter>Sources\CK2</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="CK2\ObjImpls\CKSceneObject.cpp">
|
|
||||||
<Filter>Sources\CK2\ObjImpls</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="CK2\ObjImpls\CKBeObject.cpp">
|
<ClCompile Include="CK2\ObjImpls\CKBeObject.cpp">
|
||||||
<Filter>Sources\CK2\ObjImpls</Filter>
|
<Filter>Sources\CK2\ObjImpls</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="CK2\ObjImpls\CKGroup.cpp">
|
<ClCompile Include="CK2\ObjImpls\CKGroup.cpp">
|
||||||
<Filter>Sources\CK2\ObjImpls</Filter>
|
<Filter>Sources\CK2\ObjImpls</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="CK2\ObjImpls\CKRenderObject.cpp">
|
|
||||||
<Filter>Sources\CK2\ObjImpls</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="CK2\ObjImpls\CK3dEntity.cpp">
|
<ClCompile Include="CK2\ObjImpls\CK3dEntity.cpp">
|
||||||
<Filter>Sources\CK2\ObjImpls</Filter>
|
<Filter>Sources\CK2\ObjImpls</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
Loading…
Reference in New Issue
Block a user