You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
UDeprecatedDataLayerInstance allows to boot level using deprecated UDataLayers Worlds using DataLayer can run the DataLayerToAssetCommandlet to transition their existing DataLayers FActorDataLayer interface is deprecated. DataLayers Blueprint referencers should now use DataLayerAsset to retrieve DataLayerInstances. DataLayer Code referencers should now use DataLayerAssets or DataLayerInstance FName to retrieve DataLayerInstances. DataLayerLabels now only used for display/UI purpose Relabeling DataLayers is not permitted anymore on new DataLayerInstances (allowed on UDeprecatedDataLayerInstance) Added Changelist Validation for DataLayers Added a column to the datalayer outliner showing any data layer errors. #rb richard.mal jeanfrancois.dube #preflight 623098c2050dc69468b6a297 (errors only related to lyra, which do not exist in this stream) #ROBOMERGE-OWNER: philippe.deseve #ROBOMERGE-AUTHOR: philippe.deseve #ROBOMERGE-SOURCE: CL 19385808 via CL 19387392 #ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v926-19321884) [CL 19389077 by philippe deseve in ue5-main branch]
97 lines
3.0 KiB
C++
97 lines
3.0 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "DataLayerOutlinerIsVisibleColumn.h"
|
|
#include "DataLayer/DataLayerEditorSubsystem.h"
|
|
#include "DataLayerTreeItem.h"
|
|
#include "Widgets/Images/SImage.h"
|
|
#include "Widgets/Input/SButton.h"
|
|
#include "Widgets/Input/SCheckBox.h"
|
|
#include "Widgets/Views/STreeView.h"
|
|
#include "ScopedTransaction.h"
|
|
#include "EditorStyleSet.h"
|
|
#include "Editor.h"
|
|
|
|
#define LOCTEXT_NAMESPACE "DataLayer"
|
|
|
|
FName FDataLayerOutlinerIsVisibleColumn::GetID()
|
|
{
|
|
static FName DataLayerOutlinerIsVisible("Data Layer Visibility");
|
|
return DataLayerOutlinerIsVisible;
|
|
}
|
|
|
|
/** Widget responsible for managing the visibility for a single item */
|
|
class SDataLayerVisibilityWidget : public SVisibilityWidget
|
|
{
|
|
protected:
|
|
|
|
virtual bool IsEnabled() const override
|
|
{
|
|
auto TreeItem = WeakTreeItem.Pin();
|
|
if (FDataLayerTreeItem* DataLayerTreeItem = TreeItem.IsValid() ? TreeItem->CastTo<FDataLayerTreeItem>() : nullptr)
|
|
{
|
|
const UDataLayerInstance* DataLayer = DataLayerTreeItem->GetDataLayer();
|
|
const UDataLayerInstance* ParentDataLayer = DataLayer ? DataLayer->GetParent() : nullptr;
|
|
const bool bIsParentVisible = ParentDataLayer ? ParentDataLayer->IsEffectiveVisible() : true;
|
|
return bIsParentVisible && DataLayer && DataLayer->GetWorld() && !DataLayer->GetWorld()->IsPlayInEditor() && DataLayer->IsEffectiveLoadedInEditor();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
virtual const FSlateBrush* GetBrush() const override
|
|
{
|
|
bool bIsEffectiveVisible = false;
|
|
auto TreeItem = WeakTreeItem.Pin();
|
|
if (FDataLayerTreeItem* DataLayerTreeItem = TreeItem.IsValid() ? TreeItem->CastTo<FDataLayerTreeItem>() : nullptr)
|
|
{
|
|
UDataLayerInstance* DataLayer = DataLayerTreeItem->GetDataLayer();
|
|
bIsEffectiveVisible = DataLayer && DataLayer->IsEffectiveVisible();
|
|
}
|
|
|
|
if (bIsEffectiveVisible)
|
|
{
|
|
return IsHovered() ? VisibleHoveredBrush : VisibleNotHoveredBrush;
|
|
}
|
|
else
|
|
{
|
|
return IsHovered() ? NotVisibleHoveredBrush : NotVisibleNotHoveredBrush;
|
|
}
|
|
}
|
|
|
|
virtual FSlateColor GetForegroundColor() const override
|
|
{
|
|
if (IsEnabled())
|
|
{
|
|
auto Outliner = WeakOutliner.Pin();
|
|
auto TreeItem = WeakTreeItem.Pin();
|
|
const bool bIsSelected = Outliner->GetTree().IsItemSelected(TreeItem.ToSharedRef());
|
|
if (IsVisible() && !Row->IsHovered() && !bIsSelected)
|
|
{
|
|
return FLinearColor::Transparent;
|
|
}
|
|
return FAppStyle::Get().GetSlateColor("Colors.ForegroundHover");
|
|
}
|
|
else
|
|
{
|
|
return FLinearColor(FColorList::DimGrey);
|
|
}
|
|
}
|
|
|
|
virtual bool ShouldPropagateVisibilityChangeOnChildren() const { return false; }
|
|
};
|
|
|
|
const TSharedRef<SWidget> FDataLayerOutlinerIsVisibleColumn::ConstructRowWidget(FSceneOutlinerTreeItemRef TreeItem, const STableRow<FSceneOutlinerTreeItemPtr>& Row)
|
|
{
|
|
if (TreeItem->ShouldShowVisibilityState())
|
|
{
|
|
return SNew(SHorizontalBox)
|
|
+ SHorizontalBox::Slot()
|
|
.AutoWidth()
|
|
.VAlign(VAlign_Center)
|
|
[
|
|
SNew(SDataLayerVisibilityWidget, SharedThis(this), WeakOutliner, TreeItem, &Row)
|
|
];
|
|
}
|
|
return SNullWidget::NullWidget;
|
|
}
|
|
|
|
#undef LOCTEXT_NAMESPACE |