From f10fe18d7a1bbaaf3a35f6ca59f006450f81236e Mon Sep 17 00:00:00 2001 From: Fabio Pedretti Date: Tue, 13 Oct 2026 08:48:28 +0200 Subject: [PATCH] Create the water constraint once Deduplicate the stayClasses(tileClassWater, 0) constraint by creating it once before the placement loop, instead of constructing a new identical one for every placed dock. --- .../data/mods/public/maps/random/rmgen-common/gaia_entities.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/binaries/data/mods/public/maps/random/rmgen-common/gaia_entities.js b/binaries/data/mods/public/maps/random/rmgen-common/gaia_entities.js index 733ce14af3..b9f0618a41 100644 --- a/binaries/data/mods/public/maps/random/rmgen-common/gaia_entities.js +++ b/binaries/data/mods/public/maps/random/rmgen-common/gaia_entities.js @@ -353,6 +353,7 @@ function placeDocks(template, playerID, count, tileClassWater, tileClassDock, he // TODO: computing the exact intersection with the waterplane would both not require us to pass reasonable heights and be more precise const constraint = new AndConstraint(constraints); + const waterConstraint = stayClasses(tileClassWater, 0); g_Map.log("Placing docks"); for (let i = 0; i < count; ++i) for (let tries = 0; tries < retryFactor; ++tries) @@ -368,7 +369,7 @@ function placeDocks(template, playerID, count, tileClassWater, tileClassDock, he if (!g_Map.inMapBounds(positionDock) || !constraint.allows(positionDock)) continue; - const angle = positionDock.angleTo(Vector2D.average(new DiskPlacer(8, positionDock).place(stayClasses(tileClassWater, 0)))); + const angle = positionDock.angleTo(Vector2D.average(new DiskPlacer(8, positionDock).place(waterConstraint))); g_Map.placeEntityPassable(template, playerID, positionDock, -angle + Math.PI / 2); tileClassDock.add(positionDock);