diff --git a/src/main/java/de/articdive/jnoise/api/NoiseBuilder.java b/src/main/java/de/articdive/jnoise/api/NoiseBuilder.java index 017fc99..24d7c21 100644 --- a/src/main/java/de/articdive/jnoise/api/NoiseBuilder.java +++ b/src/main/java/de/articdive/jnoise/api/NoiseBuilder.java @@ -22,31 +22,9 @@ import org.jetbrains.annotations.NotNull; /** - * @param The Class of the extending class. * @author Lukas Mansour */ -public abstract class NoiseBuilder> { - protected long seed = 1729; - - /** - * Sets the seed of the to-be-generated noise-generator. - * - * @param seed an integer to seed the noise-generator. - * @return {@link NoiseBuilder} - */ - @NotNull - public SELF setSeed(long seed) { - this.seed = seed; - return self(); - } - - /** - * For default methods to return the correct builder this method must be defined. - * - * @return The builder. - */ - @NotNull - protected abstract SELF self(); +public abstract class NoiseBuilder { /** * Generates the noise-generator diff --git a/src/main/java/de/articdive/jnoise/api/NoiseGenerator.java b/src/main/java/de/articdive/jnoise/api/NoiseGenerator.java index e7c98aa..a15d2ed 100644 --- a/src/main/java/de/articdive/jnoise/api/NoiseGenerator.java +++ b/src/main/java/de/articdive/jnoise/api/NoiseGenerator.java @@ -24,10 +24,8 @@ * @author Lukas Mansour */ public abstract class NoiseGenerator { - protected final long seed; - protected NoiseGenerator(long seed) { - this.seed = seed; + protected NoiseGenerator() { } /** diff --git a/src/main/java/de/articdive/jnoise/noise/octaved/OctaveNoiseBuilder.java b/src/main/java/de/articdive/jnoise/noise/octaved/OctaveNoiseBuilder.java index 63afe78..db5c668 100644 --- a/src/main/java/de/articdive/jnoise/noise/octaved/OctaveNoiseBuilder.java +++ b/src/main/java/de/articdive/jnoise/noise/octaved/OctaveNoiseBuilder.java @@ -25,26 +25,12 @@ /** * @author Lukas Mansour */ -public final class OctaveNoiseBuilder extends NoiseBuilder { +public final class OctaveNoiseBuilder extends NoiseBuilder { private JNoise noise; private int octaves = 1; private double persistence = 1; private double lacunarity = 1; - @Override - @NotNull - protected OctaveNoiseBuilder self() { - return this; - } - - @NotNull - @Override - public OctaveNoiseBuilder setSeed(long seed) { - throw new UnsupportedOperationException( - "Octavted noise does not support a seed as it inherits it from the provided noise." - ); - } - /** * Sets the noise that will be octavated. * @@ -107,8 +93,8 @@ public OctaveNoiseBuilder setLacunarity(double lacunarity) { @NotNull public JNoise build() { if (noise == null) { - throw new NullPointerException("A noise implementation to octavated has not been specified!"); + throw new NullPointerException("A noise implementation to octavate has not been specified!"); } - return JNoise.build(new OctaveNoiseGenerator(seed, noise, octaves, persistence, lacunarity)); + return JNoise.build(new OctaveNoiseGenerator(noise, octaves, persistence, lacunarity)); } } diff --git a/src/main/java/de/articdive/jnoise/noise/octaved/OctaveNoiseGenerator.java b/src/main/java/de/articdive/jnoise/noise/octaved/OctaveNoiseGenerator.java index 5487c33..b9a1dbc 100644 --- a/src/main/java/de/articdive/jnoise/noise/octaved/OctaveNoiseGenerator.java +++ b/src/main/java/de/articdive/jnoise/noise/octaved/OctaveNoiseGenerator.java @@ -31,8 +31,7 @@ public final class OctaveNoiseGenerator extends NoiseGenerator { +public class FastSimplexBuilder extends NoiseBuilder { + private long seed = 1729; private double frequency = 1.0; private Simplex2DVariant variant2D = Simplex2DVariant.CLASSIC; private Simplex3DVariant variant3D = Simplex3DVariant.CLASSIC; private Simplex4DVariant variant4D = Simplex4DVariant.CLASSIC; + /** + * Sets the seed for the {@link FastSimplexGenerator}. + * + * @param seed the new seed for the {@link FastSimplexGenerator}. + * @return {@link FastSimplexBuilder} this + */ @NotNull - @Override - protected FastSimplexBuilder self() { + public FastSimplexBuilder setSeed(long seed) { + this.seed = seed; return this; } diff --git a/src/main/java/de/articdive/jnoise/noise/opensimplex/FastSimplexGenerator.java b/src/main/java/de/articdive/jnoise/noise/opensimplex/FastSimplexGenerator.java index 03d0991..6edbf4a 100644 --- a/src/main/java/de/articdive/jnoise/noise/opensimplex/FastSimplexGenerator.java +++ b/src/main/java/de/articdive/jnoise/noise/opensimplex/FastSimplexGenerator.java @@ -28,8 +28,8 @@ * @author Lukas Mansour */ public class FastSimplexGenerator extends NoiseGenerator { - private final double frequency; private final OpenSimplex2F simplex; + private final double frequency; private final Simplex2DVariant variant2D; private final Simplex3DVariant variant3D; private final Simplex4DVariant variant4D; @@ -41,9 +41,8 @@ public class FastSimplexGenerator extends NoiseGenerator { @NotNull Simplex3DVariant variant3D, @NotNull Simplex4DVariant variant4D ) { - super(seed); - this.frequency = frequency; this.simplex = new OpenSimplex2F(seed); + this.frequency = frequency; this.variant2D = variant2D; this.variant3D = variant3D; this.variant4D = variant4D; diff --git a/src/main/java/de/articdive/jnoise/noise/opensimplex/OpenSimplexBuilder.java b/src/main/java/de/articdive/jnoise/noise/opensimplex/OpenSimplexBuilder.java index d622efb..dd461c5 100644 --- a/src/main/java/de/articdive/jnoise/noise/opensimplex/OpenSimplexBuilder.java +++ b/src/main/java/de/articdive/jnoise/noise/opensimplex/OpenSimplexBuilder.java @@ -20,18 +20,26 @@ import de.articdive.jnoise.JNoise; import de.articdive.jnoise.api.NoiseBuilder; +import de.articdive.jnoise.noise.worley.WorleyNoiseBuilder; import org.jetbrains.annotations.NotNull; /** * @author Lukas Mansour */ @Deprecated -public final class OpenSimplexBuilder extends NoiseBuilder { +public final class OpenSimplexBuilder extends NoiseBuilder { + private long seed = 1729; private double frequency = 1.0; + /** + * Sets the seed for the {@link OpenSimplexGenerator}. + * + * @param seed the new seed for the {@link OpenSimplexGenerator}. + * @return {@link WorleyNoiseBuilder} this + */ @NotNull - @Override - protected OpenSimplexBuilder self() { + public OpenSimplexBuilder setSeed(long seed) { + this.seed = seed; return this; } diff --git a/src/main/java/de/articdive/jnoise/noise/opensimplex/OpenSimplexGenerator.java b/src/main/java/de/articdive/jnoise/noise/opensimplex/OpenSimplexGenerator.java index b6b5b1b..960640d 100644 --- a/src/main/java/de/articdive/jnoise/noise/opensimplex/OpenSimplexGenerator.java +++ b/src/main/java/de/articdive/jnoise/noise/opensimplex/OpenSimplexGenerator.java @@ -83,10 +83,11 @@ public final class OpenSimplexGenerator extends NoiseGenerator { +public class SuperSimplexBuilder extends NoiseBuilder { + private long seed = 1729; private double frequency = 1.0; private Simplex2DVariant variant2D = Simplex2DVariant.CLASSIC; private Simplex3DVariant variant3D = Simplex3DVariant.CLASSIC; private Simplex4DVariant variant4D = Simplex4DVariant.CLASSIC; + /** + * Sets the seed for the {@link SuperSimplexGenerator}. + * + * @param seed the new seed for the {@link SuperSimplexGenerator}. + * @return {@link SuperSimplexBuilder} this + */ @NotNull - @Override - protected SuperSimplexBuilder self() { + public SuperSimplexBuilder setSeed(long seed) { + this.seed = seed; return this; } diff --git a/src/main/java/de/articdive/jnoise/noise/opensimplex/SuperSimplexGenerator.java b/src/main/java/de/articdive/jnoise/noise/opensimplex/SuperSimplexGenerator.java index d2b733d..4512bee 100644 --- a/src/main/java/de/articdive/jnoise/noise/opensimplex/SuperSimplexGenerator.java +++ b/src/main/java/de/articdive/jnoise/noise/opensimplex/SuperSimplexGenerator.java @@ -28,8 +28,8 @@ * @author Lukas Mansour */ public class SuperSimplexGenerator extends NoiseGenerator { - private final double frequency; private final OpenSimplex2S simplex; + private final double frequency; private final Simplex2DVariant variant2D; private final Simplex3DVariant variant3D; private final Simplex4DVariant variant4D; @@ -41,9 +41,8 @@ public class SuperSimplexGenerator extends NoiseGenerator { @NotNull Simplex3DVariant variant3D, @NotNull Simplex4DVariant variant4D ) { - super(seed); - this.frequency = frequency; this.simplex = new OpenSimplex2S(seed); + this.frequency = frequency; this.variant2D = variant2D; this.variant3D = variant3D; this.variant4D = variant4D; diff --git a/src/main/java/de/articdive/jnoise/noise/perlin/PerlinNoiseBuilder.java b/src/main/java/de/articdive/jnoise/noise/perlin/PerlinNoiseBuilder.java index 00efc80..f707397 100644 --- a/src/main/java/de/articdive/jnoise/noise/perlin/PerlinNoiseBuilder.java +++ b/src/main/java/de/articdive/jnoise/noise/perlin/PerlinNoiseBuilder.java @@ -19,21 +19,28 @@ package de.articdive.jnoise.noise.perlin; import de.articdive.jnoise.JNoise; -import de.articdive.jnoise.interpolation.Interpolation; import de.articdive.jnoise.api.NoiseBuilder; +import de.articdive.jnoise.interpolation.Interpolation; import de.articdive.jnoise.interpolation.InterpolationType; import org.jetbrains.annotations.NotNull; /** * @author Lukas Mansour */ -public final class PerlinNoiseBuilder extends NoiseBuilder { +public final class PerlinNoiseBuilder extends NoiseBuilder { + private long seed = 1729; private double frequency = 1.00; private Interpolation interpolation = InterpolationType.LINEAR; - @Override + /** + * Sets the seed for the {@link PerlinNoiseGenerator}. + * + * @param seed the new seed for the {@link PerlinNoiseGenerator}. + * @return {@link PerlinNoiseBuilder} this + */ @NotNull - protected PerlinNoiseBuilder self() { + public PerlinNoiseBuilder setSeed(long seed) { + this.seed = seed; return this; } diff --git a/src/main/java/de/articdive/jnoise/noise/perlin/PerlinNoiseGenerator.java b/src/main/java/de/articdive/jnoise/noise/perlin/PerlinNoiseGenerator.java index 279aea6..7ae8298 100644 --- a/src/main/java/de/articdive/jnoise/noise/perlin/PerlinNoiseGenerator.java +++ b/src/main/java/de/articdive/jnoise/noise/perlin/PerlinNoiseGenerator.java @@ -18,8 +18,8 @@ package de.articdive.jnoise.noise.perlin; -import de.articdive.jnoise.interpolation.Interpolation; import de.articdive.jnoise.api.NoiseGenerator; +import de.articdive.jnoise.interpolation.Interpolation; import de.articdive.jnoise.util.HashUtil; import de.articdive.jnoise.util.vectors.Vector2D; import de.articdive.jnoise.util.vectors.Vector3D; @@ -76,11 +76,12 @@ public final class PerlinNoiseGenerator extends NoiseGenerator { +public final class ValueNoiseBuilder extends NoiseBuilder { + private long seed = 1729; private double frequency = 1.00; private Interpolation interpolation = InterpolationType.LINEAR; + /** + * Sets the seed for the {@link ValueNoiseGenerator}. + * + * @param seed the new seed for the {@link ValueNoiseGenerator}. + * @return {@link ValueNoiseBuilder} this + */ @NotNull - @Override - protected ValueNoiseBuilder self() { + public ValueNoiseBuilder setSeed(long seed) { + this.seed = seed; return this; } diff --git a/src/main/java/de/articdive/jnoise/noise/value/ValueNoiseGenerator.java b/src/main/java/de/articdive/jnoise/noise/value/ValueNoiseGenerator.java index 4d70b71..fb7922b 100644 --- a/src/main/java/de/articdive/jnoise/noise/value/ValueNoiseGenerator.java +++ b/src/main/java/de/articdive/jnoise/noise/value/ValueNoiseGenerator.java @@ -33,11 +33,12 @@ * @author Lukas Mansour */ public final class ValueNoiseGenerator extends NoiseGenerator { + private final long seed; private final Interpolation interpolation; private final double frequency; ValueNoiseGenerator(long seed, @NotNull Interpolation interpolation, double frequency) { - super(seed); + this.seed = seed; this.interpolation = interpolation; this.frequency = frequency; } diff --git a/src/main/java/de/articdive/jnoise/noise/white/WhiteNoiseBuilder.java b/src/main/java/de/articdive/jnoise/noise/white/WhiteNoiseBuilder.java index ca1e432..86c3b29 100644 --- a/src/main/java/de/articdive/jnoise/noise/white/WhiteNoiseBuilder.java +++ b/src/main/java/de/articdive/jnoise/noise/white/WhiteNoiseBuilder.java @@ -25,10 +25,18 @@ /** * @author Lukas Mansour */ -public final class WhiteNoiseBuilder extends NoiseBuilder { +public final class WhiteNoiseBuilder extends NoiseBuilder { + private long seed = 1729; + + /** + * Sets the seed for the {@link WhiteNoiseGenerator}. + * + * @param seed the new seed for the {@link WhiteNoiseGenerator}. + * @return {@link WhiteNoiseBuilder} this + */ @NotNull - @Override - protected WhiteNoiseBuilder self() { + public WhiteNoiseBuilder setSeed(long seed) { + this.seed = seed; return this; } diff --git a/src/main/java/de/articdive/jnoise/noise/white/WhiteNoiseGenerator.java b/src/main/java/de/articdive/jnoise/noise/white/WhiteNoiseGenerator.java index e4cfab7..c149fec 100644 --- a/src/main/java/de/articdive/jnoise/noise/white/WhiteNoiseGenerator.java +++ b/src/main/java/de/articdive/jnoise/noise/white/WhiteNoiseGenerator.java @@ -28,10 +28,11 @@ * @author Lukas Mansour */ public final class WhiteNoiseGenerator extends NoiseGenerator { + private final long seed; private final double[] output = new double[]{0.0, 1.0}; WhiteNoiseGenerator(long seed) { - super(seed); + this.seed = seed; } @Override diff --git a/src/main/java/de/articdive/jnoise/noise/worley/WorleyNoiseBuilder.java b/src/main/java/de/articdive/jnoise/noise/worley/WorleyNoiseBuilder.java index 7edb770..07b2d6d 100644 --- a/src/main/java/de/articdive/jnoise/noise/worley/WorleyNoiseBuilder.java +++ b/src/main/java/de/articdive/jnoise/noise/worley/WorleyNoiseBuilder.java @@ -19,8 +19,8 @@ package de.articdive.jnoise.noise.worley; import de.articdive.jnoise.JNoise; -import de.articdive.jnoise.distance_functions.DistanceFunction; import de.articdive.jnoise.api.NoiseBuilder; +import de.articdive.jnoise.distance_functions.DistanceFunction; import de.articdive.jnoise.distance_functions.DistanceFunctionType; import org.jetbrains.annotations.NotNull; @@ -29,15 +29,21 @@ /** * @author Lukas Mansour */ -public final class WorleyNoiseBuilder extends NoiseBuilder { +public final class WorleyNoiseBuilder extends NoiseBuilder { + private long seed = 1729; private double frequency = 1.00; private DistanceFunction distanceFunction = DistanceFunctionType.EUCLIDEAN_SQUARED; private LongFunction fpAmountFunction = i -> 1; - private int n = 1; + /** + * Sets the seed for the {@link WorleyNoiseGenerator}. + * + * @param seed the new seed for the {@link WorleyNoiseGenerator}. + * @return {@link WorleyNoiseBuilder} this + */ @NotNull - @Override - protected WorleyNoiseBuilder self() { + public WorleyNoiseBuilder setSeed(long seed) { + this.seed = seed; return this; } diff --git a/src/main/java/de/articdive/jnoise/noise/worley/WorleyNoiseGenerator.java b/src/main/java/de/articdive/jnoise/noise/worley/WorleyNoiseGenerator.java index 9df9f8f..6e7eb1d 100644 --- a/src/main/java/de/articdive/jnoise/noise/worley/WorleyNoiseGenerator.java +++ b/src/main/java/de/articdive/jnoise/noise/worley/WorleyNoiseGenerator.java @@ -18,8 +18,8 @@ package de.articdive.jnoise.noise.worley; -import de.articdive.jnoise.distance_functions.DistanceFunction; import de.articdive.jnoise.api.NoiseGenerator; +import de.articdive.jnoise.distance_functions.DistanceFunction; import de.articdive.jnoise.util.HashUtil; import de.articdive.jnoise.util.vectors.Vector; import de.articdive.jnoise.util.vectors.Vector2D; @@ -37,12 +37,13 @@ * @author Lukas Mansour */ public final class WorleyNoiseGenerator extends NoiseGenerator> { + private final long seed; private final double frequency; private final DistanceFunction distanceFunction; private final LongFunction fpAmountFunction; WorleyNoiseGenerator(long seed, double frequency, DistanceFunction distanceFunction, LongFunction fpAmountFunction) { - super(seed); + this.seed = seed; this.frequency = frequency; this.distanceFunction = distanceFunction; this.fpAmountFunction = fpAmountFunction;