diff --git a/.idea/misc.xml b/.idea/misc.xml
index 4fe260455..d44c4246f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -7,5 +7,9 @@
+<<<<<<< Updated upstream
+=======
+
+>>>>>>> Stashed changes
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 376f5662b..8d01af8ad 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -46,21 +46,25 @@
-
-
+
+
-
-
-
-
+
+
+
+
+
-
-
+
+
+
+
+
@@ -115,18 +119,18 @@
-
+
-
-
+
+
-
-
+
+
-
+
@@ -139,22 +143,26 @@
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
+
+
+
+
diff --git a/pom.xml b/pom.xml
index f090a296c..029575700 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,6 +47,15 @@
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.8
+ 1.8
+ 1.8
+
+
diff --git a/src/main/java/com/volmit/iris/gen/v2/IrisComplex.java b/src/main/java/com/volmit/iris/gen/v2/IrisComplex.java
index b0411f5f0..2c7591b06 100644
--- a/src/main/java/com/volmit/iris/gen/v2/IrisComplex.java
+++ b/src/main/java/com/volmit/iris/gen/v2/IrisComplex.java
@@ -1,12 +1,13 @@
package com.volmit.iris.gen.v2;
+import com.volmit.iris.util.B;
import org.bukkit.Material;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
import com.volmit.iris.Iris;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
-import com.volmit.iris.gen.v2.scaffold.stream.Interpolated;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.interpolation.Interpolated;
import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.object.DecorationPart;
@@ -44,6 +45,7 @@ public class IrisComplex implements DataProvider
private ProceduralStream maxHeightStream;
private ProceduralStream overlayStream;
private ProceduralStream heightFluidStream;
+ private ProceduralStream slopeStream;
private ProceduralStream rngStream;
private ProceduralStream chunkRngStream;
private ProceduralStream terrainSurfaceDecoration;
@@ -53,6 +55,7 @@ public class IrisComplex implements DataProvider
private ProceduralStream terrainStream;
private ProceduralStream rockStream;
private ProceduralStream fluidStream;
+ private ProceduralStream glassStream;
public IrisComplex()
{
@@ -86,11 +89,14 @@ public class IrisComplex implements DataProvider
public void flash(long seed, IrisDimension dimension, IrisDataManager data)
{
+ int cacheSize = 8192;
+ BlockData glass = B.getBlockData("GLASS");
this.rng = new RNG(seed);
this.data = data;
fluidHeight = dimension.getFluidHeight();
generators = new KList<>();
RNG rng = new RNG(seed);
+ glassStream = ProceduralStream.of((x,y,z) -> glass, Interpolated.BLOCK_DATA);
//@builder
dimension.getRegions().forEach((i) -> data.getRegionLoader().load(i)
.getAllBiomes(this).forEach((b) -> b
@@ -98,7 +104,8 @@ public class IrisComplex implements DataProvider
.forEach((c) -> registerGenerator(c.getCachedGenerator(this)))));
overlayStream = ProceduralStream.ofDouble((x, z) -> 0D);
dimension.getOverlayNoise().forEach((i) -> overlayStream.add((x, z) -> i.get(rng, x, z)));
- rngStream = ProceduralStream.of((x, z) -> new RNG(((x.longValue()) << 32) | (z.longValue() & 0xffffffffL)).nextParallelRNG(seed), Interpolated.RNG)
+ rngStream = ProceduralStream.of((x, z) -> new RNG(((x.longValue()) << 32) | (z.longValue() & 0xffffffffL))
+ .nextParallelRNG(seed), Interpolated.RNG)
.cache2D(64);
chunkRngStream = rngStream.blockToChunkCoords();
rockStream = dimension.getRockPalette().getLayerGenerator(rng.nextRNG(), data).stream()
@@ -109,55 +116,57 @@ public class IrisComplex implements DataProvider
.zoom(dimension.getRegionZoom())
.selectRarity(dimension.getRegions())
.convertCached((s) -> data.getRegionLoader().load(s))
- .cache2D(1024);
- caveBiomeStream = regionStream.convertCached((r)
+ .cache2D(cacheSize);
+ caveBiomeStream = regionStream.convertCached((r)
-> dimension.getCaveBiomeStyle().create(rng.nextRNG()).stream()
.zoom(r.getCaveBiomeZoom())
.selectRarity(r.getCaveBiomes())
.convertCached((s) -> data.getBiomeLoader().load(s)
.setInferredType(InferredType.CAVE))
- ).convertAware2D((str, x, z) -> str.get(x, z))
- .cache2D(1024);
- landBiomeStream = regionStream.convertCached((r)
+ ).convertAware2D(ProceduralStream::get)
+
+ .cache2D(cacheSize);
+ landBiomeStream = regionStream.convertCached((r)
-> dimension.getLandBiomeStyle().create(rng.nextRNG()).stream()
.zoom(r.getLandBiomeZoom())
.selectRarity(r.getLandBiomes())
.convertCached((s) -> data.getBiomeLoader().load(s)
.setInferredType(InferredType.LAND))
- ).convertAware2D((str, x, z) -> str.get(x, z))
- .cache2D(1024);
- seaBiomeStream = regionStream.convertCached((r)
+ ).convertAware2D(ProceduralStream::get)
+ .cache2D(cacheSize);
+ seaBiomeStream = regionStream.convertCached((r)
-> dimension.getSeaBiomeStyle().create(rng.nextRNG()).stream()
.zoom(r.getSeaBiomeZoom())
.selectRarity(r.getSeaBiomes())
.convertCached((s) -> data.getBiomeLoader().load(s)
.setInferredType(InferredType.SEA))
- ).convertAware2D((str, x, z) -> str.get(x, z))
- .cache2D(1024);
- shoreBiomeStream = regionStream.convertCached((r)
+ ).convertAware2D(ProceduralStream::get)
+ .cache2D(cacheSize);
+ shoreBiomeStream = regionStream.convertCached((r)
-> dimension.getShoreBiomeStyle().create(rng.nextRNG()).stream()
.zoom(r.getShoreBiomeZoom())
.selectRarity(r.getShoreBiomes())
.convertCached((s) -> data.getBiomeLoader().load(s)
.setInferredType(InferredType.SHORE))
- ).convertAware2D((str, x, z) -> str.get(x, z))
- .cache2D(1024);
+ ).convertAware2D(ProceduralStream::get)
+ .cache2D(cacheSize);
bridgeStream = dimension.getContinentalStyle().create(rng.nextRNG()).stream()
.convert((v) -> v >= dimension.getLandChance() ? InferredType.SEA : InferredType.LAND);
- baseBiomeStream = bridgeStream.convertAware2D((t, x, z) -> t.equals(InferredType.SEA)
+ baseBiomeStream = bridgeStream.convertAware2D((t, x, z) -> t.equals(InferredType.SEA)
? seaBiomeStream.get(x, z) : landBiomeStream.get(x, z))
- .convertAware2D(this::implode)
- .cache2D(1024);
+ .convertAware2D(this::implode).cache2D(cacheSize);
heightStream = baseBiomeStream.convertAware2D((b, x, z) -> getHeight(b, x, z, seed))
- .forceDouble().add(fluidHeight)
- .add2D(overlayStream::get).roundDouble()
- .cache2D(1024);
+ .add(fluidHeight)
+ .add2D(overlayStream::get)
+ .roundDouble()
+ .cache2D(cacheSize);
+ slopeStream = heightStream.slope();
trueBiomeStream = heightStream
- .convertAware2D((h, x, z) ->
+ .convertAware2D((h, x, z) ->
fixBiomeType(h, baseBiomeStream.get(x, z),
regionStream.get(x, z), x, z, fluidHeight))
- .cache2D(1024);
- trueBiomeDerivativeStream = trueBiomeStream.convert((b) -> b.getDerivative());
+ .cache2D(cacheSize);
+ trueBiomeDerivativeStream = trueBiomeStream.convert(IrisBiome::getDerivative);
heightFluidStream = heightStream.max(fluidHeight);
maxHeightStream = ProceduralStream.ofDouble((x, z) -> 255D);
terrainSurfaceDecoration = trueBiomeStream
diff --git a/src/main/java/com/volmit/iris/gen/v2/IrisTerrainGenerator.java b/src/main/java/com/volmit/iris/gen/v2/IrisTerrainGenerator.java
index a6feb2c37..5b6c68bab 100644
--- a/src/main/java/com/volmit/iris/gen/v2/IrisTerrainGenerator.java
+++ b/src/main/java/com/volmit/iris/gen/v2/IrisTerrainGenerator.java
@@ -2,18 +2,20 @@ package com.volmit.iris.gen.v2;
import java.util.function.Predicate;
+import com.volmit.iris.Iris;
+import com.volmit.iris.gen.v2.scaffold.stream.utility.ProfiledStream;
import org.bukkit.Material;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
import com.volmit.iris.gen.v2.scaffold.hunk.Hunk;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.object.IrisDecorator;
import com.volmit.iris.object.IrisDimension;
-import com.volmit.iris.util.PrecisionStopwatch;
import com.volmit.iris.util.RNG;
+import org.bukkit.entity.Player;
public class IrisTerrainGenerator
{
@@ -33,7 +35,6 @@ public class IrisTerrainGenerator
complex = new IrisComplex();
this.data = data;
this.dimension = dimension;
-
flash();
}
@@ -130,16 +131,12 @@ public class IrisTerrainGenerator
public void generateTerrain(int x, int z, Hunk blocks)
{
- PrecisionStopwatch p = PrecisionStopwatch.start();
fill2D(complex.getHeightFluidStream(), blocks, x, z, complex.getTerrainStream());
- p.end();
}
public void generateBiome(int x, int z, Hunk blocks)
{
- PrecisionStopwatch p = PrecisionStopwatch.start();
fill2DYLock(complex.getMaxHeightStream(), blocks, x, z, complex.getTrueBiomeDerivativeStream());
- p.end();
}
public void generate(int x, int z, Hunk blocks, Hunk biomes)
@@ -148,4 +145,8 @@ public class IrisTerrainGenerator
generateBiome(x, z, biomes);
generateDecorations(x, z, blocks);
}
+
+ public void printMetrics(Player p) {
+ ProfiledStream.print(Iris::verbose, complex.getTerrainStream());
+ }
}
diff --git a/src/main/java/com/volmit/iris/gen/v2/TestGen.java b/src/main/java/com/volmit/iris/gen/v2/TestGen.java
index b82e92765..b2e0053f5 100644
--- a/src/main/java/com/volmit/iris/gen/v2/TestGen.java
+++ b/src/main/java/com/volmit/iris/gen/v2/TestGen.java
@@ -3,6 +3,9 @@ package com.volmit.iris.gen.v2;
import java.util.Random;
import java.util.UUID;
+import com.volmit.iris.util.J;
+import net.minecraft.server.v1_16_R2.MinecraftServer;
+import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.block.Biome;
@@ -18,10 +21,9 @@ public class TestGen
{
public static void gen(Player p)
{
- p.teleport(new WorldCreator("t/" + UUID.randomUUID().toString()).generator(new ChunkGenerator()
+ IrisTerrainGenerator tg = new IrisTerrainGenerator(1337, Iris.globaldata.getDimensionLoader().load("overworld"), Iris.globaldata);
+ p.teleport(new Location(new WorldCreator("t/" + UUID.randomUUID().toString()).generator(new ChunkGenerator()
{
- IrisTerrainGenerator tg = new IrisTerrainGenerator(1337, Iris.globaldata.getDimensionLoader().load("overworld"), Iris.globaldata);
-
public boolean isParallelCapable()
{
return true;
@@ -49,6 +51,10 @@ public class TestGen
Iris.info("Generated " + x + " " + z + " in " + Form.duration(p.getMilliseconds(), 2));
return c;
}
- }).createWorld().getSpawnLocation());
+ }).createWorld(), 0, 200, 0));
+
+ J.s(() -> {
+ tg.printMetrics(p);
+ }, 200);
}
}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/layer/BasicLayer.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/BasicLayer.java
similarity index 90%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/layer/BasicLayer.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/BasicLayer.java
index 60c4778cb..86e1aab10 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/layer/BasicLayer.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/BasicLayer.java
@@ -1,4 +1,4 @@
-package com.volmit.iris.gen.v2.scaffold.layer;
+package com.volmit.iris.gen.v2.scaffold.stream;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/BasicStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/BasicStream.java
new file mode 100644
index 000000000..ca670d624
--- /dev/null
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/BasicStream.java
@@ -0,0 +1,40 @@
+package com.volmit.iris.gen.v2.scaffold.stream;
+
+public abstract class BasicStream extends BasicLayer implements ProceduralStream
+{
+ private final ProceduralStream source;
+
+ public BasicStream(ProceduralStream source)
+ {
+ super();
+ this.source = source;
+ }
+
+ public BasicStream()
+ {
+ this(null);
+ }
+
+
+ @Override
+ public ProceduralStream getTypedSource() {
+ return source;
+ }
+
+ @Override
+ public ProceduralStream> getSource() {
+ return getTypedSource();
+ }
+
+ @Override
+ public abstract T get(double x, double z);
+
+ @Override
+ public abstract T get(double x, double y, double z);
+
+ @Override
+ public abstract double toDouble(T t);
+
+ @Override
+ public abstract T fromDouble(double d);
+}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ClampedStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ClampedStream.java
deleted file mode 100644
index 65362e11a..000000000
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ClampedStream.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
-
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
-
-public class ClampedStream extends BasicLayer implements ProceduralStream
-{
- private final ProceduralStream stream;
- private final double min;
- private final double max;
-
- public ClampedStream(ProceduralStream stream, double min, double max)
- {
- super();
- this.stream = stream;
- this.min = min;
- this.max = max;
- }
-
- @Override
- public double toDouble(T t)
- {
- return stream.toDouble(t);
- }
-
- @Override
- public T fromDouble(double d)
- {
- return stream.fromDouble(d);
- }
-
- private double clamp(double v)
- {
- return Math.max(Math.min(v, max), min);
- }
-
- @Override
- public T get(double x, double z)
- {
- return fromDouble(clamp(stream.getDouble(x, z)));
- }
-
- @Override
- public T get(double x, double y, double z)
- {
- return fromDouble(clamp(stream.getDouble(x, y, z)));
- }
-
-}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/CoordinateBitShiftLeftStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/CoordinateBitShiftLeftStream.java
deleted file mode 100644
index dfbfcaecc..000000000
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/CoordinateBitShiftLeftStream.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
-
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
-
-public class CoordinateBitShiftLeftStream extends BasicLayer implements ProceduralStream
-{
- private final ProceduralStream stream;
- private final int amount;
-
- public CoordinateBitShiftLeftStream(ProceduralStream stream, int amount)
- {
- super();
- this.stream = stream;
- this.amount = amount;
- }
-
- @Override
- public double toDouble(T t)
- {
- return stream.toDouble(t);
- }
-
- @Override
- public T fromDouble(double d)
- {
- return stream.fromDouble(d);
- }
-
- @Override
- public T get(double x, double z)
- {
- return stream.get((int) x << amount, (int) z << amount);
- }
-
- @Override
- public T get(double x, double y, double z)
- {
- return stream.get((int) x << amount, (int) y << amount, (int) z << amount);
- }
-
-}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/CoordinateBitShiftRightStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/CoordinateBitShiftRightStream.java
deleted file mode 100644
index 31e782272..000000000
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/CoordinateBitShiftRightStream.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
-
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
-
-public class CoordinateBitShiftRightStream extends BasicLayer implements ProceduralStream
-{
- private final ProceduralStream stream;
- private final int amount;
-
- public CoordinateBitShiftRightStream(ProceduralStream stream, int amount)
- {
- super();
- this.stream = stream;
- this.amount = amount;
- }
-
- @Override
- public double toDouble(T t)
- {
- return stream.toDouble(t);
- }
-
- @Override
- public T fromDouble(double d)
- {
- return stream.fromDouble(d);
- }
-
- @Override
- public T get(double x, double z)
- {
- return stream.get((int) x >> amount, (int) z >> amount);
- }
-
- @Override
- public T get(double x, double y, double z)
- {
- return stream.get((int) x >> amount, (int) y >> amount, (int) z >> amount);
- }
-
-}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ForceDoubleStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ForceDoubleStream.java
deleted file mode 100644
index 48fe0ab91..000000000
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ForceDoubleStream.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
-
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
-
-public class ForceDoubleStream extends BasicLayer implements ProceduralStream
-{
- private final ProceduralStream stream;
-
- public ForceDoubleStream(ProceduralStream stream)
- {
- super();
- this.stream = stream;
- }
-
- @Override
- public double toDouble(T t)
- {
- return (double) t;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public T fromDouble(double d)
- {
- return (T) Double.valueOf(d);
- }
-
- @Override
- public T get(double x, double z)
- {
- return stream.get(x, z);
- }
-
- @Override
- public T get(double x, double y, double z)
- {
- return stream.get(x, y, z);
- }
-
-}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/OffsetStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/OffsetStream.java
deleted file mode 100644
index 484572f36..000000000
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/OffsetStream.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
-
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
-
-public class OffsetStream extends BasicLayer implements ProceduralStream
-{
- private final ProceduralStream stream;
- private final double ox;
- private final double oy;
- private final double oz;
-
- public OffsetStream(ProceduralStream stream, double x, double y, double z)
- {
- super();
- this.stream = stream;
- this.ox = x;
- this.oy = y;
- this.oz = z;
- }
-
- @Override
- public double toDouble(T t)
- {
- return stream.toDouble(t);
- }
-
- @Override
- public T fromDouble(double d)
- {
- return stream.fromDouble(d);
- }
-
- @Override
- public T get(double x, double z)
- {
- return stream.get(x + ox, z + oz);
- }
-
- @Override
- public T get(double x, double y, double z)
- {
- return stream.get(x + ox, y + oy, z + oz);
- }
-
-}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/layer/ProceduralLayer.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ProceduralLayer.java
similarity index 78%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/layer/ProceduralLayer.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ProceduralLayer.java
index b55f54858..8e6281a14 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/layer/ProceduralLayer.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ProceduralLayer.java
@@ -1,4 +1,4 @@
-package com.volmit.iris.gen.v2.scaffold.layer;
+package com.volmit.iris.gen.v2.scaffold.stream;
public interface ProceduralLayer
{
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/layer/ProceduralStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ProceduralStream.java
similarity index 84%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/layer/ProceduralStream.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ProceduralStream.java
index e3025b230..ccb1f03df 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/layer/ProceduralStream.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ProceduralStream.java
@@ -1,36 +1,19 @@
-package com.volmit.iris.gen.v2.scaffold.layer;
+package com.volmit.iris.gen.v2.scaffold.stream;
+import java.awt.*;
import java.util.List;
import java.util.function.Function;
import com.volmit.iris.gen.v2.scaffold.Significance;
import com.volmit.iris.gen.v2.scaffold.hunk.Hunk;
-import com.volmit.iris.gen.v2.scaffold.stream.AddingStream;
-import com.volmit.iris.gen.v2.scaffold.stream.AwareConversionStream2D;
-import com.volmit.iris.gen.v2.scaffold.stream.AwareConversionStream3D;
-import com.volmit.iris.gen.v2.scaffold.stream.CachedConversionStream;
-import com.volmit.iris.gen.v2.scaffold.stream.CachedStream2D;
-import com.volmit.iris.gen.v2.scaffold.stream.ClampedStream;
-import com.volmit.iris.gen.v2.scaffold.stream.ConversionStream;
-import com.volmit.iris.gen.v2.scaffold.stream.CoordinateBitShiftLeftStream;
-import com.volmit.iris.gen.v2.scaffold.stream.CoordinateBitShiftRightStream;
-import com.volmit.iris.gen.v2.scaffold.stream.DividingStream;
-import com.volmit.iris.gen.v2.scaffold.stream.FittedStream;
-import com.volmit.iris.gen.v2.scaffold.stream.ForceDoubleStream;
-import com.volmit.iris.gen.v2.scaffold.stream.FunctionStream;
-import com.volmit.iris.gen.v2.scaffold.stream.Interpolated;
-import com.volmit.iris.gen.v2.scaffold.stream.MaxingStream;
-import com.volmit.iris.gen.v2.scaffold.stream.MinningStream;
-import com.volmit.iris.gen.v2.scaffold.stream.ModuloStream;
-import com.volmit.iris.gen.v2.scaffold.stream.MultiplyingStream;
-import com.volmit.iris.gen.v2.scaffold.stream.OffsetStream;
-import com.volmit.iris.gen.v2.scaffold.stream.RoundingDoubleStream;
-import com.volmit.iris.gen.v2.scaffold.stream.RoundingStream;
-import com.volmit.iris.gen.v2.scaffold.stream.SelectionStream;
-import com.volmit.iris.gen.v2.scaffold.stream.SignificanceStream;
-import com.volmit.iris.gen.v2.scaffold.stream.SubtractingStream;
-import com.volmit.iris.gen.v2.scaffold.stream.To3DStream;
-import com.volmit.iris.gen.v2.scaffold.stream.ZoomStream;
+import com.volmit.iris.gen.v2.scaffold.stream.arithmetic.*;
+import com.volmit.iris.gen.v2.scaffold.stream.convert.*;
+import com.volmit.iris.gen.v2.scaffold.stream.interpolation.Interpolated;
+import com.volmit.iris.gen.v2.scaffold.stream.sources.FunctionStream;
+import com.volmit.iris.gen.v2.scaffold.stream.utility.CachedStream2D;
+import com.volmit.iris.gen.v2.scaffold.stream.utility.ProfiledStream;
+import com.volmit.iris.gen.v2.scaffold.stream.utility.SemaphoreStream;
+import com.volmit.iris.gen.v2.scaffold.stream.utility.SynchronizedStream;
import com.volmit.iris.util.Function2;
import com.volmit.iris.util.Function3;
import com.volmit.iris.util.Function4;
@@ -64,6 +47,16 @@ public interface ProceduralStream extends ProceduralLayer, Interpolated
return new FunctionStream<>(f, f2, helper);
}
+ default ProceduralStream profile()
+ {
+ return profile(10);
+ }
+
+ default ProceduralStream profile(int memory)
+ {
+ return new ProfiledStream<>(this, memory);
+ }
+
default ProceduralStream add(Function3 a)
{
return new AddingStream<>(this, a);
@@ -119,6 +112,16 @@ public interface ProceduralStream extends ProceduralLayer, Interpolated
return new CoordinateBitShiftRightStream<>(this, a);
}
+ default ProceduralStream synchronize()
+ {
+ return new SynchronizedStream<>(this);
+ }
+
+ default ProceduralStream semaphore(int permits)
+ {
+ return new SemaphoreStream<>(this, permits);
+ }
+
default ProceduralStream bitShiftCoordsLeft(int a)
{
return new CoordinateBitShiftLeftStream<>(this, a);
@@ -134,6 +137,16 @@ public interface ProceduralStream extends ProceduralLayer, Interpolated
return new MaxingStream<>(this, a);
}
+ default ProceduralStream slope()
+ {
+ return slope(1);
+ }
+
+ default ProceduralStream slope(int range)
+ {
+ return new SlopeStream<>(this, range);
+ }
+
default ProceduralStream max(double a)
{
return new MaxingStream<>(this, a);
@@ -224,9 +237,9 @@ public interface ProceduralStream extends ProceduralLayer, Interpolated
return new RoundingDoubleStream(this);
}
- default ProceduralStream forceDouble()
+ default ProceduralStream forceDouble()
{
- return new ForceDoubleStream(this);
+ return new ForceDoubleStream(this);
}
default ProceduralStream> significance(double radius, int checks)
@@ -246,7 +259,7 @@ public interface ProceduralStream extends ProceduralLayer, Interpolated
default ProceduralStream convert(Function converter)
{
- return new ConversionStream(this, converter);
+ return new ConversionStream(this, converter);
}
default ProceduralStream convertAware2D(Function3 converter)
@@ -289,7 +302,17 @@ public interface ProceduralStream extends ProceduralLayer, Interpolated
return new ZoomStream(this, all, all, all);
}
- default ProceduralStream select(@SuppressWarnings("unchecked") V... types)
+ default ProceduralStream radial(double scale)
+ {
+ return new RadialStream<>(this, scale);
+ }
+
+ default ProceduralStream radial()
+ {
+ return radial(1D);
+ }
+
+ default ProceduralStream select(V... types)
{
return new SelectionStream(this, types);
}
@@ -472,10 +495,6 @@ public interface ProceduralStream extends ProceduralLayer, Interpolated
fill3D(h, x, y, z, v, 4);
}
- public T get(double x, double z);
-
- public T get(double x, double y, double z);
-
default double getDouble(double x, double z)
{
return toDouble(get(x, z));
@@ -485,4 +504,12 @@ public interface ProceduralStream extends ProceduralLayer, Interpolated
{
return toDouble(get(x, y, z));
}
+
+ public ProceduralStream getTypedSource();
+
+ public ProceduralStream> getSource();
+
+ public T get(double x, double z);
+
+ public T get(double x, double y, double z);
}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/To3DStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/To3DStream.java
deleted file mode 100644
index 45daba0d1..000000000
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/To3DStream.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
-
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
-
-public class To3DStream extends BasicLayer implements ProceduralStream
-{
- private final ProceduralStream stream;
-
- public To3DStream(ProceduralStream stream)
- {
- super();
- this.stream = stream;
- }
-
- @Override
- public double toDouble(T t)
- {
- return stream.toDouble(t);
- }
-
- @Override
- public T fromDouble(double d)
- {
- return stream.fromDouble(d);
- }
-
- @Override
- public T get(double x, double z)
- {
- return stream.get(x, z);
- }
-
- @Override
- public T get(double x, double y, double z)
- {
- return stream.fromDouble(stream.getDouble(x, z) >= y ? 1D : 0D);
- }
-
-}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/TriHermiteStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/TriHermiteStream.java
deleted file mode 100644
index 8e08fe2ad..000000000
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/TriHermiteStream.java
+++ /dev/null
@@ -1,140 +0,0 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
-
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
-import com.volmit.iris.util.IrisInterpolation;
-
-public class TriHermiteStream extends BasicLayer implements ProceduralStream, Interpolator
-{
- private final ProceduralStream stream;
- private final int rx;
- private final int ry;
- private final int rz;
- private final double tension;
- private final double bias;
-
- public TriHermiteStream(ProceduralStream stream, int rx, int ry, int rz, double tension, double bias)
- {
- this.stream = stream;
- this.rx = rx;
- this.ry = ry;
- this.rz = rz;
- this.tension = tension;
- this.bias = bias;
- }
-
- public T interpolate(double x, double y, double z)
- {
- int fx = (int) Math.floor(x / rx);
- int fy = (int) Math.floor(y / ry);
- int fz = (int) Math.floor(z / rz);
- int x0 = (int) Math.round((fx - 1) * rx);
- int y0 = (int) Math.round((fy - 1) * ry);
- int z0 = (int) Math.round((fz - 1) * rz);
- int x1 = (int) Math.round(fx * rx);
- int y1 = (int) Math.round(fy * ry);
- int z1 = (int) Math.round(fz * rz);
- int x2 = (int) Math.round((fx + 1) * rx);
- int y2 = (int) Math.round((fy + 1) * ry);
- int z2 = (int) Math.round((fz + 1) * rz);
- int x3 = (int) Math.round((fx + 2) * rx);
- int y3 = (int) Math.round((fy + 2) * ry);
- int z3 = (int) Math.round((fz + 2) * rz);
- double px = IrisInterpolation.rangeScale(0, 1, x1, x2, x);
- double py = IrisInterpolation.rangeScale(0, 1, y1, y2, y);
- double pz = IrisInterpolation.rangeScale(0, 1, z1, z2, z);
-
- //@builder
- return stream.fromDouble(IrisInterpolation.trihermite(
- stream.getDouble(x0, y0, z0),
- stream.getDouble(x0, y0,z1),
- stream.getDouble(x0, y0,z2),
- stream.getDouble(x0, y0,z3),
- stream.getDouble(x1, y0,z0),
- stream.getDouble(x1, y0,z1),
- stream.getDouble(x1, y0,z2),
- stream.getDouble(x1, y0,z3),
- stream.getDouble(x2, y0,z0),
- stream.getDouble(x2, y0,z1),
- stream.getDouble(x2, y0,z2),
- stream.getDouble(x2, y0,z3),
- stream.getDouble(x3, y0,z0),
- stream.getDouble(x3, y0,z1),
- stream.getDouble(x3, y0,z2),
- stream.getDouble(x3, y0,z3),
- stream.getDouble(x0, y1, z0),
- stream.getDouble(x0, y1,z1),
- stream.getDouble(x0, y1,z2),
- stream.getDouble(x0, y1,z3),
- stream.getDouble(x1, y1,z0),
- stream.getDouble(x1, y1,z1),
- stream.getDouble(x1, y1,z2),
- stream.getDouble(x1, y1,z3),
- stream.getDouble(x2, y1,z0),
- stream.getDouble(x2, y1,z1),
- stream.getDouble(x2, y1,z2),
- stream.getDouble(x2, y1,z3),
- stream.getDouble(x3, y1,z0),
- stream.getDouble(x3, y1,z1),
- stream.getDouble(x3, y1,z2),
- stream.getDouble(x3, y1,z3),
- stream.getDouble(x0, y2, z0),
- stream.getDouble(x0, y2,z1),
- stream.getDouble(x0, y2,z2),
- stream.getDouble(x0, y2,z3),
- stream.getDouble(x1, y2,z0),
- stream.getDouble(x1, y2,z1),
- stream.getDouble(x1, y2,z2),
- stream.getDouble(x1, y2,z3),
- stream.getDouble(x2, y2,z0),
- stream.getDouble(x2, y2,z1),
- stream.getDouble(x2, y2,z2),
- stream.getDouble(x2, y2,z3),
- stream.getDouble(x3, y2,z0),
- stream.getDouble(x3, y2,z1),
- stream.getDouble(x3, y2,z2),
- stream.getDouble(x3, y2,z3),
- stream.getDouble(x0, y3, z0),
- stream.getDouble(x0, y3,z1),
- stream.getDouble(x0, y3,z2),
- stream.getDouble(x0, y3,z3),
- stream.getDouble(x1, y3,z0),
- stream.getDouble(x1, y3,z1),
- stream.getDouble(x1, y3,z2),
- stream.getDouble(x1, y3,z3),
- stream.getDouble(x2, y3,z0),
- stream.getDouble(x2, y3,z1),
- stream.getDouble(x2, y3,z2),
- stream.getDouble(x2, y3,z3),
- stream.getDouble(x3, y3,z0),
- stream.getDouble(x3, y3,z1),
- stream.getDouble(x3, y3,z2),
- stream.getDouble(x3, y3,z3),
- px, pz, py, tension, bias));
- //@done
- }
-
- @Override
- public double toDouble(T t)
- {
- return stream.toDouble(t);
- }
-
- @Override
- public T fromDouble(double d)
- {
- return stream.fromDouble(d);
- }
-
- @Override
- public T get(double x, double z)
- {
- return interpolate(x, 0, z);
- }
-
- @Override
- public T get(double x, double y, double z)
- {
- return interpolate(x, y, z);
- }
-}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/TricubicStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/TricubicStream.java
deleted file mode 100644
index df43e9706..000000000
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/TricubicStream.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
-
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
-import com.volmit.iris.util.IrisInterpolation;
-
-public class TricubicStream extends BasicLayer implements ProceduralStream, Interpolator
-{
- private final ProceduralStream stream;
- private final int rx;
- private final int ry;
- private final int rz;
-
- public TricubicStream(ProceduralStream stream, int rx, int ry, int rz)
- {
- this.stream = stream;
- this.rx = rx;
- this.ry = ry;
- this.rz = rz;
- }
-
- public T interpolate(double x, double y, double z)
- {
- int fx = (int) Math.floor(x / rx);
- int fy = (int) Math.floor(y / ry);
- int fz = (int) Math.floor(z / rz);
- int x0 = (int) Math.round((fx - 1) * rx);
- int y0 = (int) Math.round((fy - 1) * ry);
- int z0 = (int) Math.round((fz - 1) * rz);
- int x1 = (int) Math.round(fx * rx);
- int y1 = (int) Math.round(fy * ry);
- int z1 = (int) Math.round(fz * rz);
- int x2 = (int) Math.round((fx + 1) * rx);
- int y2 = (int) Math.round((fy + 1) * ry);
- int z2 = (int) Math.round((fz + 1) * rz);
- int x3 = (int) Math.round((fx + 2) * rx);
- int y3 = (int) Math.round((fy + 2) * ry);
- int z3 = (int) Math.round((fz + 2) * rz);
- double px = IrisInterpolation.rangeScale(0, 1, x1, x2, x);
- double py = IrisInterpolation.rangeScale(0, 1, y1, y2, y);
- double pz = IrisInterpolation.rangeScale(0, 1, z1, z2, z);
-
- //@builder
- return stream.fromDouble(IrisInterpolation.tricubic(
- stream.getDouble(x0, y0, z0),
- stream.getDouble(x0, y0,z1),
- stream.getDouble(x0, y0,z2),
- stream.getDouble(x0, y0,z3),
- stream.getDouble(x1, y0,z0),
- stream.getDouble(x1, y0,z1),
- stream.getDouble(x1, y0,z2),
- stream.getDouble(x1, y0,z3),
- stream.getDouble(x2, y0,z0),
- stream.getDouble(x2, y0,z1),
- stream.getDouble(x2, y0,z2),
- stream.getDouble(x2, y0,z3),
- stream.getDouble(x3, y0,z0),
- stream.getDouble(x3, y0,z1),
- stream.getDouble(x3, y0,z2),
- stream.getDouble(x3, y0,z3),
-
- stream.getDouble(x0, y1, z0),
- stream.getDouble(x0, y1,z1),
- stream.getDouble(x0, y1,z2),
- stream.getDouble(x0, y1,z3),
- stream.getDouble(x1, y1,z0),
- stream.getDouble(x1, y1,z1),
- stream.getDouble(x1, y1,z2),
- stream.getDouble(x1, y1,z3),
- stream.getDouble(x2, y1,z0),
- stream.getDouble(x2, y1,z1),
- stream.getDouble(x2, y1,z2),
- stream.getDouble(x2, y1,z3),
- stream.getDouble(x3, y1,z0),
- stream.getDouble(x3, y1,z1),
- stream.getDouble(x3, y1,z2),
- stream.getDouble(x3, y1,z3),
-
- stream.getDouble(x0, y2, z0),
- stream.getDouble(x0, y2,z1),
- stream.getDouble(x0, y2,z2),
- stream.getDouble(x0, y2,z3),
- stream.getDouble(x1, y2,z0),
- stream.getDouble(x1, y2,z1),
- stream.getDouble(x1, y2,z2),
- stream.getDouble(x1, y2,z3),
- stream.getDouble(x2, y2,z0),
- stream.getDouble(x2, y2,z1),
- stream.getDouble(x2, y2,z2),
- stream.getDouble(x2, y2,z3),
- stream.getDouble(x3, y2,z0),
- stream.getDouble(x3, y2,z1),
- stream.getDouble(x3, y2,z2),
- stream.getDouble(x3, y2,z3),
-
- stream.getDouble(x0, y3, z0),
- stream.getDouble(x0, y3,z1),
- stream.getDouble(x0, y3,z2),
- stream.getDouble(x0, y3,z3),
- stream.getDouble(x1, y3,z0),
- stream.getDouble(x1, y3,z1),
- stream.getDouble(x1, y3,z2),
- stream.getDouble(x1, y3,z3),
- stream.getDouble(x2, y3,z0),
- stream.getDouble(x2, y3,z1),
- stream.getDouble(x2, y3,z2),
- stream.getDouble(x2, y3,z3),
- stream.getDouble(x3, y3,z0),
- stream.getDouble(x3, y3,z1),
- stream.getDouble(x3, y3,z2),
- stream.getDouble(x3, y3,z3),
- px, pz, py));
- //@done
- }
-
- @Override
- public double toDouble(T t)
- {
- return stream.toDouble(t);
- }
-
- @Override
- public T fromDouble(double d)
- {
- return stream.fromDouble(d);
- }
-
- @Override
- public T get(double x, double z)
- {
- return interpolate(x, 0, z);
- }
-
- @Override
- public T get(double x, double y, double z)
- {
- return interpolate(x, y, z);
- }
-}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ZoomStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ZoomStream.java
deleted file mode 100644
index b1759e489..000000000
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ZoomStream.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
-
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
-
-public class ZoomStream extends BasicLayer implements ProceduralStream
-{
- private final ProceduralStream stream;
- private final double ox;
- private final double oy;
- private final double oz;
-
- public ZoomStream(ProceduralStream stream, double x, double y, double z)
- {
- super();
- this.stream = stream;
- this.ox = x;
- this.oy = y;
- this.oz = z;
- }
-
- @Override
- public double toDouble(T t)
- {
- return stream.toDouble(t);
- }
-
- @Override
- public T fromDouble(double d)
- {
- return stream.fromDouble(d);
- }
-
- @Override
- public T get(double x, double z)
- {
- return stream.get(x / ox, z / oz);
- }
-
- @Override
- public T get(double x, double y, double z)
- {
- return stream.get(x / ox, y / oy, z / oz);
- }
-
-}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/AddingStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/AddingStream.java
similarity index 58%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/stream/AddingStream.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/AddingStream.java
index 5b0bea654..ed6a735b8 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/AddingStream.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/AddingStream.java
@@ -1,19 +1,17 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
import com.volmit.iris.util.Function2;
import com.volmit.iris.util.Function3;
-public class AddingStream extends BasicLayer implements ProceduralStream
+public class AddingStream extends BasicStream
{
- private final ProceduralStream stream;
private final Function3 add;
public AddingStream(ProceduralStream stream, Function3 add)
{
- super();
- this.stream = stream;
+ super(stream);
this.add = add;
}
@@ -30,25 +28,25 @@ public class AddingStream extends BasicLayer implements ProceduralStream
@Override
public double toDouble(T t)
{
- return stream.toDouble(t);
+ return getTypedSource().toDouble(t);
}
@Override
public T fromDouble(double d)
{
- return stream.fromDouble(d);
+ return getTypedSource().fromDouble(d);
}
@Override
public T get(double x, double z)
{
- return fromDouble(add.apply(x, 0D, z) + stream.getDouble(x, z));
+ return fromDouble(add.apply(x, 0D, z) + getTypedSource().getDouble(x, z));
}
@Override
public T get(double x, double y, double z)
{
- return fromDouble(add.apply(x, y, z) + stream.getDouble(x, y, z));
+ return fromDouble(add.apply(x, y, z) + getTypedSource().getDouble(x, y, z));
}
}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/ClampedStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/ClampedStream.java
new file mode 100644
index 000000000..621293254
--- /dev/null
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/ClampedStream.java
@@ -0,0 +1,47 @@
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
+
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
+
+public class ClampedStream extends BasicStream implements ProceduralStream
+{
+ private final double min;
+ private final double max;
+
+ public ClampedStream(ProceduralStream stream, double min, double max)
+ {
+ super(stream);
+ this.min = min;
+ this.max = max;
+ }
+
+ @Override
+ public double toDouble(T t)
+ {
+ return getTypedSource().toDouble(t);
+ }
+
+ @Override
+ public T fromDouble(double d)
+ {
+ return getTypedSource().fromDouble(d);
+ }
+
+ private double clamp(double v)
+ {
+ return Math.max(Math.min(v, max), min);
+ }
+
+ @Override
+ public T get(double x, double z)
+ {
+ return fromDouble(clamp(getTypedSource().getDouble(x, z)));
+ }
+
+ @Override
+ public T get(double x, double y, double z)
+ {
+ return fromDouble(clamp(getTypedSource().getDouble(x, y, z)));
+ }
+
+}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/CoordinateBitShiftLeftStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/CoordinateBitShiftLeftStream.java
new file mode 100644
index 000000000..0988fc86e
--- /dev/null
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/CoordinateBitShiftLeftStream.java
@@ -0,0 +1,40 @@
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
+
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
+
+public class CoordinateBitShiftLeftStream extends BasicStream implements ProceduralStream
+{
+ private final int amount;
+
+ public CoordinateBitShiftLeftStream(ProceduralStream stream, int amount)
+ {
+ super(stream);
+ this.amount = amount;
+ }
+
+ @Override
+ public double toDouble(T t)
+ {
+ return getTypedSource().toDouble(t);
+ }
+
+ @Override
+ public T fromDouble(double d)
+ {
+ return getTypedSource().fromDouble(d);
+ }
+
+ @Override
+ public T get(double x, double z)
+ {
+ return getTypedSource().get((int) x << amount, (int) z << amount);
+ }
+
+ @Override
+ public T get(double x, double y, double z)
+ {
+ return getTypedSource().get((int) x << amount, (int) y << amount, (int) z << amount);
+ }
+
+}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/CoordinateBitShiftRightStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/CoordinateBitShiftRightStream.java
new file mode 100644
index 000000000..f30ba0809
--- /dev/null
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/CoordinateBitShiftRightStream.java
@@ -0,0 +1,40 @@
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
+
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
+
+public class CoordinateBitShiftRightStream extends BasicStream implements ProceduralStream
+{
+ private final int amount;
+
+ public CoordinateBitShiftRightStream(ProceduralStream stream, int amount)
+ {
+ super(stream);
+ this.amount = amount;
+ }
+
+ @Override
+ public double toDouble(T t)
+ {
+ return getTypedSource().toDouble(t);
+ }
+
+ @Override
+ public T fromDouble(double d)
+ {
+ return getTypedSource().fromDouble(d);
+ }
+
+ @Override
+ public T get(double x, double z)
+ {
+ return getTypedSource().get((int) x >> amount, (int) z >> amount);
+ }
+
+ @Override
+ public T get(double x, double y, double z)
+ {
+ return getTypedSource().get((int) x >> amount, (int) y >> amount, (int) z >> amount);
+ }
+
+}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/DividingStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/DividingStream.java
similarity index 58%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/stream/DividingStream.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/DividingStream.java
index 93a410082..2a1f6f7ba 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/DividingStream.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/DividingStream.java
@@ -1,19 +1,17 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
import com.volmit.iris.util.Function2;
import com.volmit.iris.util.Function3;
-public class DividingStream extends BasicLayer implements ProceduralStream
+public class DividingStream extends BasicStream implements ProceduralStream
{
- private final ProceduralStream stream;
private final Function3 add;
public DividingStream(ProceduralStream stream, Function3 add)
{
- super();
- this.stream = stream;
+ super(stream);
this.add = add;
}
@@ -30,24 +28,24 @@ public class DividingStream extends BasicLayer implements ProceduralStream
@Override
public double toDouble(T t)
{
- return stream.toDouble(t);
+ return getTypedSource().toDouble(t);
}
@Override
public T fromDouble(double d)
{
- return stream.fromDouble(d);
+ return getTypedSource().fromDouble(d);
}
@Override
public T get(double x, double z)
{
- return fromDouble(stream.getDouble(x, z) / add.apply(x, 0D, z));
+ return fromDouble(getTypedSource().getDouble(x, z) / add.apply(x, 0D, z));
}
@Override
public T get(double x, double y, double z)
{
- return fromDouble(stream.getDouble(x, y, z) / add.apply(x, y, z));
+ return fromDouble(getTypedSource().getDouble(x, y, z) / add.apply(x, y, z));
}
}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/FittedStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/FittedStream.java
similarity index 59%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/stream/FittedStream.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/FittedStream.java
index 8292c03fe..fcd2d6103 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/FittedStream.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/FittedStream.java
@@ -1,11 +1,10 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
-public class FittedStream extends BasicLayer implements ProceduralStream
+public class FittedStream extends BasicStream implements ProceduralStream
{
- private final ProceduralStream stream;
private final double min;
private final double max;
private final double inMin;
@@ -13,8 +12,7 @@ public class FittedStream extends BasicLayer implements ProceduralStream
public FittedStream(ProceduralStream stream, double inMin, double inMax, double min, double max)
{
- super();
- this.stream = stream;
+ super(stream);
this.inMin = inMin;
this.inMax = inMax;
this.min = min;
@@ -29,13 +27,13 @@ public class FittedStream extends BasicLayer implements ProceduralStream
@Override
public double toDouble(T t)
{
- return stream.toDouble(t);
+ return getTypedSource().toDouble(t);
}
@Override
public T fromDouble(double d)
{
- return stream.fromDouble(d);
+ return getTypedSource().fromDouble(d);
}
private double dlerp(double v)
@@ -46,13 +44,13 @@ public class FittedStream extends BasicLayer implements ProceduralStream
@Override
public T get(double x, double z)
{
- return fromDouble(dlerp(stream.getDouble(x, z)));
+ return fromDouble(dlerp(getTypedSource().getDouble(x, z)));
}
@Override
public T get(double x, double y, double z)
{
- return fromDouble(dlerp(stream.getDouble(x, y, z)));
+ return fromDouble(dlerp(getTypedSource().getDouble(x, y, z)));
}
}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/MaxingStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/MaxingStream.java
similarity index 57%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/stream/MaxingStream.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/MaxingStream.java
index ca6604288..e58a49a87 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/MaxingStream.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/MaxingStream.java
@@ -1,19 +1,17 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
import com.volmit.iris.util.Function2;
import com.volmit.iris.util.Function3;
-public class MaxingStream extends BasicLayer implements ProceduralStream
+public class MaxingStream extends BasicStream
{
- private final ProceduralStream stream;
private final Function3 add;
public MaxingStream(ProceduralStream stream, Function3 add)
{
- super();
- this.stream = stream;
+ super(stream);
this.add = add;
}
@@ -30,25 +28,25 @@ public class MaxingStream extends BasicLayer implements ProceduralStream
@Override
public double toDouble(T t)
{
- return stream.toDouble(t);
+ return getTypedSource().toDouble(t);
}
@Override
public T fromDouble(double d)
{
- return stream.fromDouble(d);
+ return getTypedSource().fromDouble(d);
}
@Override
public T get(double x, double z)
{
- return fromDouble(Math.max(add.apply(x, 0D, z), stream.getDouble(x, z)));
+ return fromDouble(Math.max(add.apply(x, 0D, z), getTypedSource().getDouble(x, z)));
}
@Override
public T get(double x, double y, double z)
{
- return fromDouble(Math.max(add.apply(x, y, z), stream.getDouble(x, y, z)));
+ return fromDouble(Math.max(add.apply(x, y, z), getTypedSource().getDouble(x, y, z)));
}
}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/MinningStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/MinningStream.java
similarity index 57%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/stream/MinningStream.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/MinningStream.java
index 7740093bc..fc356c0c0 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/MinningStream.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/MinningStream.java
@@ -1,19 +1,17 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
import com.volmit.iris.util.Function2;
import com.volmit.iris.util.Function3;
-public class MinningStream extends BasicLayer implements ProceduralStream
+public class MinningStream extends BasicStream
{
- private final ProceduralStream stream;
private final Function3 add;
public MinningStream(ProceduralStream stream, Function3 add)
{
- super();
- this.stream = stream;
+ super(stream);
this.add = add;
}
@@ -30,25 +28,25 @@ public class MinningStream extends BasicLayer implements ProceduralStream
@Override
public double toDouble(T t)
{
- return stream.toDouble(t);
+ return getTypedSource().toDouble(t);
}
@Override
public T fromDouble(double d)
{
- return stream.fromDouble(d);
+ return getTypedSource().fromDouble(d);
}
@Override
public T get(double x, double z)
{
- return fromDouble(Math.min(add.apply(x, 0D, z), stream.getDouble(x, z)));
+ return fromDouble(Math.min(add.apply(x, 0D, z), getTypedSource().getDouble(x, z)));
}
@Override
public T get(double x, double y, double z)
{
- return fromDouble(Math.min(add.apply(x, y, z), stream.getDouble(x, y, z)));
+ return fromDouble(Math.min(add.apply(x, y, z), getTypedSource().getDouble(x, y, z)));
}
}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ModuloStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/ModuloStream.java
similarity index 58%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ModuloStream.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/ModuloStream.java
index ff7bddb04..495251d05 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ModuloStream.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/ModuloStream.java
@@ -1,19 +1,17 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
import com.volmit.iris.util.Function2;
import com.volmit.iris.util.Function3;
-public class ModuloStream extends BasicLayer implements ProceduralStream
+public class ModuloStream extends BasicStream
{
- private final ProceduralStream stream;
private final Function3 add;
public ModuloStream(ProceduralStream stream, Function3 add)
{
- super();
- this.stream = stream;
+ super(stream);
this.add = add;
}
@@ -30,24 +28,24 @@ public class ModuloStream extends BasicLayer implements ProceduralStream
@Override
public double toDouble(T t)
{
- return stream.toDouble(t);
+ return getTypedSource().toDouble(t);
}
@Override
public T fromDouble(double d)
{
- return stream.fromDouble(d);
+ return getTypedSource().fromDouble(d);
}
@Override
public T get(double x, double z)
{
- return fromDouble(stream.getDouble(x, z) % add.apply(x, 0D, z));
+ return fromDouble(getTypedSource().getDouble(x, z) % add.apply(x, 0D, z));
}
@Override
public T get(double x, double y, double z)
{
- return fromDouble(stream.getDouble(x, y, z) % add.apply(x, y, z));
+ return fromDouble(getTypedSource().getDouble(x, y, z) % add.apply(x, y, z));
}
}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/MultiplyingStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/MultiplyingStream.java
similarity index 58%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/stream/MultiplyingStream.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/MultiplyingStream.java
index bdfbedd32..767235efe 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/MultiplyingStream.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/MultiplyingStream.java
@@ -1,19 +1,17 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
import com.volmit.iris.util.Function2;
import com.volmit.iris.util.Function3;
-public class MultiplyingStream extends BasicLayer implements ProceduralStream
+public class MultiplyingStream extends BasicStream
{
- private final ProceduralStream stream;
private final Function3 add;
public MultiplyingStream(ProceduralStream stream, Function3 add)
{
- super();
- this.stream = stream;
+ super(stream);
this.add = add;
}
@@ -30,24 +28,24 @@ public class MultiplyingStream extends BasicLayer implements ProceduralStream
@Override
public double toDouble(T t)
{
- return stream.toDouble(t);
+ return getTypedSource().toDouble(t);
}
@Override
public T fromDouble(double d)
{
- return stream.fromDouble(d);
+ return getTypedSource().fromDouble(d);
}
@Override
public T get(double x, double z)
{
- return fromDouble(stream.getDouble(x, z) * add.apply(x, 0D, z));
+ return fromDouble(getTypedSource().getDouble(x, z) * add.apply(x, 0D, z));
}
@Override
public T get(double x, double y, double z)
{
- return fromDouble(stream.getDouble(x, y, z) * add.apply(x, y, z));
+ return fromDouble(getTypedSource().getDouble(x, y, z) * add.apply(x, y, z));
}
}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/OffsetStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/OffsetStream.java
new file mode 100644
index 000000000..9a4354e6a
--- /dev/null
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/OffsetStream.java
@@ -0,0 +1,44 @@
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
+
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
+
+public class OffsetStream extends BasicStream implements ProceduralStream
+{
+ private final double ox;
+ private final double oy;
+ private final double oz;
+
+ public OffsetStream(ProceduralStream stream, double x, double y, double z)
+ {
+ super(stream);
+ this.ox = x;
+ this.oy = y;
+ this.oz = z;
+ }
+
+ @Override
+ public double toDouble(T t)
+ {
+ return getTypedSource().toDouble(t);
+ }
+
+ @Override
+ public T fromDouble(double d)
+ {
+ return getTypedSource().fromDouble(d);
+ }
+
+ @Override
+ public T get(double x, double z)
+ {
+ return getTypedSource().get(x + ox, z + oz);
+ }
+
+ @Override
+ public T get(double x, double y, double z)
+ {
+ return getTypedSource().get(x + ox, y + oy, z + oz);
+ }
+
+}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/RadialStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/RadialStream.java
new file mode 100644
index 000000000..961d5779e
--- /dev/null
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/RadialStream.java
@@ -0,0 +1,50 @@
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
+
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
+
+public class RadialStream extends BasicStream implements ProceduralStream
+{
+ private final double scale;
+
+ public RadialStream(ProceduralStream stream)
+ {
+ this(stream, 1D);
+ }
+
+ public RadialStream(ProceduralStream stream, double scale)
+ {
+ super(stream);
+ this.scale = scale;
+ }
+
+ @Override
+ public double toDouble(T t)
+ {
+ return getTypedSource().toDouble(t);
+ }
+
+ @Override
+ public T fromDouble(double d)
+ {
+ return getTypedSource().fromDouble(d);
+ }
+
+ private double radii(double v)
+ {
+ return (v / (360D * scale)) % 360D;
+ }
+
+ @Override
+ public T get(double x, double z)
+ {
+ return fromDouble(radii(getTypedSource().getDouble(x, z)));
+ }
+
+ @Override
+ public T get(double x, double y, double z)
+ {
+ return fromDouble(radii(getTypedSource().getDouble(x, y, z)));
+ }
+
+}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/RoundingDoubleStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/RoundingDoubleStream.java
similarity index 66%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/stream/RoundingDoubleStream.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/RoundingDoubleStream.java
index 605ff5101..9eb6ac0f8 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/RoundingDoubleStream.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/RoundingDoubleStream.java
@@ -1,9 +1,9 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
-public class RoundingDoubleStream extends BasicLayer implements ProceduralStream
+public class RoundingDoubleStream extends BasicStream
{
private final ProceduralStream> stream;
@@ -16,7 +16,7 @@ public class RoundingDoubleStream extends BasicLayer implements ProceduralStream
@Override
public double toDouble(Double t)
{
- return t.doubleValue();
+ return t;
}
@Override
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/SlopeStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/SlopeStream.java
new file mode 100644
index 000000000..847aa293a
--- /dev/null
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/SlopeStream.java
@@ -0,0 +1,49 @@
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
+
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
+
+public class SlopeStream extends BasicStream
+{
+ private final int range;
+
+ public SlopeStream(ProceduralStream stream, int range)
+ {
+ super(stream);
+ this.range = range;
+ }
+
+ @Override
+ public double toDouble(T t)
+ {
+ return getTypedSource().toDouble(t);
+ }
+
+ @Override
+ public T fromDouble(double d)
+ {
+ return getTypedSource().fromDouble(d);
+ }
+
+ @Override
+ public T get(double x, double z)
+ {
+ double height = getTypedSource().getDouble(x, z);
+ double dx = getTypedSource().getDouble(x + range, z) - height;
+ double dy = getTypedSource().getDouble(x, z + range) - height;
+
+ return fromDouble(Math.sqrt(dx * dx + dy * dy));
+ }
+
+ @Override
+ public T get(double x, double y, double z)
+ {
+ double height = getTypedSource().getDouble(x, y, z);
+ double dx = getTypedSource().getDouble(x + range,y, z) - height;
+ double dy = getTypedSource().getDouble(x,y+range, z) - height;
+ double dz = getTypedSource().getDouble(x,y, z + range) - height;
+
+ return fromDouble(Math.cbrt((dx * dx) + (dy * dy) + (dz * dz)));
+ }
+
+}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/SubtractingStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/SubtractingStream.java
similarity index 58%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/stream/SubtractingStream.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/SubtractingStream.java
index bf5a21df5..1978d5732 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/SubtractingStream.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/SubtractingStream.java
@@ -1,19 +1,17 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
import com.volmit.iris.util.Function2;
import com.volmit.iris.util.Function3;
-public class SubtractingStream extends BasicLayer implements ProceduralStream
+public class SubtractingStream extends BasicStream
{
- private final ProceduralStream stream;
private final Function3 add;
public SubtractingStream(ProceduralStream stream, Function3 add)
{
- super();
- this.stream = stream;
+ super(stream);
this.add = add;
}
@@ -30,24 +28,24 @@ public class SubtractingStream extends BasicLayer implements ProceduralStream
@Override
public double toDouble(T t)
{
- return stream.toDouble(t);
+ return getTypedSource().toDouble(t);
}
@Override
public T fromDouble(double d)
{
- return stream.fromDouble(d);
+ return getTypedSource().fromDouble(d);
}
@Override
public T get(double x, double z)
{
- return fromDouble(stream.getDouble(x, z) - add.apply(x, 0D, z));
+ return fromDouble(getTypedSource().getDouble(x, z) - add.apply(x, 0D, z));
}
@Override
public T get(double x, double y, double z)
{
- return fromDouble(stream.getDouble(x, y, z) - add.apply(x, y, z));
+ return fromDouble(getTypedSource().getDouble(x, y, z) - add.apply(x, y, z));
}
}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/ZoomStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/ZoomStream.java
new file mode 100644
index 000000000..331e56b24
--- /dev/null
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/arithmetic/ZoomStream.java
@@ -0,0 +1,44 @@
+package com.volmit.iris.gen.v2.scaffold.stream.arithmetic;
+
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
+
+public class ZoomStream extends BasicStream
+{
+ private final double ox;
+ private final double oy;
+ private final double oz;
+
+ public ZoomStream(ProceduralStream stream, double x, double y, double z)
+ {
+ super(stream);
+ this.ox = x;
+ this.oy = y;
+ this.oz = z;
+ }
+
+ @Override
+ public double toDouble(T t)
+ {
+ return getTypedSource().toDouble(t);
+ }
+
+ @Override
+ public T fromDouble(double d)
+ {
+ return getTypedSource().fromDouble(d);
+ }
+
+ @Override
+ public T get(double x, double z)
+ {
+ return getTypedSource().get(x / ox, z / oz);
+ }
+
+ @Override
+ public T get(double x, double y, double z)
+ {
+ return getTypedSource().get(x / ox, y / oy, z / oz);
+ }
+
+}
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/AwareConversionStream2D.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/AwareConversionStream2D.java
similarity index 65%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/stream/AwareConversionStream2D.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/AwareConversionStream2D.java
index a6d1f87d6..fd806958c 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/AwareConversionStream2D.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/AwareConversionStream2D.java
@@ -1,17 +1,17 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
+package com.volmit.iris.gen.v2.scaffold.stream.convert;
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
import com.volmit.iris.util.Function3;
-public class AwareConversionStream2D extends BasicLayer implements ProceduralStream
+public class AwareConversionStream2D extends BasicStream
{
private final ProceduralStream stream;
private final Function3 converter;
public AwareConversionStream2D(ProceduralStream stream, Function3 converter)
{
- super();
+ super(null);
this.stream = stream;
this.converter = converter;
}
@@ -21,7 +21,7 @@ public class AwareConversionStream2D extends BasicLayer implements Procedu
{
if(t instanceof Double)
{
- return (double) t;
+ return (Double) t;
}
return 0;
@@ -33,6 +33,11 @@ public class AwareConversionStream2D extends BasicLayer implements Procedu
return null;
}
+ @Override
+ public ProceduralStream> getSource() {
+ return stream;
+ }
+
@Override
public V get(double x, double z)
{
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/AwareConversionStream3D.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/AwareConversionStream3D.java
similarity index 66%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/stream/AwareConversionStream3D.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/AwareConversionStream3D.java
index 98bd3d677..c63aca49f 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/AwareConversionStream3D.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/AwareConversionStream3D.java
@@ -1,17 +1,17 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
+package com.volmit.iris.gen.v2.scaffold.stream.convert;
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
import com.volmit.iris.util.Function4;
-public class AwareConversionStream3D extends BasicLayer implements ProceduralStream
+public class AwareConversionStream3D extends BasicStream
{
private final ProceduralStream stream;
private final Function4 converter;
public AwareConversionStream3D(ProceduralStream stream, Function4 converter)
{
- super();
+ super(null);
this.stream = stream;
this.converter = converter;
}
@@ -21,7 +21,7 @@ public class AwareConversionStream3D extends BasicLayer implements Procedu
{
if(t instanceof Double)
{
- return (double) t;
+ return (Double) t;
}
return 0;
@@ -31,6 +31,11 @@ public class AwareConversionStream3D extends BasicLayer implements Procedu
public V fromDouble(double d)
{
return null;
+
+
+ }@Override
+ public ProceduralStream> getSource() {
+ return stream;
}
@Override
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/CachedConversionStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/CachedConversionStream.java
similarity index 72%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/stream/CachedConversionStream.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/CachedConversionStream.java
index bacdac251..85a2ba1a4 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/CachedConversionStream.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/CachedConversionStream.java
@@ -1,9 +1,9 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
+package com.volmit.iris.gen.v2.scaffold.stream.convert;
import java.util.function.Function;
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.BasicLayer;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
import com.volmit.iris.util.KMap;
public class CachedConversionStream extends BasicLayer implements ProceduralStream
@@ -32,6 +32,16 @@ public class CachedConversionStream extends BasicLayer implements Procedur
return null;
}
+ @Override
+ public ProceduralStream getTypedSource() {
+ return null;
+ }
+
+ @Override
+ public ProceduralStream> getSource() {
+ return stream;
+ }
+
@Override
public V get(double x, double z)
{
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ConversionStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/ConversionStream.java
similarity index 67%
rename from src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ConversionStream.java
rename to src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/ConversionStream.java
index 76deb3e32..ec6053f62 100644
--- a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/ConversionStream.java
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/ConversionStream.java
@@ -1,9 +1,9 @@
-package com.volmit.iris.gen.v2.scaffold.stream;
+package com.volmit.iris.gen.v2.scaffold.stream.convert;
import java.util.function.Function;
-import com.volmit.iris.gen.v2.scaffold.layer.BasicLayer;
-import com.volmit.iris.gen.v2.scaffold.layer.ProceduralStream;
+import com.volmit.iris.gen.v2.scaffold.stream.BasicLayer;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
public class ConversionStream extends BasicLayer implements ProceduralStream
{
@@ -22,7 +22,7 @@ public class ConversionStream extends BasicLayer implements ProceduralStre
{
if(t instanceof Double)
{
- return (double) t;
+ return (Double) t;
}
return 0;
@@ -34,6 +34,16 @@ public class ConversionStream extends BasicLayer implements ProceduralStre
return null;
}
+ @Override
+ public ProceduralStream getTypedSource() {
+ return null;
+ }
+
+ @Override
+ public ProceduralStream> getSource() {
+ return null;
+ }
+
@Override
public V get(double x, double z)
{
diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/ForceDoubleStream.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/ForceDoubleStream.java
new file mode 100644
index 000000000..5976d4b42
--- /dev/null
+++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/stream/convert/ForceDoubleStream.java
@@ -0,0 +1,40 @@
+package com.volmit.iris.gen.v2.scaffold.stream.convert;
+
+import com.volmit.iris.gen.v2.scaffold.stream.BasicStream;
+import com.volmit.iris.gen.v2.scaffold.stream.ProceduralStream;
+
+public class ForceDoubleStream extends BasicStream