mirror of
https://github.com/rrika/cdcEngineDXHR.git
synced 2024-11-23 05:29:57 +00:00
cdcScene: implement SceneEntity::Release
This commit is contained in:
parent
81ed2768a7
commit
054db15952
@ -110,4 +110,11 @@ void Scene::AddEntity(SceneEntity *pEntity) { // line 2541
|
||||
m_entities.push_back(pEntity);
|
||||
}
|
||||
|
||||
void Scene::RemoveEntity(SceneEntity *pEntity) {
|
||||
uint32_t index = pEntity->entityIndex;
|
||||
m_entities[index] = m_entities[m_entities.size()-1];
|
||||
m_entities[index]->entityIndex = index;
|
||||
m_entities.resize(m_entities.size()-1);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -35,6 +35,8 @@ public:
|
||||
|
||||
// called from SceneEntity ctor
|
||||
void AddEntity(SceneEntity *pEntity);
|
||||
// called from SceneEntity dtor
|
||||
void RemoveEntity(SceneEntity *pEntity);
|
||||
|
||||
// 43 methods
|
||||
void Render() override;
|
||||
|
@ -76,6 +76,16 @@ void SceneEntity::setCellGroup(ISceneCellGroup *newICellGroup) {
|
||||
}
|
||||
}
|
||||
|
||||
void SceneEntity::Release() {
|
||||
// called from SceneLayer::RemoveInstance
|
||||
delete this;
|
||||
}
|
||||
|
||||
SceneEntity::~SceneEntity() {
|
||||
// TODO
|
||||
scene->RemoveEntity(this);
|
||||
}
|
||||
|
||||
void SceneEntity::QueryVolumeFromDrawable() { // line 370
|
||||
if (drawable) {
|
||||
drawable->GetBoundingVolume(&cullingVolume);
|
||||
|
@ -34,6 +34,8 @@ public:
|
||||
void setDrawable(IDrawable *) override;
|
||||
IDrawable *getDrawable() override;
|
||||
void setCellGroup(ISceneCellGroup *) override;
|
||||
void Release() override;
|
||||
~SceneEntity();
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -63,6 +63,8 @@ public:
|
||||
virtual void setDrawable(IDrawable *) = 0; // C
|
||||
virtual IDrawable *getDrawable() = 0; // 10
|
||||
virtual void setCellGroup(ISceneCellGroup *) = 0; // 38
|
||||
virtual void Release() = 0; // 58
|
||||
virtual ~ISceneEntity() = default; // 5C
|
||||
};
|
||||
|
||||
class ISceneLight : public ISceneEntity { // line 1036
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include "rendering/CommonMaterial.h"
|
||||
#include "rendering/MaterialData.h"
|
||||
#include "cdcResource/ResolveSection.h"
|
||||
#include "cdcScene/SceneEntity.h"
|
||||
#include "cdcSound/SoundPlex.h"
|
||||
#include "cdcObjects/ObjectManager.h"
|
||||
#include "cdcWorld/Instance.h"
|
||||
@ -162,6 +163,11 @@ void buildUI(UIActions& uiact, Instance *instance) {
|
||||
if (instance->instanceDrawable)
|
||||
ImGui::Text(" %s", typeid(*instance->instanceDrawable).name());
|
||||
|
||||
if (ImGui::Button("Recreate scene entity")) {
|
||||
instance->sceneEntity->Release();
|
||||
instance->sceneEntity = nullptr;
|
||||
}
|
||||
|
||||
cdc::Object *object = instance->object;
|
||||
if (false)
|
||||
for (uint32_t i=0; i<object->numAnims; i++) {
|
||||
|
Loading…
Reference in New Issue
Block a user