refactor(animation): extract live PartArray presenter

Move final live part composition, exact-incarnation schedule handoff, MotionDone binding, and presentation diagnostics out of GameWindow while preserving the retail frame order. Reject stale schedule and completion ABA at the new owner boundary.

Co-Authored-By: OpenAI Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-21 09:37:02 +02:00
parent 9760ff5a8d
commit f004ac5562
14 changed files with 963 additions and 438 deletions

View file

@ -15,7 +15,7 @@ public sealed class LiveAppearanceAnimationTests
var animation = new Animation();
var sequencer = new AnimationSequencer(setup, new MotionTable(), new NullLoader());
var oldEntity = Entity(0x70000001u, 0x01000001u);
var state = new GameWindow.AnimatedEntity
var state = new LiveEntityAnimationState
{
Entity = oldEntity,
Setup = setup,
@ -24,7 +24,7 @@ public sealed class LiveAppearanceAnimationTests
HighFrame = 9,
Framerate = 30f,
Scale = 1f,
PartTemplate = [new GameWindow.AnimatedPartTemplate(0x01000001u, null, true)],
PartTemplate = [new LiveAnimationPartTemplate(0x01000001u, null, true)],
PartAvailability = [true],
CurrFrame = 6.5f,
Sequencer = sequencer,
@ -42,8 +42,8 @@ public sealed class LiveAppearanceAnimationTests
setup,
1.25f,
[
new GameWindow.AnimatedPartTemplate(0x01000002u, null, true),
new GameWindow.AnimatedPartTemplate(0x01000003u, null, true),
new LiveAnimationPartTemplate(0x01000002u, null, true),
new LiveAnimationPartTemplate(0x01000003u, null, true),
],
[true, true]);