Skip to content

Conversation

tobias74
Copy link

@tobias74 tobias74 commented Aug 24, 2025

Summary

When multiple UCesiumGlobeAnchorComponent instances are selected, the Cesium Details customization builds derived LLH/ECEF/ESU rows. During a Details rebuild on homogeneous multi-selection these rows can commit default values (e.g., 0/0), which triggers MoveToLongitudeLatitudeHeight and teleports actors and dirties the level.
This PR hides those rows for multi-select and shows a brief info row. Single-selection behavior is unchanged. Editor-only.


What changed

File: Source/CesiumEditor/Private/CesiumGlobeAnchorCustomization.cpp

  • Detect multi-select (SelectedObjects.Num() > 1).
  • Do not create derived LLH/ECEF/ESU groups for multi-select.
  • Add a small info row (Name/Value layout with an info icon) explaining that geodetic/ESU editing is disabled in multi-select.
  • Keep Snap buttons, Georeference / ResolvedGeoreference, and the two booleans visible.

Why this approach

  • Disabled widgets would still bind property handles and can still write during rebuild. Not constructing the rows avoids unintended writes altogether.
  • Matches Unreal’s Details UX for ambiguous multi-edit: don’t offer controls that can’t safely apply across objects; provide a short hint.

Repro

  1. Place two actors with UCesiumGlobeAnchorComponent at different LLH; ensure one ACesiumGeoreference.
  2. Ensure the Details panel is open on Cesium.
  3. Multi-select the two actors → before: both snapped to (0°, 0°) and level dirtied. after: no snap; info row shown.
  4. Single-select one actor → LLH/ECEF/ESU rows present; edits work; undo works.
  5. Mixed selection (add a tileset) → unchanged; no snap.

Testing environment

  • Unreal Engine 5.6 (Windows)
  • Cesium for Unreal: current main + this change

Risk / impact

  • Intentionally disables bulk editing of LLH/ECEF/ESU (safer for multi-select).
  • No runtime code touched; editor-only; single-selection unchanged.

Screenshots: include an “after” image of the info row under the Cesium category in Details.

Author checklist

  • I have submitted a Contributor License Agreement (only needed once).
  • I have done a full self-review of my code.
  • I have updated CHANGES.md with a short summary of my change (for user-facing changes).
  • I have added or updated unit tests to ensure consistent code coverage as necessary.
  • I have updated the documentation as necessary.

Added multi-select handling in CesiumGlobeAnchorCustomization.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant