Skip to content

Commit 2344e31

Browse files
authored
add multi-select behavior in customization
Added multi-select handling in CesiumGlobeAnchorCustomization.
1 parent 53364a1 commit 2344e31

File tree

1 file changed

+30
-5
lines changed

1 file changed

+30
-5
lines changed

Source/CesiumEditor/Private/CesiumGlobeAnchorCustomization.cpp

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,13 @@
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+
1317
FName FCesiumGlobeAnchorCustomization::RegisteredLayoutName;
1418

1519
void FCesiumGlobeAnchorCustomization::Register(
@@ -36,6 +40,7 @@ FCesiumGlobeAnchorCustomization::MakeInstance() {
3640
void 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

77100
void FCesiumGlobeAnchorCustomization::CreatePositionEarthCenteredEarthFixed(
@@ -296,3 +319,5 @@ TStatId UCesiumGlobeAnchorDerivedProperties::GetStatId() const {
296319
UCesiumGlobeAnchorRotationEastSouthUp,
297320
STATGROUP_Tickables);
298321
}
322+
323+
#undef LOCTEXT_NAMESPACE

0 commit comments

Comments
 (0)