You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
SceneOutliner: deleted actors now display a cached label instead of the generic "(Deleted Actor)" label.
#rb patrick.enfedaque #ROBOMERGE-SOURCE: CL 15778783 in //UE5/Release-5.0-EarlyAccess/... #ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v783-15756269) [CL 15787307 by roey borsteinas in ue5-main branch]
This commit is contained in:
@@ -111,22 +111,26 @@ private:
|
||||
TWeakPtr<FActorTreeItem> TreeItemPtr;
|
||||
TWeakObjectPtr<AActor> ActorPtr;
|
||||
TAttribute<FText> HighlightText;
|
||||
|
||||
|
||||
FText GetDisplayText() const
|
||||
{
|
||||
const AActor* Actor = ActorPtr.Get();
|
||||
if (const ALevelInstance* LevelInstanceActor = Cast<ALevelInstance>(Actor))
|
||||
if (const FSceneOutlinerTreeItemPtr TreeItem = TreeItemPtr.Pin())
|
||||
{
|
||||
if (LevelInstanceActor->IsDirty() && !bInEditingMode)
|
||||
const AActor* Actor = ActorPtr.Get();
|
||||
if (const ALevelInstance* LevelInstanceActor = Cast<ALevelInstance>(Actor))
|
||||
{
|
||||
FFormatNamedArguments Args;
|
||||
Args.Add(TEXT("ActorLabel"), FText::FromString(LevelInstanceActor->GetActorLabel()));
|
||||
Args.Add(TEXT("EditTag"), LOCTEXT("EditingLevelInstanceLabel", "*"));
|
||||
return FText::Format(LOCTEXT("LevelInstanceDisplay", "{ActorLabel}{EditTag}"), Args);
|
||||
if (LevelInstanceActor->IsDirty() && !bInEditingMode)
|
||||
{
|
||||
FFormatNamedArguments Args;
|
||||
Args.Add(TEXT("ActorLabel"), FText::FromString(TreeItem->GetDisplayString()));
|
||||
Args.Add(TEXT("EditTag"), LOCTEXT("EditingLevelInstanceLabel", "*"));
|
||||
return FText::Format(LOCTEXT("LevelInstanceDisplay", "{ActorLabel}{EditTag}"), Args);
|
||||
}
|
||||
}
|
||||
return FText::FromString(TreeItem->GetDisplayString());
|
||||
}
|
||||
|
||||
return Actor ? FText::FromString(Actor->GetActorLabel()) : LOCTEXT("ActorLabelForMissingActor", "(Deleted Actor)");
|
||||
return FText();
|
||||
}
|
||||
|
||||
FText GetTooltipText() const
|
||||
@@ -189,7 +193,7 @@ private:
|
||||
}
|
||||
else
|
||||
{
|
||||
return nullptr;
|
||||
return FSlateIconFinder::FindIconForClass(AActor::StaticClass()).GetOptionalIcon();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -340,6 +344,9 @@ FActorTreeItem::FActorTreeItem(AActor* InActor)
|
||||
, Actor(InActor)
|
||||
, ID(InActor)
|
||||
{
|
||||
check(InActor);
|
||||
ActorLabel = InActor->GetActorLabel();
|
||||
|
||||
bExistsInCurrentWorldAndPIE = GEditor->ObjectsThatExistInEditorWorld.Get(InActor);
|
||||
}
|
||||
|
||||
@@ -350,8 +357,7 @@ FSceneOutlinerTreeItemID FActorTreeItem::GetID() const
|
||||
|
||||
FString FActorTreeItem::GetDisplayString() const
|
||||
{
|
||||
const AActor* ActorPtr = Actor.Get();
|
||||
return ActorPtr ? ActorPtr->GetActorLabel() : LOCTEXT("ActorLabelForMissingActor", "(Deleted Actor)").ToString();
|
||||
return ActorLabel;
|
||||
}
|
||||
|
||||
bool FActorTreeItem::CanInteract() const
|
||||
@@ -388,7 +394,16 @@ void FActorTreeItem::OnVisibilityChanged(const bool bNewVisibility)
|
||||
|
||||
bool FActorTreeItem::GetVisibility() const
|
||||
{
|
||||
return Actor.IsValid() && !Actor->IsTemporarilyHiddenInEditor(true);
|
||||
// We want deleted actors to appear as if they are visible to minimize visual clutter.
|
||||
return !Actor.IsValid() || !Actor->IsTemporarilyHiddenInEditor(true);
|
||||
}
|
||||
|
||||
void FActorTreeItem::OnLabelChanged()
|
||||
{
|
||||
if (Actor.IsValid())
|
||||
{
|
||||
ActorLabel = Actor->GetActorLabel();
|
||||
}
|
||||
}
|
||||
|
||||
#undef LOCTEXT_NAMESPACE
|
||||
|
||||
@@ -1654,6 +1654,8 @@ void SSceneOutliner::OnItemLabelChanged(FSceneOutlinerTreeItemPtr ChangedItem)
|
||||
// If the item already exists
|
||||
if (FSceneOutlinerTreeItemPtr* ExistingItem = TreeItemMap.Find(ChangedItem->GetID()))
|
||||
{
|
||||
(*ExistingItem)->OnLabelChanged();
|
||||
|
||||
// The changed item flags will have been set already
|
||||
if (!ChangedItem->Flags.bIsFilteredOut)
|
||||
{
|
||||
|
||||
@@ -45,8 +45,11 @@ public:
|
||||
virtual void OnVisibilityChanged(const bool bNewVisibility) override;
|
||||
virtual bool HasVisibilityInfo() const override { return true; }
|
||||
virtual bool GetVisibility() const override;
|
||||
virtual void OnLabelChanged() override;
|
||||
/* End ISceneOutlinerTreeItem Implementation */
|
||||
public:
|
||||
/** true if this item exists in both the current world and PIE. */
|
||||
bool bExistsInCurrentWorldAndPIE;
|
||||
/** Cached actor label */
|
||||
FString ActorLabel;
|
||||
};
|
||||
|
||||
@@ -147,4 +147,6 @@ public:
|
||||
/** Query this items visibility state. Only called if the item type has visibility info */
|
||||
virtual bool GetVisibility() const { return false; }
|
||||
|
||||
/** Called when this item's label has changed */
|
||||
virtual void OnLabelChanged() {}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user