本文整理汇总了C++中TWeakObjectPtr::Modify方法的典型用法代码示例。如果您正苦于以下问题:C++ TWeakObjectPtr::Modify方法的具体用法?C++ TWeakObjectPtr::Modify怎么用?C++ TWeakObjectPtr::Modify使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TWeakObjectPtr
的用法示例。
在下文中一共展示了TWeakObjectPtr::Modify方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AddActorsToLayers
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;
}
示例2: RemoveActorsFromLayers
bool FLayers::RemoveActorsFromLayers( const TArray< TWeakObjectPtr< AActor > >& Actors, const TArray< FName >& LayerNames, const bool bUpdateStats )
{
Editor->GetSelectedActors()->BeginBatchSelectOperation();
bool bChangesOccurred = false;
for( auto ActorIt = Actors.CreateConstIterator(); ActorIt; ++ActorIt )
{
const TWeakObjectPtr< AActor > Actor = *ActorIt;
if ( !IsActorValidForLayer( Actor ) )
{
continue;
}
bool ActorWasModified = false;
for( auto LayerNameIt = LayerNames.CreateConstIterator(); LayerNameIt; ++LayerNameIt )
{
const FName& LayerName = *LayerNameIt;
if( Actor->Layers.Contains( LayerName ) )
{
if( !ActorWasModified )
{
Actor->Modify();
ActorWasModified = true;
}
Actor->Layers.Remove( LayerName );
TWeakObjectPtr< ULayer > Layer;
if( bUpdateStats && TryGetLayer( LayerName, Layer ))
{
Layer->Modify();
RemoveActorFromStats( Layer, Actor);
}
}
} //END Iteration over Layers
if( ActorWasModified )
{
// 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;
}
示例3: SetLayersVisibility
void FLayers::SetLayersVisibility( const TArray< FName >& LayerNames, bool bIsVisible )
{
if( LayerNames.Num() == 0 )
{
return;
}
bool bChangeOccurred = false;
for( auto LayerNameIt = LayerNames.CreateConstIterator(); LayerNameIt; ++LayerNameIt )
{
const TWeakObjectPtr< ULayer > Layer = EnsureLayerExists( *LayerNameIt );
check( Layer != NULL );
if( Layer->bIsVisible != bIsVisible )
{
Layer->Modify();
Layer->bIsVisible = bIsVisible;
LayersChanged.Broadcast( ELayersAction::Modify, Layer, "bIsVisible" );
bChangeOccurred = true;
}
}
if( bChangeOccurred )
{
UpdateAllActorsVisibility( true, true );
}
}
示例4: ToggleLayerVisibility
void FLayers::ToggleLayerVisibility( const FName& LayerName )
{
const TWeakObjectPtr< ULayer > Layer = EnsureLayerExists( LayerName );
check( Layer != NULL );
Layer->Modify();
Layer->bIsVisible = !Layer->bIsVisible;
LayersChanged.Broadcast( ELayersAction::Modify, Layer, "bIsVisible" );
UpdateAllActorsVisibility( true, true );
}
示例5: RenameLayer
bool FLayers::RenameLayer( const FName OriginalLayerName, const FName& NewLayerName )
{
// We specifically don't pass the original LayerName by reference to avoid it changing
// it's original value, in case, it would be the reference of the Layer's actually FName
if ( OriginalLayerName == NewLayerName )
{
return false;
}
TWeakObjectPtr< ULayer > Layer;
if( !TryGetLayer( OriginalLayerName, Layer ) )
{
return false;
}
Layer->Modify();
Layer->LayerName = NewLayerName;
Layer->ActorStats.Empty();
// Iterate over all actors, swapping layers.
for( FActorIterator It(GetWorld()) ; It ; ++It )
{
const TWeakObjectPtr< AActor > Actor = *It;
if( !IsActorValidForLayer( Actor ) )
{
continue;
}
if ( FLayers::RemoveActorFromLayer( Actor, OriginalLayerName ) )
{
// No need to mark the actor as modified these functions take care of that
AddActorToLayer( Actor, NewLayerName );
}
}
// update all views's hidden layers if they had this one
for ( int32 ViewIndex = 0; ViewIndex < Editor->LevelViewportClients.Num(); ViewIndex++ )
{
FLevelEditorViewportClient* ViewportClient = Editor->LevelViewportClients[ ViewIndex ];
if ( ViewportClient->ViewHiddenLayers.Remove( OriginalLayerName ) > 0 )
{
ViewportClient->ViewHiddenLayers.AddUnique( NewLayerName );
ViewportClient->Invalidate();
}
}
LayersChanged.Broadcast( ELayersAction::Rename, Layer, "LayerName" );
return true;
}
示例6: MakeAllLayersVisible
void FLayers::MakeAllLayersVisible()
{
TArray< FName > AllLayerNames;
FLayers::AddAllLayerNamesTo( AllLayerNames );
for( auto LayerIt = GetWorld()->Layers.CreateIterator(); LayerIt; ++LayerIt )
{
TWeakObjectPtr< ULayer > Layer = *LayerIt;
if( !Layer->bIsVisible )
{
Layer->Modify();
Layer->bIsVisible = true;
LayersChanged.Broadcast( ELayersAction::Modify, Layer, "bIsVisible" );
}
}
UpdateAllActorsVisibility( true, true );
}
示例7: InitializeNewActorLayers
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;
}
示例8: ToggleLayersVisibility
void FLayers::ToggleLayersVisibility( const TArray< FName >& LayerNames )
{
if( LayerNames.Num() == 0 )
{
return;
}
for( auto LayerNameIt = LayerNames.CreateConstIterator(); LayerNameIt; ++LayerNameIt )
{
const TWeakObjectPtr< ULayer > Layer = EnsureLayerExists( *LayerNameIt );
check( Layer != NULL );
Layer->Modify();
Layer->bIsVisible = !Layer->bIsVisible;
LayersChanged.Broadcast( ELayersAction::Modify, Layer, "bIsVisible" );
}
UpdateAllActorsVisibility( true, true );
}
示例9: DisassociateActorFromLayers
bool FLayers::DisassociateActorFromLayers( const TWeakObjectPtr< AActor >& Actor )
{
if( !IsActorValidForLayer( Actor ) )
{
return false;
}
bool bChangeOccurred = false;
for( auto LayerNameIt = Actor->Layers.CreateConstIterator(); LayerNameIt; ++LayerNameIt )
{
const FName LayerName = *LayerNameIt;
TWeakObjectPtr< ULayer > Layer = EnsureLayerExists( LayerName );
Layer->Modify();
RemoveActorFromStats( Layer, Actor);
bChangeOccurred = true;
}
return bChangeOccurred;
}
示例10: UpdateActorVisibility
bool FLayers::UpdateActorVisibility( const TWeakObjectPtr< AActor >& Actor, bool& bOutSelectionChanged, bool& bOutActorModified, bool bNotifySelectionChange, bool bRedrawViewports )
{
bOutActorModified = false;
bOutSelectionChanged = false;
if( !IsActorValidForLayer( Actor ) )
{
return false;
}
// If the actor doesn't belong to any layers
if( Actor->Layers.Num() == 0)
{
// If the actor is also hidden
if( Actor->bHiddenEdLayer )
{
Actor->Modify();
// Actors that don't belong to any layer shouldn't be hidden
Actor->bHiddenEdLayer = false;
Actor->MarkComponentsRenderStateDirty();
bOutActorModified = true;
}
return bOutActorModified;
}
bool bActorBelongsToVisibleLayer = false;
for( int32 LayerIndex = 0 ; LayerIndex < GetWorld()->Layers.Num() ; ++LayerIndex )
{
const TWeakObjectPtr< ULayer > Layer = GetWorld()->Layers[ LayerIndex ];
if( !Layer->bIsVisible )
{
continue;
}
if( Actor->Layers.Contains( Layer->LayerName ) )
{
if ( Actor->bHiddenEdLayer )
{
Actor->Modify();
Actor->bHiddenEdLayer = false;
Actor->MarkComponentsRenderStateDirty();
bOutActorModified = true;
}
// Stop, because we found at least one visible layer the actor belongs to
bActorBelongsToVisibleLayer = true;
break;
}
}
// If the actor isn't part of a visible layer, hide and de-select it.
if( !bActorBelongsToVisibleLayer )
{
if ( !Actor->bHiddenEdLayer )
{
Actor->Modify();
Actor->bHiddenEdLayer = true;
Actor->MarkComponentsRenderStateDirty();
bOutActorModified = true;
}
//if the actor was selected, mark it as unselected
if ( Actor->IsSelected() )
{
bool bSelect = false;
bool bNotify = false;
bool bIncludeHidden = true;
Editor->SelectActor( Actor.Get(), bSelect, bNotify, bIncludeHidden );
bOutSelectionChanged = true;
bOutActorModified = true;
}
}
if ( bNotifySelectionChange && bOutSelectionChanged )
{
Editor->NoteSelectionChange();
}
if( bRedrawViewports )
{
Editor->RedrawLevelEditingViewports();
}
return bOutActorModified || bOutSelectionChanged;
}