void C_SceneEntity::PostDataUpdate( DataUpdateType_t updateType ) { BaseClass::PostDataUpdate( updateType ); char const *str = GetSceneFileName(); if ( updateType == DATA_UPDATE_CREATED ) { Assert( str && str[ 0 ] ); if ( str && str[ 0 ] ) { LoadSceneFromFile( str ); // Kill everything except flex events Assert( m_pScene ); if ( m_pScene ) { int types[ 2 ]; types[ 0 ] = CChoreoEvent::FLEXANIMATION; types[ 1 ] = CChoreoEvent::EXPRESSION; m_pScene->RemoveEventsExceptTypes( types, 2 ); } SetNextClientThink( CLIENT_THINK_ALWAYS ); } } // Playback state changed... if ( m_bWasPlaying != m_bIsPlayingBack ) { for(int i = 0; i < m_hActorList.Count() ; ++i ) { C_BaseFlex *actor = m_hActorList[ i ].Get(); if ( !actor ) continue; Assert( m_pScene ); if ( m_pScene ) { ClearSceneEvents( m_pScene, false ); if ( m_bIsPlayingBack ) { m_pScene->ResetSimulation(); actor->StartChoreoScene( m_pScene ); } else { m_pScene->ResetSimulation(); actor->RemoveChoreoScene( m_pScene ); } } } } }