void CGameStateRecorder::StartSession() { m_GameStates.clear(); m_itSingleActorGameState = m_GameStates.end(); m_IgnoredEvents.clear(); const char* filterName = m_demo_actorFilter->GetString(); // send game events to record the initial game state /* if(m_mode) { CActor *pActor = static_cast<CActor *>(gEnv->pGame->GetIGameFramework()->GetClientActor()); */ m_pSingleActor = GetActorOfName(filterName); if(m_pSingleActor)// && !pActor->GetSpectatorMode() && pActor->IsPlayer()) { m_mode = GPM_SingleActor; AddActorToStats(m_pSingleActor); m_itSingleActorGameState = m_GameStates.begin();// position of requested actor's id (player by default) } // } else if (!strcmpi(filterName,"all")) { IAIObjectManager* pAIObjMgr = gEnv->pAISystem->GetAIObjectManager(); m_mode = GPM_AllActors; { AutoAIObjectIter it(pAIObjMgr->GetFirstAIObject(OBJFILTER_TYPE, AIOBJECT_ACTOR)); for(; it->GetObject(); it->Next()) { IAIObject* pObject = it->GetObject(); if(pObject) { CActor* pActor = static_cast<CActor *>(gEnv->pGame->GetIGameFramework()->GetIActorSystem()->GetActor(pObject->GetEntityID())); if(pActor) AddActorToStats(pActor); } } } { AutoAIObjectIter it(pAIObjMgr->GetFirstAIObject(OBJFILTER_TYPE, AIOBJECT_VEHICLE)); for(; it->GetObject(); it->Next()) { IAIObject* pObject = it->GetObject(); if(pObject) { CActor* pActor = static_cast<CActor *>(gEnv->pGame->GetIGameFramework()->GetIActorSystem()->GetActor(pObject->GetEntityID())); if(pActor) AddActorToStats(pActor); } } } } }
bool FLayers::AddActorsToLayers( const TArray< TWeakObjectPtr< AActor > >& Actors, const TArray< FName >& LayerNames ) { bool bChangesOccurred = false; if ( LayerNames.Num() > 0 ) { Editor->GetSelectedActors()->BeginBatchSelectOperation(); for( auto ActorIt = Actors.CreateConstIterator(); ActorIt; ++ActorIt ) { const TWeakObjectPtr< AActor > Actor = *ActorIt; if ( !IsActorValidForLayer( Actor ) ) { continue; } bool bActorWasModified = false; for( auto LayerNameIt = LayerNames.CreateConstIterator(); LayerNameIt; ++LayerNameIt ) { const FName& LayerName = *LayerNameIt; if( !Actor->Layers.Contains( LayerName ) ) { if( !bActorWasModified ) { Actor->Modify(); bActorWasModified = true; } TWeakObjectPtr< ULayer > Layer = EnsureLayerExists( LayerName ); Actor->Layers.Add( LayerName ); Layer->Modify(); AddActorToStats( Layer, Actor); } } //END Iteration over Layers if( bActorWasModified ) { // update per-view visibility info UpdateActorAllViewsVisibility(Actor); // update general actor visibility bool bActorModified = false; bool bActorSelectionChanged = false; const bool bActorNotifySelectionChange = true; const bool bActorRedrawViewports = false; UpdateActorVisibility( Actor, bActorSelectionChanged, bActorModified, bActorNotifySelectionChange, bActorRedrawViewports ); bChangesOccurred = true; } } //END Iteration over Actors Editor->GetSelectedActors()->EndBatchSelectOperation(); } return bChangesOccurred; }
bool FLayers::InitializeNewActorLayers( const TWeakObjectPtr< AActor >& Actor ) { if( !IsActorValidForLayer( Actor ) ) { return false; } for( auto LayerNameIt = Actor->Layers.CreateConstIterator(); LayerNameIt; ++LayerNameIt ) { const FName LayerName = *LayerNameIt; TWeakObjectPtr< ULayer > Layer = EnsureLayerExists( LayerName ); Layer->Modify(); AddActorToStats( Layer, Actor); } return Actor->Layers.Num() > 0; }