mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-04-23 08:38:51 +00:00
noise meta
This commit is contained in:
@@ -2,6 +2,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates;
|
|||||||
|
|
||||||
import com.dfsek.tectonic.annotations.Default;
|
import com.dfsek.tectonic.annotations.Default;
|
||||||
import com.dfsek.tectonic.annotations.Value;
|
import com.dfsek.tectonic.annotations.Value;
|
||||||
|
import com.dfsek.terra.api.config.meta.MetaValue;
|
||||||
import com.dfsek.terra.api.math.noise.NoiseSampler;
|
import com.dfsek.terra.api.math.noise.NoiseSampler;
|
||||||
import com.dfsek.terra.api.math.noise.samplers.DomainWarpedSampler;
|
import com.dfsek.terra.api.math.noise.samplers.DomainWarpedSampler;
|
||||||
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
|
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
|
||||||
@@ -9,21 +10,21 @@ import com.dfsek.terra.api.util.seeded.NoiseSeeded;
|
|||||||
@SuppressWarnings({"unused", "FieldMayBeFinal"})
|
@SuppressWarnings({"unused", "FieldMayBeFinal"})
|
||||||
public class DomainWarpTemplate extends SamplerTemplate<DomainWarpedSampler> {
|
public class DomainWarpTemplate extends SamplerTemplate<DomainWarpedSampler> {
|
||||||
@Value("warp")
|
@Value("warp")
|
||||||
private NoiseSeeded warp;
|
private MetaValue<NoiseSeeded> warp;
|
||||||
|
|
||||||
@Value("function")
|
@Value("function")
|
||||||
private NoiseSeeded function;
|
private MetaValue<NoiseSeeded> function;
|
||||||
|
|
||||||
@Value("salt")
|
@Value("salt")
|
||||||
@Default
|
@Default
|
||||||
private int salt = 0;
|
private MetaValue<Integer> salt = MetaValue.of(0);
|
||||||
|
|
||||||
@Value("amplitude")
|
@Value("amplitude")
|
||||||
@Default
|
@Default
|
||||||
private double amplitude = 1;
|
private MetaValue<Double> amplitude = MetaValue.of(1d);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NoiseSampler apply(Long seed) {
|
public NoiseSampler apply(Long seed) {
|
||||||
return new DomainWarpedSampler(function.apply(seed), warp.apply(seed), (int) (seed + salt), amplitude);
|
return new DomainWarpedSampler(function.get().apply(seed), warp.get().apply(seed), (int) (seed + salt.get()), amplitude.get());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.dfsek.terra.config.loaders.config.sampler.templates;
|
package com.dfsek.terra.config.loaders.config.sampler.templates;
|
||||||
|
|
||||||
import com.dfsek.tectonic.annotations.Value;
|
import com.dfsek.tectonic.annotations.Value;
|
||||||
|
import com.dfsek.terra.api.config.meta.MetaValue;
|
||||||
import com.dfsek.terra.api.math.noise.NoiseSampler;
|
import com.dfsek.terra.api.math.noise.NoiseSampler;
|
||||||
import com.dfsek.terra.api.math.noise.samplers.ImageSampler;
|
import com.dfsek.terra.api.math.noise.samplers.ImageSampler;
|
||||||
|
|
||||||
@@ -10,16 +11,16 @@ import java.awt.image.BufferedImage;
|
|||||||
public class ImageSamplerTemplate extends SamplerTemplate<ImageSampler> {
|
public class ImageSamplerTemplate extends SamplerTemplate<ImageSampler> {
|
||||||
|
|
||||||
@Value("image")
|
@Value("image")
|
||||||
private BufferedImage image;
|
private MetaValue<BufferedImage> image;
|
||||||
|
|
||||||
@Value("frequency")
|
@Value("frequency")
|
||||||
private double frequency;
|
private MetaValue<Double> frequency;
|
||||||
|
|
||||||
@Value("channel")
|
@Value("channel")
|
||||||
private ImageSampler.Channel channel;
|
private MetaValue<ImageSampler.Channel> channel;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NoiseSampler apply(Long seed) {
|
public NoiseSampler apply(Long seed) {
|
||||||
return new ImageSampler(image, channel, frequency);
|
return new ImageSampler(image.get(), channel.get(), frequency.get());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.dfsek.tectonic.annotations.Default;
|
|||||||
import com.dfsek.tectonic.annotations.Value;
|
import com.dfsek.tectonic.annotations.Value;
|
||||||
import com.dfsek.tectonic.config.ValidatedConfigTemplate;
|
import com.dfsek.tectonic.config.ValidatedConfigTemplate;
|
||||||
import com.dfsek.tectonic.exception.ValidationException;
|
import com.dfsek.tectonic.exception.ValidationException;
|
||||||
|
import com.dfsek.terra.api.config.meta.MetaValue;
|
||||||
import com.dfsek.terra.api.math.noise.NoiseSampler;
|
import com.dfsek.terra.api.math.noise.NoiseSampler;
|
||||||
import com.dfsek.terra.api.math.noise.samplers.KernelSampler;
|
import com.dfsek.terra.api.math.noise.samplers.KernelSampler;
|
||||||
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
|
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
|
||||||
@@ -14,18 +15,18 @@ import java.util.List;
|
|||||||
public class KernelTemplate extends SamplerTemplate<KernelSampler> implements ValidatedConfigTemplate {
|
public class KernelTemplate extends SamplerTemplate<KernelSampler> implements ValidatedConfigTemplate {
|
||||||
|
|
||||||
@Value("kernel")
|
@Value("kernel")
|
||||||
private List<List<Double>> kernel;
|
private List<List<MetaValue<Double>>> kernel;
|
||||||
|
|
||||||
@Value("factor")
|
@Value("factor")
|
||||||
@Default
|
@Default
|
||||||
private double factor = 1;
|
private MetaValue<Double> factor = MetaValue.of(1d);
|
||||||
|
|
||||||
@Value("function")
|
@Value("function")
|
||||||
private NoiseSeeded function;
|
private MetaValue<NoiseSeeded> function;
|
||||||
|
|
||||||
@Value("frequency")
|
@Value("frequency")
|
||||||
@Default
|
@Default
|
||||||
private double frequency = 1;
|
private MetaValue<Double> frequency = MetaValue.of(1d);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NoiseSampler apply(Long seed) {
|
public NoiseSampler apply(Long seed) {
|
||||||
@@ -33,12 +34,12 @@ public class KernelTemplate extends SamplerTemplate<KernelSampler> implements Va
|
|||||||
|
|
||||||
for(int x = 0; x < kernel.size(); x++) {
|
for(int x = 0; x < kernel.size(); x++) {
|
||||||
for(int y = 0; y < kernel.get(x).size(); y++) {
|
for(int y = 0; y < kernel.get(x).size(); y++) {
|
||||||
k[x][y] = kernel.get(x).get(y) * factor;
|
k[x][y] = kernel.get(x).get(y).get() * factor.get();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
KernelSampler sampler = new KernelSampler(k, function.apply(seed));
|
KernelSampler sampler = new KernelSampler(k, function.get().apply(seed));
|
||||||
sampler.setFrequency(frequency);
|
sampler.setFrequency(frequency.get());
|
||||||
return sampler;
|
return sampler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.dfsek.tectonic.annotations.Value;
|
|||||||
import com.dfsek.tectonic.config.ValidatedConfigTemplate;
|
import com.dfsek.tectonic.config.ValidatedConfigTemplate;
|
||||||
import com.dfsek.tectonic.exception.ValidationException;
|
import com.dfsek.tectonic.exception.ValidationException;
|
||||||
import com.dfsek.tectonic.loading.object.ObjectTemplate;
|
import com.dfsek.tectonic.loading.object.ObjectTemplate;
|
||||||
|
import com.dfsek.terra.api.config.meta.MetaValue;
|
||||||
import com.dfsek.terra.api.math.noise.NoiseSampler;
|
import com.dfsek.terra.api.math.noise.NoiseSampler;
|
||||||
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
|
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
|
||||||
|
|
||||||
@@ -12,15 +13,15 @@ import com.dfsek.terra.api.util.seeded.NoiseSeeded;
|
|||||||
public abstract class SamplerTemplate<T extends NoiseSampler> implements ValidatedConfigTemplate, ObjectTemplate<NoiseSeeded>, NoiseSeeded {
|
public abstract class SamplerTemplate<T extends NoiseSampler> implements ValidatedConfigTemplate, ObjectTemplate<NoiseSeeded>, NoiseSeeded {
|
||||||
@Value("dimensions")
|
@Value("dimensions")
|
||||||
@Default
|
@Default
|
||||||
private int dimensions = 2;
|
private MetaValue<Integer> dimensions = MetaValue.of(2);
|
||||||
|
|
||||||
public int getDimensions() {
|
public int getDimensions() {
|
||||||
return dimensions;
|
return dimensions.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean validate() throws ValidationException {
|
public boolean validate() throws ValidationException {
|
||||||
if(dimensions != 2 && dimensions != 3) throw new ValidationException("Illegal amount of dimensions: " + dimensions);
|
if(dimensions.get() != 2 && dimensions.get() != 3) throw new ValidationException("Illegal amount of dimensions: " + dimensions);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user