bool SceneManager::deleteEntities(OctreeNode* node) { for(int i = 0; i < MAX_ENTITES; i++) { if(i < 8) { if(node->mChildNodes[i]) { deleteEntities(node->mChildNodes[i]); } } if(node->mNodeContents[i]) { if(mPhysicsWorld) { mPhysicsWorld->removeRigidBody(node->mNodeContents[i]->getRigidBody()); } delete node->mNodeContents[i]; node->mNodeContents[i] = 0; } } node->mCurrentEntities = 0; return true; }
void CObjectViewer::release() { //H_AUTO2 nldebug("CObjectViewer::release"); Modules::config().dropCallback("BackgroundColor"); Modules::config().dropCallback("GraphicsDriver"); _Driver->delete3dMouseListener(_MouseListener); // delete all entities deleteEntities(); _Scene->deletePlayListManager(_PlayListManager); // delete the scene _Driver->deleteScene(_Scene); // delete the light delete _Light; // release driver nlassert(_Driver); _Driver->release(); delete _Driver; _Driver = NULL; }
void CObjectViewer::resetScene() { deleteEntities(); // Reset camera. //.. // to load files with the same name but located in different directories //CPath::clearMap(); // load and set search paths from config //Modules::config().configSearchPaths(); _CurrentInstance = ""; nlinfo("Scene cleared"); }
SceneManager::~SceneManager() { if(mPhysicsWorld) { delete mPhysicsWorld; mPhysicsWorld = 0; } if(mCollisionConfig) { delete mCollisionConfig; mCollisionConfig = 0; } if(mBroadphaseAlgorithm) { delete mBroadphaseAlgorithm; mBroadphaseAlgorithm = 0; } if(mConstraintSolver) { delete mConstraintSolver; mConstraintSolver = 0; } if(mCollisionDispatcher) { delete mCollisionDispatcher; mCollisionDispatcher = 0; } if(mSceneTree) { deleteEntities(mSceneTree); deleteTree(mSceneTree); delete mSceneTree; mSceneTree = 0; } }