From f766a342c2f23a9e2e1ebe1d4107e5b2858ce51e Mon Sep 17 00:00:00 2001 From: chelsea Date: Tue, 2 Dec 2025 22:31:44 -0600 Subject: [PATCH] Loosen trail prepass sampling to guarantee roads --- worldgen-c/bin/worldgen | Bin 140064 -> 140064 bytes worldgen-c/src/worldgen.c | 21 ++++++++++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/worldgen-c/bin/worldgen b/worldgen-c/bin/worldgen index 20daa4bdb0a994c34e9bf0ae682944c9a0947c1d..33d4094d26734aeefd1edc1b5d45d4a613b5a43b 100755 GIT binary patch delta 12058 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 = 0; ctx->trail_segment_cap = 0; - const int step = 64; - const int max_points = 64; - const double min_spacing = 96.0; + const int step = 48; + const int max_points = 128; + const double min_spacing = 64.0; int cap = max_points; int count = 0; int *px = (int *)malloc((size_t)cap * sizeof(int)); @@ -232,7 +232,7 @@ void worldgen_prepass(worldgen_ctx *ctx, int min_x, int max_x, int min_z, int ma for (int z = min_z; z <= max_z; z += step) { for (int x = min_x; x <= max_x; x += step) { double val = land_value(ctx, x, z); - if (val < 0.05) continue; + if (val < -0.05) continue; int spaced = 1; for (int i = 0; i < count; ++i) { double dx = (double)(x - px[i]); @@ -253,10 +253,10 @@ void worldgen_prepass(worldgen_ctx *ctx, int min_x, int max_x, int min_z, int ma } if (count >= max_points) break; } - if (count == 0) { - px = (int *)realloc(px, sizeof(int)); - pz = (int *)realloc(pz, sizeof(int)); - pv = (double *)realloc(pv, sizeof(double)); + if (count < 2) { + px = (int *)realloc(px, 2 * sizeof(int)); + pz = (int *)realloc(pz, 2 * sizeof(int)); + pv = (double *)realloc(pv, 2 * sizeof(double)); if (!px || !pz || !pv) { free(px); free(pz); free(pv); return; @@ -264,7 +264,10 @@ void worldgen_prepass(worldgen_ctx *ctx, int min_x, int max_x, int min_z, int ma px[0] = (min_x + max_x) / 2; pz[0] = (min_z + max_z) / 2; pv[0] = 1.0; - count = 1; + px[1] = max_x - 16; + pz[1] = max_z - 16; + pv[1] = 0.8; + count = 2; } /* Select hubs: pick top valued, then farthest from existing hubs */