Revert "phase(N.1): add ACME-conformant per-vertex road check"

This reverts commit e279c46aac.
This commit is contained in:
Erik 2026-05-08 10:26:37 +02:00
parent e279c46aac
commit 677a726e61

View file

@ -100,14 +100,10 @@ public static class SceneryGenerator
uint terrainType = (uint)((raw >> 2) & 0x1F); // bits 2-6 uint terrainType = (uint)((raw >> 2) & 0x1F); // bits 2-6
uint sceneType = (uint)((raw >> 11) & 0x1F); // bits 11-15 uint sceneType = (uint)((raw >> 11) & 0x1F); // bits 11-15
// ACME-conformant per-vertex road check (GameScene.cs:1074). // NOTE: retail does NOT skip based on this vertex's road bit.
// If this vertex itself is a road vertex, skip ALL scenery // The road test happens AFTER displacement via the 4-corner
// generation for it. This is retail behavior — the earlier // polygonal OnRoad check (see below). Removing the
// claim that retail doesn't have this check (commit 833d167) // pre-displacement early-exit restores retail behavior.
// was wrong. The post-displacement OnRoad check below is
// independent and still applies for non-road vertices whose
// displaced position lands on the road ribbon.
if ((raw & 0x3) != 0) continue;
if (terrainType >= region.TerrainInfo.TerrainTypes.Count) continue; if (terrainType >= region.TerrainInfo.TerrainTypes.Count) continue;
var sceneTypeList = region.TerrainInfo.TerrainTypes[(int)terrainType].SceneTypes; var sceneTypeList = region.TerrainInfo.TerrainTypes[(int)terrainType].SceneTypes;
@ -304,10 +300,6 @@ public static class SceneryGenerator
int i = x * VerticesPerSide + y; int i = x * VerticesPerSide + y;
ushort raw = block.Terrain[i]; ushort raw = block.Terrain[i];
// ACME-conformant per-vertex road check (GameScene.cs:1074).
// Skip the entire vertex if its road bit is set.
if ((raw & 0x3) != 0) continue;
uint terrainType = (uint)((raw >> 2) & 0x1F); uint terrainType = (uint)((raw >> 2) & 0x1F);
uint sceneType = (uint)((raw >> 11) & 0x1F); uint sceneType = (uint)((raw >> 11) & 0x1F);