- Remove the Simulate toolbar button (both Legacy + UMG widgets). Play /
Pause / Restart / Stop now live exclusively on the Timeline panel, and
the panel is visible by default (no more toggle button on the toolbar).
Keeps a global Play button on the Legacy toolbar that opens the level
outside the editor.
- Move the grace-period / deferred-stop logic out of the TimelineSubsystem
and into APS_Editor_PlayerController::RequestStopSimulation. This lets
the timeline Stop button AND the UMG topbar simulate buttons share the
same event sequence: OnEditorBeforeSimulateStop fires immediately (after
RestoreBaseline), then a 500ms BT grace period, then StopSimulation
fires OnEditorSimulateStop and cuts AI. New event
OnEditorBeforeSimulateStop added to the editable interface with full
timing docs.
- Drop the early-return in TimelineSubsystem::Play when Tracks.Num()==0 —
the timeline Play button is now the only way to start the sim, so it
must drive StartSimulation unconditionally.
- StartSimulation now force-calls SpawnDefaultController() on any pawn
that enters sim without a Controller but has an AIControllerClass set,
so AutoPossessAI=Disabled or race-lost possessions don't leave the BT
unreachable.
- Route the UMG topbar Play / Simulate buttons and the "simulate" command
through RequestStopSimulation too, so every path emits the full event
sequence consistently.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>