GameObject::~GameObject() { _OnDestroy(); while (!m_children.Empty()) { GameObject *child = m_children.Front(); delete child; } while (!m_components.Empty()) { Component *comp = m_components.Front(); m_components.PopFront(); delete comp; } if (parent) { parent->m_children.Remove(this); // Remove me from parent } #ifdef BANG_EDITOR WindowEventManager::NotifyGameObjectDestroyed(this); #endif }
void IResourceManager::Destroy() { _OnBeforeResourcesDestroyed(); m_mGroups.clear(); _OnDestroy(); for( auto& Pair : m_mLoaders ) { if( !Pair.second->IsManualDestroy() ) xst_delete( Pair.second ); } m_mLoaders.clear(); m_bDestroyed = true; }
Scene::~Scene() { _OnDestroy(); delete m_defaultCamera; }