Gizmo usability:
- Refresh the gizmo every tick while simulation is running so it glues to
animated / AI-driven / timeline-driven actors instead of freezing at the
pose they had when selected
- Clear the pawn's active sub-element drag state on FinishPointPlacement /
CancelPointPlacement — previously, after clicking Done on a spline, the
gizmo jumped to the center cube but the internal ActiveSplinePointIndex
stayed on the last clicked CP, so dragging the gizmo moved that CP
instead of the whole actor
- Expose UpdateGizmo() publicly on the SelectionManager so the
PlayerController Tick can drive it
Package cooking (fix gray gizmos / missing outline in packaged builds):
- Convert every runtime LoadObject<> soft-string path into a UPROPERTY
TObjectPtr<> filled via ConstructorHelpers::FObjectFinder at CDO
construction time. Hard refs are picked up by the cooker so plugin
Content assets (M_PS_Editor_Gizmo, M_PS_Editor_SelectionOutline,
M_PS_Editor_SplineLine, and the engine basic shapes the spline actor
uses) are reliably staged
- Touches APS_Editor_Gizmo, APS_Editor_Pawn (outline post-process
material), APS_Editor_SplineActor (gizmo material, spline line
material, center cube mesh, handle sphere mesh)
Ground placement (PS_Editor_GroundSnap):
- New PS_Editor_GroundSnap utility centralising placement logic for
catalogue spawns, End-key snap-to-ground, and spline CP placement
- ProjectCameraRayToGround: aim down from a point in front of the camera
when the camera ray misses (no more "looking at sky spawns object in
mid-air"); classify the primary hit by normal to re-cast from below a
ceiling / step back from a wall so the object lands on the floor
underneath / at the foot of the surface rather than embedded in it
- SnapActorToGround: start the downward ray from INSIDE the actor's
volume (pivot + small buffer), ignoring the actor itself — avoids the
"raised a bit high, pressed End, teleports to upper story" bug where
starting above the actor's bbox could cross the current room's ceiling
and find the upper floor as the first floor-like surface
- Uses GetActorBounds(bOnlyCollidingComponents=true) with a fallback so
characters snap from their capsule bounds rather than bbox including
non-colliding meshes / attached weapons / child actors that used to
lift pawns into the air
- Multi-hit trace + normal.Z >= 0.3 filter skips walls, ceilings, and
backfaces when finding the first true floor below
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>