diablo2-web/src/client/scene
troytt 87b074d04d fix(client): render on the 1.13c 32x16 sub-tile lattice and pick the LevelView by server position (#539)
Root cause 1: subTileToWorldOrtho/subTileToScreen (and their inverses) projected
unit sub-tiles with ORTHO_SUB_TILE_*/2, i.e. a 16x8 px lattice, while DT1 floor
tiles use 160x80 px = 5x5 sub-tiles of 32x16 px. Player, camera, units, minimap
marker and click picking were drawn at half their distance from the level iso
origin: e.g. seed 0x31595789 server (5737,4523) = local (137,123) camp floor was
drawn over local (68.5,61.5), a palisade wall cell (coll 0x1).

Root cause 2: the scene rendered MapService.getActiveLevelView() ("last view
built"); AutomapView building Blood Moor for 0x07 reveals near the spawn swapped
the rendered level. The scene now resolves the level whose DRLG canvas contains
the player's world sub-tile among the LoadAct area + revealed areas.

Anti-silent-failure: remove the player<origin*0.5 shift heuristic and renderer
re-normalisation, the || 1 town defaults and the LoadAct defaultTownArea
fallback / swallowed catch (fail fast), isSubTileWalkable permissive true;
render a not-ready frame (HUD only) until a LevelView and a server position exist.
2026-10-01 10:13:09 +00:00
..
entity-art-loader.ts refactor: split into isolated common/netproto/server/client/baker modules 2026-10-01 00:10:18 +00:00
ground-item-renderer.ts refactor(client): remove leftover single-player client code 2026-10-01 06:03:55 +00:00
lighting-presets.ts refactor(client): remove leftover single-player client code 2026-10-01 06:03:55 +00:00
missile-overlay-renderer.ts refactor: split into isolated common/netproto/server/client/baker modules 2026-10-01 00:10:18 +00:00
world-renderer.ts fix(client): render on the 1.13c 32x16 sub-tile lattice and pick the LevelView by server position (#539) 2026-10-01 10:13:09 +00:00