From 517a3ce89c3379c96e0dd45694fde02e160d22ed Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 2 May 2026 19:21:44 +0200 Subject: [PATCH] feat(motion): RemoteMotion gains InterpolationManager field (L.3.1 Task 3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Composes the InterpolationManager (Task 1+2) into the per-remote RemoteMotion container in GameWindow. Field exists but is not yet consumed — Tasks 4 and 5 wire it into the routing + per-frame tick. No behavior change. Build + 105 tests still green. Co-Authored-By: Claude Opus 4.7 --- src/AcDream.App/Rendering/GameWindow.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/AcDream.App/Rendering/GameWindow.cs b/src/AcDream.App/Rendering/GameWindow.cs index e03217b..75857de 100644 --- a/src/AcDream.App/Rendering/GameWindow.cs +++ b/src/AcDream.App/Rendering/GameWindow.cs @@ -331,6 +331,17 @@ public sealed class GameWindow : IDisposable /// public bool Airborne; + /// + /// Per-remote position-waypoint queue + catch-up math (retail's + /// CPhysicsObj::InterpolateTo + InterpolationManager::adjust_offset). + /// Replaces the hard-snap-then-Euler-extrapolate path when + /// ACDREAM_INTERP_MANAGER=1 — see Phase L.3.1 spec at + /// docs/superpowers/specs/2026-05-02-l3-remote-entity-motion-design.md. + /// Field exists from Task 3 onwards; consumed in Tasks 4 + 5. + /// + public AcDream.Core.Physics.InterpolationManager Interp { get; } = + new AcDream.Core.Physics.InterpolationManager(); + public RemoteMotion() { Body = new AcDream.Core.Physics.PhysicsBody