fix(scenery): drop non-retail extra-road-vertex suppression
User report: trees that exist in retail are missing in ACdream. SceneryGenerator had an extra heuristic filter at lines 169-180 that rejected scenery whose cell-origin vertex was a road vertex, on top of the proper retail post-displacement road check (FUN_00530d30 port via IsOnRoad). The comment admitted it wasn't in the retail decomp -- it was added to widen road margins visually. Side effect: any cell whose SW corner happened to touch a road vertex had ALL of its scenery dropped, even when the displaced position was well clear of the road ribbon. Removing the extra guard. The retail FUN_00530d30 ribbon test already handles road exclusion correctly; the heuristic was strictly subtractive and silently dropped trees the retail client renders. Tests stay 1439 green. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
559b79dc98
commit
46544ef3c1
1 changed files with 12 additions and 12 deletions
|
|
@ -166,18 +166,18 @@ public static class SceneryGenerator
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Also reject if the vertex CX,CY is a road vertex itself
|
// L-fix2 (2026-04-28): the extra cell-origin road-vertex
|
||||||
// — scenery whose cell-origin vertex is on a road should
|
// guard previously here is REMOVED. It wasn't in the
|
||||||
// not spawn, even if displacement moves it off the ribbon.
|
// retail decomp — it was a heuristic added to widen
|
||||||
// Retail's frequency-based path is guarded by the road mask;
|
// road margins visually. The proper retail post-
|
||||||
// our formula can yield valid positions adjacent to roads
|
// displacement road check (FUN_00530d30 port via
|
||||||
// that the ACViewer OnRoad test lets through. This extra
|
// IsOnRoad above) already handles road exclusion.
|
||||||
// guard pushes scenery away from road vertices, matching
|
// The extra guard was over-suppressing — every cell
|
||||||
// retail's visually clearer road margins.
|
// whose SW corner happened to touch a road vertex
|
||||||
if (IsRoadVertex(block.Terrain[(int)cellX * VerticesPerSide + (int)cellY]))
|
// had ALL of its scenery dropped, even when the
|
||||||
{
|
// displaced position was well clear of the ribbon.
|
||||||
continue;
|
// User reported missing trees they could see in
|
||||||
}
|
// retail; this is the most likely cause.
|
||||||
|
|
||||||
// Slope filter (ACME conformance fix 4e): compute terrain normal
|
// Slope filter (ACME conformance fix 4e): compute terrain normal
|
||||||
// Z-component at the displaced position and check against the
|
// Z-component at the displaced position and check against the
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue