e999a11349091e0aa2b1e90349bf448ec52413df
Stop now rewinds animated properties to the value they had before the timeline first acted on them — not "first keyframe's value" as before. - New per-track baseline stored runtime-only in a TMap keyed by (ActorId, PropertyPath), so it survives track reordering and isn't persisted to JSON (avoids stale data in legacy scenarios). - Captured once: at track creation (first "+" on a fresh property) or at SetData time for tracks loaded from a scenario. Never re-captured, so scrub-then-Play doesn't shift the baseline to whatever the cursor happened to be parked on. - Stop writes the baselines back via ImportText, fires OnEditorPropertyChanged + RepNotify per track, then defers the actual StopSimulation by 100ms so the BehaviorTree has a grace period to see the restored values via OnRep / OnEditorPropertyChanged and transition to a neutral state before AI tick is cut. - Play cancels any in-flight deferred StopSimulation (Restart = Stop + Play keeps the simulation running across the handoff). - SetData and Clear reset the baseline map so loading a new scenario doesn't inherit the previous one's baselines. Also cache GetCurrentDisplayForProperty calls in RefreshDynamicPropertyValues: the property panel was invoking the BP interface every tick per visible combo. Now each row stores LastExportedValue + LastDisplayToShow and short-circuits if the property's exported text is unchanged — BP only runs on actual value transitions (seek, timeline keyframe, manual edit). Duplicated across MainWidget and MainWidget_Legacy. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
No description provided
Languages
C++
92.7%
HTML
6.3%
C
0.5%
C#
0.5%