Fix a bug causing issues with decorations

This commit is contained in:
Daniel Mills 2020-12-06 06:09:57 -05:00
parent 0755e8f618
commit 4a82def974
4 changed files with 29 additions and 16 deletions

View File

@ -1,6 +1,5 @@
package com.volmit.iris.generator.noise; package com.volmit.iris.generator.noise;
import com.volmit.iris.Iris;
import com.volmit.iris.scaffold.stream.ProceduralStream; import com.volmit.iris.scaffold.stream.ProceduralStream;
import com.volmit.iris.scaffold.stream.arithmetic.FittedStream; import com.volmit.iris.scaffold.stream.arithmetic.FittedStream;
import com.volmit.iris.scaffold.stream.sources.CNGStream; import com.volmit.iris.scaffold.stream.sources.CNGStream;
@ -289,8 +288,6 @@ public class CNG
catch(Throwable e) 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; return scale;
} }
public boolean isStatic() {
return generator != null && generator.isStatic();
}
} }

View File

@ -7,4 +7,9 @@ public interface NoiseGenerator
public double noise(double x, double z); public double noise(double x, double z);
public double noise(double x, double y, double z); public double noise(double x, double y, double z);
public default boolean isStatic()
{
return false;
}
} }

View File

@ -11,6 +11,11 @@ public class WhiteNoise implements NoiseGenerator
n = new FastNoise(new RNG(seed).imax()); n = new FastNoise(new RNG(seed).imax());
} }
public boolean isStatic()
{
return true;
}
private double f(double m) private double f(double m)
{ {
return (m % 8192) * 1024; return (m % 8192) * 1024;

View File

@ -4,15 +4,7 @@ import com.volmit.iris.Iris;
import com.volmit.iris.scaffold.cache.AtomicCache; import com.volmit.iris.scaffold.cache.AtomicCache;
import com.volmit.iris.manager.IrisDataManager; import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.generator.noise.CNG; import com.volmit.iris.generator.noise.CNG;
import com.volmit.iris.util.ArrayType; import com.volmit.iris.util.*;
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 lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -127,7 +119,11 @@ public class IrisDecorator
public CNG getVarianceGenerator(RNG rng, IrisDataManager data) 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<IrisBlockData> add(String b) public KList<IrisBlockData> add(String b)
@ -168,15 +164,21 @@ public class IrisDecorator
return null; return null;
} }
double xx = x / getZoom(); double xx = x;
double zz = z / getZoom(); double zz = z;
if(!getVarianceGenerator(rng, data).isStatic())
{
xx = x / getZoom();
zz = z / getZoom();
}
if(getBlockData(data).size() == 1) if(getBlockData(data).size() == 1)
{ {
return getBlockData(data).get(0); 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) public BlockData getBlockDataForTop(IrisBiome b, RNG rng, double x, double z, IrisDataManager data)