make salt long

This commit is contained in:
dfsek
2021-07-20 17:34:33 -07:00
parent 7b1853823c
commit d6e2acce38
7 changed files with 27 additions and 6 deletions

View File

@@ -1,5 +1,6 @@
package com.dfsek.terra.addons.feature.distributor.config;
import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.loading.object.ObjectTemplate;
import com.dfsek.terra.addons.feature.distributor.distributors.NoiseDistributor;
@@ -10,8 +11,12 @@ public class NoiseDistributorTemplate implements ObjectTemplate<Distributor> {
@Value("distribution")
private NoiseSampler noise;
@Value("threshold")
@Default
private double threshold = 0;
@Override
public Distributor get() {
return new NoiseDistributor(noise);
return new NoiseDistributor(noise, threshold);
}
}

View File

@@ -6,12 +6,14 @@ import com.dfsek.terra.api.structure.feature.Distributor;
public class NoiseDistributor implements Distributor {
private final NoiseSampler sampler;
public NoiseDistributor(NoiseSampler sampler) {
private final double threshold;
public NoiseDistributor(NoiseSampler sampler, double threshold) {
this.sampler = sampler;
this.threshold = threshold;
}
@Override
public boolean matches(int x, int z, long seed) {
return sampler.getNoiseSeeded(seed, x, z) > 0;
return sampler.getNoiseSeeded(seed, x, z) > threshold;
}
}

View File

@@ -33,6 +33,7 @@ public class CellularNoiseTemplate extends NoiseTemplate<CellularSampler> {
sampler.setJitterModifier(cellularJitter);
sampler.setReturnType(cellularReturnType);
sampler.setDistanceFunction(cellularDistanceFunction);
sampler.setSalt(salt);
return sampler;
}
}

View File

@@ -35,6 +35,7 @@ public class GaborNoiseTemplate extends NoiseTemplate<GaborNoiseSampler> {
gaborNoiseSampler.setDeviation(deviation);
gaborNoiseSampler.setImpulsesPerKernel(impulses);
gaborNoiseSampler.setFrequency0(f0);
gaborNoiseSampler.setSalt(salt);
return gaborNoiseSampler;
}
}

View File

@@ -4,6 +4,7 @@ import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate;
import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction;
import com.dfsek.terra.api.noise.NoiseSampler;
@SuppressWarnings({"unused", "FieldMayBeFinal"})
public abstract class NoiseTemplate<T extends NoiseFunction> extends SamplerTemplate<T> {
@@ -13,5 +14,5 @@ public abstract class NoiseTemplate<T extends NoiseFunction> extends SamplerTemp
@Value("salt")
@Default
protected int salt = 0;
protected long salt = 0;
}

View File

@@ -17,6 +17,7 @@ public class SimpleNoiseTemplate extends NoiseTemplate<NoiseFunction> {
public NoiseSampler get() {
NoiseFunction sampler = samplerSupplier.get();
sampler.setFrequency(frequency);
sampler.setSalt(salt);
return sampler;
}
}

View File

@@ -21,6 +21,16 @@ public abstract class NoiseFunction implements NoiseSampler {
protected double frequency = 0.02d;
protected long salt;
public void setSalt(long salt) {
this.salt = salt;
}
public NoiseFunction() {
this.salt = 0;
}
protected static int fastFloor(double f) {
return f >= 0 ? (int) f : (int) f - 1;
}
@@ -119,12 +129,12 @@ public abstract class NoiseFunction implements NoiseSampler {
@Override
public double getNoiseSeeded(long seed, double x, double y) {
return getNoiseRaw(seed, x * frequency, y * frequency);
return getNoiseRaw(seed + salt, x * frequency, y * frequency);
}
@Override
public double getNoiseSeeded(long seed, double x, double y, double z) {
return getNoiseRaw(seed, x * frequency, y * frequency, z * frequency);
return getNoiseRaw(seed + salt, x * frequency, y * frequency, z * frequency);
}
public abstract double getNoiseRaw(long seed, double x, double y);