From 4a82def974a7b5cc24fd33c5e1f701f4e701a565 Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Sun, 6 Dec 2020 06:09:57 -0500 Subject: [PATCH] Fix a bug causing issues with decorations --- .../com/volmit/iris/generator/noise/CNG.java | 7 +++-- .../iris/generator/noise/NoiseGenerator.java | 5 ++++ .../iris/generator/noise/WhiteNoise.java | 5 ++++ .../com/volmit/iris/object/IrisDecorator.java | 28 ++++++++++--------- 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/volmit/iris/generator/noise/CNG.java b/src/main/java/com/volmit/iris/generator/noise/CNG.java index 106a03e9f..211e7d7d0 100644 --- a/src/main/java/com/volmit/iris/generator/noise/CNG.java +++ b/src/main/java/com/volmit/iris/generator/noise/CNG.java @@ -1,6 +1,5 @@ package com.volmit.iris.generator.noise; -import com.volmit.iris.Iris; import com.volmit.iris.scaffold.stream.ProceduralStream; import com.volmit.iris.scaffold.stream.arithmetic.FittedStream; import com.volmit.iris.scaffold.stream.sources.CNGStream; @@ -289,8 +288,6 @@ public class CNG catch(Throwable e) { - Iris.error("Failed to sample noise into array " + v.size() + " nodes"); - Iris.error("Noise Source: " + generator.getClass().getSimpleName()); } @@ -406,4 +403,8 @@ public class CNG { return scale; } + + public boolean isStatic() { + return generator != null && generator.isStatic(); + } } diff --git a/src/main/java/com/volmit/iris/generator/noise/NoiseGenerator.java b/src/main/java/com/volmit/iris/generator/noise/NoiseGenerator.java index b377bb514..7ae3d1336 100644 --- a/src/main/java/com/volmit/iris/generator/noise/NoiseGenerator.java +++ b/src/main/java/com/volmit/iris/generator/noise/NoiseGenerator.java @@ -7,4 +7,9 @@ public interface NoiseGenerator public double noise(double x, double z); public double noise(double x, double y, double z); + + public default boolean isStatic() + { + return false; + } } diff --git a/src/main/java/com/volmit/iris/generator/noise/WhiteNoise.java b/src/main/java/com/volmit/iris/generator/noise/WhiteNoise.java index bca45a97a..2842d38bf 100644 --- a/src/main/java/com/volmit/iris/generator/noise/WhiteNoise.java +++ b/src/main/java/com/volmit/iris/generator/noise/WhiteNoise.java @@ -11,6 +11,11 @@ public class WhiteNoise implements NoiseGenerator n = new FastNoise(new RNG(seed).imax()); } + public boolean isStatic() + { + return true; + } + private double f(double m) { return (m % 8192) * 1024; diff --git a/src/main/java/com/volmit/iris/object/IrisDecorator.java b/src/main/java/com/volmit/iris/object/IrisDecorator.java index fad434798..c65035051 100644 --- a/src/main/java/com/volmit/iris/object/IrisDecorator.java +++ b/src/main/java/com/volmit/iris/object/IrisDecorator.java @@ -4,15 +4,7 @@ import com.volmit.iris.Iris; import com.volmit.iris.scaffold.cache.AtomicCache; import com.volmit.iris.manager.IrisDataManager; import com.volmit.iris.generator.noise.CNG; -import com.volmit.iris.util.ArrayType; -import com.volmit.iris.util.DependsOn; -import com.volmit.iris.util.Desc; -import com.volmit.iris.util.DontObfuscate; -import com.volmit.iris.util.KList; -import com.volmit.iris.util.MaxNumber; -import com.volmit.iris.util.MinNumber; -import com.volmit.iris.util.RNG; -import com.volmit.iris.util.Required; +import com.volmit.iris.util.*; import lombok.AllArgsConstructor; import lombok.Data; @@ -127,7 +119,11 @@ public class IrisDecorator public CNG getVarianceGenerator(RNG rng, IrisDataManager data) { - return varianceGenerator.aquire(() -> variance.create(rng.nextParallelRNG((int) (getBlockData(data).size()))).scale(1D / varianceZoom)); + return varianceGenerator.aquire(() -> + variance.create( + rng.nextParallelRNG((int) (getBlockData(data).size()))) + + .scale(1D / varianceZoom)); } public KList add(String b) @@ -168,15 +164,21 @@ public class IrisDecorator return null; } - double xx = x / getZoom(); - double zz = z / getZoom(); + double xx = x; + double zz = z; + + if(!getVarianceGenerator(rng, data).isStatic()) + { + xx = x / getZoom(); + zz = z / getZoom(); + } if(getBlockData(data).size() == 1) { return getBlockData(data).get(0); } - return getVarianceGenerator(rng, data).fit(getBlockData(data), xx, zz); + return getVarianceGenerator(rng, data).fit(getBlockData(data), xx, zz).clone(); } public BlockData getBlockDataForTop(IrisBiome b, RNG rng, double x, double z, IrisDataManager data)