diff --git a/src/main/java/ru/betterend/util/sdf/operator/SDFRotation.java b/src/main/java/ru/betterend/util/sdf/operator/SDFRotation.java new file mode 100644 index 00000000..8f0494de --- /dev/null +++ b/src/main/java/ru/betterend/util/sdf/operator/SDFRotation.java @@ -0,0 +1,16 @@ +package ru.betterend.util.sdf.operator; + +import net.minecraft.client.util.math.Vector3f; +import net.minecraft.util.math.Quaternion; + +public class SDFRotation extends SDFUnary { + private static final Vector3f POS = new Vector3f(); + private Quaternion rotation; + + @Override + public float getDistance(float x, float y, float z) { + POS.set(x, y, z); + POS.rotate(rotation); + return source.getDistance(POS.getX(), POS.getY(), POS.getZ()); + } +} diff --git a/src/main/java/ru/betterend/util/sdf/operator/SDFScale.java b/src/main/java/ru/betterend/util/sdf/operator/SDFScale.java index fa53f02d..f70781a7 100644 --- a/src/main/java/ru/betterend/util/sdf/operator/SDFScale.java +++ b/src/main/java/ru/betterend/util/sdf/operator/SDFScale.java @@ -1,16 +1,8 @@ package ru.betterend.util.sdf.operator; -import ru.betterend.util.sdf.ISDF; - -public class SDFScale implements ISDF { - private ISDF source; +public class SDFScale extends SDFUnary { private float scale; - public SDFScale setSorce(ISDF source) { - this.source = source; - return this; - } - public SDFScale setScale(float scale) { this.scale = scale; return this; diff --git a/src/main/java/ru/betterend/util/sdf/operator/SDFUnary.java b/src/main/java/ru/betterend/util/sdf/operator/SDFUnary.java new file mode 100644 index 00000000..30f50b41 --- /dev/null +++ b/src/main/java/ru/betterend/util/sdf/operator/SDFUnary.java @@ -0,0 +1,12 @@ +package ru.betterend.util.sdf.operator; + +import ru.betterend.util.sdf.ISDF; + +public abstract class SDFUnary implements ISDF { + protected ISDF source; + + public SDFUnary setSource(ISDF source) { + this.source = source; + return this; + } +}