refactor(world): extract live projection mechanics

Move appearance rebinding, collision construction, default-pose resolution, local shadow ownership, and exact leave-world presentation into focused owners. Preserve retail parent ordering with staged validation, committed recovery, recursive attached-subtree withdrawal, and retryable exact teardown across parent, pickup, position, unwield, and pose-loss edges.

Co-Authored-By: OpenAI Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-21 16:17:03 +02:00
parent c87bac31a0
commit 69a2ca0c6d
26 changed files with 4172 additions and 430 deletions

View file

@ -134,7 +134,7 @@ public sealed class LiveEntityAnimationPresenterTests
replacementSetup.DefaultScale.Add(Vector3.One);
fixture.Entity.MeshRefs = [new MeshRef(0x01000009u, Matrix4x4.Identity)];
fixture.Entity.SetIndexedPartPoses([Matrix4x4.Identity], [true]);
GameWindow.RebindAnimatedEntityForAppearance(
LiveEntityAppearanceBinding.RebindAnimation(
fixture.State,
fixture.Entity,
replacementSetup,
@ -169,7 +169,7 @@ public sealed class LiveEntityAnimationPresenterTests
var replacement = new Setup();
replacement.Parts.Add(0x01000099u);
replacement.DefaultScale.Add(Vector3.One);
GameWindow.RebindAnimatedEntityForAppearance(
LiveEntityAppearanceBinding.RebindAnimation(
fixture.State,
fixture.Entity,
replacement,