acdream/src
Erik 7928b445ab fix(physics #145): Slice 2a — canonicalize outdoor seed + re-derive cell index every tick
The wire local is LANDBLOCK-relative [0,192); the cell low word = floor(local/24),
so a consistent (cell,local) pair must keep them in lockstep. Two retail-faithful
corrections vs the first pass:
 - SnapToCell canonicalizes the OUTDOOR seed via AdjustToOutside (retail
   SetPositionInternal/adjust_to_outside @0x00504A40 — the #107 'never trust a
   server (cell,pos) pair' protection). Indoor seeds stay verbatim (BSP-validated).
 - SyncCellPositionDelta calls AdjustToOutside on EVERY delta, not just on 192 m
   crossings, so intra-landblock 24 m cell-index changes track (needed by Slice 3
   membership). Idempotent within a cell.
Tests rewritten to verify both (the earlier test paired an inconsistent cell+local).
Core 1527 passed / 0 failed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 10:55:27 +02:00
..
AcDream.App fix(streaming): #138 — rescue persistent entities from the pending bucket on unload 2026-06-21 08:07:28 +02:00
AcDream.Cli chore(cli): UI-debug apparatus — mock-selbar, dump-edges, crop, probe 2026-06-20 09:37:29 +02:00
AcDream.Core fix(physics #145): Slice 2a — canonicalize outdoor seed + re-derive cell index every tick 2026-06-21 10:55:27 +02:00
AcDream.Core.Net feat(D.5.3a): selected-object meter — Health bar + name on the action bar 2026-06-18 22:47:24 +02:00
AcDream.Plugin.Abstractions feat(D.2b): IUiRegistry plugin UI surface + buffered drain into UiHost 2026-06-14 17:46:37 +02:00
AcDream.Plugins.Smoke feat(app): wire IGameState+IEvents into Program and SmokePlugin 2026-04-10 20:31:50 +02:00
AcDream.UI.Abstractions feat(D.2b): write-mode movement gate that preserves autorun 2026-06-16 15:24:19 +02:00
AcDream.UI.ImGui fix(ui): scope title-bar-only-drag absorber to BeginChild — Settings tabs work 2026-04-26 23:04:10 +02:00