Exemple #1
0
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;
  }
}