acdream/tests/AcDream.Core.Tests/Physics/Motion
Erik dccd700991 feat(physics): R5-V5 — MovementManager facade owns each entity's interp+moveto pair
Structural capstone of the R5 movement-manager arc; zero behavior change.

Retail MovementManager (acclient.h /* 3463 */, 16 bytes / four pointers)
gives every CPhysicsObj ONE owner for its motion_interpreter +
moveto_manager. acdream carried them as loose per-entity objects wired by
hand at three sites. This slice:

- New src/AcDream.Core/Physics/Motion/MovementManager.cs — owns
  MotionInterpreter + lazy MoveToManager (MakeMoveToManager 0x00524000 via
  a MoveToFactory closure, the acdream stand-in for the physics_obj/
  weenie_obj backpointers) + the relays with retail call shapes:
  PerformMovement 0x005240d0 (types 1-5 -> minterp, 6-9 ->
  MakeMoveToManager + moveto, (type-1)>8 -> 0x47), UseTime 0x005242f0
  (moveto only), HitGround 0x00524300 (minterp FIRST then moveto),
  HandleExitWorld 0x00524350 (minterp only), CancelMoveTo 0x005241b0,
  HandleUpdateTarget 0x00524790, IsMovingTo 0x00524260.
- RemoteMotion.Movement + PlayerMovementController.Movement hold the ONE
  facade; Motion/MoveTo become child views so the comment-dense call sites
  read unchanged. The three wiring sites (EnsureRemoteMotionBindings,
  EnterPlayerModeNow, the chase harness — same commit per the mirror rule)
  construct through MoveToFactory + MakeMoveToManager(), preserving the
  pre-facade eager timing (side-effect-free ctor = unobservable either way).
- Relay call sites repointed: both remote landing HitGround pairs + the
  player landing pair, despawn HandleExitWorld, TickRemoteMoveTo + the
  player Update UseTime, RouteServerMoveTo (takes the facade; routes via
  the retail PerformMovement dispatch), InstallSpeculativeTurnToTarget,
  host HandleUpdateTarget/InterruptCurrentMovement closures (retail
  CPhysicsObj::HandleUpdateTarget @0x00512bf0 fan head + the TS-36
  interrupt chain, now the literal facade relays).
- NOT absorbed per the slice spec: unpack_movement stays App
  (RouteServerMoveTo + UM heads; Core.Net types stay out of Core.Physics);
  TS-42 per-tick order untouched (R6); #170/#171 gate-passed machinery
  untouched. PerformMovement's set_active(1) head not re-asserted (spawn
  asserts Active; status quo — no new register row).
- Register: TS-41/TS-42 source wording freshened to the facade shape;
  AD-36 retire note corrected (facade half closed; residue = entities
  that never get a RemoteMotion). No new rows.
- Conformance: 15 new MovementManagerTests pin the dispatch table, lazy
  create, relay targets/order, null tolerance. Suite 4052 green; the
  183-case/funnel/moveto/chase/sticky suites UNMODIFIED (harness
  construction mirrors production, test bodies untouched).

Decomp: docs/research/2026-07-03-r5-managers/r5-movementmanager-decomp.md

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 11:12:19 +02:00
..
AnimSequenceNodeTests.cs feat(R1-P0/P1): CSequence research base + verbatim AnimSequenceNode 2026-07-02 19:45:56 +02:00
CMotionTableTests.cs feat(R2-Q2): verbatim CMotionTable — the GetObjectSequence dispatcher 2026-07-02 20:48:26 +02:00
ConstraintManagerTests.cs feat(physics): R5-V1 — port PositionManager/Sticky/Constraint + TargetManager (Core, unwired) 2026-07-03 19:34:49 +02:00
CSequencePhysicsTests.cs feat(R1-P3): verbatim apply_physics + Frame rotate/grotate 2026-07-02 19:53:32 +02:00
CSequenceTests.cs feat(R1-P2): verbatim CSequence container + list surgery 2026-07-02 19:50:19 +02:00
CSequenceUpdateTests.cs feat(R1-P4): verbatim update_internal / update / advance_to_next_animation 2026-07-02 20:05:04 +02:00
InterpretedMotionStateActionFifoTests.cs feat(R3-W1): retail state completion — action FIFOs, MovementParameters, MotionNode, WeenieError renumber (closes J2, J16-codes) 2026-07-02 22:12:33 +02:00
MotionNodeTests.cs feat(R3-W1): retail state completion — action FIFOs, MovementParameters, MotionNode, WeenieError renumber (closes J2, J16-codes) 2026-07-02 22:12:33 +02:00
MotionStateTests.cs feat(R2-Q1): verbatim MotionState (gap H2) 2026-07-02 20:31:16 +02:00
MotionTableDispatchSinkTests.cs feat(R2-Q5): RemoteMotionSink DELETED — funnel dispatches straight into PerformMovement; AP-73 retired 2026-07-02 21:55:13 +02:00
MotionTableManagerTests.cs feat(R2-Q3): verbatim MotionTableManager — the pending-animation queue (closes H3, H15-core) 2026-07-02 21:01:50 +02:00
MovementManagerTests.cs feat(physics): R5-V5 — MovementManager facade owns each entity's interp+moveto pair 2026-07-05 11:12:19 +02:00
MovementParametersFromWireTests.cs feat(R4-V1): command-selection family + state widening (closes M2-mechanics, M11, M12, M15) 2026-07-03 11:13:15 +02:00
MovementParametersGetCommandTests.cs feat(R4-V1): command-selection family + state widening (closes M2-mechanics, M11, M12, M15) 2026-07-03 11:13:15 +02:00
MovementParametersGetDesiredHeadingTests.cs feat(R4-V1): command-selection family + state widening (closes M2-mechanics, M11, M12, M15) 2026-07-03 11:13:15 +02:00
MovementParametersTests.cs feat(R3-W1): retail state completion — action FIFOs, MovementParameters, MotionNode, WeenieError renumber (closes J2, J16-codes) 2026-07-02 22:12:33 +02:00
MovementParametersTowardsAndAwayTests.cs feat(R4-V1): command-selection family + state widening (closes M2-mechanics, M11, M12, M15) 2026-07-03 11:13:15 +02:00
MovementStructWideningTests.cs feat(R4-V1): command-selection family + state widening (closes M2-mechanics, M11, M12, M15) 2026-07-03 11:13:15 +02:00
MovementTypeWideningTests.cs feat(R4-V1): command-selection family + state widening (closes M2-mechanics, M11, M12, M15) 2026-07-03 11:13:15 +02:00
MoveToManagerArrivalAndProgressTests.cs feat(R4-V2): MoveToManager verbatim - all 33 members + conformance harness (closes M1/M3/M4/M5/M6/M10/M14-core) 2026-07-03 11:43:50 +02:00
MoveToManagerAuxTurnTests.cs feat(R4-V2): MoveToManager verbatim - all 33 members + conformance harness (closes M1/M3/M4/M5/M6/M10/M14-core) 2026-07-03 11:43:50 +02:00
MoveToManagerBeginMoveForwardTests.cs feat(R4-V2): MoveToManager verbatim - all 33 members + conformance harness (closes M1/M3/M4/M5/M6/M10/M14-core) 2026-07-03 11:43:50 +02:00
MoveToManagerCompletionSeamTests.cs feat(R4-V5): LOCAL PLAYER cutover - B.6 auto-walk DELETED; P1 autonomous gate ported; TS-36 bound (closes M1-local, M9, M10, M17; retires TS-36, AD-26; re-anchors AD-27, AP-23) 2026-07-03 13:24:22 +02:00
MoveToManagerEndToEndTableDriveTests.cs feat(R4-V2): MoveToManager verbatim - all 33 members + conformance harness (closes M1/M3/M4/M5/M6/M10/M14-core) 2026-07-03 11:43:50 +02:00
MoveToManagerHandleUpdateTargetTests.cs feat(R4-V2): MoveToManager verbatim - all 33 members + conformance harness (closes M1/M3/M4/M5/M6/M10/M14-core) 2026-07-03 11:43:50 +02:00
MoveToManagerLifecycleTests.cs feat(R4-V2): MoveToManager verbatim - all 33 members + conformance harness (closes M1/M3/M4/M5/M6/M10/M14-core) 2026-07-03 11:43:50 +02:00
MoveToManagerNodePlanTests.cs feat(R4-V2): MoveToManager verbatim - all 33 members + conformance harness (closes M1/M3/M4/M5/M6/M10/M14-core) 2026-07-03 11:43:50 +02:00
MoveToManagerStickyAndCancelTests.cs feat(R4-V2): MoveToManager verbatim - all 33 members + conformance harness (closes M1/M3/M4/M5/M6/M10/M14-core) 2026-07-03 11:43:50 +02:00
MoveToManagerTestHarness.cs feat(R4-V2): MoveToManager verbatim - all 33 members + conformance harness (closes M1/M3/M4/M5/M6/M10/M14-core) 2026-07-03 11:43:50 +02:00
MoveToManagerTurnToHeadingTests.cs feat(R4-V2): MoveToManager verbatim - all 33 members + conformance harness (closes M1/M3/M4/M5/M6/M10/M14-core) 2026-07-03 11:43:50 +02:00
MoveToManagerUseTimeGateTests.cs feat(R4-V2): MoveToManager verbatim - all 33 members + conformance harness (closes M1/M3/M4/M5/M6/M10/M14-core) 2026-07-03 11:43:50 +02:00
MoveToMathCylinderDistanceTests.cs feat(R4-V1): command-selection family + state widening (closes M2-mechanics, M11, M12, M15) 2026-07-03 11:13:15 +02:00
MoveToMathHeadingDiffTests.cs feat(R4-V1): command-selection family + state widening (closes M2-mechanics, M11, M12, M15) 2026-07-03 11:13:15 +02:00
MoveToMathHeadingGreaterTests.cs feat(R4-V1): command-selection family + state widening (closes M2-mechanics, M11, M12, M15) 2026-07-03 11:13:15 +02:00
MoveToMathPositionHeadingTests.cs feat(R4-V1): command-selection family + state widening (closes M2-mechanics, M11, M12, M15) 2026-07-03 11:13:15 +02:00
PositionManagerFacadeTests.cs fix(#171): R5-V3 — bind sticky melee (StickyManager live) + real arrival radii 2026-07-04 23:46:17 +02:00
R5ManagerHarness.cs feat(physics): R5-V1 — port PositionManager/Sticky/Constraint + TargetManager (Core, unwired) 2026-07-03 19:34:49 +02:00
RawMotionStateActionFifoTests.cs feat(R3-W1): retail state completion — action FIFOs, MovementParameters, MotionNode, WeenieError renumber (closes J2, J16-codes) 2026-07-02 22:12:33 +02:00
RemoteChaseDrainBisectTests.cs fix(#170): armed moveto always ticks UseTime — the SERVERVEL branch starved the chase 2026-07-04 21:59:59 +02:00
RemoteChaseEndToEndHarnessTests.cs feat(physics): R5-V5 — MovementManager facade owns each entity's interp+moveto pair 2026-07-05 11:12:19 +02:00
StickyManagerTests.cs fix(#171): sticky deep-overlap back-off sign pin — the runaway-to-center (gate-2 residual) 2026-07-05 09:51:24 +02:00
TargetManagerTests.cs feat(physics): R5-V1 — port PositionManager/Sticky/Constraint + TargetManager (Core, unwired) 2026-07-03 19:34:49 +02:00