From d170b4e0fd3c67ff3c2fe4a9d723496605e4e3d4 Mon Sep 17 00:00:00 2001 From: Astrash Date: Sun, 7 Aug 2022 11:46:55 +1000 Subject: [PATCH] Handle resolution and biome blending --- .../biome/pipeline/config/BiomePipelineTemplate.java | 2 +- .../pipeline/reimplementation/BiomeChunkImpl.java | 6 ++++-- .../reimplementation/PipelineBiomeProvider.java | 11 ++++------- .../biome/pipeline/reimplementation/PipelineImpl.java | 8 +++++++- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index 1324f50e0..e2859cbff 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -54,6 +54,6 @@ public class BiomePipelineTemplate implements ObjectTemplate { @Override public BiomeProvider get() { - return new PipelineBiomeProvider(new PipelineImpl(source, stages, 10), resolution, blendSampler, blendAmplitude); + return new PipelineBiomeProvider(new PipelineImpl(source, stages, resolution, 500), resolution, blendSampler, blendAmplitude); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java index 36ffe591e..2312357cf 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/BiomeChunkImpl.java @@ -15,11 +15,13 @@ public class BiomeChunkImpl implements BiomeChunk { private PipelineBiome[][] biomes; private final SeededVector worldOrigin; private final int chunkOriginArrayIndex; + private final int worldCoordinateScale; public BiomeChunkImpl(SeededVector worldOrigin, PipelineImpl pipeline) { this.worldOrigin = worldOrigin; this.chunkOriginArrayIndex = pipeline.getChunkOriginArrayIndex(); + this.worldCoordinateScale = pipeline.getResolution(); int size = pipeline.getArraySize(); @@ -86,11 +88,11 @@ public class BiomeChunkImpl implements BiomeChunk { } private int xIndexToWorldCoordinate(int xIndex) { - return worldOrigin.x() + xIndex - chunkOriginArrayIndex; + return (worldOrigin.x() + xIndex - chunkOriginArrayIndex) * worldCoordinateScale; } private int zIndexToWorldCoordinate(int zIndex) { - return worldOrigin.z() + zIndex - chunkOriginArrayIndex; + return (worldOrigin.z() + zIndex - chunkOriginArrayIndex) * worldCoordinateScale; } protected static int initialSizeToArraySize(int expanderCount, int initialSize) { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java index 2134f6b7a..e5ddca9e8 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineBiomeProvider.java @@ -74,14 +74,11 @@ public class PipelineBiomeProvider implements BiomeProvider { public Biome getBiome(int x, int z, long seed) { -// x += mutator.noise(seed + 1, x, z) * noiseAmp; -// z += mutator.noise(seed + 2, x, z) * noiseAmp; - -// x /= resolution; -// z /= resolution; + x += mutator.noise(seed + 1, x, z) * noiseAmp; + z += mutator.noise(seed + 2, x, z) * noiseAmp; -// x *= resolution; -// z *= resolution; + x /= resolution; + z /= resolution; int chunkX = FastMath.floorDiv(x, chunkSize); int chunkZ = FastMath.floorDiv(z, chunkSize); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java index 7ea1db66d..7c6be7dcc 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/reimplementation/PipelineImpl.java @@ -19,10 +19,12 @@ public class PipelineImpl implements Pipeline { private final int expanderCount; private final int arraySize; private final int chunkOriginArrayIndex; + private final int resolution; - public PipelineImpl(Source source, List stages, int idealChunkArraySize) { + public PipelineImpl(Source source, List stages, int resolution, int idealChunkArraySize) { this.source = source; this.stages = stages; + this.resolution = resolution; this.expanderCount = (int) stages.stream().filter(s -> s instanceof Expander).count(); // Optimize for the ideal array size @@ -79,4 +81,8 @@ public class PipelineImpl implements Pipeline { public int getChunkOriginArrayIndex() { return chunkOriginArrayIndex; } + + public int getResolution() { + return resolution; + } }