0.2.6: the device slabs stay drawn on an official scene (GitHub #569) — 射击台, 特制水上平台 and 封印的地面 lived only in the procedural board's bucket that a scene replaces, so 战场#03's raised tiles by the blue gate were flat and 战场#05(上半)'s water platforms read as open water; buildBoard repeats them into buckets.raised / raisedDecal with sides reaching under the scene's ground and setStage draws just those on a scene (the 'h' high ground is the scenes' own and is not repeated); DESIGN §31.11, client §15; golden: unchanged

This commit is contained in:
sganggs committed 2026-10-13 17:45:04 +08:00
1 parent d8aab0a2db
commit 205f3bb7f7
7 files changed
+99 -8

No files matched your search

+28
View File
@@ -313,3 +313,31 @@ Sources: [PRTS 维什戴尔](https://prts.wiki/w/维什戴尔), the talent's nea
combat tile, through the deployment talent and an actual S3 activation), and a solo / pair case — her own free tiles
filled, the empty half takes no shadow and the teammate's half does. Normative: DESIGN §3
([geometry-time.md](../design/geometry-time.md)); API note: [SIM.md](../SIM.md). Golden: unchanged.
### 31.11 Device slabs on the official scenes (#569)
Issue #569 by @A1muE4aY.
**Seen.** With an official scene on the 3D board, 战场#03's two raised ranged tiles beside the blue gate were drawn flat,
while the operators placed on them stood at their raised height. The scene replaced the whole procedural board
(`scene.js setStage` skipped its board, glass, decal and pipe buckets), and the raised slabs of the stage devices —
射击台 (`platform`, 0.26), 特制水上平台 (`waterPlatform`, 0.2) and 封印的地面 (`sealedFloor`, 0.05, a hazard decal
top) — exist only in that board bucket (`layout.js slabDevice`). The scenes do not contain them: they are runtime
devices of the stage (`stageDevices`), and the scene geometry has no raised top on those tiles. Affected while a scene
is shown: 战场#03 (射击台), 战场#05(上半) (the 16 water platforms of the normal field, 32 on the boss field — the pool read
as empty water) and 战场#06(上半) (射击台 and 封印的地面).
**Now.** `buildBoard` repeats each device slab into `buckets.raised` (tops and sides; a sealed floor's hazard top into
`buckets.raisedDecal`), with the side faces reaching `RAISED_FOOT` (0.08) below the tile so no gap shows against the
scene's ground (about z 0). With an official scene `setStage` draws only those two buckets of the procedural board, in
the board's own materials; without one the board draws the slabs itself as before. The 'h' high ground is not repeated:
the scenes model it (act2 m01's plates and act2 m02's sandstone blocks, checked side by side); an earlier draft that
also drew our 'h' plates covered them. Units already stood at `tiles.js heightAt`, which includes the device heights.
**[ASSUMED]** The slabs keep the metal board's plate and side textures: no official prefab of these devices is extracted.
**Tests.** `test/render/board3d.test.js` (every stage and area: one plate or decal top and four sides per slab device,
every vertex on a slab tile at its top or its foot; 战场#03 and #05(上半) have them; act2 m01 / m02 repeat nothing),
`test/render/board3d-scene.test.js` (an official scene on 战场#03 keeps the slabs in the board material and nothing else of
the procedural board; dropping the scene restores the board; act2 m02 adds no slab mesh). Screenshots of the five
affected stages before / after / metal board were compared by hand. Golden: unchanged (client only).