//----------------------------------------------------------------------------- // Destructor //----------------------------------------------------------------------------- CPhysicEngine::~CPhysicEngine (void) { // Liberamos el gestor de controllers NxReleaseControllerManager( m_pControllerMgr ); // Liberacion del motor de fisica m_pPhysicsSDK->release(); // NOTA: Al liberar el SDK, tenemos que liberar tambien la memoria persistente de la libreria de Streaming // para que libere sus tablas de referencia a instancias de meshes que estuvieran cargadas NXU::releasePersistentMemory (); }
/*********************************************************** quit function ***********************************************************/ void PhysXEngine::Quit() { if (gScene) { // Make sure to fetchResults() before shutting down GetPhysicsResults(); gPhysicsSDK->releaseScene(*gScene); } if (gPhysicsSDK) gPhysicsSDK->release(); // clean up character controllers gManager->purgeControllers(); _current_controller_idx = 0; NxReleaseControllerManager(gManager); }
//---------------------------------------------------------------------------- // Free memory //---------------------------------------------------------------------------- void CPhysicsManager::Release () { CHECKED_DELETE(m_pCookingMesh); if( m_pControllerManager != NULL ) { m_pControllerManager->purgeControllers(); NxReleaseControllerManager(m_pControllerManager); } if(m_pScene != NULL) { m_pPhysicsSDK->releaseScene(*m_pScene); m_pScene = NULL; } if(m_pPhysicsSDK != NULL) { NxReleasePhysicsSDK(m_pPhysicsSDK); m_pPhysicsSDK = NULL; } CHECKED_DELETE(m_pMyAllocator); /**/ }
//服务的关闭 efd::AsyncResult PhysxCharacterMovementService::OnShutdown() { NxReleaseControllerManager(m_pkNxControllerManager); return efd::AsyncResult_Complete; }
ControllerManager::~ControllerManager() { mControllers.destroyAll(); NxReleaseControllerManager(mManager); delete mAllocator; }
void ReleaseControllerManager() { NxReleaseControllerManager(gManager); }