77#include " CesiumGlobeAnchorComponent.h"
88#include " DetailCategoryBuilder.h"
99#include " DetailLayoutBuilder.h"
10+ #include " DetailWidgetRow.h"
11+ #include " Widgets/Text/STextBlock.h"
1012#include " IDetailGroup.h"
1113#include " Widgets/SToolTip.h"
1214
15+ #define LOCTEXT_NAMESPACE " CesiumGlobeAnchorCustomization"
16+
1317FName FCesiumGlobeAnchorCustomization::RegisteredLayoutName;
1418
1519void FCesiumGlobeAnchorCustomization::Register (
@@ -36,6 +40,7 @@ FCesiumGlobeAnchorCustomization::MakeInstance() {
3640void FCesiumGlobeAnchorCustomization::CustomizeDetails (
3741 IDetailLayoutBuilder& DetailBuilder) {
3842 DetailBuilder.GetObjectsBeingCustomized (this ->SelectedObjects );
43+ const bool bIsMultiSelect = this ->SelectedObjects .Num () > 1 ;
3944
4045 IDetailCategoryBuilder& CesiumCategory = DetailBuilder.EditCategory (" Cesium" );
4146
@@ -67,11 +72,29 @@ void FCesiumGlobeAnchorCustomization::CustomizeDetails(
6772 UCesiumGlobeAnchorComponent,
6873 TeleportWhenUpdatingTransform));
6974
70- this ->UpdateDerivedProperties ();
71-
72- this ->CreatePositionLongitudeLatitudeHeight (DetailBuilder, CesiumCategory);
73- this ->CreatePositionEarthCenteredEarthFixed (DetailBuilder, CesiumCategory);
74- this ->CreateRotationEastSouthUp (DetailBuilder, CesiumCategory);
75+ if (!bIsMultiSelect) {
76+ this ->UpdateDerivedProperties ();
77+ this ->CreatePositionLongitudeLatitudeHeight (DetailBuilder, CesiumCategory);
78+ this ->CreatePositionEarthCenteredEarthFixed (DetailBuilder, CesiumCategory);
79+ this ->CreateRotationEastSouthUp (DetailBuilder, CesiumCategory);
80+ } else {
81+ FDetailWidgetRow& Row =
82+ CesiumCategory
83+ .AddCustomRow (
84+ LOCTEXT (" MultipleSelectionFilter" , " Multiple Selection" ))
85+ .FilterString (LOCTEXT (
86+ " MultipleSelectionFilters" ,
87+ " Latitude Longitude Height ECEF ESU" ));
88+
89+ Row.WholeRowContent ()
90+ [SNew (SBox).Padding (FMargin (0 .f , 4 .f ))
91+ [SNew (STextBlock)
92+ .Text (LOCTEXT (
93+ " MultiSelectInfo" ,
94+ " Multiple actors selected. Geodetic position (Latitude, Longitude, Height; ECEF) and "
95+ " ESU rotation cannot be edited in multi-select. Select a single actor to edit these values." ))
96+ .AutoWrapText (true )]];
97+ }
7598}
7699
77100void FCesiumGlobeAnchorCustomization::CreatePositionEarthCenteredEarthFixed (
@@ -296,3 +319,5 @@ TStatId UCesiumGlobeAnchorDerivedProperties::GetStatId() const {
296319 UCesiumGlobeAnchorRotationEastSouthUp,
297320 STATGROUP_Tickables);
298321}
322+
323+ #undef LOCTEXT_NAMESPACE
0 commit comments