From ce12c8f2080022741d6fd0743d6b80b702fb5b10 Mon Sep 17 00:00:00 2001 From: floralrainfall Date: Sat, 22 Jul 2023 05:15:29 -0400 Subject: [PATCH] just remove baseplate --- .../Engine/Header/App/V8/DataModel/PartInstance.hpp | 1 + Projects/Engine/Header/App/V8/DataModel/Workspace.hpp | 1 + .../Engine/Source/App/V8/DataModel/PartInstance.cpp | 5 +++++ Projects/Engine/Source/App/V8/DataModel/Workspace.cpp | 7 +++++++ Projects/Engine/Source/App/V8/World/World.cpp | 11 ++--------- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/Projects/Engine/Header/App/V8/DataModel/PartInstance.hpp b/Projects/Engine/Header/App/V8/DataModel/PartInstance.hpp index 4e96971..f37f35e 100644 --- a/Projects/Engine/Header/App/V8/DataModel/PartInstance.hpp +++ b/Projects/Engine/Header/App/V8/DataModel/PartInstance.hpp @@ -54,6 +54,7 @@ namespace RNR std::string mesh_id; public: PartInstance(); + ~PartInstance(); void updateMatrix(); PartSurfaceInfo& getSurface(NormalId normal) { return m_surfaces[normal]; }; diff --git a/Projects/Engine/Header/App/V8/DataModel/Workspace.hpp b/Projects/Engine/Header/App/V8/DataModel/Workspace.hpp index 2e99f96..0a3dba0 100644 --- a/Projects/Engine/Header/App/V8/DataModel/Workspace.hpp +++ b/Projects/Engine/Header/App/V8/DataModel/Workspace.hpp @@ -25,6 +25,7 @@ namespace RNR public: Workspace(); + WorkspaceBatchingMode getBatchMode() { return m_batchMode; } virtual std::string getClassName() { return "Workspace"; } virtual void onDescendantAdded(RNR::Instance* childAdded); virtual void onDescendantRemoved(RNR::Instance* childRemoved); diff --git a/Projects/Engine/Source/App/V8/DataModel/PartInstance.cpp b/Projects/Engine/Source/App/V8/DataModel/PartInstance.cpp index 11c286b..9a712dc 100644 --- a/Projects/Engine/Source/App/V8/DataModel/PartInstance.cpp +++ b/Projects/Engine/Source/App/V8/DataModel/PartInstance.cpp @@ -66,6 +66,11 @@ namespace RNR updateMatrix(); } + PartInstance::~PartInstance() + { + getNode()->removeAndDestroyAllChildren(); + } + void PartInstance::updateMatrix() { m_matrix = m_cframe.getMatrix(); diff --git a/Projects/Engine/Source/App/V8/DataModel/Workspace.cpp b/Projects/Engine/Source/App/V8/DataModel/Workspace.cpp index 3f8fca7..6b7ee86 100644 --- a/Projects/Engine/Source/App/V8/DataModel/Workspace.cpp +++ b/Projects/Engine/Source/App/V8/DataModel/Workspace.cpp @@ -84,7 +84,14 @@ namespace RNR { PartInstance* part = dynamic_cast(childRemoved); if(part) + { + if(m_batchMode == BATCH_INSTANCED) + { + Ogre::InstancedEntity* entity = (Ogre::InstancedEntity*)part->getObject(); + world->getOgreSceneManager()->destroyInstancedEntity(entity); + } world->getComPlicitNgine()->deletePhysicsPart(part); + } m_geomDirty = true; } diff --git a/Projects/Engine/Source/App/V8/World/World.cpp b/Projects/Engine/Source/App/V8/World/World.cpp index 5f23ad3..52e7d35 100644 --- a/Projects/Engine/Source/App/V8/World/World.cpp +++ b/Projects/Engine/Source/App/V8/World/World.cpp @@ -56,13 +56,13 @@ namespace RNR start_cam->setParent(m_workspace); m_workspace->setCurrentCamera(start_cam); - PartInstance* baseplate = new PartInstance(); + /*PartInstance* baseplate = new PartInstance(); baseplate->setName("Baseplate"); baseplate->getCFrame().setPosition(Ogre::Vector3(0, -64, 0)); baseplate->setSize(Ogre::Vector3(512, 1, 512)); baseplate->setBrickColor(2); baseplate->setAnchored(true); - baseplate->setParent(m_workspace); + baseplate->setParent(m_workspace);*/ } World::~World() @@ -109,13 +109,6 @@ namespace RNR { m_refs.clear(); - Instance* baseplate = m_workspace->findFirstChild("Baseplate"); - if(baseplate) - { - baseplate->setParent(NULL); - delete baseplate; - } - JointsService* joints = (JointsService*)m_datamodel->getService("JointsService"); Camera* old_camera = m_workspace->getCurrentCamera(); if(old_camera)