docs: file #65 — local player doesn't turn to face on close-range Use

This commit is contained in:
Erik 2026-05-15 07:36:14 +02:00
parent 211fe240b8
commit 5f83766de5

View file

@ -46,6 +46,47 @@ Copy this block when adding a new issue:
# Active issues
## #65 — Local player doesn't turn to face target on close-range Use
**Status:** OPEN
**Severity:** LOW (functional — Use still completes — but visually awkward)
**Filed:** 2026-05-15 (B.6/B.7 visual verification)
**Component:** physics / movement / inbound MoveTo handling
**Description:** When the local player has a target selected and is
already within ACE's `WithinUseRadius` (close-range branch in
`CreateMoveToChain` at `Player_Move.cs:66`), ACE skips the auto-walk
chain and just calls `Rotate(target)` server-side. The Use action
completes, but the local player's body doesn't visibly turn to face
the target — the character stays at whatever heading the user was
looking when they clicked.
**User-visible:** Stand behind an NPC, click them, press R. Dialogue
appears, but the character keeps facing away from the NPC. In retail
the character would have turned to face the NPC before / during the
Use.
**Root cause:** ACE's close-range path sends a `TurnTo` motion
(MovementType=8 TurnToObject, decomp `0x005241b3` switch case 8).
Our `OnLiveMotionUpdated` doesn't currently handle MovementType=8 —
it falls into the locomotion path and ignores the rotation.
**Acceptance:** When the user uses an in-range target while facing
away, the character rotates to face the target before / as the Use
action fires. No regression on close-range pickup (item still picks
up cleanly).
**Files (likely):**
- `src/AcDream.Core.Net/Messages/UpdateMotion.cs` — extend parser for MovementType=8 TurnToObject payload.
- `src/AcDream.App/Input/PlayerMovementController.cs` — add a `BeginServerTurnToObject(targetWorld, useFinalHeading)` method that rotates Yaw at TurnRateRadPerSec each frame until aligned, then clears the state.
- `src/AcDream.App/Rendering/GameWindow.cs` `OnLiveMotionUpdated` — when inbound motion is MovementType=8 and the guid is `_playerServerGuid`, install the turn on the controller.
**Estimated scope:** Small — ~50 LOC plus tests. Pairs naturally with
B.6 (already does turn-then-walk for far targets via RemoteMoveToDriver's
heading correction; this is the close-range cousin).
---
## #64 — Local-player pickup animation does not render
**Status:** OPEN