From 9fb4798c774e14a359fcb603167dcb28aa4d24cf Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Mon, 2 Aug 2021 15:59:27 -0400 Subject: [PATCH] Streamed expressions --- .../com/volmit/iris/engine/object/IrisExpression.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/com/volmit/iris/engine/object/IrisExpression.java b/src/main/java/com/volmit/iris/engine/object/IrisExpression.java index 1a3d06453..9660a9279 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisExpression.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisExpression.java @@ -26,6 +26,8 @@ import com.volmit.iris.engine.cache.AtomicCache; import com.volmit.iris.engine.object.annotations.ArrayType; import com.volmit.iris.engine.object.annotations.Desc; import com.volmit.iris.engine.object.annotations.Required; +import com.volmit.iris.engine.stream.ProceduralStream; +import com.volmit.iris.engine.stream.interpolation.Interpolated; import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.math.RNG; import lombok.AllArgsConstructor; @@ -53,6 +55,7 @@ public class IrisExpression extends IrisRegistrant { private String expression; private transient AtomicCache expressionCache = new AtomicCache<>(); + private transient AtomicCache> streamCache = new AtomicCache<>(); private Expression expression() { return expressionCache.aquire(() -> { @@ -82,6 +85,12 @@ public class IrisExpression extends IrisRegistrant { }); } + public ProceduralStream stream(RNG rng) + { + return streamCache.aquire(() -> ProceduralStream.of((x, z) -> evaluate(rng, x, z), + (x, y, z) -> evaluate(rng, x, y, z), Interpolated.DOUBLE)); + } + public double evaluate(RNG rng, double x, double z) { double[] g = new double[3 + getVariables().size()]; int m = 0;