From 9e6ac47eba3cac892ff3cfd87aac54d611abf3f3 Mon Sep 17 00:00:00 2001 From: Chicken-Bomes Date: Tue, 17 Dec 2013 14:50:02 +1000 Subject: [PATCH] Added scala operator overloading to Vector3 and Transformation --- codechicken/lib/vec/Transformation.java | 5 +++ codechicken/lib/vec/Vector3.java | 54 +++++++++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/codechicken/lib/vec/Transformation.java b/codechicken/lib/vec/Transformation.java index 469761f..5e0e12d 100644 --- a/codechicken/lib/vec/Transformation.java +++ b/codechicken/lib/vec/Transformation.java @@ -64,4 +64,9 @@ public abstract class Transformation public abstract void glApply(); public abstract Transformation inverse(); + + public TransformationList $plus$plus(Transformation t) + { + return with(t); + } } diff --git a/codechicken/lib/vec/Vector3.java b/codechicken/lib/vec/Vector3.java index 8a2c502..3a76e61 100644 --- a/codechicken/lib/vec/Vector3.java +++ b/codechicken/lib/vec/Vector3.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; +import org.lwjgl.opengl.GL11; import org.lwjgl.util.vector.Vector3f; import org.lwjgl.util.vector.Vector4f; @@ -51,6 +52,13 @@ public class Vector3 z = vec.zCoord; } + public Vector3(BlockCoord coord) + { + x = coord.x; + y = coord.y; + z = coord.z; + } + public Vector3 copy() { return new Vector3(this); @@ -290,6 +298,12 @@ public class Vector3 { return new Vector4f((float)x, (float)y, (float)z, 1); } + + @SideOnly(Side.CLIENT) + public void glVertex() + { + GL11.glVertex3d(x, y, z); + } public Vector3 YZintercept(Vector3 end, double px) { @@ -414,4 +428,44 @@ public class Vector3 t.apply(this); return this; } + + public Vector3 $tilde() + { + return normalize(); + } + + public Vector3 unary_$tilde() + { + return normalize(); + } + + public Vector3 $plus(Vector3 v) + { + return add(v); + } + + public Vector3 $minus(Vector3 v) + { + return subtract(v); + } + + public Vector3 $times(double d) + { + return multiply(d); + } + + public Vector3 $div(double d) + { + return multiply(1/d); + } + + public Vector3 $times(Vector3 v) + { + return crossProduct(v); + } + + public double $dot$times(Vector3 v) + { + return dotProduct(v); + } }