Scene::~Scene() { for (Vector<AnimatedMesh*>::iterator t = animatedMeshes.begin(); t != animatedMeshes.end(); ++t) { AnimatedMesh * obj = *t; obj->Release(); } animatedMeshes.clear(); for (Vector<Camera*>::iterator t = cameras.begin(); t != cameras.end(); ++t) { Camera * obj = *t; obj->Release(); } cameras.clear(); SafeRelease(currentCamera); SafeRelease(clipCamera); for (Map<String, ProxyNode*>::iterator it = rootNodes.begin(); it != rootNodes.end(); ++it) { SafeRelease(it->second); } rootNodes.clear(); // Children should be removed first because they should unregister themselves in managers RemoveAllChildren(); SafeRelease(imposterManager); transformSystem = 0; renderUpdateSystem = 0; lodSystem = 0; uint32 size = (uint32)systems.size(); for (uint32 k = 0; k < size; ++k) SafeDelete(systems[k]); systems.clear(); SafeDelete(eventSystem); SafeDelete(renderSystem); }
Scene::~Scene() { SceneCache::Instance()->RemoveScene(this); for (Vector<AnimatedMesh*>::iterator t = animatedMeshes.begin(); t != animatedMeshes.end(); ++t) { AnimatedMesh * obj = *t; obj->Release(); } animatedMeshes.clear(); for (Vector<Camera*>::iterator t = cameras.begin(); t != cameras.end(); ++t) { Camera * obj = *t; obj->Release(); } cameras.clear(); SafeRelease(mainCamera); SafeRelease(drawCamera); for (ProxyNodeMap::iterator it = rootNodes.begin(); it != rootNodes.end(); ++it) { SafeRelease(it->second); } rootNodes.clear(); // Children should be removed first because they should unregister themselves in managers RemoveAllChildren(); SafeRelease(imposterManager); SafeRelease(sceneGlobalMaterial); transformSystem = 0; renderUpdateSystem = 0; lodSystem = 0; debugRenderSystem = 0; particleEffectSystem = 0; updatableSystem = 0; lightUpdateSystem = 0; switchSystem = 0; soundSystem = 0; actionSystem = 0; skyboxSystem = 0; staticOcclusionSystem = 0; materialSystem = 0; speedTreeUpdateSystem = 0; foliageSystem = 0; windSystem = 0; waveSystem = 0; uint32 size = (uint32)systems.size(); for (uint32 k = 0; k < size; ++k) SafeDelete(systems[k]); systems.clear(); systemsToProcess.clear(); SafeDelete(eventSystem); SafeDelete(renderSystem); }