Here is how I delete stuff:
Code: Select all
void GraphicalObject::destroy(Graphics* graphics) {
if (mSN) {
mSN->detachAllObjects();
mSN->getParentSceneNode()->removeAndDestroyChild(mSN);
if (mObj) {
Ogre::Entity* ent = dynamic_cast<Ogre::Entity*>(mObj);
graphics->getSceneManager()->destroyEntity(ent);
}
else // does dynamic cast return nullptr?
EXCEPT << "GraphicalObject::destroy non-instanced obj is nullptr";
mSN = nullptr;
}
else if (mObj) {
//THIS IS THE INSTANCED ENTITY AREA - Everything clears up on myside, I think, but on ogre the ent remains visible!
Ogre::InstancedEntity* ent = dynamic_cast<Ogre::InstancedEntity*>(mObj); // mObj is a Ogre::MovableObject*
graphics->getSceneManager()->destroyInstancedEntity(ent);
}
else
EXCEPT << "GraphicalObject::destroy instanced obj is nullptr";
mObj = nullptr;
}