本文整理汇总了C++中TWeakObjectPtr::MarkComponentsRenderStateDirty方法的典型用法代码示例。如果您正苦于以下问题:C++ TWeakObjectPtr::MarkComponentsRenderStateDirty方法的具体用法?C++ TWeakObjectPtr::MarkComponentsRenderStateDirty怎么用?C++ TWeakObjectPtr::MarkComponentsRenderStateDirty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TWeakObjectPtr
的用法示例。
在下文中一共展示了TWeakObjectPtr::MarkComponentsRenderStateDirty方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UpdateActorAllViewsVisibility
void FLayers::UpdateActorAllViewsVisibility( const TWeakObjectPtr< AActor >& Actor )
{
uint64 OriginalHiddenViews = Actor->HiddenEditorViews;
for ( int32 ViewIndex = 0; ViewIndex < Editor->LevelViewportClients.Num(); ++ViewIndex )
{
// don't have this reattach, as we can do it once for all views
UpdateActorViewVisibility(Editor->LevelViewportClients[ViewIndex], Actor, false);
}
// reregister if we changed the visibility bits, as the rendering thread needs them
if (OriginalHiddenViews != Actor->HiddenEditorViews)
{
return;
}
Actor->MarkComponentsRenderStateDirty();
// redraw all viewports if the actor
for (int32 ViewIndex = 0; ViewIndex < Editor->LevelViewportClients.Num(); ViewIndex++)
{
// make sure we redraw all viewports
Editor->LevelViewportClients[ViewIndex]->Invalidate();
}
}
示例2: UpdateActorViewVisibility
void FLayers::UpdateActorViewVisibility( FLevelEditorViewportClient* ViewportClient, const TWeakObjectPtr< AActor >& Actor, bool bReregisterIfDirty )
{
// get the viewport client
const int32 ViewIndex = ViewportClient->ViewIndex;
int32 NumHiddenLayers = 0;
// look for which of the actor layers are hidden
for (int32 LayerIndex = 0; LayerIndex < Actor->Layers.Num(); LayerIndex++)
{
// if its in the view hidden list, this layer is hidden for this actor
if (ViewportClient->ViewHiddenLayers.Find( Actor->Layers[ LayerIndex ] ) != -1)
{
NumHiddenLayers++;
// right now, if one is hidden, the actor is hidden
break;
}
}
uint64 OriginalHiddenViews = Actor->HiddenEditorViews;
// right now, if one is hidden, the actor is hidden
if (NumHiddenLayers)
{
Actor->HiddenEditorViews |= ((uint64)1 << ViewIndex);
}
else
{
Actor->HiddenEditorViews &= ~((uint64)1 << ViewIndex);
}
// reregister if we changed the visibility bits, as the rendering thread needs them
if (bReregisterIfDirty && OriginalHiddenViews != Actor->HiddenEditorViews)
{
Actor->MarkComponentsRenderStateDirty();
// make sure we redraw the viewport
ViewportClient->Invalidate();
}
}
示例3: UpdatePerViewVisibility
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Operations on actor viewport visibility regarding layers
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void FLayers::UpdatePerViewVisibility( FLevelEditorViewportClient* ViewportClient, const FName& LayerThatChanged )
{
const int32 ViewIndex = ViewportClient->ViewIndex;
// get the viewport client
// Iterate over all actors, looking for actors in the specified layers.
if( ViewportClient->GetWorld() == NULL )
{
return;
}
for( FActorIterator It(ViewportClient->GetWorld()) ; It ; ++It )
{
const TWeakObjectPtr< AActor > Actor = *It;
if( !IsActorValidForLayer( Actor ) )
{
continue;
}
// if the view has nothing hidden, just quickly mark the actor as visible in this view
if ( ViewportClient->ViewHiddenLayers.Num() == 0)
{
// if the actor had this view hidden, then unhide it
if ( Actor->HiddenEditorViews & ( (uint64)1 << ViewIndex ) )
{
// make sure this actor doesn't have the view set
Actor->HiddenEditorViews &= ~( (uint64)1 << ViewIndex );
Actor->MarkComponentsRenderStateDirty();
}
}
// else if we were given a name that was changed, only update actors with that name in their layers,
// otherwise update all actors
else if ( LayerThatChanged == NAME_Skip || Actor->Layers.Contains( LayerThatChanged ) )
{
UpdateActorViewVisibility(ViewportClient, Actor);
}
}
// make sure we redraw the viewport
ViewportClient->Invalidate();
}
示例4: 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;
}