Prefer longer routes when ranking river sources

routing.lengthPreference adds route length to the source score so outlets take their longest legal course.
This commit is contained in:
Brian Neumann-Fopiano committed 2026-09-01 23:33:15 -04:00
1 parent 6945cbfd9b
commit 4b497a7d20
13 files changed
+28 -17

No files matched your search

@@ -252,7 +252,7 @@ public class HydrologyPlannerCrossTileCaveAdmissionIntegrationTest {
);
return new HydrologyPlannerSettings(
63,
new HydrologyPlannerSettings.Routing(256, 16, 1_089, 256, 16, 8, 0.5D, 12D, 0.5D, 0.2D),
new HydrologyPlannerSettings.Routing(256, 16, 1_089, 256, 16, 8, 0.5D, 12D, 0.5D, 0.2D, 1D),
new HydrologyPlannerSettings.Surface(
true,
surfaceSources,
@@ -668,7 +668,7 @@ public class HydrologyPlannerGlobalInvariantTest {
12D,
0.5D,
0.1D
),
, 1D),
new HydrologyPlannerSettings.Surface(
surfaceEnabled,
surfaceSources,
@@ -79,7 +79,7 @@ public class HydrologyPlannerSettingsTest {
0D,
0D,
0D
);
, 1D);
HydrologyPlannerSettings.Source sources = new HydrologyPlannerSettings.Source(true, 1D, 0, 0, 1, 0);
HydrologyPlannerSettings.Surface surface = new HydrologyPlannerSettings.Surface(
true,
@@ -581,7 +581,7 @@ public class HydrologyPlannerTest {
routing.valleyPreference(),
routing.uphillPenalty(),
routing.slopePenalty(),
routing.confluenceAttraction()
routing.confluenceAttraction(), 1D
),
base.surface(),
base.hydraulics(),
@@ -1733,7 +1733,7 @@ public class HydrologyPlannerTest {
);
return new HydrologyPlannerSettings(
63,
new HydrologyPlannerSettings.Routing(128, 16, 512, 256, 0, 0, 0.5D, 12D, 0.5D, 0.1D),
new HydrologyPlannerSettings.Routing(128, 16, 512, 256, 0, 0, 0.5D, 12D, 0.5D, 0.1D, 1D),
new HydrologyPlannerSettings.Surface(
surfaceDensity > 0D || surfaceSources.maximumPerTile() > 0,
surfaceSources,
@@ -1800,7 +1800,7 @@ public class HydrologyPlannerTest {
24D,
2D,
0.2D
),
, 1D),
new HydrologyPlannerSettings.Surface(
true,
new HydrologyPlannerSettings.Source(true, 8D, 80, 0, 8, 128),
@@ -96,7 +96,8 @@ public class HydrologyStyledGeometryTest {
widestSurfaceWidth = Math.max(widestSurfaceWidth, segment.width());
}
assertTrue(widestSurfaceWidth >= surfaceStart.width());
assertTrue(widestSurfaceWidth <= surfaceSettings.surface().maximumWidth() * 2);
assertTrue(widestSurfaceWidth <= (int) Math.ceil(surfaceSettings.surface().maximumWidth()
* Math.max(2D, surfaceSettings.surface().banks().springWidthRatio())));
RiverCourse underground = courses(undergroundFirst, RiverCourseType.UNDERGROUND).getFirst();
DrainageNode undergroundSource = undergroundFirst.node(underground.sourceNodeId().orElseThrow()).orElseThrow();
@@ -194,7 +195,7 @@ public class HydrologyStyledGeometryTest {
);
return new HydrologyPlannerSettings(
63,
new HydrologyPlannerSettings.Routing(128, 16, 512, 256, 16, 8, 0.5D, 12D, 0.5D, 0.1D),
new HydrologyPlannerSettings.Routing(128, 16, 512, 256, 16, 8, 0.5D, 12D, 0.5D, 0.1D, 1D),
new HydrologyPlannerSettings.Surface(
surfaceDensity > 0D,
surfaceSources,
@@ -243,7 +243,7 @@ public class HydrologyTileCacheTest {
);
return new HydrologyPlannerSettings(
63,
new HydrologyPlannerSettings.Routing(64, 16, 128, 64, 0, 0, 0D, 0D, 0D, 0D),
new HydrologyPlannerSettings.Routing(64, 16, 128, 64, 0, 0, 0D, 0D, 0D, 0D, 1D),
new HydrologyPlannerSettings.Surface(false, disabled, 2, 4, 1, 2, 4, 1D,
HydrologyPlannerSettings.Banks.defaults()),
new HydrologyPlannerSettings.Hydraulics(3),
@@ -282,7 +282,7 @@ public class HydrologyTileCacheTest {
);
return new HydrologyPlannerSettings(
63,
new HydrologyPlannerSettings.Routing(64, 16, 128, 96, 16, 8, 0.5D, 12D, 0.5D, 0.1D),
new HydrologyPlannerSettings.Routing(64, 16, 128, 96, 16, 8, 0.5D, 12D, 0.5D, 0.1D, 1D),
new HydrologyPlannerSettings.Surface(true, surfaceSources, 4, 8, 2, 3, 20, 1.5D, tileBoundedBanks()),
new HydrologyPlannerSettings.Hydraulics(3),
new HydrologyPlannerSettings.Underground(false, disabled, -32, 32, 2, 4, 1, 2, 3, 4, false),
@@ -1530,7 +1530,7 @@ public class MantleHydrologyComponentTest {
);
return new HydrologyPlannerSettings(
63,
new HydrologyPlannerSettings.Routing(128, 16, 512, 256, 16, 8, 0.5D, 12D, 0.5D, 0.1D),
new HydrologyPlannerSettings.Routing(128, 16, 512, 256, 16, 8, 0.5D, 12D, 0.5D, 0.1D, 1D),
new HydrologyPlannerSettings.Surface(
true,
surfaceSources,