void VTerrainManager::OnHandleCallback(IVisCallbackDataObject_cl *pData) { if (pData->m_pSender==&Vision::Callbacks.OnWorldDeInit) { // only purge terrains while unloading the level FOREACH_TERRAIN pTerrain->RemoveResourceFlag(VRESOURCEFLAG_NOPURGING); } PurgeUnusedResources(); VTerrainDecorationModelManager::GlobalManager().PurgeUnusedResources(); FOREACH_TERRAIN pTerrain->SetResourceFlag(VRESOURCEFLAG_NOPURGING); }
void VisParticleGroupManager_cl::OnHandleCallback(IVisCallbackDataObject_cl *pData) { if (pData->m_pSender==&Vision::Callbacks.OnUpdateSceneFinished) { if (Vision::Editor.IsAnimatingOrPlaying()) Instances().Tick(Vision::GetTimer()->GetTimeDifference() * m_fGlobalTimeScaling); // this handles all particle group instances in this collection else { IVTimeOfDay *pToD = Vision::Renderer.GetTimeOfDayHandler(); if (pToD!=NULL && pToD->GetDayTime()!=m_fLastToDUpdate) { Instances().EvaluateSceneBrightness(); m_fLastToDUpdate = pToD->GetDayTime(); } } return; } // clean up when a scene is unloaded if (pData->m_pSender==&Vision::Callbacks.OnWorldDeInit) { Instances().Purge(); VisParticleConstraint_cl::GlobalConstraintList().ReleaseAllConstraints(); PurgeUnusedResources(); m_fLastToDUpdate = -1.f; return; } if (pData->m_pSender==&Vision::Callbacks.OnAfterSceneUnloaded) { Instances().Purge(); VisParticleConstraint_cl::GlobalConstraintList().ReleaseAllConstraints(); return; } if (pData->m_pSender==&Vision::Callbacks.OnReassignShaders) { Instances().ReassignShader(true); return; } }