diff --git a/gradle.properties b/gradle.properties index 8d3d08f..8c62257 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.jvmargs=-Xmx2G -lwjglVersion = 3.2.4-SNAPSHOT +lwjglVersion = 3.3.2 lwjglNatives = natives-windows \ No newline at end of file diff --git a/src/main/java/speiger/src/coreengine/math/vector/Vec.java b/src/main/java/speiger/src/coreengine/math/vector/Vec.java index e3683f6..5058410 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/Vec.java +++ b/src/main/java/speiger/src/coreengine/math/vector/Vec.java @@ -14,10 +14,8 @@ public interface Vec public Vec abs(); public Vec negate(); public Vec invert(); - public Vec store(ByteBuffer buffer); public Vec load(ByteBuffer buffer); - public boolean isMutable(); public Vec asMutable(); public Vec copyAsMutable(); diff --git a/src/main/java/speiger/src/coreengine/math/vector/VectorUtil.java b/src/main/java/speiger/src/coreengine/math/vector/VectorUtil.java index 6ecd435..dd03419 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/VectorUtil.java +++ b/src/main/java/speiger/src/coreengine/math/vector/VectorUtil.java @@ -13,9 +13,4 @@ public class VectorUtil float l3 = 1.0f - l1 - l2; return l1 * p1.getY() + l2 * p2.getY() + l3 * p3.getY(); } - - public static float fma(float x, float y, float z) - { - return x * y + z; - } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec2b.java b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec2b.java index eded728..e1e8c5b 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec2b.java +++ b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec2b.java @@ -9,141 +9,120 @@ import speiger.src.coreengine.math.vector.ints.Vec2i; import speiger.src.coreengine.math.vector.longs.Vec2l; import speiger.src.coreengine.math.vector.shorts.Vec2s; - -public interface Vec2b extends Vecb -{ +public interface Vec2b extends Vecb { public static final Vec2b ZERO = of(); public static final Vec2b MINUS_ONE = of((byte)-1); public static final Vec2b ONE = of((byte)1); - public static Vec2b mutable(){return new Vec2bMutable();} - public static Vec2b mutable(byte value){return new Vec2bMutable(value);} - public static Vec2b mutable(byte x, byte y){return new Vec2bMutable(x, y);} - public static Vec2b mutable(Vec2b value){return mutable(value.getX(), value.getY());} + public static Vec2b mutable() { return new Vec2bMutable(); } + public static Vec2b mutable(byte value) { return new Vec2bMutable(value); } + public static Vec2b mutable(byte x, byte y) { return new Vec2bMutable(x, y); } + public static Vec2b mutable(Vec2b value) { return mutable(value.getX(), value.getY()); } - public static Vec2b of(){return new Vec2bImmutable();} - public static Vec2b of(byte value){return new Vec2bImmutable(value);} - public static Vec2b of(byte x, byte y){return new Vec2bImmutable(x, y);} - public static Vec2b of(Vec2b value){return of(value.getX(), value.getY());} + public static Vec2b of() { return new Vec2bImmutable(); } + public static Vec2b of(byte value) { return new Vec2bImmutable(value); } + public static Vec2b of(byte x, byte y) { return new Vec2bImmutable(x, y); } + public static Vec2b of(Vec2b value) { return of(value.getX(), value.getY()); } public byte getX(); public byte getY(); public Vec2b setX(byte x); public Vec2b setY(byte y); + @Override - public default byte[] asArray(){return new byte[]{getX(), getY()};} + public default byte[] asArray() { return new byte[] {getX(), getY()}; } @Override public Vec2b copy(); @Override - public default Vec2b abs(){return set((byte)Math.abs(getX()), (byte)Math.abs(getY()));} + public default Vec2b abs() { return set((byte)Math.abs(getX()), (byte)Math.abs(getY())); } @Override - public default Vec2b negate(){return set((byte)0, (byte)0);} + public default Vec2b negate() { return set((byte)0, (byte)0); } @Override - public default Vec2b invert(){return set((byte)(-getX()), (byte)(-getY()));}; - + public default Vec2b invert() { return set((byte)(-getX()), (byte)(-getY())); }; @Override - public default Vec2b add(byte value) {return add(value, value);} - public default Vec2b add(Vec2b value) {return add(value.getX(), value.getY());} - public default Vec2b add(byte x, byte y) {return set((byte)(x + getX()), (byte)(y + getY()));} - + public default Vec2b add(byte value) { return add(value, value); } + public default Vec2b add(Vec2b value) { return add(value.getX(), value.getY()); } + public default Vec2b add(byte x, byte y) { return set((byte)(x + getX()), (byte)(y + getY())); } @Override - public default Vec2b sub(byte value){return sub(value, value);} - public default Vec2b sub(Vec2b value){return sub(value.getX(), value.getY());} - public default Vec2b sub(byte x, byte y) {return set((byte)(getX() - x), (byte)(getY() - y));} - + public default Vec2b sub(byte value) { return sub(value, value); } + public default Vec2b sub(Vec2b value) { return sub(value.getX(), value.getY()); } + public default Vec2b sub(byte x, byte y) { return set((byte)(getX() - x), (byte)(getY() - y)); } @Override - public default Vec2b multiply(byte value){return multiply(value, value);} - public default Vec2b multiply(Vec2b value){return multiply(value.getX(), value.getY());} - public default Vec2b multiply(byte x, byte y) {return set((byte)(x * getX()), (byte)(y * getY()));} - + public default Vec2b multiply(byte value) { return multiply(value, value); } + public default Vec2b multiply(Vec2b value) { return multiply(value.getX(), value.getY()); } + public default Vec2b multiply(byte x, byte y) { return set((byte)(x * getX()), (byte)(y * getY())); } @Override - public default Vec2b devide(byte value){return devide(value, value);} - public default Vec2b devide(Vec2b value){return devide(value.getX(), value.getY());} - public default Vec2b devide(byte x, byte y){return set((byte)(getX() / x), (byte)(getY() / y));} - + public default Vec2b devide(byte value) { return devide(value, value); } + public default Vec2b devide(Vec2b value) { return devide(value.getX(), value.getY()); } + public default Vec2b devide(byte x, byte y) { return set((byte)(getX() / x), (byte)(getY() / y)); } @Override - public default Vec2b set(byte value){return set(value, value);}; - public default Vec2b set(Vec2b value){return set(value.getX(), value.getY());} + public default Vec2b set(byte value) { return set(value, value); }; + public default Vec2b set(Vec2b value) { return set(value.getX(), value.getY()); } public Vec2b set(byte x, byte y); - - public default double distanceTo(Vec2b value){return distanceTo(value.getX(), value.getY());} - public default double distanceTo(byte x, byte y){return Math.sqrt(distanceToSquared(x, y));} - - public default long distanceToSquared(Vec2b value){return distanceToSquared(value.getX(), value.getY());} - public default long distanceToSquared(byte x, byte y) - { + public default double distanceTo(Vec2b value) { return distanceTo(value.getX(), value.getY()); } + public default double distanceTo(byte x, byte y) { return Math.sqrt(distanceToSquared(x, y)); } + public default long distanceToSquared(Vec2b value) { return distanceToSquared(value.getX(), value.getY()); } + public default long distanceToSquared(byte x, byte y) { long xPos = getX() - x; long yPos = getY() - y; return (xPos * xPos) + (yPos * yPos); } + @Override - public default long lengthSquared() {return (getX() * getX()) + (getY() * getY());} - - public default long dotProduct(Vec2b value){return dotProduct(value.getX(), value.getY());} - public default long dotProduct(byte x, byte y){return (getX() * x) + (getY() * y);} - - public default Vec2b rotate(byte angle, Vec2b center){return rotate(angle, center.getX(), center.getY());} - public default Vec2b rotate(byte angle, byte x, byte y) - { + public default long lengthSquared() { return (getX() * getX()) + (getY() * getY()); } + public default long dotProduct(Vec2b value) { return dotProduct(value.getX(), value.getY()); } + public default long dotProduct(byte x, byte y) { return (getX() * x) + (getY() * y); } + public default Vec2b rotate(byte angle, Vec2b center) { return rotate(angle, center.getX(), center.getY()); } + public default Vec2b rotate(byte angle, byte x, byte y) { byte xPos = (byte)(getX() - x); byte yPos = (byte)(getY() - y); double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); - return set((byte)((xPos * cos) + (yPos * sin) + x), (byte)(-(xPos * sin) + (yPos * cos) + y)); + return set((byte)((xPos * cos) + (yPos * sin) + x), (byte)(-(xPos * sin) + (yPos * cos) + y)); } - public default Vec2b min(Vec2b other) {return min(other, this);} - public default Vec2b min(Vec2b other, Vec2b result){return min(other.getX(), other.getY(), result);} - public default Vec2b min(byte x, byte y) {return min(x, y, this);} - public default Vec2b min(byte x, byte y, Vec2b result){return result.set((byte)Math.min(getX(), x), (byte)Math.min(getY(), y));} - - public default Vec2b max(Vec2b other) {return max(other, this);} - public default Vec2b max(Vec2b other, Vec2b result){return max(other.getX(), other.getY(), result);} - public default Vec2b max(byte x, byte y) {return max(x, y, this);} - public default Vec2b max(byte x, byte y, Vec2b result){return result.set((byte)Math.max(getX(), x), (byte)Math.max(getY(), y));} - - public default Vec2b difference(Vec2b other) {return difference(other, this);} - public default Vec2b difference(Vec2b other, Vec2b result){return difference(other.getX(), other.getY(), result);} - public default Vec2b difference(byte x, byte y) {return difference(x, y, this);} - public default Vec2b difference(byte x, byte y, Vec2b result){return result.set((byte)(getX() - x), (byte)(getY() - y));} - + public default Vec2b min(Vec2b other) { return min(other, this); } + public default Vec2b min(Vec2b other, Vec2b result) { return min(other.getX(), other.getY(), result); } + public default Vec2b min(byte x, byte y) { return min(x, y, this); } + public default Vec2b min(byte x, byte y, Vec2b result) { return result.set((byte)Math.min(getX(), x), (byte)Math.min(getY(), y)); } + public default Vec2b max(Vec2b other) { return max(other, this); } + public default Vec2b max(Vec2b other, Vec2b result) { return max(other.getX(), other.getY(), result); } + public default Vec2b max(byte x, byte y) { return max(x, y, this); } + public default Vec2b max(byte x, byte y, Vec2b result) { return result.set((byte)Math.max(getX(), x), (byte)Math.max(getY(), y)); } + public default Vec2b difference(Vec2b other) { return difference(other, this); } + public default Vec2b difference(Vec2b other, Vec2b result) { return difference(other.getX(), other.getY(), result); } + public default Vec2b difference(byte x, byte y) { return difference(x, y, this); } + public default Vec2b difference(byte x, byte y, Vec2b result) { return result.set((byte)(getX() - x), (byte)(getY() - y)); } @Override - public default Vec2b clamp(byte min, byte max){return clamp(min, max, ALL);} - public default Vec2b clamp(byte min, byte max, Vec2b result){return clamp(min, max, result, ALL);} + public default Vec2b clamp(byte min, byte max) { return clamp(min, max, ALL); } + public default Vec2b clamp(byte min, byte max, Vec2b result) { return clamp(min, max, result, ALL); } @Override - public default Vec2b clamp(byte min, byte max, int filter){return clamp(min, max, this, filter);} - public default Vec2b clamp(byte min, byte max, Vec2b result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()));} - + public default Vec2b clamp(byte min, byte max, int filter) { return clamp(min, max, this, filter); } + public default Vec2b clamp(byte min, byte max, Vec2b result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY())); } @Override - public default Vec2b store(ByteBuffer buffer) - { + public default Vec2b store(ByteBuffer buffer) { buffer.put(getX()).put(getY()); return this; } + @Override + public default Vec2b load(ByteBuffer buffer) { return set(buffer.get(), buffer.get()); } @Override - public default Vec2b load(ByteBuffer buffer) - { - return set(buffer.get(), buffer.get()); - } - + public default Vec2s asShort() { return isMutable() ? Vec2s.mutable(getX(), getY()) : Vec2s.of(getX(), getY()); } @Override - public default Vec2s asShort(){return isMutable() ? Vec2s.mutable(getX(), getY()) : Vec2s.of(getX(), getY());} + public default Vec2i asInt() { return isMutable() ? Vec2i.mutable(getX(), getY()) : Vec2i.of(getX(), getY()); } @Override - public default Vec2i asInt(){return isMutable() ? Vec2i.mutable(getX(), getY()) : Vec2i.of(getX(), getY());} + public default Vec2l asLong() { return isMutable() ? Vec2l.mutable(getX(), getY()) : Vec2l.of(getX(), getY()); } @Override - public default Vec2l asLong(){return isMutable() ? Vec2l.mutable(getX(), getY()) : Vec2l.of(getX(), getY());} + public default Vec2f asFloat() { return isMutable() ? Vec2f.mutable(getX(), getY()) : Vec2f.of(getX(), getY()); } @Override - public default Vec2f asFloat() {return isMutable() ? Vec2f.mutable(getX(), getY()) : Vec2f.of(getX(), getY());} + public default Vec2d asDouble() { return isMutable() ? Vec2d.mutable(getX(), getY()) : Vec2d.of(getX(), getY()); } @Override - public default Vec2d asDouble(){return isMutable() ? Vec2d.mutable(getX(), getY()) : Vec2d.of(getX(), getY());} - + public default Vec2b asMutable() { return isMutable() ? this : mutable(this); } @Override - public default Vec2b asMutable(){return isMutable() ? this : mutable(this);} + public default Vec2b asImmutable() { return isMutable() ? of(this) : this; } @Override - public default Vec2b asImmutable(){return isMutable() ? of(this) : this;} + public default Vec2b copyAsMutable() { return mutable(this); } @Override - public default Vec2b copyAsMutable(){return mutable(this);} - @Override - public default Vec2b copyAsImmutable(){return of(this);} + public default Vec2b copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec2bImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec2bImmutable.java index ae6676b..74780c7 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec2bImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec2bImmutable.java @@ -2,91 +2,50 @@ package speiger.src.coreengine.math.vector.bytes; import java.util.Objects; -public class Vec2bImmutable implements Vec2b -{ +public class Vec2bImmutable implements Vec2b { final byte x; final byte y; - public Vec2bImmutable() - { + public Vec2bImmutable() { x = 0; y = 0; } - public Vec2bImmutable(byte value) - { + public Vec2bImmutable(byte value) { x = value; y = value; } - public Vec2bImmutable(byte x, byte y) - { + public Vec2bImmutable(byte x, byte y) { this.x = x; this.y = y; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public byte getX() - { - return x; - } - + public boolean isMutable() { return false; } @Override - public byte getY() - { - return y; - } - + public byte getX() { return x; } @Override - public Vec2b setX(byte x) - { - return this.x == x ? this : Vec2b.of(x, y); - } - + public byte getY() { return y; } @Override - public Vec2b setY(byte y) - { - return this.y == y ? this : Vec2b.of(x, y); - } - + public Vec2b setX(byte x) { return this.x == x ? this : Vec2b.of(x, y); } @Override - public Vec2b copy() - { - return Vec2b.of(this); - } - + public Vec2b setY(byte y) { return this.y == y ? this : Vec2b.of(x, y); } @Override - public Vec2b set(byte x, byte y) - { - return this.x == x && this.y == y ? this : Vec2b.of(x, y); - } - + public Vec2b copy() { return Vec2b.of(this); } @Override - public int hashCode() - { - return Objects.hash(x, y); - } - + public Vec2b set(byte x, byte y) { return this.x == x && this.y == y ? this : Vec2b.of(x, y); } @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec2b) - { + public int hashCode() { return Objects.hash(x, y); } + @Override + public boolean equals(Object obj) { + if(obj instanceof Vec2b) { Vec2b vec = (Vec2b)obj; return vec.getX() == x && vec.getY() == y; } return false; } - + @Override - public String toString() - { - return "Vec2b[x="+x+", y="+y+"]"; - } + public String toString() { return "Vec2b[x="+x+", y="+y+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec2bMutable.java b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec2bMutable.java index 25bc44a..fcb6659 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec2bMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec2bMutable.java @@ -2,93 +2,63 @@ package speiger.src.coreengine.math.vector.bytes; import java.util.Objects; -public class Vec2bMutable implements Vec2b -{ +public class Vec2bMutable implements Vec2b { byte x; byte y; - public Vec2bMutable() - { - } + public Vec2bMutable() {} - public Vec2bMutable(byte value) - { + public Vec2bMutable(byte value) { x = value; y = value; } - public Vec2bMutable(byte x, byte y) - { + public Vec2bMutable(byte x, byte y) { this.x = x; this.y = y; } - - @Override - public boolean isMutable() - { - return true; - } @Override - public byte getX() - { - return x; - } + public boolean isMutable() { return true; } + @Override + public byte getX() { return x; } + @Override + public byte getY() { return y; } @Override - public byte getY() - { - return y; - } - - @Override - public Vec2b setX(byte x) - { + public Vec2b setX(byte x) { this.x = x; return this; } @Override - public Vec2b setY(byte y) - { + public Vec2b setY(byte y) { this.y = y; return this; } @Override - public Vec2b copy() - { - return Vec2b.mutable(this); - } + public Vec2b copy() { return Vec2b.mutable(this); } @Override - public Vec2b set(byte x, byte y) - { + public Vec2b set(byte x, byte y) { this.x = x; this.y = y; return this; } @Override - public int hashCode() - { - return Objects.hash(x, y); - } - + public int hashCode() { return Objects.hash(x, y); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec2b) - { + public boolean equals(Object obj) { + if(obj instanceof Vec2b) { Vec2b vec = (Vec2b)obj; return vec.getX() == x && vec.getY() == y; } return false; } - + @Override - public String toString() - { - return "Vec2b[x="+x+", y="+y+"]"; - } + public String toString() { return "Vec2b[x="+x+", y="+y+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec3b.java b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec3b.java index 1bae5b0..3467903 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec3b.java +++ b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec3b.java @@ -9,21 +9,19 @@ import speiger.src.coreengine.math.vector.ints.Vec3i; import speiger.src.coreengine.math.vector.longs.Vec3l; import speiger.src.coreengine.math.vector.shorts.Vec3s; -public interface Vec3b extends Vecb -{ +public interface Vec3b extends Vecb { public static final Vec3b ZERO = of(); public static final Vec3b MINUS_ONE = of((byte)-1); public static final Vec3b ONE = of((byte)1); - public static Vec3b mutable(){return new Vec3bMutable();} - public static Vec3b mutable(byte value){return new Vec3bMutable(value);} - public static Vec3b mutable(byte x, byte y, byte z){return new Vec3bMutable(x, y, z);} - public static Vec3b mutable(Vec3b vec){return mutable(vec.getX(), vec.getY(), vec.getZ());} - - public static Vec3b of(){return new Vec3bImmutable();} - public static Vec3b of(byte value){return new Vec3bImmutable(value);} - public static Vec3b of(byte x, byte y, byte z){return new Vec3bImmutable(x, y, z);} - public static Vec3b of(Vec3b vec){return of(vec.getX(), vec.getY(), vec.getZ());} + public static Vec3b mutable() { return new Vec3bMutable(); } + public static Vec3b mutable(byte value) { return new Vec3bMutable(value); } + public static Vec3b mutable(byte x, byte y, byte z) { return new Vec3bMutable(x, y, z); } + public static Vec3b mutable(Vec3b vec) { return mutable(vec.getX(), vec.getY(), vec.getZ()); } + public static Vec3b of() { return new Vec3bImmutable(); } + public static Vec3b of(byte value) { return new Vec3bImmutable(value); } + public static Vec3b of(byte x, byte y, byte z) { return new Vec3bImmutable(x, y, z); } + public static Vec3b of(Vec3b vec) { return of(vec.getX(), vec.getY(), vec.getZ()); } public byte getX(); public byte getY(); @@ -31,111 +29,95 @@ public interface Vec3b extends Vecb public Vec3b setX(byte x); public Vec3b setY(byte y); public Vec3b setZ(byte z); - @Override - public default byte[] asArray(){return new byte[]{getX(), getY(), getZ()};} + @Override + public default byte[] asArray() { return new byte[] {getX(), getY(), getZ()}; } @Override public Vec3b copy(); @Override - public default Vec3b abs(){return set((byte)Math.abs(getX()), (byte)Math.abs(getY()), (byte)Math.abs(getZ()));} + public default Vec3b abs() { return set((byte)Math.abs(getX()), (byte)Math.abs(getY()), (byte)Math.abs(getZ())); } @Override - public default Vec3b negate(){return set((byte)0, (byte)0, (byte)0);} + public default Vec3b negate() { return set((byte)0, (byte)0, (byte)0); } @Override - public default Vec3b invert(){return set((byte)-getX(), (byte)-getY(), (byte)-getZ());} + public default Vec3b invert() { return set((byte)-getX(), (byte)-getY(), (byte)-getZ()); } @Override - public default Vec3b add(byte value){return add(value, value, value);} - public default Vec3b add(Vec3b value){return add(value.getX(), value.getY(), value.getZ());} - public default Vec3b add(byte x, byte y, byte z){return set((byte)(getX() + x), (byte)(getY() + y), (byte)(getZ() + z));} - + public default Vec3b add(byte value) { return add(value, value, value); } + public default Vec3b add(Vec3b value) { return add(value.getX(), value.getY(), value.getZ()); } + public default Vec3b add(byte x, byte y, byte z) { return set((byte)(getX() + x), (byte)(getY() + y), (byte)(getZ() + z)); } @Override - public default Vec3b sub(byte value){return sub(value, value, value);} - public default Vec3b sub(Vec3b value){return sub(value.getX(), value.getY(), value.getZ());} - public default Vec3b sub(byte x, byte y, byte z){return set((byte)(getX() - x), (byte)(getY() - y), (byte)(getZ() - z));} - + public default Vec3b sub(byte value) { return sub(value, value, value); } + public default Vec3b sub(Vec3b value) { return sub(value.getX(), value.getY(), value.getZ()); } + public default Vec3b sub(byte x, byte y, byte z) { return set((byte)(getX() - x), (byte)(getY() - y), (byte)(getZ() - z)); } @Override - public default Vec3b multiply(byte value){return multiply(value, value, value);} - public default Vec3b multiply(Vec3b value){return multiply(value.getX(), value.getY(), value.getZ());} - public default Vec3b multiply(byte x, byte y, byte z){return set((byte)(getX() * x), (byte)(getY() * y), (byte)(getZ() * z));} - + public default Vec3b multiply(byte value) { return multiply(value, value, value); } + public default Vec3b multiply(Vec3b value) { return multiply(value.getX(), value.getY(), value.getZ()); } + public default Vec3b multiply(byte x, byte y, byte z) { return set((byte)(getX() * x), (byte)(getY() * y), (byte)(getZ() * z)); } @Override - public default Vec3b devide(byte value){return devide(value, value, value);} - public default Vec3b devide(Vec3b value){return devide(value.getX(), value.getY(), value.getZ());} - public default Vec3b devide(byte x, byte y, byte z){return set((byte)(getX() / x), (byte)(getY() / y), (byte)(getZ() / z));} - + public default Vec3b devide(byte value) { return devide(value, value, value); } + public default Vec3b devide(Vec3b value) { return devide(value.getX(), value.getY(), value.getZ()); } + public default Vec3b devide(byte x, byte y, byte z) { return set((byte)(getX() / x), (byte)(getY() / y), (byte)(getZ() / z)); } @Override - public default Vec3b set(byte value){return set(value, value, value);} - public default Vec3b set(Vec3b value){return set(value.getX(), value.getY(), value.getZ());} + public default Vec3b set(byte value) { return set(value, value, value); } + public default Vec3b set(Vec3b value) { return set(value.getX(), value.getY(), value.getZ()); } public Vec3b set(byte x, byte y, byte z); + public default double distanceTo(Vec3b value) { return distanceTo(value.getX(), value.getY(), value.getZ()); } + public default double distanceTo(byte x, byte y, byte z) { return Math.sqrt(distanceToSquared(x, y, z)); } + public default long distanceToSquared(Vec3b value) { return distanceToSquared(value.getX(), value.getY(), value.getZ()); } - public default double distanceTo(Vec3b value){return distanceTo(value.getX(), value.getY(), value.getZ());} - public default double distanceTo(byte x, byte y, byte z){return Math.sqrt(distanceToSquared(x, y, z));} - - public default long distanceToSquared(Vec3b value){return distanceToSquared(value.getX(), value.getY(), value.getZ());} - public default long distanceToSquared(byte x, byte y, byte z) - { + public default long distanceToSquared(byte x, byte y, byte z) { long xPos = getX() - x; long yPos = getY() - y; long zPos = getZ() - z; return (xPos * xPos) + (yPos * yPos) + (zPos * zPos); } - @Override - public default long lengthSquared() {return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ());} - - public default long dotProduct(Vec3b value){return dotProduct(value.getX(), value.getY(), value.getZ());} - public default long dotProduct(byte x, byte y, byte z){return (getX() * x) + (getY() * y) + (getZ() * z);} - - public default Vec3b min(Vec3b other) {return min(other, this);} - public default Vec3b min(Vec3b other, Vec3b result){return min(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3b min(byte x, byte y, byte z) {return min(x, y, z, this);} - public default Vec3b min(byte x, byte y, byte z, Vec3b result){return result.set((byte)Math.min(getX(), x), (byte)Math.min(getY(), y), (byte)Math.min(getZ(), z));} - - public default Vec3b max(Vec3b other) {return max(other, this);} - public default Vec3b max(Vec3b other, Vec3b result){return max(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3b max(byte x, byte y, byte z) {return max(x, y, z, this);} - public default Vec3b max(byte x, byte y, byte z, Vec3b result){return result.set((byte)Math.max(getX(), x), (byte)Math.max(getY(), y), (byte)Math.max(getZ(), z));} - - public default Vec3b difference(Vec3b other) {return difference(other, this);} - public default Vec3b difference(Vec3b other, Vec3b result){return difference(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3b difference(byte x, byte y, byte z) {return difference(x, y, z, this);} - public default Vec3b difference(byte x, byte y, byte z, Vec3b result){return result.set((byte)(getX() - x), (byte)(getY() - y), (byte)(getZ() - z));} @Override - public default Vec3b clamp(byte min, byte max){return clamp(min, max, ALL);} - public default Vec3b clamp(byte min, byte max, Vec3b result){return clamp(min, max, result, ALL);} + public default long lengthSquared() { return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()); } + public default long dotProduct(Vec3b value) { return dotProduct(value.getX(), value.getY(), value.getZ()); } + public default long dotProduct(byte x, byte y, byte z) { return (getX() * x) + (getY() * y) + (getZ() * z); } + public default Vec3b min(Vec3b other) { return min(other, this); } + public default Vec3b min(Vec3b other, Vec3b result) { return min(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3b min(byte x, byte y, byte z) { return min(x, y, z, this); } + public default Vec3b min(byte x, byte y, byte z, Vec3b result) { return result.set((byte)Math.min(getX(), x), (byte)Math.min(getY(), y), (byte)Math.min(getZ(), z)); } + public default Vec3b max(Vec3b other) { return max(other, this); } + public default Vec3b max(Vec3b other, Vec3b result) { return max(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3b max(byte x, byte y, byte z) { return max(x, y, z, this); } + public default Vec3b max(byte x, byte y, byte z, Vec3b result) { return result.set((byte)Math.max(getX(), x), (byte)Math.max(getY(), y), (byte)Math.max(getZ(), z)); } + public default Vec3b difference(Vec3b other) { return difference(other, this); } + public default Vec3b difference(Vec3b other, Vec3b result) { return difference(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3b difference(byte x, byte y, byte z) { return difference(x, y, z, this); } + public default Vec3b difference(byte x, byte y, byte z, Vec3b result) { return result.set((byte)(getX() - x), (byte)(getY() - y), (byte)(getZ() - z)); } @Override - public default Vec3b clamp(byte min, byte max, int filter){return clamp(min, max, this, filter);} - public default Vec3b clamp(byte min, byte max, Vec3b result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()));} + public default Vec3b clamp(byte min, byte max) { return clamp(min, max, ALL); } + public default Vec3b clamp(byte min, byte max, Vec3b result) { return clamp(min, max, result, ALL); } + @Override + public default Vec3b clamp(byte min, byte max, int filter) { return clamp(min, max, this, filter); } + public default Vec3b clamp(byte min, byte max, Vec3b result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ())); } @Override - public default Vec3b store(ByteBuffer buffer) - { + public default Vec3b store(ByteBuffer buffer) { buffer.put(getX()).put(getY()).put(getZ()); return this; } @Override - public default Vec3b load(ByteBuffer buffer) - { - return set(buffer.get(), buffer.get(), buffer.get()); - } - + public default Vec3b load(ByteBuffer buffer) { return set(buffer.get(), buffer.get(), buffer.get()); } @Override - public default Vec3s asShort(){return isMutable() ? Vec3s.mutable(getX(), getY(), getZ()) : Vec3s.of(getX(), getY(), getZ());} + public default Vec3s asShort() { return isMutable() ? Vec3s.mutable(getX(), getY(), getZ()) : Vec3s.of(getX(), getY(), getZ()); } @Override - public default Vec3i asInt(){return isMutable() ? Vec3i.mutable(getX(), getY(), getZ()) : Vec3i.of(getX(), getY(), getZ());} + public default Vec3i asInt() { return isMutable() ? Vec3i.mutable(getX(), getY(), getZ()) : Vec3i.of(getX(), getY(), getZ()); } @Override - public default Vec3l asLong(){return isMutable() ? Vec3l.mutable(getX(), getY(), getZ()) : Vec3l.of(getX(), getY(), getZ());} + public default Vec3l asLong() { return isMutable() ? Vec3l.mutable(getX(), getY(), getZ()) : Vec3l.of(getX(), getY(), getZ()); } @Override - public default Vec3f asFloat() {return isMutable() ? Vec3f.mutable(getX(), getY(), getZ()) : Vec3f.of(getX(), getY(), getZ());} + public default Vec3f asFloat() { return isMutable() ? Vec3f.mutable(getX(), getY(), getZ()) : Vec3f.of(getX(), getY(), getZ()); } @Override - public default Vec3d asDouble(){return isMutable() ? Vec3d.mutable(getX(), getY(), getZ()) : Vec3d.of(getX(), getY(), getZ());} - + public default Vec3d asDouble() { return isMutable() ? Vec3d.mutable(getX(), getY(), getZ()) : Vec3d.of(getX(), getY(), getZ()); } @Override - public default Vec3b asMutable(){return isMutable() ? this : mutable(this);} + public default Vec3b asMutable() { return isMutable() ? this : mutable(this); } @Override - public default Vec3b asImmutable(){return isMutable() ? of(this) : this;} + public default Vec3b asImmutable() { return isMutable() ? of(this) : this; } @Override - public default Vec3b copyAsMutable(){return mutable(this);} + public default Vec3b copyAsMutable() { return mutable(this); } @Override - public default Vec3b copyAsImmutable(){return of(this);} + public default Vec3b copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec3bImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec3bImmutable.java index 3fd70bf..bec56fa 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec3bImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec3bImmutable.java @@ -2,107 +2,58 @@ package speiger.src.coreengine.math.vector.bytes; import java.util.Objects; -public class Vec3bImmutable implements Vec3b -{ +public class Vec3bImmutable implements Vec3b { final byte x; final byte y; final byte z; - public Vec3bImmutable() - { + public Vec3bImmutable() { x = 0; y = 0; z = 0; } - public Vec3bImmutable(byte value) - { + public Vec3bImmutable(byte value) { x = value; y = value; z = value; } - public Vec3bImmutable(byte x, byte y, byte z) - { + public Vec3bImmutable(byte x, byte y, byte z) { this.x = x; this.y = y; this.z = z; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public byte getX() - { - return x; - } - + public boolean isMutable() { return false; } @Override - public byte getY() - { - return y; - } - + public byte getX() { return x; } @Override - public byte getZ() - { - return z; - } - + public byte getY() { return y; } @Override - public Vec3b setX(byte x) - { - return this.x == x ? this : Vec3b.of(x, y, z); - } - + public byte getZ() { return z; } @Override - public Vec3b setY(byte y) - { - return this.y == y ? this : Vec3b.of(x, y, z); - } - + public Vec3b setX(byte x) { return this.x == x ? this : Vec3b.of(x, y, z); } @Override - public Vec3b setZ(byte z) - { - return this.z == z ? this : Vec3b.of(x, y, z); - } - + public Vec3b setY(byte y) { return this.y == y ? this : Vec3b.of(x, y, z); } @Override - public Vec3b copy() - { - return Vec3b.of(this); - } - + public Vec3b setZ(byte z) { return this.z == z ? this : Vec3b.of(x, y, z); } @Override - public Vec3b set(byte x, byte y, byte z) - { - return this.x == x && this.y == y && this.z == z ? this : Vec3b.of(x, y, z); - } - + public Vec3b copy() { return Vec3b.of(this); } @Override - public int hashCode() - { - return Objects.hash(x, y, z); - } - + public Vec3b set(byte x, byte y, byte z) { return this.x == x && this.y == y && this.z == z ? this : Vec3b.of(x, y, z); } @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec3b) - { + public int hashCode() { return Objects.hash(x, y, z); } + @Override + public boolean equals(Object obj) { + if(obj instanceof Vec3b) { Vec3b vec = (Vec3b)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z; } return false; } - + @Override - public String toString() - { - return "Vec3b[x="+x+", y="+y+", z="+z+"]"; - } + public String toString() { return "Vec3b[x="+x+", y="+y+", z="+z+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec3bMutable.java b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec3bMutable.java index 5fcb6b4..229e416 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec3bMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec3bMutable.java @@ -2,84 +2,57 @@ package speiger.src.coreengine.math.vector.bytes; import java.util.Objects; -public class Vec3bMutable implements Vec3b -{ +public class Vec3bMutable implements Vec3b { byte x; byte y; byte z; - public Vec3bMutable() - { - } + public Vec3bMutable() {} - public Vec3bMutable(byte value) - { + public Vec3bMutable(byte value) { x = value; y = value; z = value; } - public Vec3bMutable(byte x, byte y, byte z) - { + public Vec3bMutable(byte x, byte y, byte z) { this.x = x; this.y = y; this.z = z; } - - @Override - public boolean isMutable() - { - return true; - } @Override - public byte getX() - { - return x; - } + public boolean isMutable() { return true; } + @Override + public byte getX() { return x; } + @Override + public byte getY() { return y; } + @Override + public byte getZ() { return z; } @Override - public byte getY() - { - return y; - } - - @Override - public byte getZ() - { - return z; - } - - @Override - public Vec3b setX(byte x) - { + public Vec3b setX(byte x) { this.x = x; return this; } @Override - public Vec3b setY(byte y) - { + public Vec3b setY(byte y) { this.y = y; return this; } @Override - public Vec3b setZ(byte z) - { + public Vec3b setZ(byte z) { this.z = z; return this; } @Override - public Vec3b copy() - { - return Vec3b.mutable(this); - } + public Vec3b copy() { return Vec3b.mutable(this); } @Override - public Vec3b set(byte x, byte y, byte z) - { + public Vec3b set(byte x, byte y, byte z) { this.x = x; this.y = y; this.z = z; @@ -87,25 +60,17 @@ public class Vec3bMutable implements Vec3b } @Override - public int hashCode() - { - return Objects.hash(x, y, z); - } - + public int hashCode() { return Objects.hash(x, y, z); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec3b) - { + public boolean equals(Object obj) { + if(obj instanceof Vec3b) { Vec3b vec = (Vec3b)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z; } return false; } - + @Override - public String toString() - { - return "Vec3b[x="+x+", y="+y+", z="+z+"]"; - } + public String toString() { return "Vec3b[x="+x+", y="+y+", z="+z+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec4b.java b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec4b.java index de29655..2a1e53f 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec4b.java +++ b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec4b.java @@ -9,21 +9,19 @@ import speiger.src.coreengine.math.vector.ints.Vec4i; import speiger.src.coreengine.math.vector.longs.Vec4l; import speiger.src.coreengine.math.vector.shorts.Vec4s; -public interface Vec4b extends Vecb -{ +public interface Vec4b extends Vecb { public static final Vec4b ZERO = of(); public static final Vec4b MINUS_ONE = of((byte)-1); public static final Vec4b ONE = of((byte)1); - public static Vec4b mutable(){return new Vec4bMutable();} - public static Vec4b mutable(byte value){return new Vec4bMutable(value);} - public static Vec4b mutable(byte x, byte y, byte z, byte w){return new Vec4bMutable(x, y, z, w);} - public static Vec4b mutable(Vec4b vec){return mutable(vec.getX(), vec.getY(), vec.getZ(), vec.getW());} - - public static Vec4b of(){return new Vec4bImmutable();} - public static Vec4b of(byte value){return new Vec4bImmutable(value);} - public static Vec4b of(byte x, byte y, byte z, byte w){return new Vec4bImmutable(x, y, z, w);} - public static Vec4b of(Vec4b vec){return of(vec.getX(), vec.getY(), vec.getZ(), vec.getW());} + public static Vec4b mutable() { return new Vec4bMutable(); } + public static Vec4b mutable(byte value) { return new Vec4bMutable(value); } + public static Vec4b mutable(byte x, byte y, byte z, byte w) { return new Vec4bMutable(x, y, z, w); } + public static Vec4b mutable(Vec4b vec) { return mutable(vec.getX(), vec.getY(), vec.getZ(), vec.getW()); } + public static Vec4b of() { return new Vec4bImmutable(); } + public static Vec4b of(byte value) { return new Vec4bImmutable(value); } + public static Vec4b of(byte x, byte y, byte z, byte w) { return new Vec4bImmutable(x, y, z, w); } + public static Vec4b of(Vec4b vec) { return of(vec.getX(), vec.getY(), vec.getZ(), vec.getW()); } public byte getX(); public byte getY(); @@ -33,113 +31,93 @@ public interface Vec4b extends Vecb public Vec4b setY(byte y); public Vec4b setZ(byte z); public Vec4b setW(byte w); + @Override - public default byte[] asArray(){return new byte[]{getX(), getY(), getZ(), getW()};} + public default byte[] asArray() { return new byte[] {getX(), getY(), getZ(), getW()}; } @Override public Vec4b copy(); @Override - public default Vec4b abs(){return set((byte)Math.abs(getX()), (byte)Math.abs(getY()), (byte)Math.abs(getZ()), (byte)Math.abs(getW()));} + public default Vec4b abs() { return set((byte)Math.abs(getX()), (byte)Math.abs(getY()), (byte)Math.abs(getZ()), (byte)Math.abs(getW())); } @Override - public default Vec4b negate(){return set((byte)0, (byte)0, (byte)0, (byte)0);} + public default Vec4b negate() { return set((byte)0, (byte)0, (byte)0, (byte)0); } @Override - public default Vec4b invert(){return set((byte)-getX(), (byte)-getY(), (byte)-getZ(), (byte)-getW());} - + public default Vec4b invert() { return set((byte)-getX(), (byte)-getY(), (byte)-getZ(), (byte)-getW()); } @Override - public default Vec4b add(byte value){return add(value, value, value, value);} - public default Vec4b add(Vec4b value){return add(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4b add(byte x, byte y, byte z, byte w){return set((byte)(getX() + x), (byte)(getY() + y), (byte)(getZ() + z), (byte)(getW() + w));} - + public default Vec4b add(byte value) { return add(value, value, value, value); } + public default Vec4b add(Vec4b value) { return add(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4b add(byte x, byte y, byte z, byte w) { return set((byte)(getX() + x), (byte)(getY() + y), (byte)(getZ() + z), (byte)(getW() + w)); } @Override - public default Vec4b sub(byte value){return sub(value, value, value, value);} - public default Vec4b sub(Vec4b value){return sub(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4b sub(byte x, byte y, byte z, byte w){return set((byte)(getX() - x), (byte)(getY() - y), (byte)(getZ() - z), (byte)(getW() - w));} - + public default Vec4b sub(byte value) { return sub(value, value, value, value); } + public default Vec4b sub(Vec4b value) { return sub(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4b sub(byte x, byte y, byte z, byte w) { return set((byte)(getX() - x), (byte)(getY() - y), (byte)(getZ() - z), (byte)(getW() - w)); } @Override - public default Vec4b multiply(byte value){return multiply(value, value, value, value);} - public default Vec4b multiply(Vec4b value){return multiply(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4b multiply(byte x, byte y, byte z, byte w){return set((byte)(getX() * x), (byte)(getY() * y), (byte)(getZ() * z), (byte)(getW() * w));} - + public default Vec4b multiply(byte value) { return multiply(value, value, value, value); } + public default Vec4b multiply(Vec4b value) { return multiply(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4b multiply(byte x, byte y, byte z, byte w) { return set((byte)(getX() * x), (byte)(getY() * y), (byte)(getZ() * z), (byte)(getW() * w)); } @Override - public default Vec4b devide(byte value){return devide(value, value, value, value);} - public default Vec4b devide(Vec4b value){return devide(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4b devide(byte x, byte y, byte z, byte w){return set((byte)(getX() / x), (byte)(getY() / y), (byte)(getZ() / z), (byte)(getW() / w));} - + public default Vec4b devide(byte value) { return devide(value, value, value, value); } + public default Vec4b devide(Vec4b value) { return devide(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4b devide(byte x, byte y, byte z, byte w) { return set((byte)(getX() / x), (byte)(getY() / y), (byte)(getZ() / z), (byte)(getW() / w)); } @Override - public default Vec4b set(byte value){return set(value, value, value, value);} - public default Vec4b set(Vec4b value){return set(value.getX(), value.getY(), value.getZ(), value.getW());} + public default Vec4b set(byte value) { return set(value, value, value, value); } + public default Vec4b set(Vec4b value) { return set(value.getX(), value.getY(), value.getZ(), value.getW()); } public Vec4b set(byte x, byte y, byte z, byte w); - - public default double distanceTo(Vec4b value){return distanceTo(value.getX(), value.getY(), value.getZ(), value.getW());} - public default double distanceTo(byte x, byte y, byte z, byte w){return Math.sqrt(distanceTo(x, y, z, w));} - - public default long distanceToSquared(Vec4b value){return distanceToSquared(value.getX(), value.getY(), value.getZ(), value.getW());} - public default long distanceToSquared(byte x, byte y, byte z, byte w) - { + public default double distanceTo(Vec4b value) { return distanceTo(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default double distanceTo(byte x, byte y, byte z, byte w) { return Math.sqrt(distanceTo(x, y, z, w)); } + public default long distanceToSquared(Vec4b value) { return distanceToSquared(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default long distanceToSquared(byte x, byte y, byte z, byte w) { long xPos = getX() - x; long yPos = getY() - y; long zPos = getZ() - z; long wPos = getW() - w; return (xPos * xPos) + (yPos * yPos) + (zPos * zPos) + (wPos * wPos); } - @Override - public default long lengthSquared() {return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()) + (getW() * getW());} - - public default long dotProduct(Vec4b value){return dotProduct(value.getX(), value.getY(), value.getZ(), value.getW());} - public default long dotProduct(byte x, byte y, byte z, byte w){return (getX() * x) + (getY() * y) + (getZ() * z) + (getW() * w);}; - - public default Vec4b min(Vec4b other) {return min(other, this);} - public default Vec4b min(Vec4b other, Vec4b result){return min(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4b min(byte x, byte y, byte z, byte w) {return min(x, y, z, w, this);} - public default Vec4b min(byte x, byte y, byte z, byte w, Vec4b result){return result.set((byte)Math.min(getX(), x), (byte)Math.min(getY(), y), (byte)Math.min(getZ(), z), (byte)Math.min(getW(), w));} - - public default Vec4b max(Vec4b other) {return max(other, this);} - public default Vec4b max(Vec4b other, Vec4b result){return max(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4b max(byte x, byte y, byte z, byte w) {return max(x, y, z, w, this);} - public default Vec4b max(byte x, byte y, byte z, byte w, Vec4b result){return result.set((byte)Math.max(getX(), x), (byte)Math.max(getY(), y), (byte)Math.max(getZ(), z), (byte)Math.max(getZ(), z));} - - public default Vec4b difference(Vec4b other) {return difference(other, this);} - public default Vec4b difference(Vec4b other, Vec4b result){return difference(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4b difference(byte x, byte y, byte z, byte w) {return difference(x, y, z, w, this);} - public default Vec4b difference(byte x, byte y, byte z, byte w, Vec4b result){return result.set((byte)(getX() - x), (byte)(getY() - y), (byte)(getZ() - z), (byte)(getW() - w));} @Override - public default Vec4b clamp(byte min, byte max){return clamp(min, max, ALL);} - public default Vec4b clamp(byte min, byte max, Vec4b result){return clamp(min, max, result, ALL);} + public default long lengthSquared() { return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()) + (getW() * getW()); } + public default long dotProduct(Vec4b value) { return dotProduct(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default long dotProduct(byte x, byte y, byte z, byte w) { return (getX() * x) + (getY() * y) + (getZ() * z) + (getW() * w); }; + public default Vec4b min(Vec4b other) { return min(other, this); } + public default Vec4b min(Vec4b other, Vec4b result) { return min(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4b min(byte x, byte y, byte z, byte w) { return min(x, y, z, w, this); } + public default Vec4b min(byte x, byte y, byte z, byte w, Vec4b result) { return result.set((byte)Math.min(getX(), x), (byte)Math.min(getY(), y), (byte)Math.min(getZ(), z), (byte)Math.min(getW(), w)); } + public default Vec4b max(Vec4b other) { return max(other, this); } + public default Vec4b max(Vec4b other, Vec4b result) { return max(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4b max(byte x, byte y, byte z, byte w) { return max(x, y, z, w, this); } + public default Vec4b max(byte x, byte y, byte z, byte w, Vec4b result) { return result.set((byte)Math.max(getX(), x), (byte)Math.max(getY(), y), (byte)Math.max(getZ(), z), (byte)Math.max(getZ(), z)); } + public default Vec4b difference(Vec4b other) { return difference(other, this); } + public default Vec4b difference(Vec4b other, Vec4b result) { return difference(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4b difference(byte x, byte y, byte z, byte w) { return difference(x, y, z, w, this); } + public default Vec4b difference(byte x, byte y, byte z, byte w, Vec4b result) { return result.set((byte)(getX() - x), (byte)(getY() - y), (byte)(getZ() - z), (byte)(getW() - w)); } @Override - public default Vec4b clamp(byte min, byte max, int filter){return clamp(min, max, this, filter);} - public default Vec4b clamp(byte min, byte max, Vec4b result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()), (filter & W) == 0 ? getW() : MathUtils.clamp(min, max, getW()));} - + public default Vec4b clamp(byte min, byte max) { return clamp(min, max, ALL); } + public default Vec4b clamp(byte min, byte max, Vec4b result) { return clamp(min, max, result, ALL); } @Override - public default Vec4b store(ByteBuffer buffer) - { + public default Vec4b clamp(byte min, byte max, int filter) { return clamp(min, max, this, filter); } + public default Vec4b clamp(byte min, byte max, Vec4b result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()), (filter & W) == 0 ? getW() : MathUtils.clamp(min, max, getW())); } + @Override + public default Vec4b store(ByteBuffer buffer) { buffer.put(getX()).put(getY()).put(getZ()).put(getW()); return this; } - @Override - public default Vec4b load(ByteBuffer buffer) - { - return set(buffer.get(), buffer.get(), buffer.get(), buffer.get()); - } - + public default Vec4b load(ByteBuffer buffer) { return set(buffer.get(), buffer.get(), buffer.get(), buffer.get()); } @Override - public default Vec4s asShort(){return isMutable() ? Vec4s.mutable(getX(), getY(), getZ(), getW()) : Vec4s.of(getX(), getY(), getZ(), getW());} + public default Vec4s asShort() { return isMutable() ? Vec4s.mutable(getX(), getY(), getZ(), getW()) : Vec4s.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4i asInt(){return isMutable() ? Vec4i.mutable(getX(), getY(), getZ(), getW()) : Vec4i.of(getX(), getY(), getZ(), getW());} + public default Vec4i asInt() { return isMutable() ? Vec4i.mutable(getX(), getY(), getZ(), getW()) : Vec4i.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4l asLong(){return isMutable() ? Vec4l.mutable(getX(), getY(), getZ(), getW()) : Vec4l.of(getX(), getY(), getZ(), getW());} + public default Vec4l asLong() { return isMutable() ? Vec4l.mutable(getX(), getY(), getZ(), getW()) : Vec4l.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4f asFloat() {return isMutable() ? Vec4f.mutable(getX(), getY(), getZ(), getW()) : Vec4f.of(getX(), getY(), getZ(), getW());} + public default Vec4f asFloat() { return isMutable() ? Vec4f.mutable(getX(), getY(), getZ(), getW()) : Vec4f.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4d asDouble(){return isMutable() ? Vec4d.mutable(getX(), getY(), getZ(), getW()) : Vec4d.of(getX(), getY(), getZ(), getW());} - - + public default Vec4d asDouble() {return isMutable() ? Vec4d.mutable(getX(), getY(), getZ(), getW()) : Vec4d.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4b asMutable(){return isMutable() ? this : mutable(this);} + public default Vec4b asMutable() { return isMutable() ? this : mutable(this); } @Override - public default Vec4b asImmutable(){return isMutable() ? of(this) : this;} + public default Vec4b asImmutable() { return isMutable() ? of(this) : this; } @Override - public default Vec4b copyAsMutable(){return mutable(this);} + public default Vec4b copyAsMutable() { return mutable(this); } @Override - public default Vec4b copyAsImmutable(){return of(this);} + public default Vec4b copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec4bImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec4bImmutable.java index 010aa7c..3e6f934 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec4bImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec4bImmutable.java @@ -2,114 +2,61 @@ package speiger.src.coreengine.math.vector.bytes; import java.util.Objects; -public class Vec4bImmutable implements Vec4b -{ +public class Vec4bImmutable implements Vec4b { final byte x; final byte y; final byte z; final byte w; - public Vec4bImmutable() - { + public Vec4bImmutable() { x = 0; y = 0; z = 0; w = 0; } - public Vec4bImmutable(byte value) - { + public Vec4bImmutable(byte value) { x = value; y = value; z = value; w = value; } - public Vec4bImmutable(byte x, byte y, byte z, byte w) - { + public Vec4bImmutable(byte x, byte y, byte z, byte w) { this.x = x; this.y = y; this.z = z; this.w = w; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public byte getX() - { - return x; - } + public boolean isMutable() { return false; } + @Override + public byte getX() { return x; } + @Override + public byte getY() { return y; } + @Override + public byte getZ() { return z; } + @Override + public byte getW() { return w; } + @Override + public Vec4b setX(byte x) { return this.x == x ? this : Vec4b.of(x, y, z, w); } + @Override + public Vec4b setY(byte y) { return this.y == y ? this : Vec4b.of(x, y, z, w); } + @Override + public Vec4b setZ(byte z) { return this.z == z ? this : Vec4b.of(x, y, z, w); } + @Override + public Vec4b setW(byte w) { return this.w == w ? this : Vec4b.of(x, y, z, w); } + @Override + public Vec4b copy() { return Vec4b.of(this); } + @Override + public Vec4b set(byte x, byte y, byte z, byte w) { return this.x == x && this.y == y && this.z == z && this.w == w ? this : Vec4b.of(x, y, z, w); } + @Override + public int hashCode() { return Objects.hash(x, y, z, w); } @Override - public byte getY() - { - return y; - } - - @Override - public byte getZ() - { - return z; - } - - @Override - public byte getW() - { - return w; - } - - @Override - public Vec4b setX(byte x) - { - return this.x == x ? this : Vec4b.of(x, y, z, w); - } - - @Override - public Vec4b setY(byte y) - { - return this.y == y ? this : Vec4b.of(x, y, z, w); - } - - @Override - public Vec4b setZ(byte z) - { - return this.z == z ? this : Vec4b.of(x, y, z, w); - } - - @Override - public Vec4b setW(byte w) - { - return this.w == w ? this : Vec4b.of(x, y, z, w); - } - - @Override - public Vec4b copy() - { - return Vec4b.of(this); - } - - @Override - public Vec4b set(byte x, byte y, byte z, byte w) - { - return this.x == x && this.y == y && this.z == z && this.w == w ? this : Vec4b.of(x, y, z, w); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y, z, w); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec4b) - { + public boolean equals(Object obj) { + if(obj instanceof Vec4b) { Vec4b vec = (Vec4b)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z && vec.getW() == w; } @@ -117,8 +64,5 @@ public class Vec4bImmutable implements Vec4b } @Override - public String toString() - { - return "Vec4b[x="+x+", y="+y+", z="+z+", w="+w+"]"; - } + public String toString() { return "Vec4b[x="+x+", y="+y+", z="+z+", w="+w+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec4bMutable.java b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec4bMutable.java index bd6744b..729b448 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec4bMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vec4bMutable.java @@ -2,100 +2,68 @@ package speiger.src.coreengine.math.vector.bytes; import java.util.Objects; -public class Vec4bMutable implements Vec4b -{ +public class Vec4bMutable implements Vec4b { byte x; byte y; byte z; byte w; - public Vec4bMutable() - { - } + public Vec4bMutable() {} - public Vec4bMutable(byte value) - { + public Vec4bMutable(byte value) { x = value; y = value; z = value; w = value; } - public Vec4bMutable(byte x, byte y, byte z, byte w) - { + public Vec4bMutable(byte x, byte y, byte z, byte w) { this.x = x; this.y = y; this.z = z; this.w = w; } - - @Override - public boolean isMutable() - { - return true; - } @Override - public byte getX() - { - return x; - } + public boolean isMutable() { return true; } + @Override + public byte getX() { return x; } + @Override + public byte getY() { return y; } + @Override + public byte getZ() { return z; } + @Override + public byte getW() { return w; } @Override - public byte getY() - { - return y; - } - - @Override - public byte getZ() - { - return z; - } - - @Override - public byte getW() - { - return w; - } - - @Override - public Vec4b setX(byte x) - { + public Vec4b setX(byte x) { this.x = x; return this; } @Override - public Vec4b setY(byte y) - { + public Vec4b setY(byte y) { this.y = y; return this; } @Override - public Vec4b setZ(byte z) - { + public Vec4b setZ(byte z) { this.z = z; return this; } @Override - public Vec4b setW(byte w) - { + public Vec4b setW(byte w) { this.w = w; return this; } @Override - public Vec4b copy() - { - return Vec4b.mutable(this); - } + public Vec4b copy() { return Vec4b.mutable(this); } @Override - public Vec4b set(byte x, byte y, byte z, byte w) - { + public Vec4b set(byte x, byte y, byte z, byte w) { this.x = x; this.y = y; this.z = z; @@ -104,16 +72,11 @@ public class Vec4bMutable implements Vec4b } @Override - public int hashCode() - { - return Objects.hash(x, y, z, w); - } - + public int hashCode() { return Objects.hash(x, y, z, w); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec4b) - { + public boolean equals(Object obj) { + if(obj instanceof Vec4b) { Vec4b vec = (Vec4b)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z && vec.getW() == w; } @@ -121,9 +84,6 @@ public class Vec4bMutable implements Vec4b } @Override - public String toString() - { - return "Vec4b[x="+x+", y="+y+", z="+z+", w="+w+"]"; - } - + public String toString() { return "Vec4b[x="+x+", y="+y+", z="+z+", w="+w+"]"; } + } diff --git a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vecb.java b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vecb.java index b4eb060..d89ea4f 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/bytes/Vecb.java +++ b/src/main/java/speiger/src/coreengine/math/vector/bytes/Vecb.java @@ -7,8 +7,7 @@ import speiger.src.coreengine.math.vector.ints.Veci; import speiger.src.coreengine.math.vector.longs.Vecl; import speiger.src.coreengine.math.vector.shorts.Vecs; -public interface Vecb extends Vec -{ +public interface Vecb extends Vec { public Vecb set(byte value); public Vecb add(byte value); public Vecb sub(byte value); @@ -16,10 +15,8 @@ public interface Vecb extends Vec public Vecb devide(byte value); public Vecb clamp(byte min, byte max); public Vecb clamp(byte min, byte max, int filter); - public long lengthSquared(); - public default double length(){return Math.sqrt(lengthSquared());} - + public default double length() { return Math.sqrt(lengthSquared()); } public byte[] asArray(); public Vecs asShort(); public Veci asInt(); diff --git a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec2d.java b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec2d.java index 3d4f54a..ad16246 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec2d.java +++ b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec2d.java @@ -10,178 +10,147 @@ import speiger.src.coreengine.math.vector.ints.Vec2i; import speiger.src.coreengine.math.vector.longs.Vec2l; import speiger.src.coreengine.math.vector.shorts.Vec2s; -public interface Vec2d extends Vecd -{ +public interface Vec2d extends Vecd { public static final Vec2d ZERO = of(); public static final Vec2d MINUS_ONE = of(-1D); public static final Vec2d ONE = of(1D); - public static Vec2d mutable(){return new Vec2dMutable();} - public static Vec2d mutable(double value){return new Vec2dMutable(value);} - public static Vec2d mutable(double x, double y){return new Vec2dMutable(x, y);} - public static Vec2d mutable(Vec2d value){return mutable(value.getX(), value.getY());} - - public static Vec2d of(){return new Vec2dImmutable();} - public static Vec2d of(double value){return new Vec2dImmutable(value);} - public static Vec2d of(double x, double y){return new Vec2dImmutable(x, y);} - public static Vec2d of(Vec2d value){return of(value.getX(), value.getY());} + public static Vec2d mutable() { return new Vec2dMutable(); } + public static Vec2d mutable(double value) { return new Vec2dMutable(value); } + public static Vec2d mutable(double x, double y) { return new Vec2dMutable(x, y); } + public static Vec2d mutable(Vec2d value) { return mutable(value.getX(), value.getY()); } + public static Vec2d of() { return new Vec2dImmutable(); } + public static Vec2d of(double value) { return new Vec2dImmutable(value); } + public static Vec2d of(double x, double y) { return new Vec2dImmutable(x, y); } + public static Vec2d of(Vec2d value) { return of(value.getX(), value.getY()); } public double getX(); public double getY(); public Vec2d setX(double x); public Vec2d setY(double y); @Override - public default double[] asArray(){return new double[]{getX(), getY()};} + public default double[] asArray() { return new double[] {getX(), getY()}; } @Override public Vec2d copy(); @Override - public default Vec2d abs(){return set(Math.abs(getX()), Math.abs(getY()));} + public default Vec2d abs() { return set(Math.abs(getX()), Math.abs(getY())); } @Override - public default Vec2d negate(){return set(0D, 0D);} + public default Vec2d negate() { return set(0D, 0D); } @Override - public default Vec2d invert(){return set(-getX(), -getY());}; - public default Vec2d normalize() - { + public default Vec2d invert() { return set(-getX(), -getY()); }; + public default Vec2d normalize() { double l = length(); return l == 0D ? this : multiply(1D / l); } @Override - public default Vec2d add(double value) {return add(value, value);} - public default Vec2d add(Vec2d value) {return add(value.getX(), value.getY());} - public default Vec2d add(double x, double y) {return set(x + getX(), y + getY());} - + public default Vec2d add(double value) { return add(value, value); } + public default Vec2d add(Vec2d value) { return add(value.getX(), value.getY()); } + public default Vec2d add(double x, double y) { return set(x + getX(), y + getY()); } @Override - public default Vec2d sub(double value){return sub(value, value);} - public default Vec2d sub(Vec2d value){return sub(value.getX(), value.getY());} - public default Vec2d sub(double x, double y) {return set(getX() - x, getY() - y);} - + public default Vec2d sub(double value) { return sub(value, value); } + public default Vec2d sub(Vec2d value) { return sub(value.getX(), value.getY()); } + public default Vec2d sub(double x, double y) { return set(getX() - x, getY() - y); } @Override - public default Vec2d multiply(double value){return multiply(value, value);} - public default Vec2d multiply(Vec2d value){return multiply(value.getX(), value.getY());} - public default Vec2d multiply(double x, double y) {return set(x * getX(), y * getY());} - + public default Vec2d multiply(double value) { return multiply(value, value); } + public default Vec2d multiply(Vec2d value) { return multiply(value.getX(), value.getY()); } + public default Vec2d multiply(double x, double y) { return set(x * getX(), y * getY()); } @Override - public default Vec2d devide(double value){return devide(value, value);} - public default Vec2d devide(Vec2d value){return devide(value.getX(), value.getY());} - public default Vec2d devide(double x, double y){return set(getX() / x, getY() / y);} - + public default Vec2d devide(double value) { return devide(value, value); } + public default Vec2d devide(Vec2d value) { return devide(value.getX(), value.getY()); } + public default Vec2d devide(double x, double y) { return set(getX() / x, getY() / y); } @Override - public default Vec2d set(double value){return set(value, value);}; - public default Vec2d set(Vec2d value){return set(value.getX(), value.getY());} + public default Vec2d set(double value) { return set(value, value); }; + public default Vec2d set(Vec2d value) { return set(value.getX(), value.getY()); } public Vec2d set(double x, double y); - public default double distanceTo(Vec2d value){return distanceTo(value.getX(), value.getY());} - public default double distanceTo(double x, double y){return Math.sqrt(distanceToSquared(x, y));} - - public default double distanceToSquared(Vec2d value){return distanceToSquared(value.getX(), value.getY());} - public default double distanceToSquared(double x, double y) - { + public default double distanceTo(Vec2d value) { return distanceTo(value.getX(), value.getY()); } + public default double distanceTo(double x, double y) { return Math.sqrt(distanceToSquared(x, y)); } + public default double distanceToSquared(Vec2d value) { return distanceToSquared(value.getX(), value.getY()); } + public default double distanceToSquared(double x, double y) { double xPos = getX() - x; double yPos = getY() - y; return (xPos * xPos) + (yPos * yPos); } + @Override - public default double lengthSquared() {return (getX() * getX()) + (getY() * getY());} - - public default double dotProduct(Vec2d value){return dotProduct(value.getX(), value.getY());} - public default double dotProduct(double x, double y){return (getX() * x) + (getY() * y);} - - public default Vec2d lerp(Vec2d value, float progress, Vec2d result){return lerp(value.getX(), value.getY(), progress, result);} - public default Vec2d lerp(double x, double y, float progress, Vec2d result){return result.set(MathUtils.lerp(getX(), x, progress), MathUtils.lerp(getY(), y, progress));}; - - public default double angle(Vec2d value){return angle(value.getX(), value.getY());} - public default double angle(double x, double y){return (float)Math.atan2((getX() * y) - (getY() * x), (getX() * x) + (getY() * y));} - - public default double directionAngle(Vec2d value){return directionAngle(value.getX(), value.getY());} - public default double directionAngle(double x, double y){return (float)(-Math.toDegrees(Math.atan2(getX() - x, getY() - y)) % 360D);} - - public default Vec2d reflect(Vec2d value){return reflect(value.getX(), value.getY(), this);} - public default Vec2d reflect(double x, double y){return reflect(x, y, this);}; - public default Vec2d reflect(Vec2d value, Vec2d result){return reflect(value.getX(), value.getY(), result);} - public default Vec2d reflect(double x, double y, Vec2d result) - { + public default double lengthSquared() { return (getX() * getX()) + (getY() * getY()); } + public default double dotProduct(Vec2d value) { return dotProduct(value.getX(), value.getY()); } + public default double dotProduct(double x, double y) { return (getX() * x) + (getY() * y); } + public default Vec2d lerp(Vec2d value, float progress, Vec2d result) { return lerp(value.getX(), value.getY(), progress, result); } + public default Vec2d lerp(double x, double y, float progress, Vec2d result) { return result.set(MathUtils.lerp(getX(), x, progress), MathUtils.lerp(getY(), y, progress)); }; + public default double angle(Vec2d value) { return angle(value.getX(), value.getY()); } + public default double angle(double x, double y) { return (float)Math.atan2((getX() * y) - (getY() * x), (getX() * x) + (getY() * y)); } + public default double directionAngle(Vec2d value) { return directionAngle(value.getX(), value.getY()); } + public default double directionAngle(double x, double y) { return (float)(-Math.toDegrees(Math.atan2(getX() - x, getY() - y)) % 360D); } + public default Vec2d reflect(Vec2d value) { return reflect(value.getX(), value.getY(), this); } + public default Vec2d reflect(double x, double y) { return reflect(x, y, this); }; + public default Vec2d reflect(Vec2d value, Vec2d result) { return reflect(value.getX(), value.getY(), result); } + public default Vec2d reflect(double x, double y, Vec2d result) { double dot = dotProduct(x, y); double x2 = (float)((dot + dot) * x); double y2 = (float)((dot + dot) * y); - return result.set(getX() - x2, getY() - y2); + return result.set(getX() - x2, getY() - y2); } - public default Vec2d rotate(double angle, Vec2d center){return rotate(angle, center.getX(), center.getY());} - public default Vec2d rotate(double angle, double x, double y) - { + public default Vec2d rotate(double angle, Vec2d center) { return rotate(angle, center.getX(), center.getY()); } + public default Vec2d rotate(double angle, double x, double y) { double xPos = getX() - x; double yPos = getY() - y; double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); - return set((float)((xPos * cos) + (yPos * sin) + x), (float)(-(xPos * sin) + (yPos * cos) + y)); + return set((float)((xPos * cos) + (yPos * sin) + x), (float)(-(xPos * sin) + (yPos * cos) + y)); } - public default Vec2d min(Vec2d other) {return min(other, this);} - public default Vec2d min(Vec2d other, Vec2d result){return min(other.getX(), other.getY(), result);} - public default Vec2d min(double x, double y) {return min(x, y, this);} - public default Vec2d min(double x, double y, Vec2d result){return result.set(Math.min(getX(), x), Math.min(getY(), y));} - - public default Vec2d max(Vec2d other) {return max(other, this);} - public default Vec2d max(Vec2d other, Vec2d result){return max(other.getX(), other.getY(), result);} - public default Vec2d max(double x, double y) {return max(x, y, this);} - public default Vec2d max(double x, double y, Vec2d result){return result.set(Math.max(getX(), x), Math.max(getY(), y));} - - public default Vec2d difference(Vec2d other) {return difference(other, this);} - public default Vec2d difference(Vec2d other, Vec2d result){return difference(other.getX(), other.getY(), result);} - public default Vec2d difference(double x, double y) {return difference(x, y, this);} - public default Vec2d difference(double x, double y, Vec2d result){return result.set(getX() - x, getY() - y);} + public default Vec2d min(Vec2d other) { return min(other, this); } + public default Vec2d min(Vec2d other, Vec2d result) { return min(other.getX(), other.getY(), result); } + public default Vec2d min(double x, double y) { return min(x, y, this); } + public default Vec2d min(double x, double y, Vec2d result) { return result.set(Math.min(getX(), x), Math.min(getY(), y)); } + public default Vec2d max(Vec2d other) { return max(other, this); } + public default Vec2d max(Vec2d other, Vec2d result) { return max(other.getX(), other.getY(), result); } + public default Vec2d max(double x, double y) { return max(x, y, this); } + public default Vec2d max(double x, double y, Vec2d result) { return result.set(Math.max(getX(), x), Math.max(getY(), y)); } + public default Vec2d difference(Vec2d other) { return difference(other, this); } + public default Vec2d difference(Vec2d other, Vec2d result) { return difference(other.getX(), other.getY(), result); } + public default Vec2d difference(double x, double y) { return difference(x, y, this); } + public default Vec2d difference(double x, double y, Vec2d result) { return result.set(getX() - x, getY() - y); } + @Override + public default Vec2d clamp(double min, double max) { return clamp(min, max, ALL); } + public default Vec2d clamp(double min, double max, Vec2d result) { return clamp(min, max, result, ALL); } + @Override + public default Vec2d clamp(double min, double max, int filter) { return clamp(min, max, this, filter); } + public default Vec2d clamp(double min, double max, Vec2d result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY())); } @Override - public default Vec2d clamp(double min, double max){return clamp(min, max, ALL);} - public default Vec2d clamp(double min, double max, Vec2d result){return clamp(min, max, result, ALL);} - @Override - public default Vec2d clamp(double min, double max, int filter){return clamp(min, max, this, filter);} - public default Vec2d clamp(double min, double max, Vec2d result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()));} - - @Override - public default Vec2d store(ByteBuffer buffer) - { + public default Vec2d store(ByteBuffer buffer) { buffer.putDouble(getX()).putDouble(getY()); return this; } - @Override - public default Vec2d load(ByteBuffer buffer) - { - return set(buffer.getDouble(), buffer.getDouble()); - } - + public default Vec2d load(ByteBuffer buffer) { return set(buffer.getDouble(), buffer.getDouble()); } @Override - public default Vec2d store(DoubleBuffer buffer) - { + public default Vec2d store(DoubleBuffer buffer) { buffer.put(getX()).put(getY()); return this; } - @Override - public default Vec2d load(DoubleBuffer buffer) - { - return set(buffer.get(), buffer.get()); - } + public default Vec2d load(DoubleBuffer buffer) { return set(buffer.get(), buffer.get()); } @Override - public default Vec2b asByte(){return isMutable() ? Vec2b.mutable((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY())) : Vec2b.of((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()));} + public default Vec2b asByte() { return isMutable() ? Vec2b.mutable((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY())) : Vec2b.of((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY())); } @Override - public default Vec2s asShort(){return isMutable() ? Vec2s.mutable((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY())) : Vec2s.of((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()));} + public default Vec2s asShort() { return isMutable() ? Vec2s.mutable((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY())) : Vec2s.of((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY())); } @Override - public default Vec2i asInt(){return isMutable() ? Vec2i.mutable(MathUtils.floor(getX()), MathUtils.floor(getY())) : Vec2i.of(MathUtils.floor(getX()), MathUtils.floor(getY()));} + public default Vec2i asInt() { return isMutable() ? Vec2i.mutable(MathUtils.floor(getX()), MathUtils.floor(getY())) : Vec2i.of(MathUtils.floor(getX()), MathUtils.floor(getY())); } @Override - public default Vec2l asLong() {return isMutable() ? Vec2l.mutable(MathUtils.floor(getX()), MathUtils.floor(getY())) : Vec2l.of(MathUtils.floor(getX()), MathUtils.floor(getY()));} + public default Vec2l asLong() { return isMutable() ? Vec2l.mutable(MathUtils.floor(getX()), MathUtils.floor(getY())) : Vec2l.of(MathUtils.floor(getX()), MathUtils.floor(getY())); } @Override - public default Vec2f asFloat(){return isMutable() ? Vec2f.mutable((float)getX(), (float)getY()) : Vec2f.of((float)getX(), (float)getY());} - - + public default Vec2f asFloat() { return isMutable() ? Vec2f.mutable((float)getX(), (float)getY()) : Vec2f.of((float)getX(), (float)getY()); } @Override - public default Vec2d asMutable(){return isMutable() ? this : mutable(this);} + public default Vec2d asMutable() { return isMutable() ? this : mutable(this); } @Override - public default Vec2d asImmutable(){return isMutable() ? of(this) : this;} + public default Vec2d asImmutable() { return isMutable() ? of(this) : this; } @Override - public default Vec2d copyAsMutable(){return mutable(this);} + public default Vec2d copyAsMutable() { return mutable(this); } @Override - public default Vec2d copyAsImmutable(){return of(this);} + public default Vec2d copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec2dImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec2dImmutable.java index 1411133..198b03d 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec2dImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec2dImmutable.java @@ -2,91 +2,51 @@ package speiger.src.coreengine.math.vector.doubles; import java.util.Objects; -public class Vec2dImmutable implements Vec2d -{ +public class Vec2dImmutable implements Vec2d { final double x; final double y; - public Vec2dImmutable() - { + public Vec2dImmutable() { x = 0D; y = 0D; } - public Vec2dImmutable(double value) - { + public Vec2dImmutable(double value) { x = value; y = value; } - public Vec2dImmutable(double x, double y) - { + public Vec2dImmutable(double x, double y) { this.x = x; this.y = y; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public double getX() - { - return x; - } + public boolean isMutable() { return false; } + @Override + public double getX() { return x; } + @Override + public double getY() { return y; } + @Override + public Vec2d setX(double x) { return this.x == x ? this : Vec2d.of(x, y); } + @Override + public Vec2d setY(double y) { return this.y == y ? this : Vec2d.of(x, y); } + @Override + public Vec2d copy() { return Vec2d.of(this); } + @Override + public Vec2d set(double x, double y) { return this.x == x && this.y == y ? this : Vec2d.of(x, y); } + @Override + public int hashCode() { return Objects.hash(x, y); } @Override - public double getY() - { - return y; - } - - @Override - public Vec2d setX(double x) - { - return this.x == x ? this : Vec2d.of(x, y); - } - - @Override - public Vec2d setY(double y) - { - return this.y == y ? this : Vec2d.of(x, y); - } - - @Override - public Vec2d copy() - { - return Vec2d.of(this); - } - - @Override - public Vec2d set(double x, double y) - { - return this.x == x && this.y == y ? this : Vec2d.of(x, y); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec2d) - { + public boolean equals(Object obj) { + if(obj instanceof Vec2d) { Vec2d vec = (Vec2d)obj; return vec.getX() == x && vec.getY() == y; } return false; } - + @Override - public String toString() - { - return "Vec2d[x="+x+", y="+y+"]"; - } + public String toString() { return "Vec2d[x="+x+", y="+y+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec2dMutable.java b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec2dMutable.java index 9621f53..9b2e98e 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec2dMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec2dMutable.java @@ -2,95 +2,66 @@ package speiger.src.coreengine.math.vector.doubles; import java.util.Objects; -public class Vec2dMutable implements Vec2d -{ +public class Vec2dMutable implements Vec2d { double x; double y; - public Vec2dMutable() - { + public Vec2dMutable() { x = 0D; y = 0D; } - public Vec2dMutable(double value) - { + public Vec2dMutable(double value) { x = value; y = value; } - public Vec2dMutable(double x, double y) - { + public Vec2dMutable(double x, double y) { this.x = x; this.y = y; } @Override - public boolean isMutable() - { - return true; - } + public boolean isMutable() { return true; } + @Override + public double getX() { return x; } + @Override + public double getY() { return y; } @Override - public double getX() - { - return x; - } - - @Override - public double getY() - { - return y; - } - - @Override - public Vec2d setX(double x) - { + public Vec2d setX(double x) { this.x = x; return this; } @Override - public Vec2d setY(double y) - { + public Vec2d setY(double y) { this.y = y; return this; } @Override - public Vec2d copy() - { - return Vec2d.mutable(this); - } + public Vec2d copy() { return Vec2d.mutable(this); } @Override - public Vec2d set(double x, double y) - { + public Vec2d set(double x, double y) { this.x = x; this.y = y; return this; } @Override - public int hashCode() - { - return Objects.hash(x, y); - } - + public int hashCode() { return Objects.hash(x, y); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec2d) - { + public boolean equals(Object obj) { + if(obj instanceof Vec2d) { Vec2d vec = (Vec2d)obj; return vec.getX() == x && vec.getY() == y; } return false; } - + @Override - public String toString() - { - return "Vec2d[x="+x+", y="+y+"]"; - } + public String toString() { return "Vec2d[x="+x+", y="+y+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec3d.java b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec3d.java index 9671523..6844458 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec3d.java +++ b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec3d.java @@ -10,21 +10,26 @@ import speiger.src.coreengine.math.vector.ints.Vec3i; import speiger.src.coreengine.math.vector.longs.Vec3l; import speiger.src.coreengine.math.vector.shorts.Vec3s; -public interface Vec3d extends Vecd -{ +public interface Vec3d extends Vecd { public static final Vec3d ZERO = of(); public static final Vec3d MINUS_ONE = of(-1D); public static final Vec3d ONE = of(1D); - public static Vec3d mutable(){return new Vec3dMutable();} - public static Vec3d mutable(double value){return new Vec3dMutable(value);} - public static Vec3d mutable(double x, double y, double z){return new Vec3dMutable(x, y, z);} - public static Vec3d mutable(Vec3d vec){return mutable(vec.getX(), vec.getY(), vec.getZ());} + public static Vec3d mutable() { return new Vec3dMutable(); } - public static Vec3d of(){return new Vec3dImmutable();} - public static Vec3d of(double value){return new Vec3dImmutable(value);} - public static Vec3d of(double x, double y, double z){return new Vec3dImmutable(x, y, z);} - public static Vec3d of(Vec3d vec){return of(vec.getX(), vec.getY(), vec.getZ());} + public static Vec3d mutable(double value) { return new Vec3dMutable(value); } + + public static Vec3d mutable(double x, double y, double z) { return new Vec3dMutable(x, y, z); } + + public static Vec3d mutable(Vec3d vec) { return mutable(vec.getX(), vec.getY(), vec.getZ()); } + + public static Vec3d of() { return new Vec3dImmutable(); } + + public static Vec3d of(double value) { return new Vec3dImmutable(value); } + + public static Vec3d of(double x, double y, double z) { return new Vec3dImmutable(x, y, z); } + + public static Vec3d of(Vec3d vec) { return of(vec.getX(), vec.getY(), vec.getZ()); } public double getX(); public double getY(); @@ -32,127 +37,209 @@ public interface Vec3d extends Vecd public Vec3d setX(double x); public Vec3d setY(double y); public Vec3d setZ(double z); + @Override - public default double[] asArray(){return new double[]{getX(), getY(), getZ()};} + public default double[] asArray() { return new double[] {getX(), getY(), getZ()}; } @Override public Vec3d copy(); + @Override - public default Vec3d abs(){return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ()));} + public default Vec3d abs() { return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ())); } + @Override - public default Vec3d negate(){return set(0D, 0D, 0D);} + public default Vec3d negate() { return set(0D, 0D, 0D); } + @Override - public default Vec3d invert(){return set(-getX(), -getY(), -getZ());} - public default Vec3d normalize() - { + public default Vec3d invert() { return set(-getX(), -getY(), -getZ()); } + + public default Vec3d normalize() { double l = length(); return l == 0D ? this : multiply(1.0D / l); } - @Override - public default Vec3d add(double value){return add(value, value, value);} - public default Vec3d add(Vec3d value){return add(value.getX(), value.getY(), value.getZ());} - public default Vec3d add(double x, double y, double z){return set(getX() + x, getY() + y, getZ() + z);} - - @Override - public default Vec3d sub(double value){return sub(value, value, value);} - public default Vec3d sub(Vec3d value){return sub(value.getX(), value.getY(), value.getZ());} - public default Vec3d sub(double x, double y, double z){return set(getX() - x, getY() - y, getZ() - z);} @Override - public default Vec3d multiply(double value){return multiply(value, value, value);} - public default Vec3d multiply(Vec3d value){return multiply(value.getX(), value.getY(), value.getZ());} - public default Vec3d multiply(double x, double y, double z){return set(getX() * x, getY() * y, getZ() * z);} - - @Override - public default Vec3d devide(double value){return devide(value, value, value);} - public default Vec3d devide(Vec3d value){return devide(value.getX(), value.getY(), value.getZ());} - public default Vec3d devide(double x, double y, double z){return set(getX() / x, getY() / y, getZ() / z);} + public default Vec3d add(double value) { return add(value, value, value); } + + public default Vec3d add(Vec3d value) { return add(value.getX(), value.getY(), value.getZ()); } + + public default Vec3d add(double x, double y, double z) { + return set(getX() + x, getY() + y, getZ() + z); + } @Override - public default Vec3d set(double value){return set(value, value, value);} - public default Vec3d set(Vec3d value){return set(value.getX(), value.getY(), value.getZ());} + public default Vec3d sub(double value) { return sub(value, value, value); } + + public default Vec3d sub(Vec3d value) { return sub(value.getX(), value.getY(), value.getZ()); } + + public default Vec3d sub(double x, double y, double z) { + return set(getX() - x, getY() - y, getZ() - z); + } + + @Override + public default Vec3d multiply(double value) { return multiply(value, value, value); } + + public default Vec3d multiply(Vec3d value) { + return multiply(value.getX(), value.getY(), value.getZ()); + } + + public default Vec3d multiply(double x, double y, double z) { + return set(getX() * x, getY() * y, getZ() * z); + } + + @Override + public default Vec3d devide(double value) { return devide(value, value, value); } + + public default Vec3d devide(Vec3d value) { + return devide(value.getX(), value.getY(), value.getZ()); + } + + public default Vec3d devide(double x, double y, double z) { + return set(getX() / x, getY() / y, getZ() / z); + } + + @Override + public default Vec3d set(double value) { return set(value, value, value); } + + public default Vec3d set(Vec3d value) { return set(value.getX(), value.getY(), value.getZ()); } + public Vec3d set(double x, double y, double z); - public default double distanceTo(Vec3d value){return distanceTo(value.getX(), value.getY(), value.getZ());} - public default double distanceTo(double x, double y, double z){return Math.sqrt(distanceToSquared(x, y, z));} + public default double distanceTo(Vec3d value) { + return distanceTo(value.getX(), value.getY(), value.getZ()); + } - public default double distanceToSquared(Vec3d value){return distanceToSquared(value.getX(), value.getY(), value.getZ());} - public default double distanceToSquared(double x, double y, double z) - { + public default double distanceTo(double x, double y, double z) { + return Math.sqrt(distanceToSquared(x, y, z)); + } + + public default double distanceToSquared(Vec3d value) { + return distanceToSquared(value.getX(), value.getY(), value.getZ()); + } + + public default double distanceToSquared(double x, double y, double z) { double xPos = getX() - x; double yPos = getY() - y; double zPos = getZ() - z; return (xPos * xPos) + (yPos * yPos) + (zPos * zPos); } + @Override - public default double lengthSquared() {return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ());} + public default double lengthSquared() { + return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()); + } - public default double dotProduct(Vec3d value){return dotProduct(value.getX(), value.getY(), value.getZ());} - public default double dotProduct(double x, double y, double z){return (getX() * x) + (getY() * y) + (getZ() * z);} + public default double dotProduct(Vec3d value) { + return dotProduct(value.getX(), value.getY(), value.getZ()); + } - public default Vec3d lerp(Vec3d value, float progress, Vec3d result){return lerp(value.getX(), value.getY(), value.getZ(), progress, result);} - public default Vec3d lerp(double x, double y, double z, float progress, Vec3d result){return result.set(MathUtils.lerp(getX(), x, progress), MathUtils.lerp(getY(), y, progress), MathUtils.lerp(getZ(), z, progress));} + public default double dotProduct(double x, double y, double z) { + return (getX() * x) + (getY() * y) + (getZ() * z); + } - public default double angle(Vec3d value){return angle(value.getX(), value.getY(), value.getZ());} - public default double angle(double x, double y, double z){return Math.acos(MathUtils.clamp(-1, 1, angleCos(x, y, z)));} + public default Vec3d lerp(Vec3d value, float progress, Vec3d result) { + return lerp(value.getX(), value.getY(), value.getZ(), progress, result); + } - public default double angleCos(Vec3d value){return angleCos(value.getX(), value.getY(), value.getZ());} - public default double angleCos(double x, double y, double z) - { + public default Vec3d lerp(double x, double y, double z, float progress, Vec3d result) { + return result.set(MathUtils.lerp(getX(), x, progress), MathUtils.lerp(getY(), y, progress), MathUtils.lerp(getZ(), z, progress)); + } + + public default double angle(Vec3d value) { + return angle(value.getX(), value.getY(), value.getZ()); + } + + public default double angle(double x, double y, double z) { + return Math.acos(MathUtils.clamp(-1, 1, angleCos(x, y, z))); + } + + public default double angleCos(Vec3d value) { + return angleCos(value.getX(), value.getY(), value.getZ()); + } + + public default double angleCos(double x, double y, double z) { double myLength = (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()); double otherLength = (x * x) + (y * y) + (z * z); double dot = (getX() * x) + (getY() * y) + (getZ() * z); return dot / (Math.sqrt(myLength * otherLength)); } - public default Vec3d crossProduct(Vec3d value){return crossProduct(value.getX(), value.getY(), value.getZ(), this);} - public default Vec3d crossProduct(Vec3d value, Vec3d result){return crossProduct(value.getX(), value.getY(), value.getZ(), result);} - public default Vec3d crossProduct(double x, double y, double z){return crossProduct(x, y, z, this);} - public default Vec3d crossProduct(double x, double y, double z, Vec3d result){return result.set((getY() * z) - (getZ() * y), (getZ() * x) - (getX() * z), (getX() * y) - (getY() * x));} + public default Vec3d crossProduct(Vec3d value) { + return crossProduct(value.getX(), value.getY(), value.getZ(), this); + } - public default Vec3d reflect(Vec3d value){return reflect(value.getX(), value.getY(), value.getZ(), this);} - public default Vec3d reflect(Vec3d value, Vec3d result){return reflect(value.getX(), value.getY(), value.getZ(), result);} - public default Vec3d reflect(double x, double y, double z){return reflect(x, y, z, this);} - public default Vec3d reflect(double x, double y, double z, Vec3d result) - { + public default Vec3d crossProduct(Vec3d value, Vec3d result) { + return crossProduct(value.getX(), value.getY(), value.getZ(), result); + } + + public default Vec3d crossProduct(double x, double y, double z) { + return crossProduct(x, y, z, this); + } + + public default Vec3d crossProduct(double x, double y, double z, Vec3d result) { + return result.set((getY() * z) - (getZ() * y), (getZ() * x) - (getX() * z), (getX() * y) - (getY() * x)); + } + + public default Vec3d reflect(Vec3d value) { + return reflect(value.getX(), value.getY(), value.getZ(), this); + } + + public default Vec3d reflect(Vec3d value, Vec3d result) { + return reflect(value.getX(), value.getY(), value.getZ(), result); + } + + public default Vec3d reflect(double x, double y, double z) { return reflect(x, y, z, this); } + + public default Vec3d reflect(double x, double y, double z, Vec3d result) { double dot = dotProduct(x, y, z) * 2D; return result.set(getX() - dot * x, getY() - dot * y, getZ() - dot * z); } - public default Vec3d rotate(double angle, Vec3d axis){return rotate(angle, axis.getX(), axis.getY(), axis.getZ());} - public default Vec3d rotate(double angle, Vec3d axis, Vec3d result){return rotate(angle, axis.getX(), axis.getY(), axis.getZ(), result);} - public default Vec3d rotate(double angle, double x, double y, double z){return rotate(angle, x, y, z, this);} - public default Vec3d rotate(double angle, double x, double y, double z, Vec3d result) - { + public default Vec3d rotate(double angle, Vec3d axis) { + return rotate(angle, axis.getX(), axis.getY(), axis.getZ()); + } + + public default Vec3d rotate(double angle, Vec3d axis, Vec3d result) { + return rotate(angle, axis.getX(), axis.getY(), axis.getZ(), result); + } + + public default Vec3d rotate(double angle, double x, double y, double z) { + return rotate(angle, x, y, z, this); + } + + public default Vec3d rotate(double angle, double x, double y, double z, Vec3d result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double dot = dotProduct(x, y, z); double xPos = x * dot * (1D - cos) + (getX() * cos) + (-z * getY() + y * getZ()) * sin; double yPos = y * dot * (1D - cos) + (getY() * cos) + (z * getX() - x * getZ()) * sin; - double zPos = z * dot * (1D - cos) + (getZ() * cos) + (-y * getX() + x * getY()) * sin; + double zPos = z * dot * (1D - cos) + (getZ() * cos) + (-y * getX() + x * getY()) * sin; return result.set(xPos, yPos, zPos); } - public default Vec3d rotateX(double angle){return rotateX(angle, this);} - public default Vec3d rotateX(double angle, Vec3d result) - { + + public default Vec3d rotateX(double angle) { return rotateX(angle, this); } + + public default Vec3d rotateX(double angle, Vec3d result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double y = getY() * cos + getZ() * sin; double z = getZ() * cos - getY() * sin; return result.set(getX(), y, z); } - public default Vec3d rotateY(double angle){return rotateY(angle, this);} - public default Vec3d rotateY(double angle, Vec3d result) - { + + public default Vec3d rotateY(double angle) { return rotateY(angle, this); } + + public default Vec3d rotateY(double angle, Vec3d result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double x = getX() * cos + getZ() * sin; double z = getZ() * cos - getX() * sin; return result.set(x, getY(), z); } - public default Vec3d rotateZ(double angle){return rotateZ(angle, this);} - public default Vec3d rotateZ(double angle, Vec3d result) - { + + public default Vec3d rotateZ(double angle) { return rotateZ(angle, this); } + + public default Vec3d rotateZ(double angle, Vec3d result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double x = cos * getX() - sin * getY(); @@ -160,82 +247,129 @@ public interface Vec3d extends Vecd return result.set(x, y, getZ()); } - public default Vec3d smoothStep(Vec3d value, float progress, Vec3d result){return smoothStep(value.getX(), value.getY(), value.getZ(), progress, result);} - public default Vec3d smoothStep(double x, double y, double z, float progress, Vec3d result) - { - double t2 = progress * progress; - double t3 = t2 * progress; - double xPos = ((getX() + getX() - x - x) * t3 + (3.0D * x - 3.0D * getX()) * t2 + getX() * progress + getX()); - double yPos = ((getY() + getY() - y - y) * t3 + (3.0D * y - 3.0D * getY()) * t2 + getY() * progress + getY()); - double zPos = ((getZ() + getZ() - z - z) * t3 + (3.0D * z - 3.0D * getZ()) * t2 + getZ() * progress + getZ()); + public default Vec3d smoothStep(Vec3d value, float progress, Vec3d result) { + return smoothStep(value.getX(), value.getY(), value.getZ(), progress, result); + } + + public default Vec3d smoothStep(double x, double y, double z, float progress, Vec3d result) { + double t2 = progress * progress; + double t3 = t2 * progress; + double xPos = ((getX() + getX() - x - x) * t3 + (3.0D * x - 3.0D * getX()) * t2 + getX() * progress + getX()); + double yPos = ((getY() + getY() - y - y) * t3 + (3.0D * y - 3.0D * getY()) * t2 + getY() * progress + getY()); + double zPos = ((getZ() + getZ() - z - z) * t3 + (3.0D * z - 3.0D * getZ()) * t2 + getZ() * progress + getZ()); return result.set(xPos, yPos, zPos); } - - public default Vec3d min(Vec3d other) {return min(other, this);} - public default Vec3d min(Vec3d other, Vec3d result){return min(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3d min(double x, double y, double z) {return min(x, y, z, this);} - public default Vec3d min(double x, double y, double z, Vec3d result){return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z));} - public default Vec3d max(Vec3d other) {return max(other, this);} - public default Vec3d max(Vec3d other, Vec3d result){return max(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3d max(double x, double y, double z) {return max(x, y, z, this);} - public default Vec3d max(double x, double y, double z, Vec3d result){return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z));} + public default Vec3d min(Vec3d other) { return min(other, this); } - public default Vec3d difference(Vec3d other) {return difference(other, this);} - public default Vec3d difference(Vec3d other, Vec3d result){return difference(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3d difference(double x, double y, double z) {return difference(x, y, z, this);} - public default Vec3d difference(double x, double y, double z, Vec3d result){return result.set(getX() - x, getY() - y, getZ() - z);} + public default Vec3d min(Vec3d other, Vec3d result) { + return min(other.getX(), other.getY(), other.getZ(), result); + } + + public default Vec3d min(double x, double y, double z) { return min(x, y, z, this); } + + public default Vec3d min(double x, double y, double z, Vec3d result) { + return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z)); + } + + public default Vec3d max(Vec3d other) { return max(other, this); } + + public default Vec3d max(Vec3d other, Vec3d result) { + return max(other.getX(), other.getY(), other.getZ(), result); + } + + public default Vec3d max(double x, double y, double z) { return max(x, y, z, this); } + + public default Vec3d max(double x, double y, double z, Vec3d result) { + return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z)); + } + + public default Vec3d difference(Vec3d other) { return difference(other, this); } + + public default Vec3d difference(Vec3d other, Vec3d result) { + return difference(other.getX(), other.getY(), other.getZ(), result); + } + + public default Vec3d difference(double x, double y, double z) { + return difference(x, y, z, this); + } + + public default Vec3d difference(double x, double y, double z, Vec3d result) { + return result.set(getX() - x, getY() - y, getZ() - z); + } @Override - public default Vec3d clamp(double min, double max){return clamp(min, max, ALL);} - public default Vec3d clamp(double min, double max, Vec3d result){return clamp(min, max, result, ALL);} - @Override - public default Vec3d clamp(double min, double max, int filter){return clamp(min, max, this, filter);} - public default Vec3d clamp(double min, double max, Vec3d result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()));} + public default Vec3d clamp(double min, double max) { return clamp(min, max, ALL); } + + public default Vec3d clamp(double min, double max, Vec3d result) { + return clamp(min, max, result, ALL); + } @Override - public default Vec3d store(ByteBuffer buffer) - { + public default Vec3d clamp(double min, double max, int filter) { + return clamp(min, max, this, filter); + } + + public default Vec3d clamp(double min, double max, Vec3d result, int filter) { + return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ())); + } + + @Override + public default Vec3d store(ByteBuffer buffer) { buffer.putDouble(getX()).putDouble(getY()).putDouble(getZ()); return this; } @Override - public default Vec3d load(ByteBuffer buffer) - { + public default Vec3d load(ByteBuffer buffer) { return set(buffer.getDouble(), buffer.getDouble(), buffer.getDouble()); } @Override - public default Vec3d store(DoubleBuffer buffer) - { + public default Vec3d store(DoubleBuffer buffer) { buffer.put(getX()).put(getY()).put(getZ()); return this; } @Override - public default Vec3d load(DoubleBuffer buffer) - { + public default Vec3d load(DoubleBuffer buffer) { return set(buffer.get(), buffer.get(), buffer.get()); } @Override - public default Vec3b asByte(){return isMutable() ? Vec3b.mutable((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ())) : Vec3b.of((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ()));} - @Override - public default Vec3s asShort(){return isMutable() ? Vec3s.mutable((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ())) : Vec3s.of((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ()));} - @Override - public default Vec3i asInt(){return isMutable() ? Vec3i.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ())) : Vec3i.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()));} - @Override - public default Vec3l asLong() {return isMutable() ? Vec3l.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ())) : Vec3l.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()));} - @Override - public default Vec3f asFloat(){return isMutable() ? Vec3f.mutable((float)getX(), (float)getY(), (float)getZ()) : Vec3f.of((float)getX(), (float)getY(), (float)getZ());} + public default Vec3b asByte() { + return isMutable() ? Vec3b.mutable((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ())) : Vec3b.of((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ())); + } @Override - public default Vec3d asMutable(){return isMutable() ? this : mutable(this);} + public default Vec3s asShort() { + return isMutable() ? Vec3s.mutable((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ())) : Vec3s.of((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ())); + } + @Override - public default Vec3d asImmutable(){return isMutable() ? of(this) : this;} + public default Vec3i asInt() { + return isMutable() ? Vec3i.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ())) : Vec3i.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ())); + } + @Override - public default Vec3d copyAsMutable(){return mutable(this);} + public default Vec3l asLong() { + return isMutable() ? Vec3l.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ())) : Vec3l.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ())); + } + @Override - public default Vec3d copyAsImmutable(){return of(this);} + public default Vec3f asFloat() { + return isMutable() ? Vec3f.mutable((float)getX(), (float)getY(), (float)getZ()) : Vec3f.of((float)getX(), (float)getY(), (float)getZ()); + } + + @Override + public default Vec3d asMutable() { return isMutable() ? this : mutable(this); } + + @Override + public default Vec3d asImmutable() { return isMutable() ? of(this) : this; } + + @Override + public default Vec3d copyAsMutable() { return mutable(this); } + + @Override + public default Vec3d copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec3dImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec3dImmutable.java index bf4a24d..742e400 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec3dImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec3dImmutable.java @@ -2,107 +2,59 @@ package speiger.src.coreengine.math.vector.doubles; import java.util.Objects; -public class Vec3dImmutable implements Vec3d -{ +public class Vec3dImmutable implements Vec3d { final double x; final double y; final double z; - public Vec3dImmutable() - { + public Vec3dImmutable() { x = 0; y = 0; z = 0; } - public Vec3dImmutable(double value) - { + public Vec3dImmutable(double value) { x = value; y = value; z = value; } - public Vec3dImmutable(double x, double y, double z) - { + public Vec3dImmutable(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public double getX() - { - return x; - } + public boolean isMutable() { return false; } + @Override + public double getX() { return x; } + @Override + public double getY() { return y; } + @Override + public double getZ() { return z; } + @Override + public Vec3d setX(double x) { return this.x == x ? this : Vec3d.of(x, y, z); } + @Override + public Vec3d setY(double y) { return this.y == y ? this : Vec3d.of(x, y, z); } + @Override + public Vec3d setZ(double z) { return this.z == z ? this : Vec3d.of(x, y, z); } + @Override + public Vec3d copy() { return Vec3d.of(this); } + @Override + public Vec3d set(double x, double y, double z) { return this.x == x && this.y == y && this.z == z ? this : Vec3d.of(x, y, z); } + @Override + public int hashCode() { return Objects.hash(x, y, z); } @Override - public double getY() - { - return y; - } - - @Override - public double getZ() - { - return z; - } - - @Override - public Vec3d setX(double x) - { - return this.x == x ? this : Vec3d.of(x, y, z); - } - - @Override - public Vec3d setY(double y) - { - return this.y == y ? this : Vec3d.of(x, y, z); - } - - @Override - public Vec3d setZ(double z) - { - return this.z == z ? this : Vec3d.of(x, y, z); - } - - @Override - public Vec3d copy() - { - return Vec3d.of(this); - } - - @Override - public Vec3d set(double x, double y, double z) - { - return this.x == x && this.y == y && this.z == z ? this : Vec3d.of(x, y, z); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y, z); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec3d) - { + public boolean equals(Object obj) { + if(obj instanceof Vec3d) { Vec3d vec = (Vec3d)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z; } return false; } - + @Override - public String toString() - { - return "Vec3d[x="+x+", y="+y+", z="+z+"]"; - } + public String toString() { return "Vec3d[x="+x+", y="+y+", z="+z+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec3dMutable.java b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec3dMutable.java index 580ad99..96edca5 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec3dMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec3dMutable.java @@ -2,87 +2,61 @@ package speiger.src.coreengine.math.vector.doubles; import java.util.Objects; -public class Vec3dMutable implements Vec3d -{ +public class Vec3dMutable implements Vec3d { double x; double y; double z; - public Vec3dMutable() - { + public Vec3dMutable() { x = 0; y = 0; z = 0; } - public Vec3dMutable(double value) - { + public Vec3dMutable(double value) { x = value; y = value; z = value; } - public Vec3dMutable(double x, double y, double z) - { + public Vec3dMutable(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } @Override - public boolean isMutable() - { - return true; - } + public boolean isMutable() { return true; } + @Override + public double getX() { return x; } + @Override + public double getY() { return y; } + @Override + public double getZ() { return z; } @Override - public double getX() - { - return x; - } - - @Override - public double getY() - { - return y; - } - - @Override - public double getZ() - { - return z; - } - - @Override - public Vec3d setX(double x) - { + public Vec3d setX(double x) { this.x = x; return this; } @Override - public Vec3d setY(double y) - { + public Vec3d setY(double y) { this.y = y; return this; } @Override - public Vec3d setZ(double z) - { + public Vec3d setZ(double z) { this.z = z; return this; } @Override - public Vec3d copy() - { - return Vec3d.mutable(this); - } + public Vec3d copy() { return Vec3d.mutable(this); } @Override - public Vec3d set(double x, double y, double z) - { + public Vec3d set(double x, double y, double z) { this.x = x; this.y = y; this.z = z; @@ -90,25 +64,17 @@ public class Vec3dMutable implements Vec3d } @Override - public int hashCode() - { - return Objects.hash(x, y, z); - } - + public int hashCode() { return Objects.hash(x, y, z); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec3d) - { + public boolean equals(Object obj) { + if(obj instanceof Vec3d) { Vec3d vec = (Vec3d)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z; } return false; } - + @Override - public String toString() - { - return "Vec3d[x="+x+", y="+y+", z="+z+"]"; - } + public String toString() { return "Vec3d[x="+x+", y="+y+", z="+z+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec4d.java b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec4d.java index 308e29e..71be7ba 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec4d.java +++ b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec4d.java @@ -10,21 +10,19 @@ import speiger.src.coreengine.math.vector.ints.Vec4i; import speiger.src.coreengine.math.vector.longs.Vec4l; import speiger.src.coreengine.math.vector.shorts.Vec4s; -public interface Vec4d extends Vecd -{ +public interface Vec4d extends Vecd { public static final Vec4d ZERO = of(); public static final Vec4d MINUS_ONE = of(-1D); public static final Vec4d ONE = of(1D); - public static Vec4d mutable(){return new Vec4dMutable();} - public static Vec4d mutable(double value){return new Vec4dMutable(value);} - public static Vec4d mutable(double x, double y, double z, double w){return new Vec4dMutable(x, y, z, w);} - public static Vec4d mutable(Vec4d vec){return mutable(vec.getX(), vec.getY(), vec.getZ(), vec.getW());} - - public static Vec4d of(){return new Vec4dImmutable();} - public static Vec4d of(double value){return new Vec4dImmutable(value);} - public static Vec4d of(double x, double y, double z, double w){return new Vec4dImmutable(x, y, z, w);} - public static Vec4d of(Vec4d vec){return of(vec.getX(), vec.getY(), vec.getZ(), vec.getW());} + public static Vec4d mutable() { return new Vec4dMutable(); } + public static Vec4d mutable(double value) { return new Vec4dMutable(value); } + public static Vec4d mutable(double x, double y, double z, double w) { return new Vec4dMutable(x, y, z, w); } + public static Vec4d mutable(Vec4d vec) { return mutable(vec.getX(), vec.getY(), vec.getZ(), vec.getW()); } + public static Vec4d of() { return new Vec4dImmutable(); } + public static Vec4d of(double value) { return new Vec4dImmutable(value); } + public static Vec4d of(double x, double y, double z, double w) { return new Vec4dImmutable(x, y, z, w); } + public static Vec4d of(Vec4d vec) { return of(vec.getX(), vec.getY(), vec.getZ(), vec.getW()); } public double getX(); public double getY(); @@ -34,114 +32,100 @@ public interface Vec4d extends Vecd public Vec4d setY(double y); public Vec4d setZ(double z); public Vec4d setW(double w); + @Override - public default double[] asArray(){return new double[]{getX(), getY(), getZ(), getW()};} + public default double[] asArray() { return new double[] {getX(), getY(), getZ(), getW()}; } @Override public Vec4d copy(); @Override - public default Vec4d abs(){return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ()), Math.abs(getW()));} + public default Vec4d abs() { return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ()), Math.abs(getW())); } @Override - public default Vec4d negate(){return set(0D, 0D, 0D, 0D);} + public default Vec4d negate() { return set(0D, 0D, 0D, 0D); } @Override - public default Vec4d invert(){return set(-getX(), -getY(), -getZ(), -getW());} - public default Vec4d normalize() - { + public default Vec4d invert() { return set(-getX(), -getY(), -getZ(), -getW()); } + public default Vec4d normalize() { double l = length(); return l == 0D ? this : multiply(1.0D / l); } - - public default Vec4d normalize3D() - { + public default Vec4d normalize3D() { double value = (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()); return value == 0D ? this : multiply(1D / value); } - @Override - public default Vec4d add(double value){return add(value, value, value, value);} - public default Vec4d add(Vec4d value){return add(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4d add(double x, double y, double z, double w){return set(getX() + x, getY() + y, getZ() + z, getW() + w);} - + public default Vec4d add(double value) { return add(value, value, value, value); } + public default Vec4d add(Vec4d value) { return add(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4d add(double x, double y, double z, double w) { return set(getX() + x, getY() + y, getZ() + z, getW() + w); } @Override - public default Vec4d sub(double value){return sub(value, value, value, value);} - public default Vec4d sub(Vec4d value){return sub(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4d sub(double x, double y, double z, double w){return set(getX() - x, getY() - y, getZ() - z, getW() - w);} - + public default Vec4d sub(double value) { return sub(value, value, value, value); } + public default Vec4d sub(Vec4d value) { return sub(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4d sub(double x, double y, double z, double w) { return set(getX() - x, getY() - y, getZ() - z, getW() - w); } @Override - public default Vec4d multiply(double value){return multiply(value, value, value, value);} - public default Vec4d multiply(Vec4d value){return multiply(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4d multiply(double x, double y, double z, double w){return set(getX() * x, getY() * y, getZ() * z, getW() * w);} - + public default Vec4d multiply(double value) { return multiply(value, value, value, value); } + public default Vec4d multiply(Vec4d value) { return multiply(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4d multiply(double x, double y, double z, double w) { return set(getX() * x, getY() * y, getZ() * z, getW() * w); } @Override - public default Vec4d devide(double value){return devide(value, value, value, value);} - public default Vec4d devide(Vec4d value){return devide(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4d devide(double x, double y, double z, double w){return set(getX() / x, getY() / y, getZ() / z, getW() / w);} - + public default Vec4d devide(double value) { return devide(value, value, value, value); } + public default Vec4d devide(Vec4d value) { return devide(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4d devide(double x, double y, double z, double w) { return set(getX() / x, getY() / y, getZ() / z, getW() / w); } @Override - public default Vec4d set(double value){return set(value, value, value, value);} - public default Vec4d set(Vec4d value){return set(value.getX(), value.getY(), value.getZ(), value.getW());} + public default Vec4d set(double value) { return set(value, value, value, value); } + public default Vec4d set(Vec4d value) { return set(value.getX(), value.getY(), value.getZ(), value.getW()); } public Vec4d set(double x, double y, double z, double w); - public default double distanceTo(Vec4d value){return distanceTo(value.getX(), value.getY(), value.getZ(), value.getW());} - public default double distanceTo(double x, double y, double z, double w){return Math.sqrt(distanceTo(x, y, z, w));} - - public default double distanceToSquared(Vec4d value){return distanceToSquared(value.getX(), value.getY(), value.getZ(), value.getW());} - public default double distanceToSquared(double x, double y, double z, double w) - { + public default double distanceTo(Vec4d value) { return distanceTo(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default double distanceTo(double x, double y, double z, double w) { return Math.sqrt(distanceTo(x, y, z, w)); } + public default double distanceToSquared(Vec4d value) { return distanceToSquared(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default double distanceToSquared(double x, double y, double z, double w) { double xPos = getX() - x; double yPos = getY() - y; double zPos = getZ() - z; double wPos = getW() - w; return (xPos * xPos) + (yPos * yPos) + (zPos * zPos) + (wPos * wPos); } + @Override - public default double lengthSquared() {return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()) + (getW() * getW());} - - public default double dotProduct(Vec4d value){return dotProduct(value.getX(), value.getY(), value.getZ(), value.getW());} - public default double dotProduct(double x, double y, double z, double w){return (getX() * x) + (getY() * y) + (getZ() * z) + (getW() * w);}; - - public default Vec4d lerp(Vec4d value, float progress, Vec4d result){return lerp(value.getX(), value.getY(), value.getZ(), value.getW(), progress, result);} - public default Vec4d lerp(double x, double y, double z, double w, float progress, Vec4d result){return result.set(MathUtils.lerp(getX(), x, progress), MathUtils.lerp(getY(), y, progress), MathUtils.lerp(getZ(), z, progress), MathUtils.lerp(getW(), w, progress));} - - public default double angle(Vec4d value){return angle(value.getX(), value.getY(), value.getZ(), value.getW());} - public default double angle(double x, double y, double z, double w){return Math.acos(MathUtils.clamp(-1D, 1D, angleCos(x, y, z, w)));} - - public default double angleCos(Vec4d value){return angleCos(value.getX(), value.getY(), value.getZ(), value.getW());} - public default double angleCos(double x, double y, double z, double w){return dotProduct(x, y, z, w) / Math.sqrt(lengthSquared() * (x * x) + (y * y) + (z * z) + (w * w));} - - public default Vec4d rotate(double angle, Vec4d axis){return rotate(angle, axis.getX(), axis.getY(), axis.getZ(), axis.getW());} - public default Vec4d rotate(double angle, Vec4d axis, Vec4d result){return rotate(angle, axis.getX(), axis.getY(), axis.getZ(), axis.getW(), result);} - public default Vec4d rotate(double angle, double x, double y, double z, double w){return rotate(angle, x, y, z, w, this);} - public default Vec4d rotate(double angle, double x, double y, double z, double w, Vec4d result) - { + public default double lengthSquared() { return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()) + (getW() * getW()); } + public default double dotProduct(Vec4d value) { return dotProduct(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default double dotProduct(double x, double y, double z, double w) { return (getX() * x) + (getY() * y) + (getZ() * z) + (getW() * w); }; + public default Vec4d lerp(Vec4d value, float progress, Vec4d result) { return lerp(value.getX(), value.getY(), value.getZ(), value.getW(), progress, result); } + public default Vec4d lerp(double x, double y, double z, double w, float progress, Vec4d result) { return result.set(MathUtils.lerp(getX(), x, progress), MathUtils.lerp(getY(), y, progress), MathUtils.lerp(getZ(), z, progress), MathUtils.lerp(getW(), w, progress)); } + public default double angle(Vec4d value) { return angle(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default double angle(double x, double y, double z, double w) { return Math.acos(MathUtils.clamp(-1D, 1D, angleCos(x, y, z, w))); } + public default double angleCos(Vec4d value) { return angleCos(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default double angleCos(double x, double y, double z, double w) { return dotProduct(x, y, z, w) / Math.sqrt(lengthSquared() * (x * x) + (y * y) + (z * z) + (w * w)); } + public default Vec4d rotate(double angle, Vec4d axis) { return rotate(angle, axis.getX(), axis.getY(), axis.getZ(), axis.getW()); } + public default Vec4d rotate(double angle, Vec4d axis, Vec4d result) { return rotate(angle, axis.getX(), axis.getY(), axis.getZ(), axis.getW(), result); } + public default Vec4d rotate(double angle, double x, double y, double z, double w) { return rotate(angle, x, y, z, w, this); } + public default Vec4d rotate(double angle, double x, double y, double z, double w, Vec4d result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double dot = dotProduct(x, y, z, w); double xPos = x * dot * (1D - cos) + (getX() * cos) + (-z * getY() + y * getZ()) * sin; double yPos = y * dot * (1D - cos) + (getY() * cos) + (z * getX() - x * getZ()) * sin; - double zPos = z * dot * (1D - cos) + (getZ() * cos) + (-y * getX() + x * getY()) * sin; + double zPos = z * dot * (1D - cos) + (getZ() * cos) + (-y * getX() + x * getY()) * sin; return result.set(xPos, yPos, zPos, getW()); } - public default Vec4d rotateX(double angle){return rotateX(angle, this);} - public default Vec4d rotateX(double angle, Vec4d result) - { + + public default Vec4d rotateX(double angle) { return rotateX(angle, this); } + public default Vec4d rotateX(double angle, Vec4d result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double y = getY() * cos + getZ() * sin; double z = getZ() * cos - getY() * sin; return result.set(getX(), y, z, getW()); } - public default Vec4d rotateY(double angle){return rotateY(angle, this);} - public default Vec4d rotateY(double angle, Vec4d result) - { + + public default Vec4d rotateY(double angle) { return rotateY(angle, this); } + public default Vec4d rotateY(double angle, Vec4d result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double x = getX() * cos + getZ() * sin; double z = getZ() * cos - getX() * sin; return result.set(x, getY(), z, getW()); } - public default Vec4d rotateZ(double angle){return rotateZ(angle, this);} - public default Vec4d rotateZ(double angle, Vec4d result) - { + + public default Vec4d rotateZ(double angle) { return rotateZ(angle, this); } + public default Vec4d rotateZ(double angle, Vec4d result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double x = cos * getX() - sin * getY(); @@ -149,83 +133,69 @@ public interface Vec4d extends Vecd return result.set(x, y, getZ(), getW()); } - public default Vec4d smoothStep(Vec4d value, float progress, Vec4d result){return smoothStep(value.getX(), value.getY(), value.getZ(), value.getW(), progress, result);} - public default Vec4d smoothStep(double x, double y, double z, double w, float progress, Vec4d result) - { - double t2 = progress * progress; - double t3 = t2 * progress; - double xPos = ((getX() + getX() - x - x) * t3 + (3.0D * x - 3.0D * getX()) * t2 + getX() * progress + getX()); - double yPos = ((getY() + getY() - y - y) * t3 + (3.0D * y - 3.0D * getY()) * t2 + getY() * progress + getY()); - double zPos = ((getZ() + getZ() - z - z) * t3 + (3.0D * z - 3.0D * getZ()) * t2 + getZ() * progress + getZ()); - double wPos = ((getW() + getW() - w - w) * t3 + (3.0D * w - 3.0D * getW()) * t2 + getW() * progress + getW()); + public default Vec4d smoothStep(Vec4d value, float progress, Vec4d result) { return smoothStep(value.getX(), value.getY(), value.getZ(), value.getW(), progress, result); } + public default Vec4d smoothStep(double x, double y, double z, double w, float progress, Vec4d result) { + double t2 = progress * progress; + double t3 = t2 * progress; + double xPos = ((getX() + getX() - x - x) * t3 + (3.0D * x - 3.0D * getX()) * t2 + getX() * progress + getX()); + double yPos = ((getY() + getY() - y - y) * t3 + (3.0D * y - 3.0D * getY()) * t2 + getY() * progress + getY()); + double zPos = ((getZ() + getZ() - z - z) * t3 + (3.0D * z - 3.0D * getZ()) * t2 + getZ() * progress + getZ()); + double wPos = ((getW() + getW() - w - w) * t3 + (3.0D * w - 3.0D * getW()) * t2 + getW() * progress + getW()); return result.set(xPos, yPos, zPos, wPos); } - public default Vec4d min(Vec4d other) {return min(other, this);} - public default Vec4d min(Vec4d other, Vec4d result){return min(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4d min(double x, double y, double z, double w) {return min(x, y, z, w, this);} - public default Vec4d min(double x, double y, double z, double w, Vec4d result){return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z), Math.min(getW(), w));} - - public default Vec4d max(Vec4d other) {return max(other, this);} - public default Vec4d max(Vec4d other, Vec4d result){return max(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4d max(double x, double y, double z, double w) {return max(x, y, z, w, this);} - public default Vec4d max(double x, double y, double z, double w, Vec4d result){return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z), Math.max(getZ(), z));} - - public default Vec4d difference(Vec4d other) {return difference(other, this);} - public default Vec4d difference(Vec4d other, Vec4d result){return difference(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4d difference(double x, double y, double z, double w) {return difference(x, y, z, w, this);} - public default Vec4d difference(double x, double y, double z, double w, Vec4d result){return result.set(getX() - x, getY() - y, getZ() - z, getW() - w);} + public default Vec4d min(Vec4d other) { return min(other, this); } + public default Vec4d min(Vec4d other, Vec4d result) { return min(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4d min(double x, double y, double z, double w) { return min(x, y, z, w, this); } + public default Vec4d min(double x, double y, double z, double w, Vec4d result) { return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z), Math.min(getW(), w)); } + public default Vec4d max(Vec4d other) { return max(other, this); } + public default Vec4d max(Vec4d other, Vec4d result) { return max(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4d max(double x, double y, double z, double w) { return max(x, y, z, w, this); } + public default Vec4d max(double x, double y, double z, double w, Vec4d result) { return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z), Math.max(getZ(), z)); } + public default Vec4d difference(Vec4d other) { return difference(other, this); } + public default Vec4d difference(Vec4d other, Vec4d result) { return difference(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4d difference(double x, double y, double z, double w) { return difference(x, y, z, w, this); } + public default Vec4d difference(double x, double y, double z, double w, Vec4d result) { return result.set(getX() - x, getY() - y, getZ() - z, getW() - w); } + @Override + public default Vec4d clamp(double min, double max) { return clamp(min, max, ALL); } + public default Vec4d clamp(double min, double max, Vec4d result) { return clamp(min, max, result, ALL); } + @Override + public default Vec4d clamp(double min, double max, int filter) { return clamp(min, max, this, filter); } + public default Vec4d clamp(double min, double max, Vec4d result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()), (filter & W) == 0 ? getW() : MathUtils.clamp(min, max, getW())); } @Override - public default Vec4d clamp(double min, double max){return clamp(min, max, ALL);} - public default Vec4d clamp(double min, double max, Vec4d result){return clamp(min, max, result, ALL);} - @Override - public default Vec4d clamp(double min, double max, int filter){return clamp(min, max, this, filter);} - public default Vec4d clamp(double min, double max, Vec4d result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()), (filter & W) == 0 ? getW() : MathUtils.clamp(min, max, getW()));} - - @Override - public default Vec4d store(ByteBuffer buffer) - { + public default Vec4d store(ByteBuffer buffer) { buffer.putDouble(getX()).putDouble(getY()).putDouble(getZ()).putDouble(getW()); return this; } @Override - public default Vec4d load(ByteBuffer buffer) - { - return set(buffer.getDouble(), buffer.getDouble(), buffer.getDouble(), buffer.getDouble()); - } + public default Vec4d load(ByteBuffer buffer) { return set(buffer.getDouble(), buffer.getDouble(), buffer.getDouble(), buffer.getDouble()); } @Override - public default Vec4d store(DoubleBuffer buffer) - { + public default Vec4d store(DoubleBuffer buffer) { buffer.put(getX()).put(getY()).put(getZ()).put(getW()); return this; } @Override - public default Vec4d load(DoubleBuffer buffer) - { - return set(buffer.get(), buffer.get(), buffer.get(), buffer.get()); - } - + public default Vec4d load(DoubleBuffer buffer) { return set(buffer.get(), buffer.get(), buffer.get(), buffer.get()); } @Override - public default Vec4b asByte(){return isMutable() ? Vec4b.mutable((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ()), (byte)MathUtils.floor(getW())) : Vec4b.of((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ()), (byte)MathUtils.floor(getW()));} + public default Vec4b asByte() { return isMutable() ? Vec4b.mutable((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ()), (byte)MathUtils.floor(getW())) : Vec4b.of((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ()), (byte)MathUtils.floor(getW())); } @Override - public default Vec4s asShort(){return isMutable() ? Vec4s.mutable((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ()), (short)MathUtils.floor(getW())) : Vec4s.of((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ()), (short)MathUtils.floor(getW()));} + public default Vec4s asShort() { return isMutable() ? Vec4s.mutable((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ()), (short)MathUtils.floor(getW())) : Vec4s.of((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ()), (short)MathUtils.floor(getW())); } @Override - public default Vec4i asInt(){return isMutable() ? Vec4i.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW())) : Vec4i.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW()));} + public default Vec4i asInt() { return isMutable() ? Vec4i.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW())) : Vec4i.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW())); } @Override - public default Vec4l asLong() {return isMutable() ? Vec4l.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW())) : Vec4l.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW()));} + public default Vec4l asLong() { return isMutable() ? Vec4l.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW())) : Vec4l.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW())); } @Override - public default Vec4f asFloat(){return isMutable() ? Vec4f.mutable((float)getX(), (float)getY(), (float)getZ(), (float)getW()) : Vec4f.of((float)getX(), (float)getY(), (float)getZ(), (float)getW());} - + public default Vec4f asFloat() { return isMutable() ? Vec4f.mutable((float)getX(), (float)getY(), (float)getZ(), (float)getW()) : Vec4f.of((float)getX(), (float)getY(), (float)getZ(), (float)getW()); } @Override - public default Vec4d asMutable(){return isMutable() ? this : mutable(this);} + public default Vec4d asMutable() { return isMutable() ? this : mutable(this); } @Override - public default Vec4d asImmutable(){return isMutable() ? of(this) : this;} + public default Vec4d asImmutable() { return isMutable() ? of(this) : this; } @Override - public default Vec4d copyAsMutable(){return mutable(this);} + public default Vec4d copyAsMutable() { return mutable(this); } @Override - public default Vec4d copyAsImmutable(){return of(this);} + public default Vec4d copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec4dImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec4dImmutable.java index ab3ca95..a5b27b2 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec4dImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec4dImmutable.java @@ -2,123 +2,71 @@ package speiger.src.coreengine.math.vector.doubles; import java.util.Objects; -public class Vec4dImmutable implements Vec4d -{ +public class Vec4dImmutable implements Vec4d { final double x; final double y; final double z; final double w; - public Vec4dImmutable() - { + public Vec4dImmutable() { x = 0; y = 0; z = 0; w = 0; } - public Vec4dImmutable(double value) - { + public Vec4dImmutable(double value) { x = value; y = value; z = value; w = value; } - public Vec4dImmutable(double x, double y, double z, double w) - { + public Vec4dImmutable(double x, double y, double z, double w) { this.x = x; this.y = y; this.z = z; this.w = w; } - + @Override - public boolean isMutable() - { - return false; - } - + public boolean isMutable() { return false; } @Override - public double getX() - { - return x; - } - + public double getX() { return x; } @Override - public double getY() - { - return y; - } - + public double getY() { return y; } @Override - public double getZ() - { - return z; - } - + public double getZ() { return z; } @Override - public double getW() - { - return w; - } - + public double getW() { return w; } @Override - public Vec4d setX(double x) - { - return this.x == x ? this : Vec4d.of(x, y, z, w); - } - + public Vec4d setX(double x) { return this.x == x ? this : Vec4d.of(x, y, z, w); } @Override - public Vec4d setY(double y) - { - return this.y == y ? this : Vec4d.of(x, y, z, w); - } - + public Vec4d setY(double y) { return this.y == y ? this : Vec4d.of(x, y, z, w); } @Override - public Vec4d setZ(double z) - { - return this.z == z ? this : Vec4d.of(x, y, z, w); - } - + public Vec4d setZ(double z) { return this.z == z ? this : Vec4d.of(x, y, z, w); } @Override - public Vec4d setW(double w) - { - return this.w == w ? this : Vec4d.of(x, y, z, w); - } - + public Vec4d setW(double w) { return this.w == w ? this : Vec4d.of(x, y, z, w); } @Override - public Vec4d copy() - { - return Vec4d.of(this); - } - + public Vec4d copy() { return Vec4d.of(this); } + @Override - public Vec4d set(double x, double y, double z, double w) - { + public Vec4d set(double x, double y, double z, double w) { return this.x == x && this.y == y && this.z == z && this.w == w ? this : Vec4d.of(x, y, z, w); } @Override - public int hashCode() - { - return Objects.hash(x, y, z, w); - } - + public int hashCode() { return Objects.hash(x, y, z, w); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec4d) - { + public boolean equals(Object obj) { + if(obj instanceof Vec4d) { Vec4d vec = (Vec4d)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z && vec.getW() == w; } return false; } - + @Override - public String toString() - { - return "Vec4d[x="+x+", y="+y+", z="+z+", w="+w+"]"; - } + public String toString() { return "Vec4d[x="+x+", y="+y+", z="+z+", w="+w+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec4dMutable.java b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec4dMutable.java index ecf6d9d..daeeaf0 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec4dMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vec4dMutable.java @@ -2,100 +2,68 @@ package speiger.src.coreengine.math.vector.doubles; import java.util.Objects; -public class Vec4dMutable implements Vec4d -{ +public class Vec4dMutable implements Vec4d { double x; double y; double z; double w; - public Vec4dMutable() - { - } + public Vec4dMutable() {} - public Vec4dMutable(double value) - { + public Vec4dMutable(double value) { x = value; y = value; z = value; w = value; } - public Vec4dMutable(double x, double y, double z, double w) - { + public Vec4dMutable(double x, double y, double z, double w) { this.x = x; this.y = y; this.z = z; this.w = w; } - - @Override - public boolean isMutable() - { - return true; - } @Override - public double getX() - { - return x; - } + public boolean isMutable() { return true; } + @Override + public double getX() { return x; } + @Override + public double getY() { return y; } + @Override + public double getZ() { return z; } + @Override + public double getW() { return w; } @Override - public double getY() - { - return y; - } - - @Override - public double getZ() - { - return z; - } - - @Override - public double getW() - { - return w; - } - - @Override - public Vec4d setX(double x) - { + public Vec4d setX(double x) { this.x = x; return this; } @Override - public Vec4d setY(double y) - { + public Vec4d setY(double y) { this.y = y; return this; } @Override - public Vec4d setZ(double z) - { + public Vec4d setZ(double z) { this.z = z; return this; } @Override - public Vec4d setW(double w) - { + public Vec4d setW(double w) { this.w = w; return this; } @Override - public Vec4d copy() - { - return Vec4d.mutable(this); - } + public Vec4d copy() { return Vec4d.mutable(this); } @Override - public Vec4d set(double x, double y, double z, double w) - { + public Vec4d set(double x, double y, double z, double w) { this.x = x; this.y = y; this.z = z; @@ -104,16 +72,11 @@ public class Vec4dMutable implements Vec4d } @Override - public int hashCode() - { - return Objects.hash(x, y, z, w); - } + public int hashCode() { return Objects.hash(x, y, z, w); } @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec4d) - { + public boolean equals(Object obj) { + if(obj instanceof Vec4d) { Vec4d vec = (Vec4d)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z && vec.getW() == w; } @@ -121,8 +84,5 @@ public class Vec4dMutable implements Vec4d } @Override - public String toString() - { - return "Vec4d[x="+x+", y="+y+", z="+z+", w="+w+"]"; - } + public String toString() { return "Vec4d[x="+x+", y="+y+", z="+z+", w="+w+"]"; } } \ No newline at end of file diff --git a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vecd.java b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vecd.java index 25d9b86..172dafd 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/doubles/Vecd.java +++ b/src/main/java/speiger/src/coreengine/math/vector/doubles/Vecd.java @@ -9,8 +9,7 @@ import speiger.src.coreengine.math.vector.ints.Veci; import speiger.src.coreengine.math.vector.longs.Vecl; import speiger.src.coreengine.math.vector.shorts.Vecs; -public interface Vecd extends Vec -{ +public interface Vecd extends Vec { public Vecd set(double value); public Vecd add(double value); public Vecd sub(double value); @@ -19,12 +18,10 @@ public interface Vecd extends Vec public Vecd clamp(double min, double max); public Vecd clamp(double min, double max, int filter); public double lengthSquared(); - public default double length(){return Math.sqrt(lengthSquared());} - + public default double length() { return Math.sqrt(lengthSquared()); } public Vecd store(DoubleBuffer buffer); public Vecd load(DoubleBuffer buffer); public double[] asArray(); - public Vecb asByte(); public Vecs asShort(); public Veci asInt(); diff --git a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec2f.java b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec2f.java index eb7cf0a..8721796 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec2f.java +++ b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec2f.java @@ -10,178 +10,148 @@ import speiger.src.coreengine.math.vector.ints.Vec2i; import speiger.src.coreengine.math.vector.longs.Vec2l; import speiger.src.coreengine.math.vector.shorts.Vec2s; -public interface Vec2f extends Vecf -{ +public interface Vec2f extends Vecf { public static final Vec2f ZERO = of(); public static final Vec2f MINUS_ONE = of(-1F); public static final Vec2f ONE = of(1F); - public static Vec2f mutable(){return new Vec2fMutable();} - public static Vec2f mutable(float value){return new Vec2fMutable(value);} - public static Vec2f mutable(float x, float y){return new Vec2fMutable(x, y);} - public static Vec2f mutable(Vec2f value){return mutable(value.getX(), value.getY());} - - public static Vec2f of(){return new Vec2fImmutable();} - public static Vec2f of(float value){return new Vec2fImmutable(value);} - public static Vec2f of(float x, float y){return new Vec2fImmutable(x, y);} - public static Vec2f of(Vec2f value){return of(value.getX(), value.getY());} + public static Vec2f mutable() { return new Vec2fMutable(); } + public static Vec2f mutable(float value) { return new Vec2fMutable(value); } + public static Vec2f mutable(float x, float y) { return new Vec2fMutable(x, y); } + public static Vec2f mutable(Vec2f value) { return mutable(value.getX(), value.getY()); } + public static Vec2f of() { return new Vec2fImmutable(); } + public static Vec2f of(float value) { return new Vec2fImmutable(value); } + public static Vec2f of(float x, float y) { return new Vec2fImmutable(x, y); } + public static Vec2f of(Vec2f value) { return of(value.getX(), value.getY()); } public float getX(); public float getY(); public Vec2f setX(float x); public Vec2f setY(float y); + @Override - public default float[] asArray(){return new float[]{getX(), getY()};} + public default float[] asArray() { return new float[] {getX(), getY()}; } @Override public Vec2f copy(); @Override - public default Vec2f abs(){return set(Math.abs(getX()), Math.abs(getY()));} + public default Vec2f abs() { return set(Math.abs(getX()), Math.abs(getY())); } @Override - public default Vec2f negate(){return set(0F, 0F);} + public default Vec2f negate() { return set(0F, 0F); } @Override - public default Vec2f invert(){return set(-getX(), -getY());}; - public default Vec2f normalize() - { + public default Vec2f invert() { return set(-getX(), -getY()); }; + public default Vec2f normalize() { float l = length(); return l == 0F ? this : multiply(1F / l); } @Override - public default Vec2f add(float value) {return add(value, value);} - public default Vec2f add(Vec2f value) {return add(value.getX(), value.getY());} - public default Vec2f add(float x, float y) {return set(x + getX(), y + getY());} - + public default Vec2f add(float value) { return add(value, value); } + public default Vec2f add(Vec2f value) { return add(value.getX(), value.getY()); } + public default Vec2f add(float x, float y) { return set(x + getX(), y + getY()); } @Override - public default Vec2f sub(float value){return sub(value, value);} - public default Vec2f sub(Vec2f value){return sub(value.getX(), value.getY());} - public default Vec2f sub(float x, float y) {return set(getX() - x, getY() - y);} - + public default Vec2f sub(float value) { return sub(value, value); } + public default Vec2f sub(Vec2f value) { return sub(value.getX(), value.getY()); } + public default Vec2f sub(float x, float y) { return set(getX() - x, getY() - y); } @Override - public default Vec2f multiply(float value){return multiply(value, value);} - public default Vec2f multiply(Vec2f value){return multiply(value.getX(), value.getY());} - public default Vec2f multiply(float x, float y) {return set(x * getX(), y * getY());} - + public default Vec2f multiply(float value) { return multiply(value, value); } + public default Vec2f multiply(Vec2f value) { return multiply(value.getX(), value.getY()); } + public default Vec2f multiply(float x, float y) { return set(x * getX(), y * getY()); } @Override - public default Vec2f devide(float value){return devide(value, value);} - public default Vec2f devide(Vec2f value){return devide(value.getX(), value.getY());} - public default Vec2f devide(float x, float y){return set(getX() / x, getY() / y);} - + public default Vec2f devide(float value) { return devide(value, value); } + public default Vec2f devide(Vec2f value) { return devide(value.getX(), value.getY()); } + public default Vec2f devide(float x, float y) { return set(getX() / x, getY() / y); } @Override - public default Vec2f set(float value){return set(value, value);}; - public default Vec2f set(Vec2f value){return set(value.getX(), value.getY());} + public default Vec2f set(float value) { return set(value, value); }; + public default Vec2f set(Vec2f value) { return set(value.getX(), value.getY()); } public Vec2f set(float x, float y); - - public default double distanceTo(Vec2f value){return distanceTo(value.getX(), value.getY());} - public default double distanceTo(float x, float y){return Math.sqrt(distanceToSquared(x, y));} - - public default double distanceToSquared(Vec2f value){return distanceToSquared(value.getX(), value.getY());} - public default double distanceToSquared(float x, float y) - { + public default double distanceTo(Vec2f value) { return distanceTo(value.getX(), value.getY()); } + public default double distanceTo(float x, float y) { return Math.sqrt(distanceToSquared(x, y)); } + public default double distanceToSquared(Vec2f value) { return distanceToSquared(value.getX(), value.getY()); } + public default double distanceToSquared(float x, float y) { double xPos = getX() - x; double yPos = getY() - y; return (xPos * xPos) + (yPos * yPos); } + @Override - public default float lengthSquared() {return (getX() * getX()) + (getY() * getY());} - - public default double dotProduct(Vec2f value){return dotProduct(value.getX(), value.getY());} - public default double dotProduct(float x, float y){return (getX() * x) + (getY() * y);} - - public default Vec2f lerp(Vec2f value, float progress, Vec2f result){return lerp(value.getX(), value.getY(), progress, result);} - public default Vec2f lerp(float x, float y, float progress, Vec2f result){return result.set(MathUtils.lerp(getX(), x, progress), MathUtils.lerp(getY(), y, progress));}; - - public default float angle(Vec2f value){return angle(value.getX(), value.getY());} - public default float angle(float x, float y){return (float)Math.atan2((getX() * y) - (getY() * x), (getX() * x) + (getY() * y));} - - public default float directionAngle(Vec2f value){return directionAngle(value.getX(), value.getY());} - public default float directionAngle(float x, float y){return (float)(-Math.toDegrees(Math.atan2(getX() - x, getY() - y)) % 360D);} - - public default Vec2f reflect(Vec2f value){return reflect(value.getX(), value.getY(), this);} - public default Vec2f reflect(float x, float y){return reflect(x, y, this);}; - public default Vec2f reflect(Vec2f value, Vec2f result){return reflect(value.getX(), value.getY(), result);} - public default Vec2f reflect(float x, float y, Vec2f result) - { + public default float lengthSquared() { return (getX() * getX()) + (getY() * getY()); } + public default double dotProduct(Vec2f value) { return dotProduct(value.getX(), value.getY()); } + public default double dotProduct(float x, float y) { return (getX() * x) + (getY() * y); } + public default Vec2f lerp(Vec2f value, float progress, Vec2f result) { return lerp(value.getX(), value.getY(), progress, result); } + public default Vec2f lerp(float x, float y, float progress, Vec2f result) { return result.set(MathUtils.lerp(getX(), x, progress), MathUtils.lerp(getY(), y, progress)); }; + public default float angle(Vec2f value) { return angle(value.getX(), value.getY()); } + public default float angle(float x, float y) { return (float)Math.atan2((getX() * y) - (getY() * x), (getX() * x) + (getY() * y)); } + public default float directionAngle(Vec2f value) { return directionAngle(value.getX(), value.getY()); } + public default float directionAngle(float x, float y) { return (float)(-Math.toDegrees(Math.atan2(getX() - x, getY() - y)) % 360D); } + public default Vec2f reflect(Vec2f value) { return reflect(value.getX(), value.getY(), this); } + public default Vec2f reflect(float x, float y) { return reflect(x, y, this); }; + public default Vec2f reflect(Vec2f value, Vec2f result) { return reflect(value.getX(), value.getY(), result); } + public default Vec2f reflect(float x, float y, Vec2f result) { double dot = dotProduct(x, y); float x2 = (float)((dot + dot) * x); float y2 = (float)((dot + dot) * y); - return result.set(getX() - x2, getY() - y2); + return result.set(getX() - x2, getY() - y2); } - public default Vec2f rotate(float angle, Vec2f center){return rotate(angle, center.getX(), center.getY());} - public default Vec2f rotate(float angle, float x, float y) - { + public default Vec2f rotate(float angle, Vec2f center) { return rotate(angle, center.getX(), center.getY()); } + public default Vec2f rotate(float angle, float x, float y) { float xPos = getX() - x; float yPos = getY() - y; double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); - return set((float)((xPos * cos) + (yPos * sin) + x), (float)(-(xPos * sin) + (yPos * cos) + y)); + return set((float)((xPos * cos) + (yPos * sin) + x), (float)(-(xPos * sin) + (yPos * cos) + y)); } - public default Vec2f min(Vec2f other) {return min(other, this);} - public default Vec2f min(Vec2f other, Vec2f result){return min(other.getX(), other.getY(), result);} - public default Vec2f min(float x, float y) {return min(x, y, this);} - public default Vec2f min(float x, float y, Vec2f result){return result.set(Math.min(getX(), x), Math.min(getY(), y));} - - public default Vec2f max(Vec2f other) {return max(other, this);} - public default Vec2f max(Vec2f other, Vec2f result){return max(other.getX(), other.getY(), result);} - public default Vec2f max(float x, float y) {return max(x, y, this);} - public default Vec2f max(float x, float y, Vec2f result){return result.set(Math.max(getX(), x), Math.max(getY(), y));} - - public default Vec2f difference(Vec2f other) {return difference(other, this);} - public default Vec2f difference(Vec2f other, Vec2f result){return difference(other.getX(), other.getY(), result);} - public default Vec2f difference(float x, float y) {return difference(x, y, this);} - public default Vec2f difference(float x, float y, Vec2f result){return result.set(getX() - x, getY() - y);} - + public default Vec2f min(Vec2f other) { return min(other, this); } + public default Vec2f min(Vec2f other, Vec2f result) { return min(other.getX(), other.getY(), result); } + public default Vec2f min(float x, float y) { return min(x, y, this); } + public default Vec2f min(float x, float y, Vec2f result) { return result.set(Math.min(getX(), x), Math.min(getY(), y)); } + public default Vec2f max(Vec2f other) { return max(other, this); } + public default Vec2f max(Vec2f other, Vec2f result) { return max(other.getX(), other.getY(), result); } + public default Vec2f max(float x, float y) { return max(x, y, this); } + public default Vec2f max(float x, float y, Vec2f result) { return result.set(Math.max(getX(), x), Math.max(getY(), y)); } + public default Vec2f difference(Vec2f other) { return difference(other, this); } + public default Vec2f difference(Vec2f other, Vec2f result) { return difference(other.getX(), other.getY(), result); } + public default Vec2f difference(float x, float y) { return difference(x, y, this); } + public default Vec2f difference(float x, float y, Vec2f result) { return result.set(getX() - x, getY() - y); } @Override - public default Vec2f clamp(float min, float max){return clamp(min, max, ALL);} - public default Vec2f clamp(float min, float max, Vec2f result){return clamp(min, max, result, ALL);} + public default Vec2f clamp(float min, float max) { return clamp(min, max, ALL); } + public default Vec2f clamp(float min, float max, Vec2f result) { return clamp(min, max, result, ALL); } @Override - public default Vec2f clamp(float min, float max, int filter){return clamp(min, max, this, filter);} - public default Vec2f clamp(float min, float max, Vec2f result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()));} - + public default Vec2f clamp(float min, float max, int filter) { return clamp(min, max, this, filter); } + public default Vec2f clamp(float min, float max, Vec2f result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY())); } @Override - public default Vec2f store(ByteBuffer buffer) - { + public default Vec2f store(ByteBuffer buffer) { buffer.putFloat(getX()).putFloat(getY()); return this; } @Override - public default Vec2f load(ByteBuffer buffer) - { - return set(buffer.getFloat(), buffer.getFloat()); - } - + public default Vec2f load(ByteBuffer buffer) { return set(buffer.getFloat(), buffer.getFloat()); } @Override - public default Vec2f store(FloatBuffer buffer) - { + public default Vec2f store(FloatBuffer buffer) { buffer.put(getX()).put(getY()); return this; } @Override - public default Vec2f load(FloatBuffer buffer) - { - return set(buffer.get(), buffer.get()); - } + public default Vec2f load(FloatBuffer buffer) { return set(buffer.get(), buffer.get()); } @Override - public default Vec2b asByte(){return isMutable() ? Vec2b.mutable((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY())) : Vec2b.of((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()));} + public default Vec2b asByte() { return isMutable() ? Vec2b.mutable((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY())) : Vec2b.of((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY())); } @Override - public default Vec2s asShort(){return isMutable() ? Vec2s.mutable((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY())) : Vec2s.of((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()));} + public default Vec2s asShort() { return isMutable() ? Vec2s.mutable((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY())) : Vec2s.of((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY())); } @Override - public default Vec2i asInt(){return isMutable() ? Vec2i.mutable(MathUtils.floor(getX()), MathUtils.floor(getY())) : Vec2i.of(MathUtils.floor(getX()), MathUtils.floor(getY()));} + public default Vec2i asInt() { return isMutable() ? Vec2i.mutable(MathUtils.floor(getX()), MathUtils.floor(getY())) : Vec2i.of(MathUtils.floor(getX()), MathUtils.floor(getY())); } @Override - public default Vec2l asLong() {return isMutable() ? Vec2l.mutable(MathUtils.floor(getX()), MathUtils.floor(getY())) : Vec2l.of(MathUtils.floor(getX()), MathUtils.floor(getY()));} + public default Vec2l asLong() { return isMutable() ? Vec2l.mutable(MathUtils.floor(getX()), MathUtils.floor(getY())) : Vec2l.of(MathUtils.floor(getX()), MathUtils.floor(getY())); } @Override - public default Vec2d asDouble(){return isMutable() ? Vec2d.mutable(getX(), getY()) : Vec2d.of(getX(), getY());} - - + public default Vec2d asDouble() { return isMutable() ? Vec2d.mutable(getX(), getY()) : Vec2d.of(getX(), getY()); } @Override - public default Vec2f asMutable(){return isMutable() ? this : mutable(this);} + public default Vec2f asMutable() { return isMutable() ? this : mutable(this); } @Override - public default Vec2f asImmutable(){return isMutable() ? of(this) : this;} + public default Vec2f asImmutable() { return isMutable() ? of(this) : this; } @Override - public default Vec2f copyAsMutable(){return mutable(this);} + public default Vec2f copyAsMutable() { return mutable(this); } @Override - public default Vec2f copyAsImmutable(){return of(this);} + public default Vec2f copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec2fImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec2fImmutable.java index 27f873b..69bbb3e 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec2fImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec2fImmutable.java @@ -2,91 +2,52 @@ package speiger.src.coreengine.math.vector.floats; import java.util.Objects; -public class Vec2fImmutable implements Vec2f -{ +public class Vec2fImmutable implements Vec2f { final float x; final float y; - public Vec2fImmutable() - { + public Vec2fImmutable() { x = 0F; y = 0F; } - public Vec2fImmutable(float value) - { + public Vec2fImmutable(float value) { x = value; y = value; } - public Vec2fImmutable(float x, float y) - { + public Vec2fImmutable(float x, float y) { this.x = x; this.y = y; } @Override - public boolean isMutable() - { - return false; - } + public boolean isMutable() { return false; } + @Override + public float getX() { return x; } + @Override + public float getY() { return y; } + @Override + public Vec2f setX(float x) { return this.x == x ? this : Vec2f.of(x, y); } + @Override + public Vec2f setY(float y) { return this.y == y ? this : Vec2f.of(x, y); } + @Override + public Vec2f copy() { return Vec2f.of(x, y); } + @Override + public Vec2f set(float x, float y) { return this.x == x && this.y == y ? this : Vec2f.of(x, y); } @Override - public float getX() - { - return x; - } + public int hashCode() { return Objects.hash(x, y); } @Override - public float getY() - { - return y; - } - - @Override - public Vec2f setX(float x) - { - return this.x == x ? this : Vec2f.of(x, y); - } - - @Override - public Vec2f setY(float y) - { - return this.y == y ? this : Vec2f.of(x, y); - } - - @Override - public Vec2f copy() - { - return Vec2f.of(x, y); - } - - @Override - public Vec2f set(float x, float y) - { - return this.x == x && this.y == y ? this : Vec2f.of(x, y); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec2f) - { + public boolean equals(Object obj) { + if(obj instanceof Vec2f) { Vec2f vec = (Vec2f)obj; return vec.getX() == x && vec.getY() == y; } return false; } - + @Override - public String toString() - { - return "Vec2f[x="+x+", y="+y+"]"; - } + public String toString() { return "Vec2f[x="+x+", y="+y+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec2fMutable.java b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec2fMutable.java index c02022e..5e1de44 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec2fMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec2fMutable.java @@ -2,93 +2,63 @@ package speiger.src.coreengine.math.vector.floats; import java.util.Objects; -public class Vec2fMutable implements Vec2f -{ +public class Vec2fMutable implements Vec2f { float x; float y; - public Vec2fMutable() - { - } + public Vec2fMutable() {} - public Vec2fMutable(float value) - { + public Vec2fMutable(float value) { x = value; y = value; } - public Vec2fMutable(float x, float y) - { + public Vec2fMutable(float x, float y) { this.x = x; this.y = y; } @Override - public boolean isMutable() - { - return true; - } + public boolean isMutable() { return true; } + @Override + public float getX() { return x; } + @Override + public float getY() { return y; } @Override - public float getX() - { - return x; - } - - @Override - public float getY() - { - return y; - } - - @Override - public Vec2f setX(float x) - { + public Vec2f setX(float x) { this.x = x; return this; } @Override - public Vec2f setY(float y) - { + public Vec2f setY(float y) { this.y = y; return this; } @Override - public Vec2f copy() - { - return Vec2f.mutable(this); - } + public Vec2f copy() { return Vec2f.mutable(this); } @Override - public Vec2f set(float x, float y) - { + public Vec2f set(float x, float y) { this.x = x; this.y = y; return this; } @Override - public int hashCode() - { - return Objects.hash(x, y); - } - + public int hashCode() { return Objects.hash(x, y); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec2f) - { + public boolean equals(Object obj) { + if(obj instanceof Vec2f) { Vec2f vec = (Vec2f)obj; return vec.getX() == x && vec.getY() == y; } return false; } - + @Override - public String toString() - { - return "Vec2f[x="+x+", y="+y+"]"; - } + public String toString() { return "Vec2f[x="+x+", y="+y+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec3f.java b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec3f.java index 99f89bd..dd2a96a 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec3f.java +++ b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec3f.java @@ -10,21 +10,19 @@ import speiger.src.coreengine.math.vector.ints.Vec3i; import speiger.src.coreengine.math.vector.longs.Vec3l; import speiger.src.coreengine.math.vector.shorts.Vec3s; -public interface Vec3f extends Vecf -{ +public interface Vec3f extends Vecf { public static final Vec3f ZERO = of(); public static final Vec3f MINUS_ONE = of(-1F); public static final Vec3f ONE = of(1F); - public static Vec3f mutable(){return new Vec3fMutable();} - public static Vec3f mutable(float value){return new Vec3fMutable(value);} - public static Vec3f mutable(float x, float y, float z){return new Vec3fMutable(x, y, z);} - public static Vec3f mutable(Vec3f vec){return mutable(vec.getX(), vec.getY(), vec.getZ());} - - public static Vec3f of(){return new Vec3fImmutable();} - public static Vec3f of(float value){return new Vec3fImmutable(value);} - public static Vec3f of(float x, float y, float z){return new Vec3fImmutable(x, y, z);} - public static Vec3f of(Vec3f vec){return of(vec.getX(), vec.getY(), vec.getZ());} + public static Vec3f mutable() { return new Vec3fMutable(); } + public static Vec3f mutable(float value) { return new Vec3fMutable(value); } + public static Vec3f mutable(float x, float y, float z) { return new Vec3fMutable(x, y, z); } + public static Vec3f mutable(Vec3f vec) { return mutable(vec.getX(), vec.getY(), vec.getZ()); } + public static Vec3f of() { return new Vec3fImmutable(); } + public static Vec3f of(float value) { return new Vec3fImmutable(value); } + public static Vec3f of(float x, float y, float z) { return new Vec3fImmutable(x, y, z); } + public static Vec3f of(Vec3f vec) { return of(vec.getX(), vec.getY(), vec.getZ()); } public float getX(); public float getY(); @@ -32,127 +30,113 @@ public interface Vec3f extends Vecf public Vec3f setX(float x); public Vec3f setY(float y); public Vec3f setZ(float z); - @Override - public default float[] asArray(){return new float[]{getX(), getY(), getZ()};} + @Override + public default float[] asArray() { return new float[] {getX(), getY(), getZ()}; } @Override public Vec3f copy(); @Override - public default Vec3f abs(){return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ()));} + public default Vec3f abs() { return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ())); } @Override - public default Vec3f negate(){return set(0F, 0F, 0F);} + public default Vec3f negate() { return set(0F, 0F, 0F); } @Override - public default Vec3f invert(){return set(-getX(), -getY(), -getZ());} - public default Vec3f normalize() - { + public default Vec3f invert() { return set(-getX(), -getY(), -getZ()); } + public default Vec3f normalize() { float l = length(); return l == 0F ? this : multiply(1.0F / l); } - @Override - public default Vec3f add(float value){return add(value, value, value);} - public default Vec3f add(Vec3f value){return add(value.getX(), value.getY(), value.getZ());} - public default Vec3f add(float x, float y, float z){return set(getX() + x, getY() + y, getZ() + z);} - - @Override - public default Vec3f sub(float value){return sub(value, value, value);} - public default Vec3f sub(Vec3f value){return sub(value.getX(), value.getY(), value.getZ());} - public default Vec3f sub(float x, float y, float z){return set(getX() - x, getY() - y, getZ() - z);} @Override - public default Vec3f multiply(float value){return multiply(value, value, value);} - public default Vec3f multiply(Vec3f value){return multiply(value.getX(), value.getY(), value.getZ());} - public default Vec3f multiply(float x, float y, float z){return set(getX() * x, getY() * y, getZ() * z);} - + public default Vec3f add(float value) { return add(value, value, value); } + public default Vec3f add(Vec3f value) { return add(value.getX(), value.getY(), value.getZ()); } + public default Vec3f add(float x, float y, float z) { return set(getX() + x, getY() + y, getZ() + z); } @Override - public default Vec3f devide(float value){return devide(value, value, value);} - public default Vec3f devide(Vec3f value){return devide(value.getX(), value.getY(), value.getZ());} - public default Vec3f devide(float x, float y, float z){return set(getX() / x, getY() / y, getZ() / z);} - + public default Vec3f sub(float value) { return sub(value, value, value); } + public default Vec3f sub(Vec3f value) { return sub(value.getX(), value.getY(), value.getZ()); } + public default Vec3f sub(float x, float y, float z) { return set(getX() - x, getY() - y, getZ() - z); } @Override - public default Vec3f set(float value){return set(value, value, value);} - public default Vec3f set(Vec3f value){return set(value.getX(), value.getY(), value.getZ());} + public default Vec3f multiply(float value) { return multiply(value, value, value); } + public default Vec3f multiply(Vec3f value) { return multiply(value.getX(), value.getY(), value.getZ()); } + public default Vec3f multiply(float x, float y, float z) { return set(getX() * x, getY() * y, getZ() * z); } + @Override + public default Vec3f devide(float value) { return devide(value, value, value); } + public default Vec3f devide(Vec3f value) { return devide(value.getX(), value.getY(), value.getZ()); } + public default Vec3f devide(float x, float y, float z) { return set(getX() / x, getY() / y, getZ() / z); } + @Override + public default Vec3f set(float value) { return set(value, value, value); } + public default Vec3f set(Vec3f value) { return set(value.getX(), value.getY(), value.getZ()); } public Vec3f set(float x, float y, float z); - - public default double distanceTo(Vec3f value){return distanceTo(value.getX(), value.getY(), value.getZ());} - public default double distanceTo(float x, float y, float z){return Math.sqrt(distanceToSquared(x, y, z));} - - public default double distanceToSquared(Vec3f value){return distanceToSquared(value.getX(), value.getY(), value.getZ());} - public default double distanceToSquared(float x, float y, float z) - { + public default double distanceTo(Vec3f value) { return distanceTo(value.getX(), value.getY(), value.getZ()); } + public default double distanceTo(float x, float y, float z) { return Math.sqrt(distanceToSquared(x, y, z)); } + public default double distanceToSquared(Vec3f value) { return distanceToSquared(value.getX(), value.getY(), value.getZ()); } + public default double distanceToSquared(float x, float y, float z) { double xPos = getX() - x; double yPos = getY() - y; double zPos = getZ() - z; return (xPos * xPos) + (yPos * yPos) + (zPos * zPos); } + @Override - public default float lengthSquared() {return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ());} - - public default double dotProduct(Vec3f value){return dotProduct(value.getX(), value.getY(), value.getZ());} - public default double dotProduct(float x, float y, float z){return (getX() * x) + (getY() * y) + (getZ() * z);} - - public default Vec3f lerp(Vec3f value, float progress, Vec3f result){return lerp(value.getX(), value.getY(), value.getZ(), progress, result);} - public default Vec3f lerp(float x, float y, float z, float progress, Vec3f result){return result.set(MathUtils.lerp(getX(), x, progress), MathUtils.lerp(getY(), y, progress), MathUtils.lerp(getZ(), z, progress));} - - public default float angle(Vec3f value){return angle(value.getX(), value.getY(), value.getZ());} - public default float angle(float x, float y, float z){return (float)Math.acos(MathUtils.clamp(-1, 1, angleCos(x, y, z)));} - - public default float angleCos(Vec3f value){return angleCos(value.getX(), value.getY(), value.getZ());} - public default float angleCos(float x, float y, float z) - { + public default float lengthSquared() { return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()); } + public default double dotProduct(Vec3f value) { return dotProduct(value.getX(), value.getY(), value.getZ()); } + public default double dotProduct(float x, float y, float z) { return (getX() * x) + (getY() * y) + (getZ() * z); } + public default Vec3f lerp(Vec3f value, float progress, Vec3f result) { return lerp(value.getX(), value.getY(), value.getZ(), progress, result); } + public default Vec3f lerp(float x, float y, float z, float progress, Vec3f result) { return result.set(MathUtils.lerp(getX(), x, progress), MathUtils.lerp(getY(), y, progress), MathUtils.lerp(getZ(), z, progress)); } + public default float angle(Vec3f value) { return angle(value.getX(), value.getY(), value.getZ()); } + public default float angle(float x, float y, float z) { return (float)Math.acos(MathUtils.clamp(-1, 1, angleCos(x, y, z))); } + public default float angleCos(Vec3f value) { return angleCos(value.getX(), value.getY(), value.getZ()); } + public default float angleCos(float x, float y, float z) { double myLength = (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()); double otherLength = (x * x) + (y * y) + (z * z); float dot = (getX() * x) + (getY() * y) + (getZ() * z); return dot / (float)(Math.sqrt(myLength * otherLength)); } - public default Vec3f crossProduct(Vec3f value){return crossProduct(value.getX(), value.getY(), value.getZ(), this);} - public default Vec3f crossProduct(Vec3f value, Vec3f result){return crossProduct(value.getX(), value.getY(), value.getZ(), result);} - public default Vec3f crossProduct(float x, float y, float z){return crossProduct(x, y, z, this);} - public default Vec3f crossProduct(float x, float y, float z, Vec3f result){return result.set((getY() * z) - (getZ() * y), (getZ() * x) - (getX() * z), (getX() * y) - (getY() * x));} - - public default Vec3f reflect(Vec3f value){return reflect(value.getX(), value.getY(), value.getZ(), this);} - public default Vec3f reflect(Vec3f value, Vec3f result){return reflect(value.getX(), value.getY(), value.getZ(), result);} - public default Vec3f reflect(float x, float y, float z){return reflect(x, y, z, this);} - public default Vec3f reflect(float x, float y, float z, Vec3f result) - { + public default Vec3f crossProduct(Vec3f value) { return crossProduct(value.getX(), value.getY(), value.getZ(), this); } + public default Vec3f crossProduct(Vec3f value, Vec3f result) { return crossProduct(value.getX(), value.getY(), value.getZ(), result); } + public default Vec3f crossProduct(float x, float y, float z) { return crossProduct(x, y, z, this); } + public default Vec3f crossProduct(float x, float y, float z, Vec3f result) { return result.set((getY() * z) - (getZ() * y), (getZ() * x) - (getX() * z), (getX() * y) - (getY() * x)); } + public default Vec3f reflect(Vec3f value) { return reflect(value.getX(), value.getY(), value.getZ(), this); } + public default Vec3f reflect(Vec3f value, Vec3f result) { return reflect(value.getX(), value.getY(), value.getZ(), result); } + public default Vec3f reflect(float x, float y, float z) { return reflect(x, y, z, this); } + public default Vec3f reflect(float x, float y, float z, Vec3f result) { double dot = dotProduct(x, y, z) * 2D; return result.set(getX() - (float)(dot * x), getY() - (float)(dot * y), getZ() - (float)(dot * z)); } - public default Vec3f rotate(float angle, Vec3f axis){return rotate(angle, axis.getX(), axis.getY(), axis.getZ());} - public default Vec3f rotate(float angle, Vec3f axis, Vec3f result){return rotate(angle, axis.getX(), axis.getY(), axis.getZ(), result);} - public default Vec3f rotate(float angle, float x, float y, float z){return rotate(angle, x, y, z, this);} - public default Vec3f rotate(float angle, float x, float y, float z, Vec3f result) - { + public default Vec3f rotate(float angle, Vec3f axis) { return rotate(angle, axis.getX(), axis.getY(), axis.getZ()); } + public default Vec3f rotate(float angle, Vec3f axis, Vec3f result) { return rotate(angle, axis.getX(), axis.getY(), axis.getZ(), result); } + public default Vec3f rotate(float angle, float x, float y, float z) { return rotate(angle, x, y, z, this); } + public default Vec3f rotate(float angle, float x, float y, float z, Vec3f result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double dot = dotProduct(x, y, z); double xPos = x * dot * (1D - cos) + (getX() * cos) + (-z * getY() + y * getZ()) * sin; double yPos = y * dot * (1D - cos) + (getY() * cos) + (z * getX() - x * getZ()) * sin; - double zPos = z * dot * (1D - cos) + (getZ() * cos) + (-y * getX() + x * getY()) * sin; + double zPos = z * dot * (1D - cos) + (getZ() * cos) + (-y * getX() + x * getY()) * sin; return result.set((float)xPos, (float)yPos, (float)zPos); } - public default Vec3f rotateX(float angle){return rotateX(angle, this);} - public default Vec3f rotateX(float angle, Vec3f result) - { + + public default Vec3f rotateX(float angle) { return rotateX(angle, this); } + public default Vec3f rotateX(float angle, Vec3f result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double y = getY() * cos + getZ() * sin; double z = getZ() * cos - getY() * sin; return result.set(getX(), (float)y, (float)z); } - public default Vec3f rotateY(float angle){return rotateY(angle, this);} - public default Vec3f rotateY(float angle, Vec3f result) - { + + public default Vec3f rotateY(float angle) { return rotateY(angle, this); } + public default Vec3f rotateY(float angle, Vec3f result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double x = getX() * cos + getZ() * sin; double z = getZ() * cos - getX() * sin; return result.set((float)x, getY(), (float)z); } - public default Vec3f rotateZ(float angle){return rotateZ(angle, this);} - public default Vec3f rotateZ(float angle, Vec3f result) - { + + public default Vec3f rotateZ(float angle) { return rotateZ(angle, this); } + public default Vec3f rotateZ(float angle, Vec3f result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double x = cos * getX() - sin * getY(); @@ -160,83 +144,68 @@ public interface Vec3f extends Vecf return result.set((float)x, (float)y, getZ()); } - public default Vec3f smoothStep(Vec3f value, float progress, Vec3f result){return smoothStep(value.getX(), value.getY(), value.getZ(), progress, result);} - public default Vec3f smoothStep(float x, float y, float z, float progress, Vec3f result) - { - float t2 = progress * progress; - float t3 = t2 * progress; - float xPos = ((getX() + getX() - x - x) * t3 + (3.0F * x - 3.0F * getX()) * t2 + getX() * progress + getX()); - float yPos = ((getY() + getY() - y - y) * t3 + (3.0F * y - 3.0F * getY()) * t2 + getY() * progress + getY()); - float zPos = ((getZ() + getZ() - z - z) * t3 + (3.0F * z - 3.0F * getZ()) * t2 + getZ() * progress + getZ()); + public default Vec3f smoothStep(Vec3f value, float progress, Vec3f result) { return smoothStep(value.getX(), value.getY(), value.getZ(), progress, result); } + public default Vec3f smoothStep(float x, float y, float z, float progress, Vec3f result) { + float t2 = progress * progress; + float t3 = t2 * progress; + float xPos = ((getX() + getX() - x - x) * t3 + (3.0F * x - 3.0F * getX()) * t2 + getX() * progress + getX()); + float yPos = ((getY() + getY() - y - y) * t3 + (3.0F * y - 3.0F * getY()) * t2 + getY() * progress + getY()); + float zPos = ((getZ() + getZ() - z - z) * t3 + (3.0F * z - 3.0F * getZ()) * t2 + getZ() * progress + getZ()); return result.set(xPos, yPos, zPos); } - - public default Vec3f min(Vec3f other) {return min(other, this);} - public default Vec3f min(Vec3f other, Vec3f result){return min(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3f min(float x, float y, float z) {return min(x, y, z, this);} - public default Vec3f min(float x, float y, float z, Vec3f result){return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z));} - public default Vec3f max(Vec3f other) {return max(other, this);} - public default Vec3f max(Vec3f other, Vec3f result){return max(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3f max(float x, float y, float z) {return max(x, y, z, this);} - public default Vec3f max(float x, float y, float z, Vec3f result){return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z));} - - public default Vec3f difference(Vec3f other) {return difference(other, this);} - public default Vec3f difference(Vec3f other, Vec3f result){return difference(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3f difference(float x, float y, float z) {return difference(x, y, z, this);} - public default Vec3f difference(float x, float y, float z, Vec3f result){return result.set(getX() - x, getY() - y, getZ() - z);} + public default Vec3f min(Vec3f other) { return min(other, this); } + public default Vec3f min(Vec3f other, Vec3f result) { return min(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3f min(float x, float y, float z) { return min(x, y, z, this); } + public default Vec3f min(float x, float y, float z, Vec3f result) { return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z)); } + public default Vec3f max(Vec3f other) { return max(other, this); } + public default Vec3f max(Vec3f other, Vec3f result) { return max(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3f max(float x, float y, float z) { return max(x, y, z, this); } + public default Vec3f max(float x, float y, float z, Vec3f result) { return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z)); } + public default Vec3f difference(Vec3f other) { return difference(other, this); } + public default Vec3f difference(Vec3f other, Vec3f result) { return difference(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3f difference(float x, float y, float z) { return difference(x, y, z, this); } + public default Vec3f difference(float x, float y, float z, Vec3f result) { return result.set(getX() - x, getY() - y, getZ() - z); } + @Override + public default Vec3f clamp(float min, float max) { return clamp(min, max, ALL); } + public default Vec3f clamp(float min, float max, Vec3f result) { return clamp(min, max, result, ALL); } + @Override + public default Vec3f clamp(float min, float max, int filter) { return clamp(min, max, this, filter); } + public default Vec3f clamp(float min, float max, Vec3f result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ())); } @Override - public default Vec3f clamp(float min, float max){return clamp(min, max, ALL);} - public default Vec3f clamp(float min, float max, Vec3f result){return clamp(min, max, result, ALL);} - @Override - public default Vec3f clamp(float min, float max, int filter){return clamp(min, max, this, filter);} - public default Vec3f clamp(float min, float max, Vec3f result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()));} - - @Override - public default Vec3f store(ByteBuffer buffer) - { + public default Vec3f store(ByteBuffer buffer) { buffer.putFloat(getX()).putFloat(getY()).putFloat(getZ()); return this; } @Override - public default Vec3f load(ByteBuffer buffer) - { - return set(buffer.getFloat(), buffer.getFloat(), buffer.getFloat()); - } + public default Vec3f load(ByteBuffer buffer) { return set(buffer.getFloat(), buffer.getFloat(), buffer.getFloat()); } @Override - public default Vec3f store(FloatBuffer buffer) - { + public default Vec3f store(FloatBuffer buffer) { buffer.put(getX()).put(getY()).put(getZ()); return this; } @Override - public default Vec3f load(FloatBuffer buffer) - { - return set(buffer.get(), buffer.get(), buffer.get()); - } - + public default Vec3f load(FloatBuffer buffer) { return set(buffer.get(), buffer.get(), buffer.get()); } @Override - public default Vec3b asByte(){return isMutable() ? Vec3b.mutable((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ())) : Vec3b.of((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ()));} + public default Vec3b asByte() { return isMutable() ? Vec3b.mutable((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ())) : Vec3b.of((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ())); } @Override - public default Vec3s asShort(){return isMutable() ? Vec3s.mutable((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ())) : Vec3s.of((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ()));} + public default Vec3s asShort() { return isMutable() ? Vec3s.mutable((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ())) : Vec3s.of((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ())); } @Override - public default Vec3i asInt(){return isMutable() ? Vec3i.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ())) : Vec3i.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()));} + public default Vec3i asInt() { return isMutable() ? Vec3i.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ())) : Vec3i.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ())); } @Override - public default Vec3l asLong() {return isMutable() ? Vec3l.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ())) : Vec3l.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()));} + public default Vec3l asLong() { return isMutable() ? Vec3l.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ())) : Vec3l.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ())); } @Override - public default Vec3d asDouble(){return isMutable() ? Vec3d.mutable(getX(), getY(), getZ()) : Vec3d.of(getX(), getY(), getZ());} - - + public default Vec3d asDouble() { return isMutable() ? Vec3d.mutable(getX(), getY(), getZ()) : Vec3d.of(getX(), getY(), getZ()); } @Override - public default Vec3f asMutable(){return isMutable() ? this : mutable(this);} + public default Vec3f asMutable() { return isMutable() ? this : mutable(this); } @Override - public default Vec3f asImmutable(){return isMutable() ? of(this) : this;} + public default Vec3f asImmutable() { return isMutable() ? of(this) : this; } @Override - public default Vec3f copyAsMutable(){return mutable(this);} + public default Vec3f copyAsMutable() { return mutable(this); } @Override - public default Vec3f copyAsImmutable(){return of(this);} + public default Vec3f copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec3fImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec3fImmutable.java index d18953f..4498441 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec3fImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec3fImmutable.java @@ -2,107 +2,60 @@ package speiger.src.coreengine.math.vector.floats; import java.util.Objects; -public class Vec3fImmutable implements Vec3f -{ +public class Vec3fImmutable implements Vec3f { final float x; final float y; final float z; - public Vec3fImmutable() - { + public Vec3fImmutable() { x = 0F; y = 0F; z = 0F; } - public Vec3fImmutable(float value) - { + public Vec3fImmutable(float value) { x = value; y = value; z = value; } - public Vec3fImmutable(float x, float y, float z) - { + public Vec3fImmutable(float x, float y, float z) { this.x = x; this.y = y; this.z = z; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public float getX() - { - return x; - } + public boolean isMutable() { return false; } + @Override + public float getX() { return x; } + @Override + public float getY() { return y; } + @Override + public float getZ() { return z; } + @Override + public Vec3f setX(float x) { return this.x == x ? this : Vec3f.of(x, y, z); } + @Override + public Vec3f setY(float y) { return this.y == y ? this : Vec3f.of(x, y, z); } + @Override + public Vec3f setZ(float z) { return this.z == z ? this : Vec3f.of(x, y, z); } + @Override + public Vec3f copy() { return Vec3f.of(this); } + @Override + public Vec3f set(float x, float y, float z) { return this.x == x && this.y == y && this.z == z ? this : Vec3f.of(x, y, z); } @Override - public float getY() - { - return y; - } + public int hashCode() { return Objects.hash(x, y, z); } @Override - public float getZ() - { - return z; - } - - @Override - public Vec3f setX(float x) - { - return this.x == x ? this : Vec3f.of(x, y, z); - } - - @Override - public Vec3f setY(float y) - { - return this.y == y ? this : Vec3f.of(x, y, z); - } - - @Override - public Vec3f setZ(float z) - { - return this.z == z ? this : Vec3f.of(x, y, z); - } - - @Override - public Vec3f copy() - { - return Vec3f.of(this); - } - - @Override - public Vec3f set(float x, float y, float z) - { - return this.x == x && this.y == y && this.z == z ? this : Vec3f.of(x, y, z); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y, z); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec3f) - { + public boolean equals(Object obj) { + if(obj instanceof Vec3f) { Vec3f vec = (Vec3f)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z; } return false; } - + @Override - public String toString() - { - return "Vec3f[x="+x+", y="+y+", z="+z+"]"; - } + public String toString() { return "Vec3f[x="+x+", y="+y+", z="+z+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec3fMutable.java b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec3fMutable.java index 06a0363..0aca98a 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec3fMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec3fMutable.java @@ -2,84 +2,57 @@ package speiger.src.coreengine.math.vector.floats; import java.util.Objects; -public class Vec3fMutable implements Vec3f -{ +public class Vec3fMutable implements Vec3f { float x; float y; float z; - public Vec3fMutable() - { - } + public Vec3fMutable() {} - public Vec3fMutable(float value) - { + public Vec3fMutable(float value) { x = value; y = value; z = value; } - public Vec3fMutable(float x, float y, float z) - { + public Vec3fMutable(float x, float y, float z) { this.x = x; this.y = y; this.z = z; } @Override - public boolean isMutable() - { - return true; - } + public boolean isMutable() { return true; } + @Override + public float getX() { return x; } + @Override + public float getY() { return y; } + @Override + public float getZ() { return z; } @Override - public float getX() - { - return x; - } - - @Override - public float getY() - { - return y; - } - - @Override - public float getZ() - { - return z; - } - - @Override - public Vec3f setX(float x) - { + public Vec3f setX(float x) { this.x = x; return this; } @Override - public Vec3f setY(float y) - { + public Vec3f setY(float y) { this.y = y; return this; } @Override - public Vec3f setZ(float z) - { + public Vec3f setZ(float z) { this.z = z; return this; } @Override - public Vec3f copy() - { - return Vec3f.mutable(this); - } + public Vec3f copy() { return Vec3f.mutable(this); } @Override - public Vec3f set(float x, float y, float z) - { + public Vec3f set(float x, float y, float z) { this.x = x; this.y = y; this.z = z; @@ -87,25 +60,17 @@ public class Vec3fMutable implements Vec3f } @Override - public int hashCode() - { - return Objects.hash(x, y, z); - } - + public int hashCode() { return Objects.hash(x, y, z); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec3f) - { + public boolean equals(Object obj) { + if(obj instanceof Vec3f) { Vec3f vec = (Vec3f)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z; } return false; } - + @Override - public String toString() - { - return "Vec3f[x="+x+", y="+y+", z="+z+"]"; - } + public String toString() { return "Vec3f[x="+x+", y="+y+", z="+z+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec4f.java b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec4f.java index 15d4794..7cbd6cb 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec4f.java +++ b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec4f.java @@ -10,21 +10,19 @@ import speiger.src.coreengine.math.vector.ints.Vec4i; import speiger.src.coreengine.math.vector.longs.Vec4l; import speiger.src.coreengine.math.vector.shorts.Vec4s; -public interface Vec4f extends Vecf -{ +public interface Vec4f extends Vecf { public static final Vec4f ZERO = of(); public static final Vec4f MINUS_ONE = of(-1F); public static final Vec4f ONE = of(1F); - public static Vec4f mutable(){return new Vec4fMutable();} - public static Vec4f mutable(float value){return new Vec4fMutable(value);} - public static Vec4f mutable(float x, float y, float z, float w){return new Vec4fMutable(x, y, z, w);} - public static Vec4f mutable(Vec4f vec){return mutable(vec.getX(), vec.getY(), vec.getZ(), vec.getW());} - - public static Vec4f of(){return new Vec4fImmutable();} - public static Vec4f of(float value){return new Vec4fImmutable(value);} - public static Vec4f of(float x, float y, float z, float w){return new Vec4fImmutable(x, y, z, w);} - public static Vec4f of(Vec4f vec){return of(vec.getX(), vec.getY(), vec.getZ(), vec.getW());} + public static Vec4f mutable() { return new Vec4fMutable(); } + public static Vec4f mutable(float value) { return new Vec4fMutable(value); } + public static Vec4f mutable(float x, float y, float z, float w) { return new Vec4fMutable(x, y, z, w); } + public static Vec4f mutable(Vec4f vec) { return mutable(vec.getX(), vec.getY(), vec.getZ(), vec.getW()); } + public static Vec4f of() { return new Vec4fImmutable(); } + public static Vec4f of(float value) { return new Vec4fImmutable(value); } + public static Vec4f of(float x, float y, float z, float w) { return new Vec4fImmutable(x, y, z, w); } + public static Vec4f of(Vec4f vec) { return of(vec.getX(), vec.getY(), vec.getZ(), vec.getW()); } public float getX(); public float getY(); @@ -34,114 +32,101 @@ public interface Vec4f extends Vecf public Vec4f setY(float y); public Vec4f setZ(float z); public Vec4f setW(float w); + @Override - public default float[] asArray(){return new float[]{getX(), getY(), getZ(), getW()};} + public default float[] asArray() { return new float[] {getX(), getY(), getZ(), getW()}; } @Override public Vec4f copy(); @Override - public default Vec4f abs(){return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ()), Math.abs(getW()));} + public default Vec4f abs() { return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ()), Math.abs(getW())); } @Override - public default Vec4f negate(){return set(0F, 0F, 0F, 0F);} + public default Vec4f negate() { return set(0F, 0F, 0F, 0F); } @Override - public default Vec4f invert(){return set(-getX(), -getY(), -getZ(), -getW());} - public default Vec4f normalize() - { + public default Vec4f invert() { return set(-getX(), -getY(), -getZ(), -getW()); } + public default Vec4f normalize() { float l = length(); return l == 0F ? this : multiply(1.0F / l); } - public default Vec4f normalize3D() - { + public default Vec4f normalize3D() { float value = (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()); return value == 0F ? this : multiply(1F / value); } @Override - public default Vec4f add(float value){return add(value, value, value, value);} - public default Vec4f add(Vec4f value){return add(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4f add(float x, float y, float z, float w){return set(getX() + x, getY() + y, getZ() + z, getW() + w);} - + public default Vec4f add(float value) { return add(value, value, value, value); } + public default Vec4f add(Vec4f value) { return add(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4f add(float x, float y, float z, float w) { return set(getX() + x, getY() + y, getZ() + z, getW() + w); } @Override - public default Vec4f sub(float value){return sub(value, value, value, value);} - public default Vec4f sub(Vec4f value){return sub(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4f sub(float x, float y, float z, float w){return set(getX() - x, getY() - y, getZ() - z, getW() - w);} - + public default Vec4f sub(float value) { return sub(value, value, value, value); } + public default Vec4f sub(Vec4f value) { return sub(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4f sub(float x, float y, float z, float w) { return set(getX() - x, getY() - y, getZ() - z, getW() - w); } @Override - public default Vec4f multiply(float value){return multiply(value, value, value, value);} - public default Vec4f multiply(Vec4f value){return multiply(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4f multiply(float x, float y, float z, float w){return set(getX() * x, getY() * y, getZ() * z, getW() * w);} - + public default Vec4f multiply(float value) { return multiply(value, value, value, value); } + public default Vec4f multiply(Vec4f value) { return multiply(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4f multiply(float x, float y, float z, float w) { return set(getX() * x, getY() * y, getZ() * z, getW() * w); } @Override - public default Vec4f devide(float value){return devide(value, value, value, value);} - public default Vec4f devide(Vec4f value){return devide(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4f devide(float x, float y, float z, float w){return set(getX() / x, getY() / y, getZ() / z, getW() / w);} - + public default Vec4f devide(float value) { return devide(value, value, value, value); } + public default Vec4f devide(Vec4f value) { return devide(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4f devide(float x, float y, float z, float w) { return set(getX() / x, getY() / y, getZ() / z, getW() / w); } @Override - public default Vec4f set(float value){return set(value, value, value, value);} - public default Vec4f set(Vec4f value){return set(value.getX(), value.getY(), value.getZ(), value.getW());} + public default Vec4f set(float value) { return set(value, value, value, value); } + public default Vec4f set(Vec4f value) { return set(value.getX(), value.getY(), value.getZ(), value.getW()); } public Vec4f set(float x, float y, float z, float w); - - public default double distanceTo(Vec4f value){return distanceTo(value.getX(), value.getY(), value.getZ(), value.getW());} - public default double distanceTo(float x, float y, float z, float w){return Math.sqrt(distanceTo(x, y, z, w));} - - public default double distanceToSquared(Vec4f value){return distanceToSquared(value.getX(), value.getY(), value.getZ(), value.getW());} - public default double distanceToSquared(float x, float y, float z, float w) - { + public default double distanceTo(Vec4f value) { return distanceTo(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default double distanceTo(float x, float y, float z, float w) { return Math.sqrt(distanceTo(x, y, z, w)); } + public default double distanceToSquared(Vec4f value) { return distanceToSquared(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default double distanceToSquared(float x, float y, float z, float w) { double xPos = getX() - x; double yPos = getY() - y; double zPos = getZ() - z; double wPos = getW() - w; return (xPos * xPos) + (yPos * yPos) + (zPos * zPos) + (wPos * wPos); } + @Override - public default float lengthSquared() {return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()) + (getW() * getW());} - - public default double dotProduct(Vec4f value){return dotProduct(value.getX(), value.getY(), value.getZ(), value.getW());} - public default double dotProduct(float x, float y, float z, float w){return (getX() * x) + (getY() * y) + (getZ() * z) + (getW() * w);}; - - public default Vec4f lerp(Vec4f value, float progress, Vec4f result){return lerp(value.getX(), value.getY(), value.getZ(), value.getW(), progress, result);} - public default Vec4f lerp(float x, float y, float z, float w, float progress, Vec4f result){return result.set(MathUtils.lerp(getX(), x, progress), MathUtils.lerp(getY(), y, progress), MathUtils.lerp(getZ(), z, progress), MathUtils.lerp(getW(), w, progress));} - - public default float angle(Vec4f value){return angle(value.getX(), value.getY(), value.getZ(), value.getW());} - public default float angle(float x, float y, float z, float w){return (float)Math.acos(MathUtils.clamp(-1F, 1F, angleCos(x, y, z, w)));} - - public default float angleCos(Vec4f value){return angleCos(value.getX(), value.getY(), value.getZ(), value.getW());} - public default float angleCos(float x, float y, float z, float w){return (float)(dotProduct(x, y, z, w) / Math.sqrt(lengthSquared() * (x * x) + (y * y) + (z * z) + (w * w)));} - - public default Vec4f rotate(float angle, Vec4f axis){return rotate(angle, axis.getX(), axis.getY(), axis.getZ(), axis.getW());} - public default Vec4f rotate(float angle, Vec4f axis, Vec4f result){return rotate(angle, axis.getX(), axis.getY(), axis.getZ(), axis.getW(), result);} - public default Vec4f rotate(float angle, float x, float y, float z, float w){return rotate(angle, x, y, z, w, this);} - public default Vec4f rotate(float angle, float x, float y, float z, float w, Vec4f result) - { + public default float lengthSquared() { return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()) + (getW() * getW()); } + public default double dotProduct(Vec4f value) { return dotProduct(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default double dotProduct(float x, float y, float z, float w) { return (getX() * x) + (getY() * y) + (getZ() * z) + (getW() * w); }; + public default Vec4f lerp(Vec4f value, float progress, Vec4f result) { return lerp(value.getX(), value.getY(), value.getZ(), value.getW(), progress, result); } + public default Vec4f lerp(float x, float y, float z, float w, float progress, Vec4f result) { return result.set(MathUtils.lerp(getX(), x, progress), MathUtils.lerp(getY(), y, progress), MathUtils.lerp(getZ(), z, progress), MathUtils.lerp(getW(), w, progress)); } + public default float angle(Vec4f value) { return angle(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default float angle(float x, float y, float z, float w) { return (float)Math.acos(MathUtils.clamp(-1F, 1F, angleCos(x, y, z, w))); } + public default float angleCos(Vec4f value) { return angleCos(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default float angleCos(float x, float y, float z, float w) { return (float)(dotProduct(x, y, z, w) / Math.sqrt(lengthSquared() * (x * x) + (y * y) + (z * z) + (w * w))); } + public default Vec4f rotate(float angle, Vec4f axis) { return rotate(angle, axis.getX(), axis.getY(), axis.getZ(), axis.getW()); } + public default Vec4f rotate(float angle, Vec4f axis, Vec4f result) { return rotate(angle, axis.getX(), axis.getY(), axis.getZ(), axis.getW(), result); } + public default Vec4f rotate(float angle, float x, float y, float z, float w) { return rotate(angle, x, y, z, w, this); } + public default Vec4f rotate(float angle, float x, float y, float z, float w, Vec4f result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double dot = dotProduct(x, y, z, w); double xPos = x * dot * (1D - cos) + (getX() * cos) + (-z * getY() + y * getZ()) * sin; double yPos = y * dot * (1D - cos) + (getY() * cos) + (z * getX() - x * getZ()) * sin; - double zPos = z * dot * (1D - cos) + (getZ() * cos) + (-y * getX() + x * getY()) * sin; + double zPos = z * dot * (1D - cos) + (getZ() * cos) + (-y * getX() + x * getY()) * sin; return result.set((float)xPos, (float)yPos, (float)zPos, getW()); } - public default Vec4f rotateX(float angle){return rotateX(angle, this);} - public default Vec4f rotateX(float angle, Vec4f result) - { + + public default Vec4f rotateX(float angle) { return rotateX(angle, this); } + public default Vec4f rotateX(float angle, Vec4f result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double y = getY() * cos + getZ() * sin; double z = getZ() * cos - getY() * sin; return result.set(getX(), (float)y, (float)z, getW()); } - public default Vec4f rotateY(float angle){return rotateY(angle, this);} - public default Vec4f rotateY(float angle, Vec4f result) - { + + public default Vec4f rotateY(float angle) { return rotateY(angle, this); } + public default Vec4f rotateY(float angle, Vec4f result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double x = getX() * cos + getZ() * sin; double z = getZ() * cos - getX() * sin; return result.set((float)x, getY(), (float)z, getW()); } - public default Vec4f rotateZ(float angle){return rotateZ(angle, this);} - public default Vec4f rotateZ(float angle, Vec4f result) - { + + public default Vec4f rotateZ(float angle) { return rotateZ(angle, this); } + public default Vec4f rotateZ(float angle, Vec4f result) { double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); double x = cos * getX() - sin * getY(); @@ -149,84 +134,70 @@ public interface Vec4f extends Vecf return result.set((float)x, (float)y, getZ(), getW()); } - public default Vec4f smoothStep(Vec4f value, float progress, Vec4f result){return smoothStep(value.getX(), value.getY(), value.getZ(), value.getW(), progress, result);} - public default Vec4f smoothStep(float x, float y, float z, float w, float progress, Vec4f result) - { - float t2 = progress * progress; - float t3 = t2 * progress; - float xPos = ((getX() + getX() - x - x) * t3 + (3.0F * x - 3.0F * getX()) * t2 + getX() * progress + getX()); - float yPos = ((getY() + getY() - y - y) * t3 + (3.0F * y - 3.0F * getY()) * t2 + getY() * progress + getY()); - float zPos = ((getZ() + getZ() - z - z) * t3 + (3.0F * z - 3.0F * getZ()) * t2 + getZ() * progress + getZ()); - float wPos = ((getW() + getW() - w - w) * t3 + (3.0F * w - 3.0F * getW()) * t2 + getW() * progress + getW()); + public default Vec4f smoothStep(Vec4f value, float progress, Vec4f result) { return smoothStep(value.getX(), value.getY(), value.getZ(), value.getW(), progress, result); } + public default Vec4f smoothStep(float x, float y, float z, float w, float progress, Vec4f result) { + float t2 = progress * progress; + float t3 = t2 * progress; + float xPos = ((getX() + getX() - x - x) * t3 + (3.0F * x - 3.0F * getX()) * t2 + getX() * progress + getX()); + float yPos = ((getY() + getY() - y - y) * t3 + (3.0F * y - 3.0F * getY()) * t2 + getY() * progress + getY()); + float zPos = ((getZ() + getZ() - z - z) * t3 + (3.0F * z - 3.0F * getZ()) * t2 + getZ() * progress + getZ()); + float wPos = ((getW() + getW() - w - w) * t3 + (3.0F * w - 3.0F * getW()) * t2 + getW() * progress + getW()); return result.set(xPos, yPos, zPos, wPos); } - public default Vec4f min(Vec4f other) {return min(other, this);} - public default Vec4f min(Vec4f other, Vec4f result){return min(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4f min(float x, float y, float z, float w) {return min(x, y, z, w, this);} - public default Vec4f min(float x, float y, float z, float w, Vec4f result){return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z), Math.min(getW(), w));} - - public default Vec4f max(Vec4f other) {return max(other, this);} - public default Vec4f max(Vec4f other, Vec4f result){return max(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4f max(float x, float y, float z, float w) {return max(x, y, z, w, this);} - public default Vec4f max(float x, float y, float z, float w, Vec4f result){return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z), Math.max(getZ(), z));} - - public default Vec4f difference(Vec4f other) {return difference(other, this);} - public default Vec4f difference(Vec4f other, Vec4f result){return difference(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4f difference(float x, float y, float z, float w) {return difference(x, y, z, w, this);} - public default Vec4f difference(float x, float y, float z, float w, Vec4f result){return result.set(getX() - x, getY() - y, getZ() - z, getW() - w);} + public default Vec4f min(Vec4f other) { return min(other, this); } + public default Vec4f min(Vec4f other, Vec4f result) { return min(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4f min(float x, float y, float z, float w) { return min(x, y, z, w, this); } + public default Vec4f min(float x, float y, float z, float w, Vec4f result) { return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z), Math.min(getW(), w)); } + public default Vec4f max(Vec4f other) { return max(other, this); } + public default Vec4f max(Vec4f other, Vec4f result) { return max(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4f max(float x, float y, float z, float w) { return max(x, y, z, w, this); } + public default Vec4f max(float x, float y, float z, float w, Vec4f result) { return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z), Math.max(getZ(), z)); } + public default Vec4f difference(Vec4f other) { return difference(other, this); } + public default Vec4f difference(Vec4f other, Vec4f result) { return difference(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4f difference(float x, float y, float z, float w) { return difference(x, y, z, w, this); } + public default Vec4f difference(float x, float y, float z, float w, Vec4f result) { return result.set(getX() - x, getY() - y, getZ() - z, getW() - w); } + @Override + public default Vec4f clamp(float min, float max) { return clamp(min, max, ALL); } + public default Vec4f clamp(float min, float max, Vec4f result) { return clamp(min, max, result, ALL); } + @Override + public default Vec4f clamp(float min, float max, int filter) { return clamp(min, max, this, filter); } + public default Vec4f clamp(float min, float max, Vec4f result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()), (filter & W) == 0 ? getW() : MathUtils.clamp(min, max, getW())); } @Override - public default Vec4f clamp(float min, float max){return clamp(min, max, ALL);} - public default Vec4f clamp(float min, float max, Vec4f result){return clamp(min, max, result, ALL);} - @Override - public default Vec4f clamp(float min, float max, int filter){return clamp(min, max, this, filter);} - public default Vec4f clamp(float min, float max, Vec4f result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()), (filter & W) == 0 ? getW() : MathUtils.clamp(min, max, getW()));} - - @Override - public default Vec4f store(ByteBuffer buffer) - { + public default Vec4f store(ByteBuffer buffer) { buffer.putFloat(getX()).putFloat(getY()).putFloat(getZ()).putFloat(getW()); return this; } @Override - public default Vec4f load(ByteBuffer buffer) - { - return set(buffer.getFloat(), buffer.getFloat(), buffer.getFloat(), buffer.getFloat()); - } + public default Vec4f load(ByteBuffer buffer) { return set(buffer.getFloat(), buffer.getFloat(), buffer.getFloat(), buffer.getFloat()); } @Override - public default Vec4f store(FloatBuffer buffer) - { + public default Vec4f store(FloatBuffer buffer) { buffer.put(getX()).put(getY()).put(getZ()).put(getW()); return this; } @Override - public default Vec4f load(FloatBuffer buffer) - { - return set(buffer.get(), buffer.get(), buffer.get(), buffer.get()); - } + public default Vec4f load(FloatBuffer buffer) { return set(buffer.get(), buffer.get(), buffer.get(), buffer.get()); } @Override - public default Vec4b asByte(){return isMutable() ? Vec4b.mutable((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ()), (byte)MathUtils.floor(getW())) : Vec4b.of((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ()), (byte)MathUtils.floor(getW()));} + public default Vec4b asByte() { return isMutable() ? Vec4b.mutable((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ()), (byte)MathUtils.floor(getW())) : Vec4b.of((byte)MathUtils.floor(getX()), (byte)MathUtils.floor(getY()), (byte)MathUtils.floor(getZ()), (byte)MathUtils.floor(getW())); } @Override - public default Vec4s asShort(){return isMutable() ? Vec4s.mutable((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ()), (short)MathUtils.floor(getW())) : Vec4s.of((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ()), (short)MathUtils.floor(getW()));} + public default Vec4s asShort() { return isMutable() ? Vec4s.mutable((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ()), (short)MathUtils.floor(getW())) : Vec4s.of((short)MathUtils.floor(getX()), (short)MathUtils.floor(getY()), (short)MathUtils.floor(getZ()), (short)MathUtils.floor(getW())); } @Override - public default Vec4i asInt(){return isMutable() ? Vec4i.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW())) : Vec4i.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW()));} + public default Vec4i asInt() { return isMutable() ? Vec4i.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW())) : Vec4i.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW())); } @Override - public default Vec4l asLong() {return isMutable() ? Vec4l.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW())) : Vec4l.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW()));} + public default Vec4l asLong() { return isMutable() ? Vec4l.mutable(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW())) : Vec4l.of(MathUtils.floor(getX()), MathUtils.floor(getY()), MathUtils.floor(getZ()), MathUtils.floor(getW())); } @Override - public default Vec4d asDouble(){return isMutable() ? Vec4d.mutable(getX(), getY(), getZ(), getW()) : Vec4d.of(getX(), getY(), getZ(), getW());} - - + public default Vec4d asDouble() { return isMutable() ? Vec4d.mutable(getX(), getY(), getZ(), getW()) : Vec4d.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4f asMutable(){return isMutable() ? this : mutable(this);} + public default Vec4f asMutable() { return isMutable() ? this : mutable(this); } @Override - public default Vec4f asImmutable(){return isMutable() ? of(this) : this;} + public default Vec4f asImmutable() { return isMutable() ? of(this) : this; } @Override - public default Vec4f copyAsMutable(){return mutable(this);} + public default Vec4f copyAsMutable() { return mutable(this); } @Override - public default Vec4f copyAsImmutable(){return of(this);} + public default Vec4f copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec4fImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec4fImmutable.java index d8cb922..f4ba60d 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec4fImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec4fImmutable.java @@ -2,114 +2,61 @@ package speiger.src.coreengine.math.vector.floats; import java.util.Objects; -public class Vec4fImmutable implements Vec4f -{ +public class Vec4fImmutable implements Vec4f { final float x; final float y; final float z; final float w; - public Vec4fImmutable() - { + public Vec4fImmutable() { x = 0; y = 0; z = 0; w = 0; } - public Vec4fImmutable(float value) - { + public Vec4fImmutable(float value) { x = value; y = value; z = value; w = value; } - public Vec4fImmutable(float x, float y, float z, float w) - { + public Vec4fImmutable(float x, float y, float z, float w) { this.x = x; this.y = y; this.z = z; this.w = w; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public float getX() - { - return x; - } + public boolean isMutable() { return false; } + @Override + public float getX() { return x; } + @Override + public float getY() { return y; } + @Override + public float getZ() { return z; } + @Override + public float getW() { return w; } + @Override + public Vec4f setX(float x) { return this.x == x ? this : Vec4f.of(x, y, z, w); } + @Override + public Vec4f setY(float y) { return this.y == y ? this : Vec4f.of(x, y, z, w); } + @Override + public Vec4f setZ(float z) { return this.z == z ? this : Vec4f.of(x, y, z, w); } + @Override + public Vec4f setW(float w) { return this.w == w ? this : Vec4f.of(x, y, z, w); } + @Override + public Vec4f copy() { return Vec4f.of(this); } + @Override + public Vec4f set(float x, float y, float z, float w) { return this.x == x && this.y == y && this.z == z && this.w == w ? this : Vec4f.of(x, y, z, w); } + @Override + public int hashCode() { return Objects.hash(x, y, z, w); } @Override - public float getY() - { - return y; - } - - @Override - public float getZ() - { - return z; - } - - @Override - public float getW() - { - return w; - } - - @Override - public Vec4f setX(float x) - { - return this.x == x ? this : Vec4f.of(x, y, z, w); - } - - @Override - public Vec4f setY(float y) - { - return this.y == y ? this : Vec4f.of(x, y, z, w); - } - - @Override - public Vec4f setZ(float z) - { - return this.z == z ? this : Vec4f.of(x, y, z, w); - } - - @Override - public Vec4f setW(float w) - { - return this.w == w ? this : Vec4f.of(x, y, z, w); - } - - @Override - public Vec4f copy() - { - return Vec4f.of(this); - } - - @Override - public Vec4f set(float x, float y, float z, float w) - { - return this.x == x && this.y == y && this.z == z && this.w == w ? this : Vec4f.of(x, y, z, w); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y, z, w); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec4f) - { + public boolean equals(Object obj) { + if(obj instanceof Vec4f) { Vec4f vec = (Vec4f)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z && vec.getW() == w; } @@ -117,8 +64,5 @@ public class Vec4fImmutable implements Vec4f } @Override - public String toString() - { - return "Vec4f[x="+x+", y="+y+", z="+z+", w="+w+"]"; - } + public String toString() { return "Vec4f[x="+x+", y="+y+", z="+z+", w="+w+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec4fMutable.java b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec4fMutable.java index aaf15bb..48f5f21 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/floats/Vec4fMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/floats/Vec4fMutable.java @@ -2,31 +2,27 @@ package speiger.src.coreengine.math.vector.floats; import java.util.Objects; -public class Vec4fMutable implements Vec4f -{ +public class Vec4fMutable implements Vec4f { float x; float y; float z; float w; - public Vec4fMutable() - { + public Vec4fMutable() { x = 0; y = 0; z = 0; w = 0; } - public Vec4fMutable(float value) - { + public Vec4fMutable(float value) { x = value; y = value; z = value; w = value; } - public Vec4fMutable(float x, float y, float z, float w) - { + public Vec4fMutable(float x, float y, float z, float w) { this.x = x; this.y = y; this.z = z; @@ -34,72 +30,45 @@ public class Vec4fMutable implements Vec4f } @Override - public boolean isMutable() - { - return true; - } + public boolean isMutable() { return true; } + @Override + public float getX() { return x; } + @Override + public float getY() { return y; } + @Override + public float getZ() { return z; } + @Override + public float getW() { return w; } @Override - public float getX() - { - return x; - } - - @Override - public float getY() - { - return y; - } - - @Override - public float getZ() - { - return z; - } - - @Override - public float getW() - { - return w; - } - - @Override - public Vec4f setX(float x) - { + public Vec4f setX(float x) { this.x = x; return this; } @Override - public Vec4f setY(float y) - { + public Vec4f setY(float y) { this.y = y; return this; } @Override - public Vec4f setZ(float z) - { + public Vec4f setZ(float z) { this.z = z; return this; } @Override - public Vec4f setW(float w) - { + public Vec4f setW(float w) { this.w = w; return this; } @Override - public Vec4f copy() - { - return Vec4f.mutable(this); - } + public Vec4f copy() { return Vec4f.mutable(this); } @Override - public Vec4f set(float x, float y, float z, float w) - { + public Vec4f set(float x, float y, float z, float w) { this.x = x; this.y = y; this.z = z; @@ -108,16 +77,11 @@ public class Vec4fMutable implements Vec4f } @Override - public int hashCode() - { - return Objects.hash(x, y, z, w); - } - + public int hashCode() { return Objects.hash(x, y, z, w); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec4f) - { + public boolean equals(Object obj) { + if(obj instanceof Vec4f) { Vec4f vec = (Vec4f)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z && vec.getW() == w; } @@ -125,8 +89,5 @@ public class Vec4fMutable implements Vec4f } @Override - public String toString() - { - return "Vec4f[x="+x+", y="+y+", z="+z+", w="+w+"]"; - } + public String toString() { return "Vec4f[x="+x+", y="+y+", z="+z+", w="+w+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/floats/Vecf.java b/src/main/java/speiger/src/coreengine/math/vector/floats/Vecf.java index 3c9c329..17aee44 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/floats/Vecf.java +++ b/src/main/java/speiger/src/coreengine/math/vector/floats/Vecf.java @@ -9,8 +9,7 @@ import speiger.src.coreengine.math.vector.ints.Veci; import speiger.src.coreengine.math.vector.longs.Vecl; import speiger.src.coreengine.math.vector.shorts.Vecs; -public interface Vecf extends Vec -{ +public interface Vecf extends Vec { public Vecf set(float value); public Vecf add(float value); public Vecf sub(float value); @@ -18,14 +17,11 @@ public interface Vecf extends Vec public Vecf devide(float value); public Vecf clamp(float min, float max); public Vecf clamp(float min, float max, int filter); - public float lengthSquared(); - public default float length(){return (float)Math.sqrt(lengthSquared());} - + public default float length() { return (float)Math.sqrt(lengthSquared()); } public Vecf store(FloatBuffer buffer); public Vecf load(FloatBuffer buffer); public float[] asArray(); - public Vecb asByte(); public Vecs asShort(); public Veci asInt(); diff --git a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec2i.java b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec2i.java index e1bf736..90065fe 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec2i.java +++ b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec2i.java @@ -10,154 +10,129 @@ import speiger.src.coreengine.math.vector.floats.Vec2f; import speiger.src.coreengine.math.vector.longs.Vec2l; import speiger.src.coreengine.math.vector.shorts.Vec2s; -public interface Vec2i extends Veci -{ +public interface Vec2i extends Veci { public static final Vec2i ZERO = of(); public static final Vec2i MINUS_ONE = of(-1); public static final Vec2i ONE = of(1); - public static Vec2i mutable(){return new Vec2iMutable();} - public static Vec2i mutable(int value){return new Vec2iMutable(value);} - public static Vec2i mutable(int x, int y){return new Vec2iMutable(x, y);} - public static Vec2i mutable(Vec2i value){return mutable(value.getX(), value.getY());} - - public static Vec2i of(){return new Vec2iImmutable();} - public static Vec2i of(int value){return new Vec2iImmutable(value);} - public static Vec2i of(int x, int y){return new Vec2iImmutable(x, y);} - public static Vec2i of(Vec2i value){return of(value.getX(), value.getY());} + public static Vec2i mutable() { return new Vec2iMutable(); } + public static Vec2i mutable(int value) { return new Vec2iMutable(value); } + public static Vec2i mutable(int x, int y) { return new Vec2iMutable(x, y); } + public static Vec2i mutable(Vec2i value) { return mutable(value.getX(), value.getY()); } + public static Vec2i of() { return new Vec2iImmutable(); } + public static Vec2i of(int value) { return new Vec2iImmutable(value); } + public static Vec2i of(int x, int y) { return new Vec2iImmutable(x, y); } + public static Vec2i of(Vec2i value) { return of(value.getX(), value.getY()); } public int getX(); public int getY(); public Vec2i setX(int x); public Vec2i setY(int y); + @Override - public default int[] asArray(){return new int[]{getX(), getY()};} + public default int[] asArray() { return new int[] {getX(), getY()}; } @Override public Vec2i copy(); @Override - public default Vec2i abs(){return set(Math.abs(getX()), Math.abs(getY()));} + public default Vec2i abs() { return set(Math.abs(getX()), Math.abs(getY())); } @Override - public default Vec2i negate(){return set(0, 0);} + public default Vec2i negate() { return set(0, 0); } @Override - public default Vec2i invert(){return set(-getX(), -getY());}; - + public default Vec2i invert() { return set(-getX(), -getY()); }; @Override - public default Vec2i add(int value) {return add(value, value);} - public default Vec2i add(Vec2i value) {return add(value.getX(), value.getY());} - public default Vec2i add(int x, int y) {return set(x + getX(), y + getY());} - + public default Vec2i add(int value) { return add(value, value); } + public default Vec2i add(Vec2i value) { return add(value.getX(), value.getY()); } + public default Vec2i add(int x, int y) { return set(x + getX(), y + getY()); } @Override - public default Vec2i sub(int value){return sub(value, value);} - public default Vec2i sub(Vec2i value){return sub(value.getX(), value.getY());} - public default Vec2i sub(int x, int y) {return set(getX() - x, getY() - y);} - + public default Vec2i sub(int value) { return sub(value, value); } + public default Vec2i sub(Vec2i value) { return sub(value.getX(), value.getY()); } + public default Vec2i sub(int x, int y) { return set(getX() - x, getY() - y); } @Override - public default Vec2i multiply(int value){return multiply(value, value);} - public default Vec2i multiply(Vec2i value){return multiply(value.getX(), value.getY());} - public default Vec2i multiply(int x, int y) {return set(x * getX(), y * getY());} - + public default Vec2i multiply(int value) { return multiply(value, value); } + public default Vec2i multiply(Vec2i value) { return multiply(value.getX(), value.getY()); } + public default Vec2i multiply(int x, int y) { return set(x * getX(), y * getY()); } @Override - public default Vec2i devide(int value){return devide(value, value);} - public default Vec2i devide(Vec2i value){return devide(value.getX(), value.getY());} - public default Vec2i devide(int x, int y){return set(getX() / x, getY() / y);} - + public default Vec2i devide(int value) { return devide(value, value); } + public default Vec2i devide(Vec2i value) { return devide(value.getX(), value.getY()); } + public default Vec2i devide(int x, int y) { return set(getX() / x, getY() / y); } @Override - public default Vec2i set(int value){return set(value, value);}; - public default Vec2i set(Vec2i value){return set(value.getX(), value.getY());} + public default Vec2i set(int value) { return set(value, value); }; + public default Vec2i set(Vec2i value) { return set(value.getX(), value.getY()); } public Vec2i set(int x, int y); - - public default double distanceTo(Vec2i value){return distanceTo(value.getX(), value.getY());} - public default double distanceTo(int x, int y){return Math.sqrt(distanceToSquared(x, y));} - - public default long distanceToSquared(Vec2i value){return distanceToSquared(value.getX(), value.getY());} - public default long distanceToSquared(int x, int y) - { + public default double distanceTo(Vec2i value) { return distanceTo(value.getX(), value.getY()); } + public default double distanceTo(int x, int y) { return Math.sqrt(distanceToSquared(x, y)); } + public default long distanceToSquared(Vec2i value) { return distanceToSquared(value.getX(), value.getY()); } + public default long distanceToSquared(int x, int y) { long xPos = getX() - x; long yPos = getY() - y; return (xPos * xPos) + (yPos * yPos); } + @Override - public default long lengthSquared() {return (getX() * getX()) + (getY() * getY());} - - public default long dotProduct(Vec2i value){return dotProduct(value.getX(), value.getY());} - public default long dotProduct(int x, int y){return (getX() * x) + (getY() * y);} - - public default Vec2i rotate(int angle, Vec2i center){return rotate(angle, center.getX(), center.getY());} - public default Vec2i rotate(int angle, int x, int y) - { + public default long lengthSquared() { return (getX() * getX()) + (getY() * getY()); } + public default long dotProduct(Vec2i value) { return dotProduct(value.getX(), value.getY()); } + public default long dotProduct(int x, int y) { return (getX() * x) + (getY() * y); } + public default Vec2i rotate(int angle, Vec2i center) { return rotate(angle, center.getX(), center.getY()); } + public default Vec2i rotate(int angle, int x, int y) { int xPos = getX() - x; int yPos = getY() - y; double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); - return set((int)((xPos * cos) + (yPos * sin) + x), (int)(-(xPos * sin) + (yPos * cos) + y)); + return set((int)((xPos * cos) + (yPos * sin) + x), (int)(-(xPos * sin) + (yPos * cos) + y)); } - public default Vec2i min(Vec2i other) {return min(other, this);} - public default Vec2i min(Vec2i other, Vec2i result){return min(other.getX(), other.getY(), result);} - public default Vec2i min(int x, int y) {return min(x, y, this);} - public default Vec2i min(int x, int y, Vec2i result){return result.set(Math.min(getX(), x), Math.min(getY(), y));} - - public default Vec2i max(Vec2i other) {return max(other, this);} - public default Vec2i max(Vec2i other, Vec2i result){return max(other.getX(), other.getY(), result);} - public default Vec2i max(int x, int y) {return max(x, y, this);} - public default Vec2i max(int x, int y, Vec2i result){return result.set(Math.max(getX(), x), Math.max(getY(), y));} - - public default Vec2i difference(Vec2i other) {return difference(other, this);} - public default Vec2i difference(Vec2i other, Vec2i result){return difference(other.getX(), other.getY(), result);} - public default Vec2i difference(int x, int y) {return difference(x, y, this);} - public default Vec2i difference(int x, int y, Vec2i result){return result.set(getX() - x, getY() - y);} + public default Vec2i min(Vec2i other) { return min(other, this); } + public default Vec2i min(Vec2i other, Vec2i result) { return min(other.getX(), other.getY(), result); } + public default Vec2i min(int x, int y) { return min(x, y, this); } + public default Vec2i min(int x, int y, Vec2i result) { return result.set(Math.min(getX(), x), Math.min(getY(), y)); } + public default Vec2i max(Vec2i other) { return max(other, this); } + public default Vec2i max(Vec2i other, Vec2i result) { return max(other.getX(), other.getY(), result); } + public default Vec2i max(int x, int y) { return max(x, y, this); } + public default Vec2i max(int x, int y, Vec2i result) { return result.set(Math.max(getX(), x), Math.max(getY(), y)); } + public default Vec2i difference(Vec2i other) { return difference(other, this); } + public default Vec2i difference(Vec2i other, Vec2i result) { return difference(other.getX(), other.getY(), result); } + public default Vec2i difference(int x, int y) { return difference(x, y, this); } + public default Vec2i difference(int x, int y, Vec2i result) { return result.set(getX() - x, getY() - y); } + @Override + public default Vec2i clamp(int min, int max) { return clamp(min, max, ALL); } + public default Vec2i clamp(int min, int max, Vec2i result) { return clamp(min, max, result, ALL); } + @Override + public default Vec2i clamp(int min, int max, int filter) { return clamp(min, max, this, filter); } + public default Vec2i clamp(int min, int max, Vec2i result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY())); } @Override - public default Vec2i clamp(int min, int max){return clamp(min, max, ALL);} - public default Vec2i clamp(int min, int max, Vec2i result){return clamp(min, max, result, ALL);} - @Override - public default Vec2i clamp(int min, int max, int filter){return clamp(min, max, this, filter);} - public default Vec2i clamp(int min, int max, Vec2i result, int filter){return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()));} - - @Override - public default Vec2i store(ByteBuffer buffer) - { + public default Vec2i store(ByteBuffer buffer) { buffer.putInt(getX()).putInt(getY()); return this; } @Override - public default Vec2i load(ByteBuffer buffer) - { - return set(buffer.getInt(), buffer.getInt()); - } + public default Vec2i load(ByteBuffer buffer) { return set(buffer.getInt(), buffer.getInt()); } @Override - public default Vec2i store(IntBuffer buffer) - { + public default Vec2i store(IntBuffer buffer) { buffer.put(getX()).put(getY()); return this; } @Override - public default Vec2i load(IntBuffer buffer) - { - return set(buffer.get(), buffer.get()); - } - + public default Vec2i load(IntBuffer buffer) { return set(buffer.get(), buffer.get()); } @Override - public default Vec2b asByte(){return isMutable() ? Vec2b.mutable((byte)getX(), (byte)getY()) : Vec2b.of((byte)getX(), (byte)getY());} + public default Vec2b asByte() { return isMutable() ? Vec2b.mutable((byte)getX(), (byte)getY()) : Vec2b.of((byte)getX(), (byte)getY()); } @Override - public default Vec2s asShort(){return isMutable() ? Vec2s.mutable((short)getX(), (short)getY()) : Vec2s.of((short)getX(), (short)getY());} + public default Vec2s asShort() { return isMutable() ? Vec2s.mutable((short)getX(), (short)getY()) : Vec2s.of((short)getX(), (short)getY()); } @Override - public default Vec2l asLong(){return isMutable() ? Vec2l.mutable(getX(), getY()) : Vec2l.of(getX(), getY());} + public default Vec2l asLong() { return isMutable() ? Vec2l.mutable(getX(), getY()) : Vec2l.of(getX(), getY()); } @Override - public default Vec2f asFloat() {return isMutable() ? Vec2f.mutable(getX(), getY()) : Vec2f.of(getX(), getY());} + public default Vec2f asFloat() { return isMutable() ? Vec2f.mutable(getX(), getY()) : Vec2f.of(getX(), getY()); } @Override - public default Vec2d asDouble(){return isMutable() ? Vec2d.mutable(getX(), getY()) : Vec2d.of(getX(), getY());} - - + public default Vec2d asDouble() { return isMutable() ? Vec2d.mutable(getX(), getY()) : Vec2d.of(getX(), getY()); } @Override - public default Vec2i asMutable(){return isMutable() ? this : mutable(this);} + public default Vec2i asMutable() { return isMutable() ? this : mutable(this); } @Override - public default Vec2i asImmutable(){return isMutable() ? of(this) : this;} + public default Vec2i asImmutable() { return isMutable() ? of(this) : this; } @Override - public default Vec2i copyAsMutable(){return mutable(this);} + public default Vec2i copyAsMutable() { return mutable(this); } @Override - public default Vec2i copyAsImmutable(){return of(this);} + public default Vec2i copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec2iImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec2iImmutable.java index 5b3c00c..848bcb1 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec2iImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec2iImmutable.java @@ -2,91 +2,51 @@ package speiger.src.coreengine.math.vector.ints; import java.util.Objects; -public class Vec2iImmutable implements Vec2i -{ +public class Vec2iImmutable implements Vec2i { final int x; final int y; - public Vec2iImmutable() - { + public Vec2iImmutable() { x = 0; y = 0; } - public Vec2iImmutable(int value) - { + public Vec2iImmutable(int value) { x = value; y = value; } - public Vec2iImmutable(int x, int y) - { + public Vec2iImmutable(int x, int y) { this.x = x; this.y = y; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public int getX() - { - return x; - } + public boolean isMutable() { return false; } + @Override + public int getX() { return x; } + @Override + public int getY() { return y; } + @Override + public Vec2i setX(int x) { return this.x == x ? this : Vec2i.of(x, y); } + @Override + public Vec2i setY(int y) { return this.y == y ? this : Vec2i.of(x, y); } + @Override + public Vec2i copy() { return Vec2i.of(this); } + @Override + public Vec2i set(int x, int y) { return this.x == x && this.y == y ? this : Vec2i.of(x, y); } + @Override + public int hashCode() { return Objects.hash(x, y); } @Override - public int getY() - { - return y; - } - - @Override - public Vec2i setX(int x) - { - return this.x == x ? this : Vec2i.of(x, y); - } - - @Override - public Vec2i setY(int y) - { - return this.y == y ? this : Vec2i.of(x, y); - } - - @Override - public Vec2i copy() - { - return Vec2i.of(this); - } - - @Override - public Vec2i set(int x, int y) - { - return this.x == x && this.y == y ? this : Vec2i.of(x, y); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec2i) - { + public boolean equals(Object obj) { + if(obj instanceof Vec2i) { Vec2i vec = (Vec2i)obj; return vec.getX() == x && vec.getY() == y; } return false; } - + @Override - public String toString() - { - return "Vec2i[x="+x+", y="+y+"]"; - } + public String toString() { return "Vec2i[x="+x+", y="+y+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec2iMutable.java b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec2iMutable.java index 752b04a..0552a46 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec2iMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec2iMutable.java @@ -2,93 +2,63 @@ package speiger.src.coreengine.math.vector.ints; import java.util.Objects; -public class Vec2iMutable implements Vec2i -{ +public class Vec2iMutable implements Vec2i { int x; int y; - public Vec2iMutable() - { - } + public Vec2iMutable() {} - public Vec2iMutable(int value) - { + public Vec2iMutable(int value) { x = value; y = value; } - public Vec2iMutable(int x, int y) - { + public Vec2iMutable(int x, int y) { this.x = x; this.y = y; } - - @Override - public boolean isMutable() - { - return true; - } @Override - public int getX() - { - return x; - } + public boolean isMutable() { return true; } + @Override + public int getX() { return x; } + @Override + public int getY() { return y; } @Override - public int getY() - { - return y; - } - - @Override - public Vec2i setX(int x) - { + public Vec2i setX(int x) { this.x = x; return this; } @Override - public Vec2i setY(int y) - { + public Vec2i setY(int y) { this.y = y; return this; } @Override - public Vec2i copy() - { - return Vec2i.mutable(this); - } + public Vec2i copy() { return Vec2i.mutable(this); } @Override - public Vec2i set(int x, int y) - { + public Vec2i set(int x, int y) { this.x = x; this.y = y; return this; } @Override - public int hashCode() - { - return Objects.hash(x, y); - } - + public int hashCode() { return Objects.hash(x, y); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec2i) - { + public boolean equals(Object obj) { + if(obj instanceof Vec2i) { Vec2i vec = (Vec2i)obj; return vec.getX() == x && vec.getY() == y; } return false; } - + @Override - public String toString() - { - return "Vec2i[x="+x+", y="+y+"]"; - } + public String toString() { return "Vec2i[x="+x+", y="+y+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec3i.java b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec3i.java index fef07d8..bdd007a 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec3i.java +++ b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec3i.java @@ -10,22 +10,19 @@ import speiger.src.coreengine.math.vector.floats.Vec3f; import speiger.src.coreengine.math.vector.longs.Vec3l; import speiger.src.coreengine.math.vector.shorts.Vec3s; - -public interface Vec3i extends Veci -{ +public interface Vec3i extends Veci { public static final Vec3i ZERO = of(); public static final Vec3i MINUS_ONE = of(-1); public static final Vec3i ONE = of(1); - public static Vec3i mutable(){return new Vec3iMutable();} - public static Vec3i mutable(int value){return new Vec3iMutable(value);} - public static Vec3i mutable(int x, int y, int z){return new Vec3iMutable(x, y, z);} - public static Vec3i mutable(Vec3i vec){return mutable(vec.getX(), vec.getY(), vec.getZ());} - - public static Vec3i of(){return new Vec3iImmutable();} - public static Vec3i of(int value){return new Vec3iImmutable(value);} - public static Vec3i of(int x, int y, int z){return new Vec3iImmutable(x, y, z);} - public static Vec3i of(Vec3i vec){return of(vec.getX(), vec.getY(), vec.getZ());} + public static Vec3i mutable() { return new Vec3iMutable(); } + public static Vec3i mutable(int value) { return new Vec3iMutable(value); } + public static Vec3i mutable(int x, int y, int z) { return new Vec3iMutable(x, y, z); } + public static Vec3i mutable(Vec3i vec) { return mutable(vec.getX(), vec.getY(), vec.getZ()); } + public static Vec3i of() { return new Vec3iImmutable(); } + public static Vec3i of(int value) { return new Vec3iImmutable(value); } + public static Vec3i of(int x, int y, int z) { return new Vec3iImmutable(x, y, z); } + public static Vec3i of(Vec3i vec) { return of(vec.getX(), vec.getY(), vec.getZ()); } public int getX(); public int getY(); @@ -33,125 +30,103 @@ public interface Vec3i extends Veci public Vec3i setX(int x); public Vec3i setY(int y); public Vec3i setZ(int z); - @Override - public default int[] asArray(){return new int[]{getX(), getY(), getZ()};} + @Override + public default int[] asArray() { return new int[] {getX(), getY(), getZ()}; } @Override public Vec3i copy(); @Override - public default Vec3i abs(){return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ()));} + public default Vec3i abs() { return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ())); } @Override - public default Vec3i negate(){return set(0, 0, 0);} + public default Vec3i negate() { return set(0, 0, 0); } @Override - public default Vec3i invert(){return set(-getX(), -getY(), -getZ());} + public default Vec3i invert() { return set(-getX(), -getY(), -getZ()); } @Override - public default Vec3i add(int value){return add(value, value, value);} - public default Vec3i add(Vec3i value){return add(value.getX(), value.getY(), value.getZ());} - public default Vec3i add(int x, int y, int z){return set(getX() + x, getY() + y, getZ() + z);} - + public default Vec3i add(int value) { return add(value, value, value); } + public default Vec3i add(Vec3i value) { return add(value.getX(), value.getY(), value.getZ()); } + public default Vec3i add(int x, int y, int z) { return set(getX() + x, getY() + y, getZ() + z); } @Override - public default Vec3i sub(int value){return sub(value, value, value);} - public default Vec3i sub(Vec3i value){return sub(value.getX(), value.getY(), value.getZ());} - public default Vec3i sub(int x, int y, int z){return set(getX() - x, getY() - y, getZ() - z);} - + public default Vec3i sub(int value) { return sub(value, value, value); } + public default Vec3i sub(Vec3i value) { return sub(value.getX(), value.getY(), value.getZ()); } + public default Vec3i sub(int x, int y, int z) { return set(getX() - x, getY() - y, getZ() - z); } @Override - public default Vec3i multiply(int value){return multiply(value, value, value);} - public default Vec3i multiply(Vec3i value){return multiply(value.getX(), value.getY(), value.getZ());} - public default Vec3i multiply(int x, int y, int z){return set(getX() * x, getY() * y, getZ() * z);} - + public default Vec3i multiply(int value) { return multiply(value, value, value); } + public default Vec3i multiply(Vec3i value) { return multiply(value.getX(), value.getY(), value.getZ()); } + public default Vec3i multiply(int x, int y, int z) { return set(getX() * x, getY() * y, getZ() * z); } @Override - public default Vec3i devide(int value){return devide(value, value, value);} - public default Vec3i devide(Vec3i value){return devide(value.getX(), value.getY(), value.getZ());} - public default Vec3i devide(int x, int y, int z){return set(getX() / x, getY() / y, getZ() / z);} - + public default Vec3i devide(int value) { return devide(value, value, value); } + public default Vec3i devide(Vec3i value) { return devide(value.getX(), value.getY(), value.getZ()); } + public default Vec3i devide(int x, int y, int z) { return set(getX() / x, getY() / y, getZ() / z); } @Override - public default Vec3i set(int value){return set(value, value, value);} - public default Vec3i set(Vec3i value){return set(value.getX(), value.getY(), value.getZ());} + public default Vec3i set(int value) { return set(value, value, value); } + public default Vec3i set(Vec3i value) { return set(value.getX(), value.getY(), value.getZ()); } public Vec3i set(int x, int y, int z); - - public default double distanceTo(Vec3i value){return distanceTo(value.getX(), value.getY(), value.getZ());} - public default double distanceTo(int x, int y, int z){return Math.sqrt(distanceToSquared(x, y, z));} - - public default long distanceToSquared(Vec3i value){return distanceToSquared(value.getX(), value.getY(), value.getZ());} - public default long distanceToSquared(int x, int y, int z) - { + public default double distanceTo(Vec3i value) { return distanceTo(value.getX(), value.getY(), value.getZ()); } + public default double distanceTo(int x, int y, int z) { return Math.sqrt(distanceToSquared(x, y, z)); } + public default long distanceToSquared(Vec3i value) { return distanceToSquared(value.getX(), value.getY(), value.getZ()); } + public default long distanceToSquared(int x, int y, int z) { long xPos = getX() - x; long yPos = getY() - y; long zPos = getZ() - z; return (xPos * xPos) + (yPos * yPos) + (zPos * zPos); } - @Override - public default long lengthSquared() {return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ());} - - public default long dotProduct(Vec3i value){return dotProduct(value.getX(), value.getY(), value.getZ());} - public default long dotProduct(int x, int y, int z){return (getX() * x) + (getY() * y) + (getZ() * z);} - - public default Vec3i min(Vec3i other) {return min(other, this);} - public default Vec3i min(Vec3i other, Vec3i result){return min(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3i min(int x, int y, int z) {return min(x, y, z, this);} - public default Vec3i min(int x, int y, int z, Vec3i result){return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z));} - - public default Vec3i max(Vec3i other) {return max(other, this);} - public default Vec3i max(Vec3i other, Vec3i result){return max(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3i max(int x, int y, int z) {return max(x, y, z, this);} - public default Vec3i max(int x, int y, int z, Vec3i result){return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z));} - - public default Vec3i difference(Vec3i other) {return difference(other, this);} - public default Vec3i difference(Vec3i other, Vec3i result){return difference(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3i difference(int x, int y, int z) {return difference(x, y, z, this);} - public default Vec3i difference(int x, int y, int z, Vec3i result){return result.set(getX() - x, getY() - y, getZ() - z);} @Override - public default Vec3i clamp(int min, int max){return clamp(min, max, ALL);} - public default Vec3i clamp(int min, int max, Vec3i result){return clamp(min, max, result, ALL);} + public default long lengthSquared() { return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()); } + public default long dotProduct(Vec3i value) { return dotProduct(value.getX(), value.getY(), value.getZ()); } + public default long dotProduct(int x, int y, int z) { return (getX() * x) + (getY() * y) + (getZ() * z); } + public default Vec3i min(Vec3i other) { return min(other, this); } + public default Vec3i min(Vec3i other, Vec3i result) { return min(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3i min(int x, int y, int z) { return min(x, y, z, this); } + public default Vec3i min(int x, int y, int z, Vec3i result) { return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z)); } + public default Vec3i max(Vec3i other) { return max(other, this); } + public default Vec3i max(Vec3i other, Vec3i result) { return max(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3i max(int x, int y, int z) { return max(x, y, z, this); } + public default Vec3i max(int x, int y, int z, Vec3i result) { return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z)); } + public default Vec3i difference(Vec3i other) { return difference(other, this); } + public default Vec3i difference(Vec3i other, Vec3i result) { return difference(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3i difference(int x, int y, int z) { return difference(x, y, z, this); } + public default Vec3i difference(int x, int y, int z, Vec3i result) { return result.set(getX() - x, getY() - y, getZ() - z); } @Override - public default Vec3i clamp(int min, int max, int filter){return clamp(min, max, this, filter);} - public default Vec3i clamp(int min, int max, Vec3i result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()));} + public default Vec3i clamp(int min, int max) { return clamp(min, max, ALL); } + public default Vec3i clamp(int min, int max, Vec3i result) { return clamp(min, max, result, ALL); } + @Override + public default Vec3i clamp(int min, int max, int filter) { return clamp(min, max, this, filter); } + public default Vec3i clamp(int min, int max, Vec3i result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ())); } @Override - public default Vec3i store(ByteBuffer buffer) - { + public default Vec3i store(ByteBuffer buffer) { buffer.putInt(getX()).putInt(getY()).putInt(getZ()); return this; } @Override - public default Vec3i load(ByteBuffer buffer) - { - return set(buffer.getInt(), buffer.getInt(), buffer.getInt()); - } + public default Vec3i load(ByteBuffer buffer) { return set(buffer.getInt(), buffer.getInt(), buffer.getInt()); } @Override - public default Vec3i store(IntBuffer buffer) - { + public default Vec3i store(IntBuffer buffer) { buffer.put(getX()).put(getY()).put(getZ()); return this; } @Override - public default Vec3i load(IntBuffer buffer) - { - return set(buffer.get(), buffer.get(), buffer.get()); - } - + public default Vec3i load(IntBuffer buffer) { return set(buffer.get(), buffer.get(), buffer.get()); } @Override - public default Vec3b asByte(){return isMutable() ? Vec3b.mutable((byte)getX(), (byte)getY(), (byte)getZ()) : Vec3b.of((byte)getX(), (byte)getY(), (byte)getZ());} + public default Vec3b asByte() { return isMutable() ? Vec3b.mutable((byte)getX(), (byte)getY(), (byte)getZ()) : Vec3b.of((byte)getX(), (byte)getY(), (byte)getZ()); } @Override - public default Vec3s asShort(){return isMutable() ? Vec3s.mutable((short)getX(), (short)getY(), (short)getZ()) : Vec3s.of((short)getX(), (short)getY(), (short)getZ());} + public default Vec3s asShort() { return isMutable() ? Vec3s.mutable((short)getX(), (short)getY(), (short)getZ()) : Vec3s.of((short)getX(), (short)getY(), (short)getZ()); } @Override - public default Vec3l asLong(){return isMutable() ? Vec3l.mutable(getX(), getY(), getZ()) : Vec3l.of(getX(), getY(), getZ());} + public default Vec3l asLong() { return isMutable() ? Vec3l.mutable(getX(), getY(), getZ()) : Vec3l.of(getX(), getY(), getZ()); } @Override - public default Vec3f asFloat() {return isMutable() ? Vec3f.mutable(getX(), getY(), getZ()) : Vec3f.of(getX(), getY(), getZ());} + public default Vec3f asFloat() { return isMutable() ? Vec3f.mutable(getX(), getY(), getZ()) : Vec3f.of(getX(), getY(), getZ()); } @Override - public default Vec3d asDouble(){return isMutable() ? Vec3d.mutable(getX(), getY(), getZ()) : Vec3d.of(getX(), getY(), getZ());} - - + public default Vec3d asDouble() { return isMutable() ? Vec3d.mutable(getX(), getY(), getZ()) : Vec3d.of(getX(), getY(), getZ()); } @Override - public default Vec3i asMutable(){return isMutable() ? this : mutable(this);} + public default Vec3i asMutable() { return isMutable() ? this : mutable(this); } @Override - public default Vec3i asImmutable(){return isMutable() ? of(this) : this;} + public default Vec3i asImmutable() { return isMutable() ? of(this) : this; } @Override - public default Vec3i copyAsMutable(){return mutable(this);} + public default Vec3i copyAsMutable() { return mutable(this); } @Override - public default Vec3i copyAsImmutable(){return of(this);} + public default Vec3i copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec3iImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec3iImmutable.java index 1645cd4..fa7de54 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec3iImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec3iImmutable.java @@ -2,107 +2,59 @@ package speiger.src.coreengine.math.vector.ints; import java.util.Objects; -public class Vec3iImmutable implements Vec3i -{ +public class Vec3iImmutable implements Vec3i { final int x; final int y; final int z; - public Vec3iImmutable() - { + public Vec3iImmutable() { x = 0; y = 0; z = 0; } - public Vec3iImmutable(int value) - { + public Vec3iImmutable(int value) { x = value; y = value; z = value; } - public Vec3iImmutable(int x, int y, int z) - { + public Vec3iImmutable(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public int getX() - { - return x; - } + public boolean isMutable() { return false; } + @Override + public int getX() { return x; } + @Override + public int getY() { return y; } + @Override + public int getZ() { return z; } + @Override + public Vec3i setX(int x) { return this.x == x ? this : Vec3i.of(x, y, z); } + @Override + public Vec3i setY(int y) { return this.y == y ? this : Vec3i.of(x, y, z); } + @Override + public Vec3i setZ(int z) { return this.z == z ? this : Vec3i.of(x, y, z); } + @Override + public Vec3i copy() { return Vec3i.of(this); } + @Override + public Vec3i set(int x, int y, int z) { return this.x == x && this.y == y && this.z == z ? this : Vec3i.of(x, y, z); } + @Override + public int hashCode() { return Objects.hash(x, y, z); } @Override - public int getY() - { - return y; - } - - @Override - public int getZ() - { - return z; - } - - @Override - public Vec3i setX(int x) - { - return this.x == x ? this : Vec3i.of(x, y, z); - } - - @Override - public Vec3i setY(int y) - { - return this.y == y ? this : Vec3i.of(x, y, z); - } - - @Override - public Vec3i setZ(int z) - { - return this.z == z ? this : Vec3i.of(x, y, z); - } - - @Override - public Vec3i copy() - { - return Vec3i.of(this); - } - - @Override - public Vec3i set(int x, int y, int z) - { - return this.x == x && this.y == y && this.z == z ? this : Vec3i.of(x, y, z); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y, z); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec3i) - { + public boolean equals(Object obj) { + if(obj instanceof Vec3i) { Vec3i vec = (Vec3i)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z; } return false; } - + @Override - public String toString() - { - return "Vec3i[x="+x+", y="+y+", z="+z+"]"; - } + public String toString() { return "Vec3i[x="+x+", y="+y+", z="+z+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec3iMutable.java b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec3iMutable.java index cc8d1d5..143c241 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec3iMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec3iMutable.java @@ -2,84 +2,57 @@ package speiger.src.coreengine.math.vector.ints; import java.util.Objects; -public class Vec3iMutable implements Vec3i -{ +public class Vec3iMutable implements Vec3i { int x; int y; int z; - public Vec3iMutable() - { - } + public Vec3iMutable() {} - public Vec3iMutable(int value) - { + public Vec3iMutable(int value) { x = value; y = value; z = value; } - public Vec3iMutable(int x, int y, int z) - { + public Vec3iMutable(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } - - @Override - public boolean isMutable() - { - return true; - } @Override - public int getX() - { - return x; - } + public boolean isMutable() { return true; } + @Override + public int getX() { return x; } + @Override + public int getY() { return y; } + @Override + public int getZ() { return z; } @Override - public int getY() - { - return y; - } - - @Override - public int getZ() - { - return z; - } - - @Override - public Vec3i setX(int x) - { + public Vec3i setX(int x) { this.x = x; return this; } @Override - public Vec3i setY(int y) - { + public Vec3i setY(int y) { this.y = y; return this; } @Override - public Vec3i setZ(int z) - { + public Vec3i setZ(int z) { this.z = z; return this; } @Override - public Vec3i copy() - { - return Vec3i.mutable(this); - } + public Vec3i copy() { return Vec3i.mutable(this); } @Override - public Vec3i set(int x, int y, int z) - { + public Vec3i set(int x, int y, int z) { this.x = x; this.y = y; this.z = z; @@ -87,25 +60,17 @@ public class Vec3iMutable implements Vec3i } @Override - public int hashCode() - { - return Objects.hash(x, y, z); - } - + public int hashCode() { return Objects.hash(x, y, z); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec3i) - { + public boolean equals(Object obj) { + if(obj instanceof Vec3i) { Vec3i vec = (Vec3i)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z; } return false; } - + @Override - public String toString() - { - return "Vec3i[x="+x+", y="+y+", z="+z+"]"; - } + public String toString() { return "Vec3i[x="+x+", y="+y+", z="+z+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec4i.java b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec4i.java index 5a40a2d..641a4fc 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec4i.java +++ b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec4i.java @@ -10,21 +10,19 @@ import speiger.src.coreengine.math.vector.floats.Vec4f; import speiger.src.coreengine.math.vector.longs.Vec4l; import speiger.src.coreengine.math.vector.shorts.Vec4s; -public interface Vec4i extends Veci -{ +public interface Vec4i extends Veci { public static final Vec4i ZERO = of(); public static final Vec4i MINUS_ONE = of(-1); public static final Vec4i ONE = of(1); - public static Vec4i mutable(){return new Vec4iMutable();} - public static Vec4i mutable(int value){return new Vec4iMutable(value);} - public static Vec4i mutable(int x, int y, int z, int w){return new Vec4iMutable(x, y, z, w);} - public static Vec4i mutable(Vec4i vec){return mutable(vec.getX(), vec.getY(), vec.getZ(), vec.getW());} - - public static Vec4i of(){return new Vec4iImmutable();} - public static Vec4i of(int value){return new Vec4iImmutable(value);} - public static Vec4i of(int x, int y, int z, int w){return new Vec4iImmutable(x, y, z, w);} - public static Vec4i of(Vec4i vec){return of(vec.getX(), vec.getY(), vec.getZ(), vec.getW());} + public static Vec4i mutable() { return new Vec4iMutable(); } + public static Vec4i mutable(int value) { return new Vec4iMutable(value); } + public static Vec4i mutable(int x, int y, int z, int w) { return new Vec4iMutable(x, y, z, w); } + public static Vec4i mutable(Vec4i vec) { return mutable(vec.getX(), vec.getY(), vec.getZ(), vec.getW()); } + public static Vec4i of() { return new Vec4iImmutable(); } + public static Vec4i of(int value) { return new Vec4iImmutable(value); } + public static Vec4i of(int x, int y, int z, int w) { return new Vec4iImmutable(x, y, z, w); } + public static Vec4i of(Vec4i vec) { return of(vec.getX(), vec.getY(), vec.getZ(), vec.getW()); } public int getX(); public int getY(); @@ -34,125 +32,104 @@ public interface Vec4i extends Veci public Vec4i setY(int y); public Vec4i setZ(int z); public Vec4i setW(int w); + @Override - public default int[] asArray(){return new int[]{getX(), getY(), getZ(), getW()};} + public default int[] asArray() { return new int[] {getX(), getY(), getZ(), getW()}; } @Override public Vec4i copy(); @Override - public default Vec4i abs(){return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ()), Math.abs(getW()));} + public default Vec4i abs() { return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ()), Math.abs(getW())); } @Override - public default Vec4i negate(){return set(0, 0, 0, 0);} + public default Vec4i negate() { return set(0, 0, 0, 0); } @Override - public default Vec4i invert(){return set(-getX(), -getY(), -getZ(), -getW());} - + public default Vec4i invert() { return set(-getX(), -getY(), -getZ(), -getW()); } @Override - public default Vec4i add(int value){return add(value, value, value, value);} - public default Vec4i add(Vec4i value){return add(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4i add(int x, int y, int z, int w){return set(getX() + x, getY() + y, getZ() + z, getW() + w);} - + public default Vec4i add(int value) { return add(value, value, value, value); } + public default Vec4i add(Vec4i value) { return add(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4i add(int x, int y, int z, int w) { return set(getX() + x, getY() + y, getZ() + z, getW() + w); } @Override - public default Vec4i sub(int value){return sub(value, value, value, value);} - public default Vec4i sub(Vec4i value){return sub(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4i sub(int x, int y, int z, int w){return set(getX() - x, getY() - y, getZ() - z, getW() - w);} - + public default Vec4i sub(int value) { return sub(value, value, value, value); } + public default Vec4i sub(Vec4i value) { return sub(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4i sub(int x, int y, int z, int w) { return set(getX() - x, getY() - y, getZ() - z, getW() - w); } @Override - public default Vec4i multiply(int value){return multiply(value, value, value, value);} - public default Vec4i multiply(Vec4i value){return multiply(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4i multiply(int x, int y, int z, int w){return set(getX() * x, getY() * y, getZ() * z, getW() * w);} - + public default Vec4i multiply(int value) { return multiply(value, value, value, value); } + public default Vec4i multiply(Vec4i value) { return multiply(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4i multiply(int x, int y, int z, int w) { return set(getX() * x, getY() * y, getZ() * z, getW() * w); } @Override - public default Vec4i devide(int value){return devide(value, value, value, value);} - public default Vec4i devide(Vec4i value){return devide(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4i devide(int x, int y, int z, int w){return set(getX() / x, getY() / y, getZ() / z, getW() / w);} - + public default Vec4i devide(int value) { return devide(value, value, value, value); } + public default Vec4i devide(Vec4i value) { return devide(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4i devide(int x, int y, int z, int w) { return set(getX() / x, getY() / y, getZ() / z, getW() / w); } @Override - public default Vec4i set(int value){return set(value, value, value, value);} - public default Vec4i set(Vec4i value){return set(value.getX(), value.getY(), value.getZ(), value.getW());} + public default Vec4i set(int value) { return set(value, value, value, value); } + public default Vec4i set(Vec4i value) { return set(value.getX(), value.getY(), value.getZ(), value.getW()); } public Vec4i set(int x, int y, int z, int w); - - public default double distanceTo(Vec4i value){return distanceTo(value.getX(), value.getY(), value.getZ(), value.getW());} - public default double distanceTo(int x, int y, int z, int w){return Math.sqrt(distanceTo(x, y, z, w));} - - public default long distanceToSquared(Vec4i value){return distanceToSquared(value.getX(), value.getY(), value.getZ(), value.getW());} - public default long distanceToSquared(int x, int y, int z, int w) - { + public default double distanceTo(Vec4i value) { return distanceTo(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default double distanceTo(int x, int y, int z, int w) { return Math.sqrt(distanceTo(x, y, z, w)); } + public default long distanceToSquared(Vec4i value) { return distanceToSquared(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default long distanceToSquared(int x, int y, int z, int w) { long xPos = getX() - x; long yPos = getY() - y; long zPos = getZ() - z; long wPos = getW() - w; return (xPos * xPos) + (yPos * yPos) + (zPos * zPos) + (wPos * wPos); } - @Override - public default long lengthSquared() {return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()) + (getW() * getW());} - - public default long dotProduct(Vec4i value){return dotProduct(value.getX(), value.getY(), value.getZ(), value.getW());} - public default long dotProduct(int x, int y, int z, int w){return (getX() * x) + (getY() * y) + (getZ() * z) + (getW() * w);}; - - public default Vec4i min(Vec4i other) {return min(other, this);} - public default Vec4i min(Vec4i other, Vec4i result){return min(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4i min(int x, int y, int z, int w) {return min(x, y, z, w, this);} - public default Vec4i min(int x, int y, int z, int w, Vec4i result){return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z), Math.min(getW(), w));} - - public default Vec4i max(Vec4i other) {return max(other, this);} - public default Vec4i max(Vec4i other, Vec4i result){return max(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4i max(int x, int y, int z, int w) {return max(x, y, z, w, this);} - public default Vec4i max(int x, int y, int z, int w, Vec4i result){return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z), Math.max(getZ(), z));} - - public default Vec4i difference(Vec4i other) {return difference(other, this);} - public default Vec4i difference(Vec4i other, Vec4i result){return difference(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4i difference(int x, int y, int z, int w) {return difference(x, y, z, w, this);} - public default Vec4i difference(int x, int y, int z, int w, Vec4i result){return result.set(getX() - x, getY() - y, getZ() - z, getW() - w);} @Override - public default Vec4i clamp(int min, int max){return clamp(min, max, ALL);} - public default Vec4i clamp(int min, int max, Vec4i result){return clamp(min, max, result, ALL);} + public default long lengthSquared() { return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()) + (getW() * getW()); } + public default long dotProduct(Vec4i value) { return dotProduct(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default long dotProduct(int x, int y, int z, int w) { return (getX() * x) + (getY() * y) + (getZ() * z) + (getW() * w); }; + public default Vec4i min(Vec4i other) { return min(other, this); } + public default Vec4i min(Vec4i other, Vec4i result) { return min(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4i min(int x, int y, int z, int w) { return min(x, y, z, w, this); } + public default Vec4i min(int x, int y, int z, int w, Vec4i result) { return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z), Math.min(getW(), w)); } + public default Vec4i max(Vec4i other) { return max(other, this); } + public default Vec4i max(Vec4i other, Vec4i result) { return max(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4i max(int x, int y, int z, int w) { return max(x, y, z, w, this); } + public default Vec4i max(int x, int y, int z, int w, Vec4i result) { return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z), Math.max(getZ(), z)); } + public default Vec4i difference(Vec4i other) { return difference(other, this); } + public default Vec4i difference(Vec4i other, Vec4i result) { return difference(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4i difference(int x, int y, int z, int w) { return difference(x, y, z, w, this); } + public default Vec4i difference(int x, int y, int z, int w, Vec4i result) { return result.set(getX() - x, getY() - y, getZ() - z, getW() - w); } @Override - public default Vec4i clamp(int min, int max, int filter){return clamp(min, max, this, filter);} - public default Vec4i clamp(int min, int max, Vec4i result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()), (filter & W) == 0 ? getW() : MathUtils.clamp(min, max, getW()));} + public default Vec4i clamp(int min, int max) { return clamp(min, max, ALL); } + public default Vec4i clamp(int min, int max, Vec4i result) { return clamp(min, max, result, ALL); } + @Override + public default Vec4i clamp(int min, int max, int filter) { return clamp(min, max, this, filter); } + public default Vec4i clamp(int min, int max, Vec4i result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()), (filter & W) == 0 ? getW() : MathUtils.clamp(min, max, getW())); } @Override - public default Vec4i store(ByteBuffer buffer) - { + public default Vec4i store(ByteBuffer buffer) { buffer.putInt(getX()).putInt(getY()).putInt(getZ()).putInt(getW()); return this; } @Override - public default Vec4i load(ByteBuffer buffer) - { - return set(buffer.getInt(), buffer.getInt(), buffer.getInt(), buffer.getInt()); - } + public default Vec4i load(ByteBuffer buffer) { return set(buffer.getInt(), buffer.getInt(), buffer.getInt(), buffer.getInt()); } @Override - public default Vec4i store(IntBuffer buffer) - { + public default Vec4i store(IntBuffer buffer) { buffer.put(getX()).put(getY()).put(getZ()).put(getW()); return this; } @Override - public default Vec4i load(IntBuffer buffer) - { - return set(buffer.get(), buffer.get(), buffer.get(), buffer.get()); - } - + public default Vec4i load(IntBuffer buffer) { return set(buffer.get(), buffer.get(), buffer.get(), buffer.get()); } @Override - public default Vec4b asByte(){return isMutable() ? Vec4b.mutable((byte)getX(), (byte)getY(), (byte)getZ(), (byte)getW()) : Vec4b.of((byte)getX(), (byte)getY(), (byte)getZ(), (byte)getW());} + public default Vec4b asByte() { return isMutable() ? Vec4b.mutable((byte)getX(), (byte)getY(), (byte)getZ(), (byte)getW()) : Vec4b.of((byte)getX(), (byte)getY(), (byte)getZ(), (byte)getW()); } @Override - public default Vec4s asShort(){return isMutable() ? Vec4s.mutable((short)getX(), (short)getY(), (short)getZ(), (short)getW()) : Vec4s.of((short)getX(), (short)getY(), (short)getZ(), (short)getW());} + public default Vec4s asShort() { return isMutable() ? Vec4s.mutable((short)getX(), (short)getY(), (short)getZ(), (short)getW()) : Vec4s.of((short)getX(), (short)getY(), (short)getZ(), (short)getW()); } @Override - public default Vec4l asLong(){return isMutable() ? Vec4l.mutable(getX(), getY(), getZ(), getW()) : Vec4l.of(getX(), getY(), getZ(), getW());} + public default Vec4l asLong() { return isMutable() ? Vec4l.mutable(getX(), getY(), getZ(), getW()) : Vec4l.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4f asFloat() {return isMutable() ? Vec4f.mutable(getX(), getY(), getZ(), getW()) : Vec4f.of(getX(), getY(), getZ(), getW());} + public default Vec4f asFloat() { return isMutable() ? Vec4f.mutable(getX(), getY(), getZ(), getW()) : Vec4f.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4d asDouble(){return isMutable() ? Vec4d.mutable(getX(), getY(), getZ(), getW()) : Vec4d.of(getX(), getY(), getZ(), getW());} - + public default Vec4d asDouble() { return isMutable() ? Vec4d.mutable(getX(), getY(), getZ(), getW()) : Vec4d.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4i asMutable(){return isMutable() ? this : mutable(this);} + public default Vec4i asMutable() { return isMutable() ? this : mutable(this); } @Override - public default Vec4i asImmutable(){return isMutable() ? of(this) : this;} + public default Vec4i asImmutable() { return isMutable() ? of(this) : this; } @Override - public default Vec4i copyAsMutable(){return mutable(this);} + public default Vec4i copyAsMutable() { return mutable(this); } @Override - public default Vec4i copyAsImmutable(){return of(this);} + public default Vec4i copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec4iImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec4iImmutable.java index 6db9633..3840137 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec4iImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec4iImmutable.java @@ -2,114 +2,61 @@ package speiger.src.coreengine.math.vector.ints; import java.util.Objects; -public class Vec4iImmutable implements Vec4i -{ +public class Vec4iImmutable implements Vec4i { final int x; final int y; final int z; final int w; - public Vec4iImmutable() - { + public Vec4iImmutable() { x = 0; y = 0; z = 0; w = 0; } - public Vec4iImmutable(int value) - { + public Vec4iImmutable(int value) { x = value; y = value; z = value; w = value; } - public Vec4iImmutable(int x, int y, int z, int w) - { + public Vec4iImmutable(int x, int y, int z, int w) { this.x = x; this.y = y; this.z = z; this.w = w; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public int getX() - { - return x; - } + public boolean isMutable() { return false; } + @Override + public int getX() { return x; } + @Override + public int getY() { return y; } + @Override + public int getZ() { return z; } + @Override + public int getW() { return w; } + @Override + public Vec4i setX(int x) { return this.x == x ? this : Vec4i.of(x, y, z, w); } + @Override + public Vec4i setY(int y) { return this.y == y ? this : Vec4i.of(x, y, z, w); } + @Override + public Vec4i setZ(int z) { return this.z == z ? this : Vec4i.of(x, y, z, w); } + @Override + public Vec4i setW(int w) { return this.w == w ? this : Vec4i.of(x, y, z, w); } + @Override + public Vec4i copy() { return Vec4i.of(this); } + @Override + public Vec4i set(int x, int y, int z, int w) { return this.x == x && this.y == y && this.z == z && this.w == w ? this : Vec4i.of(x, y, z, w); } + @Override + public int hashCode() { return Objects.hash(x, y, z, w); } @Override - public int getY() - { - return y; - } - - @Override - public int getZ() - { - return z; - } - - @Override - public int getW() - { - return w; - } - - @Override - public Vec4i setX(int x) - { - return this.x == x ? this : Vec4i.of(x, y, z, w); - } - - @Override - public Vec4i setY(int y) - { - return this.y == y ? this : Vec4i.of(x, y, z, w); - } - - @Override - public Vec4i setZ(int z) - { - return this.z == z ? this : Vec4i.of(x, y, z, w); - } - - @Override - public Vec4i setW(int w) - { - return this.w == w ? this : Vec4i.of(x, y, z, w); - } - - @Override - public Vec4i copy() - { - return Vec4i.of(this); - } - - @Override - public Vec4i set(int x, int y, int z, int w) - { - return this.x == x && this.y == y && this.z == z && this.w == w ? this : Vec4i.of(x, y, z, w); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y, z, w); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec4i) - { + public boolean equals(Object obj) { + if(obj instanceof Vec4i) { Vec4i vec = (Vec4i)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z && vec.getW() == w; } @@ -117,8 +64,5 @@ public class Vec4iImmutable implements Vec4i } @Override - public String toString() - { - return "Vec4i[x="+x+", y="+y+", z="+z+", w="+w+"]"; - } + public String toString() { return "Vec4i[x="+x+", y="+y+", z="+z+", w="+w+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec4iMutable.java b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec4iMutable.java index 341beda..c8bd0e7 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/ints/Vec4iMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/ints/Vec4iMutable.java @@ -2,100 +2,68 @@ package speiger.src.coreengine.math.vector.ints; import java.util.Objects; -public class Vec4iMutable implements Vec4i -{ +public class Vec4iMutable implements Vec4i { int x; int y; int z; int w; - public Vec4iMutable() - { - } + public Vec4iMutable() {} - public Vec4iMutable(int value) - { + public Vec4iMutable(int value) { x = value; y = value; z = value; w = value; } - public Vec4iMutable(int x, int y, int z, int w) - { + public Vec4iMutable(int x, int y, int z, int w) { this.x = x; this.y = y; this.z = z; this.w = w; } - - @Override - public boolean isMutable() - { - return true; - } @Override - public int getX() - { - return x; - } + public boolean isMutable() { return true; } + @Override + public int getX() { return x; } + @Override + public int getY() { return y; } + @Override + public int getZ() { return z; } + @Override + public int getW() { return w; } @Override - public int getY() - { - return y; - } - - @Override - public int getZ() - { - return z; - } - - @Override - public int getW() - { - return w; - } - - @Override - public Vec4i setX(int x) - { + public Vec4i setX(int x) { this.x = x; return this; } @Override - public Vec4i setY(int y) - { + public Vec4i setY(int y) { this.y = y; return this; } @Override - public Vec4i setZ(int z) - { + public Vec4i setZ(int z) { this.z = z; return this; } @Override - public Vec4i setW(int w) - { + public Vec4i setW(int w) { this.w = w; return this; } @Override - public Vec4i copy() - { - return Vec4i.mutable(this); - } + public Vec4i copy() { return Vec4i.mutable(this); } @Override - public Vec4i set(int x, int y, int z, int w) - { + public Vec4i set(int x, int y, int z, int w) { this.x = x; this.y = y; this.z = z; @@ -104,16 +72,11 @@ public class Vec4iMutable implements Vec4i } @Override - public int hashCode() - { - return Objects.hash(x, y, z, w); - } - + public int hashCode() { return Objects.hash(x, y, z, w); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec4i) - { + public boolean equals(Object obj) { + if(obj instanceof Vec4i) { Vec4i vec = (Vec4i)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z && vec.getW() == w; } @@ -121,8 +84,5 @@ public class Vec4iMutable implements Vec4i } @Override - public String toString() - { - return "Vec4i[x="+x+", y="+y+", z="+z+", w="+w+"]"; - } + public String toString() { return "Vec4i[x="+x+", y="+y+", z="+z+", w="+w+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/ints/Veci.java b/src/main/java/speiger/src/coreengine/math/vector/ints/Veci.java index 91ce212..5d8125e 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/ints/Veci.java +++ b/src/main/java/speiger/src/coreengine/math/vector/ints/Veci.java @@ -9,8 +9,7 @@ import speiger.src.coreengine.math.vector.floats.Vecf; import speiger.src.coreengine.math.vector.longs.Vecl; import speiger.src.coreengine.math.vector.shorts.Vecs; -public interface Veci extends Vec -{ +public interface Veci extends Vec { public Veci set(int value); public Veci add(int value); public Veci sub(int value); @@ -18,14 +17,11 @@ public interface Veci extends Vec public Veci devide(int value); public Veci clamp(int min, int max); public Veci clamp(int min, int max, int filter); - public long lengthSquared(); - public default double length(){return Math.sqrt(lengthSquared());} - + public default double length() { return Math.sqrt(lengthSquared()); } public Veci store(IntBuffer buffer); public Veci load(IntBuffer buffer); public int[] asArray(); - public Vecb asByte(); public Vecs asShort(); public Vecl asLong(); diff --git a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec2l.java b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec2l.java index c89b560..6ba5ef3 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec2l.java +++ b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec2l.java @@ -10,154 +10,129 @@ import speiger.src.coreengine.math.vector.floats.Vec2f; import speiger.src.coreengine.math.vector.ints.Vec2i; import speiger.src.coreengine.math.vector.shorts.Vec2s; -public interface Vec2l extends Vecl -{ +public interface Vec2l extends Vecl { public static final Vec2l ZERO = of(); public static final Vec2l MINUS_ONE = of(-1L); public static final Vec2l ONE = of(1L); - public static Vec2l mutable(){return new Vec2lMutable();} - public static Vec2l mutable(long value){return new Vec2lMutable(value);} - public static Vec2l mutable(long x, long y){return new Vec2lMutable(x, y);} - public static Vec2l mutable(Vec2l value){return mutable(value.getX(), value.getY());} - - public static Vec2l of(){return new Vec2lImmutable();} - public static Vec2l of(long value){return new Vec2lImmutable(value);} - public static Vec2l of(long x, long y){return new Vec2lImmutable(x, y);} - public static Vec2l of(Vec2l value){return of(value.getX(), value.getY());} + public static Vec2l mutable() { return new Vec2lMutable(); } + public static Vec2l mutable(long value) { return new Vec2lMutable(value); } + public static Vec2l mutable(long x, long y) { return new Vec2lMutable(x, y); } + public static Vec2l mutable(Vec2l value) { return mutable(value.getX(), value.getY()); } + public static Vec2l of() { return new Vec2lImmutable(); } + public static Vec2l of(long value) { return new Vec2lImmutable(value); } + public static Vec2l of(long x, long y) { return new Vec2lImmutable(x, y); } + public static Vec2l of(Vec2l value) { return of(value.getX(), value.getY()); } public long getX(); public long getY(); public Vec2l setX(long x); public Vec2l setY(long y); + @Override - public default long[] asArray(){return new long[]{getX(), getY()};} + public default long[] asArray() { return new long[] {getX(), getY()}; } @Override public Vec2l copy(); @Override - public default Vec2l abs(){return set(Math.abs(getX()), Math.abs(getY()));} + public default Vec2l abs() { return set(Math.abs(getX()), Math.abs(getY())); } @Override - public default Vec2l negate(){return set(0L, 0L);} + public default Vec2l negate() { return set(0L, 0L); } @Override - public default Vec2l invert(){return set(-getX(), -getY());}; - + public default Vec2l invert() { return set(-getX(), -getY()); }; @Override - public default Vec2l add(long value) {return add(value, value);} - public default Vec2l add(Vec2l value) {return add(value.getX(), value.getY());} - public default Vec2l add(long x, long y) {return set(x + getX(), y + getY());} - + public default Vec2l add(long value) { return add(value, value); } + public default Vec2l add(Vec2l value) { return add(value.getX(), value.getY()); } + public default Vec2l add(long x, long y) { return set(x + getX(), y + getY()); } @Override - public default Vec2l sub(long value){return sub(value, value);} - public default Vec2l sub(Vec2l value){return sub(value.getX(), value.getY());} - public default Vec2l sub(long x, long y) {return set(getX() - x, getY() - y);} - + public default Vec2l sub(long value) { return sub(value, value); } + public default Vec2l sub(Vec2l value) { return sub(value.getX(), value.getY()); } + public default Vec2l sub(long x, long y) { return set(getX() - x, getY() - y); } @Override - public default Vec2l multiply(long value){return multiply(value, value);} - public default Vec2l multiply(Vec2l value){return multiply(value.getX(), value.getY());} - public default Vec2l multiply(long x, long y) {return set(x * getX(), y * getY());} - + public default Vec2l multiply(long value) { return multiply(value, value); } + public default Vec2l multiply(Vec2l value) { return multiply(value.getX(), value.getY()); } + public default Vec2l multiply(long x, long y) { return set(x * getX(), y * getY()); } @Override - public default Vec2l devide(long value){return devide(value, value);} - public default Vec2l devide(Vec2l value){return devide(value.getX(), value.getY());} - public default Vec2l devide(long x, long y){return set(getX() / x, getY() / y);} - + public default Vec2l devide(long value) { return devide(value, value); } + public default Vec2l devide(Vec2l value) { return devide(value.getX(), value.getY()); } + public default Vec2l devide(long x, long y) { return set(getX() / x, getY() / y); } @Override - public default Vec2l set(long value){return set(value, value);}; - public default Vec2l set(Vec2l value){return set(value.getX(), value.getY());} + public default Vec2l set(long value) { return set(value, value); }; + public default Vec2l set(Vec2l value) { return set(value.getX(), value.getY()); } public Vec2l set(long x, long y); - - public default double distanceTo(Vec2l value){return distanceTo(value.getX(), value.getY());} - public default double distanceTo(long x, long y){return Math.sqrt(distanceToSquared(x, y));} - - public default long distanceToSquared(Vec2l value){return distanceToSquared(value.getX(), value.getY());} - public default long distanceToSquared(long x, long y) - { + public default double distanceTo(Vec2l value) { return distanceTo(value.getX(), value.getY()); } + public default double distanceTo(long x, long y) { return Math.sqrt(distanceToSquared(x, y)); } + public default long distanceToSquared(Vec2l value) { return distanceToSquared(value.getX(), value.getY()); } + public default long distanceToSquared(long x, long y) { long xPos = getX() - x; long yPos = getY() - y; return (xPos * xPos) + (yPos * yPos); } + @Override - public default long lengthSquared() {return (getX() * getX()) + (getY() * getY());} - - public default long dotProduct(Vec2l value){return dotProduct(value.getX(), value.getY());} - public default long dotProduct(long x, long y){return (getX() * x) + (getY() * y);} - - public default Vec2l rotate(long angle, Vec2l center){return rotate(angle, center.getX(), center.getY());} - public default Vec2l rotate(long angle, long x, long y) - { + public default long lengthSquared() { return (getX() * getX()) + (getY() * getY()); } + public default long dotProduct(Vec2l value) { return dotProduct(value.getX(), value.getY()); } + public default long dotProduct(long x, long y) { return (getX() * x) + (getY() * y); } + public default Vec2l rotate(long angle, Vec2l center) { return rotate(angle, center.getX(), center.getY()); } + public default Vec2l rotate(long angle, long x, long y) { long xPos = getX() - x; long yPos = getY() - y; double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); - return set((long)((xPos * cos) + (yPos * sin) + x), (long)(-(xPos * sin) + (yPos * cos) + y)); + return set((long)((xPos * cos) + (yPos * sin) + x), (long)(-(xPos * sin) + (yPos * cos) + y)); } - public default Vec2l min(Vec2l other) {return min(other, this);} - public default Vec2l min(Vec2l other, Vec2l result){return min(other.getX(), other.getY(), result);} - public default Vec2l min(long x, long y) {return min(x, y, this);} - public default Vec2l min(long x, long y, Vec2l result){return result.set(Math.min(getX(), x), Math.min(getY(), y));} - - public default Vec2l max(Vec2l other) {return max(other, this);} - public default Vec2l max(Vec2l other, Vec2l result){return max(other.getX(), other.getY(), result);} - public default Vec2l max(long x, long y) {return max(x, y, this);} - public default Vec2l max(long x, long y, Vec2l result){return result.set(Math.max(getX(), x), Math.max(getY(), y));} - - public default Vec2l difference(Vec2l other) {return difference(other, this);} - public default Vec2l difference(Vec2l other, Vec2l result){return difference(other.getX(), other.getY(), result);} - public default Vec2l difference(long x, long y) {return difference(x, y, this);} - public default Vec2l difference(long x, long y, Vec2l result){return result.set(getX() - x, getY() - y);} + public default Vec2l min(Vec2l other) { return min(other, this); } + public default Vec2l min(Vec2l other, Vec2l result) { return min(other.getX(), other.getY(), result); } + public default Vec2l min(long x, long y) { return min(x, y, this); } + public default Vec2l min(long x, long y, Vec2l result) { return result.set(Math.min(getX(), x), Math.min(getY(), y)); } + public default Vec2l max(Vec2l other) { return max(other, this); } + public default Vec2l max(Vec2l other, Vec2l result) { return max(other.getX(), other.getY(), result); } + public default Vec2l max(long x, long y) { return max(x, y, this); } + public default Vec2l max(long x, long y, Vec2l result) { return result.set(Math.max(getX(), x), Math.max(getY(), y)); } + public default Vec2l difference(Vec2l other) { return difference(other, this); } + public default Vec2l difference(Vec2l other, Vec2l result) { return difference(other.getX(), other.getY(), result); } + public default Vec2l difference(long x, long y) { return difference(x, y, this); } + public default Vec2l difference(long x, long y, Vec2l result) { return result.set(getX() - x, getY() - y); } + @Override + public default Vec2l clamp(long min, long max) { return clamp(min, max, ALL); } + public default Vec2l clamp(long min, long max, Vec2l result) { return clamp(min, max, result, ALL); } + @Override + public default Vec2l clamp(long min, long max, int filter) { return clamp(min, max, this, filter); } + public default Vec2l clamp(long min, long max, Vec2l result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY())); } @Override - public default Vec2l clamp(long min, long max){return clamp(min, max, ALL);} - public default Vec2l clamp(long min, long max, Vec2l result){return clamp(min, max, result, ALL);} - @Override - public default Vec2l clamp(long min, long max, int filter){return clamp(min, max, this, filter);} - public default Vec2l clamp(long min, long max, Vec2l result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()));} - - @Override - public default Vec2l store(ByteBuffer buffer) - { + public default Vec2l store(ByteBuffer buffer) { buffer.putLong(getX()).putLong(getY()); return this; } @Override - public default Vec2l load(ByteBuffer buffer) - { - return set(buffer.getLong(), buffer.getLong()); - } + public default Vec2l load(ByteBuffer buffer) { return set(buffer.getLong(), buffer.getLong()); } @Override - public default Vec2l store(LongBuffer buffer) - { + public default Vec2l store(LongBuffer buffer) { buffer.put(getX()).put(getY()); return this; } @Override - public default Vec2l load(LongBuffer buffer) - { - return set(buffer.get(), buffer.get()); - } - + public default Vec2l load(LongBuffer buffer) { return set(buffer.get(), buffer.get()); } @Override - public default Vec2b asByte(){return isMutable() ? Vec2b.mutable((byte)getX(), (byte)getY()) : Vec2b.of((byte)getX(), (byte)getY());} + public default Vec2b asByte() { return isMutable() ? Vec2b.mutable((byte)getX(), (byte)getY()) : Vec2b.of((byte)getX(), (byte)getY()); } @Override - public default Vec2s asShort(){return isMutable() ? Vec2s.mutable((short)getX(), (short)getY()) : Vec2s.of((short)getX(), (short)getY());} + public default Vec2s asShort() { return isMutable() ? Vec2s.mutable((short)getX(), (short)getY()) : Vec2s.of((short)getX(), (short)getY()); } @Override - public default Vec2i asInt(){return isMutable() ? Vec2i.mutable((int)getX(), (int)getY()) : Vec2i.of((int)getX(), (int)getY());} + public default Vec2i asInt() { return isMutable() ? Vec2i.mutable((int)getX(), (int)getY()) : Vec2i.of((int)getX(), (int)getY()); } @Override - public default Vec2f asFloat() {return isMutable() ? Vec2f.mutable(getX(), getY()) : Vec2f.of(getX(), getY());} + public default Vec2f asFloat() { return isMutable() ? Vec2f.mutable(getX(), getY()) : Vec2f.of(getX(), getY()); } @Override - public default Vec2d asDouble(){return isMutable() ? Vec2d.mutable(getX(), getY()) : Vec2d.of(getX(), getY());} - - + public default Vec2d asDouble() { return isMutable() ? Vec2d.mutable(getX(), getY()) : Vec2d.of(getX(), getY()); } @Override - public default Vec2l asMutable(){return isMutable() ? this : mutable(this);} + public default Vec2l asMutable() { return isMutable() ? this : mutable(this); } @Override - public default Vec2l asImmutable(){return isMutable() ? of(this) : this;} + public default Vec2l asImmutable() { return isMutable() ? of(this) : this; } @Override - public default Vec2l copyAsMutable(){return mutable(this);} + public default Vec2l copyAsMutable() { return mutable(this); } @Override - public default Vec2l copyAsImmutable(){return of(this);} + public default Vec2l copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec2lImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec2lImmutable.java index 8c60885..79ed4b0 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec2lImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec2lImmutable.java @@ -2,91 +2,51 @@ package speiger.src.coreengine.math.vector.longs; import java.util.Objects; -public class Vec2lImmutable implements Vec2l -{ +public class Vec2lImmutable implements Vec2l { final long x; final long y; - public Vec2lImmutable() - { + public Vec2lImmutable() { x = 0; y = 0; } - public Vec2lImmutable(long value) - { + public Vec2lImmutable(long value) { x = value; y = value; } - public Vec2lImmutable(long x, long y) - { + public Vec2lImmutable(long x, long y) { this.x = x; this.y = y; } @Override - public boolean isMutable() - { - return false; - } + public boolean isMutable() { return false; } + @Override + public long getX() { return x; } + @Override + public long getY() { return y; } + @Override + public Vec2l setX(long x) { return this.x == x ? this : Vec2l.of(x, y); } + @Override + public Vec2l setY(long y) { return this.y == y ? this : Vec2l.of(x, y); } + @Override + public Vec2l copy() { return Vec2l.of(this); } + @Override + public Vec2l set(long x, long y) { return this.x == x && this.y == y ? this : Vec2l.of(x, y); } + @Override + public int hashCode() { return Objects.hash(x, y); } @Override - public long getX() - { - return x; - } - - @Override - public long getY() - { - return y; - } - - @Override - public Vec2l setX(long x) - { - return this.x == x ? this : Vec2l.of(x, y); - } - - @Override - public Vec2l setY(long y) - { - return this.y == y ? this : Vec2l.of(x, y); - } - - @Override - public Vec2l copy() - { - return Vec2l.of(this); - } - - @Override - public Vec2l set(long x, long y) - { - return this.x == x && this.y == y ? this : Vec2l.of(x, y); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec2l) - { + public boolean equals(Object obj) { + if(obj instanceof Vec2l) { Vec2l vec = (Vec2l)obj; return vec.getX() == x && vec.getY() == y; } return false; } - + @Override - public String toString() - { - return "Vec2l[x="+x+", y="+y+"]"; - } + public String toString() { return "Vec2l[x="+x+", y="+y+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec2lMutable.java b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec2lMutable.java index bc42057..6ce6334 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec2lMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec2lMutable.java @@ -2,93 +2,63 @@ package speiger.src.coreengine.math.vector.longs; import java.util.Objects; -public class Vec2lMutable implements Vec2l -{ +public class Vec2lMutable implements Vec2l { long x; long y; - public Vec2lMutable() - { - } + public Vec2lMutable() {} - public Vec2lMutable(long value) - { + public Vec2lMutable(long value) { x = value; y = value; } - public Vec2lMutable(long x, long y) - { + public Vec2lMutable(long x, long y) { this.x = x; this.y = y; } - - @Override - public boolean isMutable() - { - return true; - } @Override - public long getX() - { - return x; - } + public boolean isMutable() { return true; } + @Override + public long getX() { return x; } + @Override + public long getY() { return y; } @Override - public long getY() - { - return y; - } - - @Override - public Vec2l setX(long x) - { + public Vec2l setX(long x) { this.x = x; return this; } @Override - public Vec2l setY(long y) - { + public Vec2l setY(long y) { this.y = y; return this; } @Override - public Vec2l copy() - { - return Vec2l.mutable(this); - } + public Vec2l copy() { return Vec2l.mutable(this); } @Override - public Vec2l set(long x, long y) - { + public Vec2l set(long x, long y) { this.x = x; this.y = y; return this; } @Override - public int hashCode() - { - return Objects.hash(x, y); - } - + public int hashCode() { return Objects.hash(x, y); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec2l) - { + public boolean equals(Object obj) { + if(obj instanceof Vec2l) { Vec2l vec = (Vec2l)obj; return vec.getX() == x && vec.getY() == y; } return false; } - + @Override - public String toString() - { - return "Vec2l[x="+x+", y="+y+"]"; - } + public String toString() { return "Vec2l[x="+x+", y="+y+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec3l.java b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec3l.java index a40bd26..9980618 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec3l.java +++ b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec3l.java @@ -10,22 +10,19 @@ import speiger.src.coreengine.math.vector.floats.Vec3f; import speiger.src.coreengine.math.vector.ints.Vec3i; import speiger.src.coreengine.math.vector.shorts.Vec3s; - -public interface Vec3l extends Vecl -{ +public interface Vec3l extends Vecl { public static final Vec3l ZERO = of(); public static final Vec3l MINUS_ONE = of(-1L); public static final Vec3l ONE = of(1L); - public static Vec3l mutable(){return new Vec3lMutable();} - public static Vec3l mutable(long value){return new Vec3lMutable(value);} - public static Vec3l mutable(long x, long y, long z){return new Vec3lMutable(x, y, z);} - public static Vec3l mutable(Vec3l vec){return mutable(vec.getX(), vec.getY(), vec.getZ());} - - public static Vec3l of(){return new Vec3lImmutable();} - public static Vec3l of(long value){return new Vec3lImmutable(value);} - public static Vec3l of(long x, long y, long z){return new Vec3lImmutable(x, y, z);} - public static Vec3l of(Vec3l vec){return of(vec.getX(), vec.getY(), vec.getZ());} + public static Vec3l mutable() { return new Vec3lMutable(); } + public static Vec3l mutable(long value) { return new Vec3lMutable(value); } + public static Vec3l mutable(long x, long y, long z) { return new Vec3lMutable(x, y, z); } + public static Vec3l mutable(Vec3l vec) { return mutable(vec.getX(), vec.getY(), vec.getZ()); } + public static Vec3l of() { return new Vec3lImmutable(); } + public static Vec3l of(long value) { return new Vec3lImmutable(value); } + public static Vec3l of(long x, long y, long z) { return new Vec3lImmutable(x, y, z); } + public static Vec3l of(Vec3l vec) { return of(vec.getX(), vec.getY(), vec.getZ()); } public long getX(); public long getY(); @@ -33,124 +30,103 @@ public interface Vec3l extends Vecl public Vec3l setX(long x); public Vec3l setY(long y); public Vec3l setZ(long z); - @Override - public default long[] asArray(){return new long[]{getX(), getY(), getZ()};} + @Override + public default long[] asArray() { return new long[] {getX(), getY(), getZ()}; } @Override public Vec3l copy(); @Override - public default Vec3l abs(){return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ()));} + public default Vec3l abs() { return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ())); } @Override - public default Vec3l negate(){return set(0L, 0L, 0L);} + public default Vec3l negate() { return set(0L, 0L, 0L); } @Override - public default Vec3l invert(){return set(-getX(), -getY(), -getZ());} + public default Vec3l invert() { return set(-getX(), -getY(), -getZ()); } @Override - public default Vec3l add(long value){return add(value, value, value);} - public default Vec3l add(Vec3l value){return add(value.getX(), value.getY(), value.getZ());} - public default Vec3l add(long x, long y, long z){return set(getX() + x, getY() + y, getZ() + z);} - + public default Vec3l add(long value) { return add(value, value, value); } + public default Vec3l add(Vec3l value) { return add(value.getX(), value.getY(), value.getZ()); } + public default Vec3l add(long x, long y, long z) { return set(getX() + x, getY() + y, getZ() + z); } @Override - public default Vec3l sub(long value){return sub(value, value, value);} - public default Vec3l sub(Vec3l value){return sub(value.getX(), value.getY(), value.getZ());} - public default Vec3l sub(long x, long y, long z){return set(getX() - x, getY() - y, getZ() - z);} - + public default Vec3l sub(long value) { return sub(value, value, value); } + public default Vec3l sub(Vec3l value) { return sub(value.getX(), value.getY(), value.getZ()); } + public default Vec3l sub(long x, long y, long z) { return set(getX() - x, getY() - y, getZ() - z); } @Override - public default Vec3l multiply(long value){return multiply(value, value, value);} - public default Vec3l multiply(Vec3l value){return multiply(value.getX(), value.getY(), value.getZ());} - public default Vec3l multiply(long x, long y, long z){return set(getX() * x, getY() * y, getZ() * z);} - + public default Vec3l multiply(long value) { return multiply(value, value, value); } + public default Vec3l multiply(Vec3l value) { return multiply(value.getX(), value.getY(), value.getZ()); } + public default Vec3l multiply(long x, long y, long z) { return set(getX() * x, getY() * y, getZ() * z); } @Override - public default Vec3l devide(long value){return devide(value, value, value);} - public default Vec3l devide(Vec3l value){return devide(value.getX(), value.getY(), value.getZ());} - public default Vec3l devide(long x, long y, long z){return set(getX() / x, getY() / y, getZ() / z);} - + public default Vec3l devide(long value) { return devide(value, value, value); } + public default Vec3l devide(Vec3l value) { return devide(value.getX(), value.getY(), value.getZ()); } + public default Vec3l devide(long x, long y, long z) { return set(getX() / x, getY() / y, getZ() / z); } @Override - public default Vec3l set(long value){return set(value, value, value);} - public default Vec3l set(Vec3l value){return set(value.getX(), value.getY(), value.getZ());} + public default Vec3l set(long value) { return set(value, value, value); } + public default Vec3l set(Vec3l value) { return set(value.getX(), value.getY(), value.getZ()); } public Vec3l set(long x, long y, long z); - - public default double distanceTo(Vec3l value){return distanceTo(value.getX(), value.getY(), value.getZ());} - public default double distanceTo(long x, long y, long z){return Math.sqrt(distanceToSquared(x, y, z));} - - public default long distanceToSquared(Vec3l value){return distanceToSquared(value.getX(), value.getY(), value.getZ());} - public default long distanceToSquared(long x, long y, long z) - { + public default double distanceTo(Vec3l value) { return distanceTo(value.getX(), value.getY(), value.getZ()); } + public default double distanceTo(long x, long y, long z) { return Math.sqrt(distanceToSquared(x, y, z)); } + public default long distanceToSquared(Vec3l value) { return distanceToSquared(value.getX(), value.getY(), value.getZ()); } + public default long distanceToSquared(long x, long y, long z) { long xPos = getX() - x; long yPos = getY() - y; long zPos = getZ() - z; return (xPos * xPos) + (yPos * yPos) + (zPos * zPos); } - @Override - public default long lengthSquared() {return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ());} - - public default long dotProduct(Vec3l value){return dotProduct(value.getX(), value.getY(), value.getZ());} - public default long dotProduct(long x, long y, long z){return (getX() * x) + (getY() * y) + (getZ() * z);} - - public default Vec3l min(Vec3l other) {return min(other, this);} - public default Vec3l min(Vec3l other, Vec3l result){return min(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3l min(long x, long y, long z) {return min(x, y, z, this);} - public default Vec3l min(long x, long y, long z, Vec3l result){return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z));} - - public default Vec3l max(Vec3l other) {return max(other, this);} - public default Vec3l max(Vec3l other, Vec3l result){return max(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3l max(long x, long y, long z) {return max(x, y, z, this);} - public default Vec3l max(long x, long y, long z, Vec3l result){return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z));} - - public default Vec3l difference(Vec3l other) {return difference(other, this);} - public default Vec3l difference(Vec3l other, Vec3l result){return difference(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3l difference(long x, long y, long z) {return difference(x, y, z, this);} - public default Vec3l difference(long x, long y, long z, Vec3l result){return result.set(getX() - x, getY() - y, getZ() - z);} @Override - public default Vec3l clamp(long min, long max){return clamp(min, max, ALL);} - public default Vec3l clamp(long min, long max, Vec3l result){return clamp(min, max, result, ALL);} + public default long lengthSquared() { return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()); } + public default long dotProduct(Vec3l value) { return dotProduct(value.getX(), value.getY(), value.getZ()); } + public default long dotProduct(long x, long y, long z) { return (getX() * x) + (getY() * y) + (getZ() * z); } + public default Vec3l min(Vec3l other) { return min(other, this); } + public default Vec3l min(Vec3l other, Vec3l result) { return min(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3l min(long x, long y, long z) { return min(x, y, z, this); } + public default Vec3l min(long x, long y, long z, Vec3l result) { return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z)); } + public default Vec3l max(Vec3l other) { return max(other, this); } + public default Vec3l max(Vec3l other, Vec3l result) { return max(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3l max(long x, long y, long z) { return max(x, y, z, this); } + public default Vec3l max(long x, long y, long z, Vec3l result) { return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z)); } + public default Vec3l difference(Vec3l other) { return difference(other, this); } + public default Vec3l difference(Vec3l other, Vec3l result) { return difference(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3l difference(long x, long y, long z) { return difference(x, y, z, this); } + public default Vec3l difference(long x, long y, long z, Vec3l result) { return result.set(getX() - x, getY() - y, getZ() - z); } @Override - public default Vec3l clamp(long min, long max, int filter){return clamp(min, max, this, filter);} - public default Vec3l clamp(long min, long max, Vec3l result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()));} + public default Vec3l clamp(long min, long max) { return clamp(min, max, ALL); } + public default Vec3l clamp(long min, long max, Vec3l result) { return clamp(min, max, result, ALL); } + @Override + public default Vec3l clamp(long min, long max, int filter) { return clamp(min, max, this, filter); } + public default Vec3l clamp(long min, long max, Vec3l result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ())); } @Override - public default Vec3l store(ByteBuffer buffer) - { + public default Vec3l store(ByteBuffer buffer) { buffer.putLong(getX()).putLong(getY()).putLong(getZ()); return this; } @Override - public default Vec3l load(ByteBuffer buffer) - { - return set(buffer.getLong(), buffer.getLong(), buffer.getLong()); - } + public default Vec3l load(ByteBuffer buffer) { return set(buffer.getLong(), buffer.getLong(), buffer.getLong()); } @Override - public default Vec3l store(LongBuffer buffer) - { + public default Vec3l store(LongBuffer buffer) { buffer.put(getX()).put(getY()).put(getZ()); return this; } @Override - public default Vec3l load(LongBuffer buffer) - { - return set(buffer.get(), buffer.get(), buffer.get()); - } - + public default Vec3l load(LongBuffer buffer) { return set(buffer.get(), buffer.get(), buffer.get()); } @Override - public default Vec3b asByte(){return isMutable() ? Vec3b.mutable((byte)getX(), (byte)getY(), (byte)getZ()) : Vec3b.of((byte)getX(), (byte)getY(), (byte)getZ());} + public default Vec3b asByte() { return isMutable() ? Vec3b.mutable((byte)getX(), (byte)getY(), (byte)getZ()) : Vec3b.of((byte)getX(), (byte)getY(), (byte)getZ()); } @Override - public default Vec3s asShort(){return isMutable() ? Vec3s.mutable((short)getX(), (short)getY(), (short)getZ()) : Vec3s.of((short)getX(), (short)getY(), (short)getZ());} + public default Vec3s asShort() { return isMutable() ? Vec3s.mutable((short)getX(), (short)getY(), (short)getZ()) : Vec3s.of((short)getX(), (short)getY(), (short)getZ()); } @Override - public default Vec3i asInt(){return isMutable() ? Vec3i.mutable((int)getX(), (int)getY(), (int)getZ()) : Vec3i.of((int)getX(), (int)getY(), (int)getZ());} + public default Vec3i asInt() { return isMutable() ? Vec3i.mutable((int)getX(), (int)getY(), (int)getZ()) : Vec3i.of((int)getX(), (int)getY(), (int)getZ()); } @Override - public default Vec3f asFloat() {return isMutable() ? Vec3f.mutable(getX(), getY(), getZ()) : Vec3f.of(getX(), getY(), getZ());} + public default Vec3f asFloat() { return isMutable() ? Vec3f.mutable(getX(), getY(), getZ()) : Vec3f.of(getX(), getY(), getZ()); } @Override - public default Vec3d asDouble(){return isMutable() ? Vec3d.mutable(getX(), getY(), getZ()) : Vec3d.of(getX(), getY(), getZ());} - + public default Vec3d asDouble() { return isMutable() ? Vec3d.mutable(getX(), getY(), getZ()) : Vec3d.of(getX(), getY(), getZ()); } @Override - public default Vec3l asMutable(){return isMutable() ? this : mutable(this);} + public default Vec3l asMutable() { return isMutable() ? this : mutable(this); } @Override - public default Vec3l asImmutable(){return isMutable() ? of(this) : this;} + public default Vec3l asImmutable() { return isMutable() ? of(this) : this; } @Override - public default Vec3l copyAsMutable(){return mutable(this);} + public default Vec3l copyAsMutable() { return mutable(this); } @Override - public default Vec3l copyAsImmutable(){return of(this);} + public default Vec3l copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec3lImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec3lImmutable.java index d54ef90..2d33ed3 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec3lImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec3lImmutable.java @@ -2,107 +2,59 @@ package speiger.src.coreengine.math.vector.longs; import java.util.Objects; -public class Vec3lImmutable implements Vec3l -{ +public class Vec3lImmutable implements Vec3l { final long x; final long y; final long z; - public Vec3lImmutable() - { + public Vec3lImmutable() { x = 0; y = 0; z = 0; } - public Vec3lImmutable(long value) - { + public Vec3lImmutable(long value) { x = value; y = value; z = value; } - public Vec3lImmutable(long x, long y, long z) - { + public Vec3lImmutable(long x, long y, long z) { this.x = x; this.y = y; this.z = z; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public long getX() - { - return x; - } + public boolean isMutable() { return false; } + @Override + public long getX() { return x; } + @Override + public long getY() { return y; } + @Override + public long getZ() { return z; } + @Override + public Vec3l setX(long x) { return this.x == x ? this : Vec3l.of(x, y, z); } + @Override + public Vec3l setY(long y) { return this.y == y ? this : Vec3l.of(x, y, z); } + @Override + public Vec3l setZ(long z) { return this.z == z ? this : Vec3l.of(x, y, z); } + @Override + public Vec3l copy() { return Vec3l.of(this); } + @Override + public Vec3l set(long x, long y, long z) { return this.x == x && this.y == y && this.z == z ? this : Vec3l.of(x, y, z); } + @Override + public int hashCode() { return Objects.hash(x, y, z); } @Override - public long getY() - { - return y; - } - - @Override - public long getZ() - { - return z; - } - - @Override - public Vec3l setX(long x) - { - return this.x == x ? this : Vec3l.of(x, y, z); - } - - @Override - public Vec3l setY(long y) - { - return this.y == y ? this : Vec3l.of(x, y, z); - } - - @Override - public Vec3l setZ(long z) - { - return this.z == z ? this : Vec3l.of(x, y, z); - } - - @Override - public Vec3l copy() - { - return Vec3l.of(this); - } - - @Override - public Vec3l set(long x, long y, long z) - { - return this.x == x && this.y == y && this.z == z ? this : Vec3l.of(x, y, z); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y, z); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec3l) - { + public boolean equals(Object obj) { + if(obj instanceof Vec3l) { Vec3l vec = (Vec3l)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z; } return false; } - + @Override - public String toString() - { - return "Vec3l[x="+x+", y="+y+", z="+z+"]"; - } + public String toString() { return "Vec3l[x="+x+", y="+y+", z="+z+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec3lMutable.java b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec3lMutable.java index 64453ab..135d14f 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec3lMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec3lMutable.java @@ -2,84 +2,57 @@ package speiger.src.coreengine.math.vector.longs; import java.util.Objects; -public class Vec3lMutable implements Vec3l -{ +public class Vec3lMutable implements Vec3l { long x; long y; long z; - public Vec3lMutable() - { - } + public Vec3lMutable() {} - public Vec3lMutable(long value) - { + public Vec3lMutable(long value) { x = value; y = value; z = value; } - public Vec3lMutable(long x, long y, long z) - { + public Vec3lMutable(long x, long y, long z) { this.x = x; this.y = y; this.z = z; } - - @Override - public boolean isMutable() - { - return true; - } @Override - public long getX() - { - return x; - } + public boolean isMutable() { return true; } + @Override + public long getX() { return x; } + @Override + public long getY() { return y; } + @Override + public long getZ() { return z; } @Override - public long getY() - { - return y; - } - - @Override - public long getZ() - { - return z; - } - - @Override - public Vec3l setX(long x) - { + public Vec3l setX(long x) { this.x = x; return this; } @Override - public Vec3l setY(long y) - { + public Vec3l setY(long y) { this.y = y; return this; } @Override - public Vec3l setZ(long z) - { + public Vec3l setZ(long z) { this.z = z; return this; } @Override - public Vec3l copy() - { - return Vec3l.mutable(this); - } + public Vec3l copy() { return Vec3l.mutable(this); } @Override - public Vec3l set(long x, long y, long z) - { + public Vec3l set(long x, long y, long z) { this.x = x; this.y = y; this.z = z; @@ -87,25 +60,17 @@ public class Vec3lMutable implements Vec3l } @Override - public int hashCode() - { - return Objects.hash(x, y, z); - } - + public int hashCode() { return Objects.hash(x, y, z); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec3l) - { + public boolean equals(Object obj) { + if(obj instanceof Vec3l) { Vec3l vec = (Vec3l)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z; } return false; } - + @Override - public String toString() - { - return "Vec3l[x="+x+", y="+y+", z="+z+"]"; - } + public String toString() { return "Vec3l[x="+x+", y="+y+", z="+z+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec4l.java b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec4l.java index 6364ad5..3c8876c 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec4l.java +++ b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec4l.java @@ -10,21 +10,19 @@ import speiger.src.coreengine.math.vector.floats.Vec4f; import speiger.src.coreengine.math.vector.ints.Vec4i; import speiger.src.coreengine.math.vector.shorts.Vec4s; -public interface Vec4l extends Vecl -{ +public interface Vec4l extends Vecl { public static final Vec4l ZERO = of(); public static final Vec4l MINUS_ONE = of(-1L); public static final Vec4l ONE = of(1L); - public static Vec4l mutable(){return new Vec4lMutable();} - public static Vec4l mutable(long value){return new Vec4lMutable(value);} - public static Vec4l mutable(long x, long y, long z, long w){return new Vec4lMutable(x, y, z, w);} - public static Vec4l mutable(Vec4l vec){return mutable(vec.getX(), vec.getY(), vec.getZ(), vec.getW());} - - public static Vec4l of(){return new Vec4lImmutable();} - public static Vec4l of(long value){return new Vec4lImmutable(value);} - public static Vec4l of(long x, long y, long z, long w){return new Vec4lImmutable(x, y, z, w);} - public static Vec4l of(Vec4l vec){return of(vec.getX(), vec.getY(), vec.getZ(), vec.getW());} + public static Vec4l mutable() { return new Vec4lMutable(); } + public static Vec4l mutable(long value) { return new Vec4lMutable(value); } + public static Vec4l mutable(long x, long y, long z, long w) { return new Vec4lMutable(x, y, z, w); } + public static Vec4l mutable(Vec4l vec) { return mutable(vec.getX(), vec.getY(), vec.getZ(), vec.getW()); } + public static Vec4l of() { return new Vec4lImmutable(); } + public static Vec4l of(long value) { return new Vec4lImmutable(value); } + public static Vec4l of(long x, long y, long z, long w) { return new Vec4lImmutable(x, y, z, w); } + public static Vec4l of(Vec4l vec) { return of(vec.getX(), vec.getY(), vec.getZ(), vec.getW()); } public long getX(); public long getY(); @@ -34,125 +32,104 @@ public interface Vec4l extends Vecl public Vec4l setY(long y); public Vec4l setZ(long z); public Vec4l setW(long w); + @Override - public default long[] asArray(){return new long[]{getX(), getY(), getZ(), getW()};} + public default long[] asArray() { return new long[] {getX(), getY(), getZ(), getW()}; } @Override public Vec4l copy(); @Override - public default Vec4l abs(){return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ()), Math.abs(getW()));} + public default Vec4l abs() { return set(Math.abs(getX()), Math.abs(getY()), Math.abs(getZ()), Math.abs(getW())); } @Override - public default Vec4l negate(){return set(0L, 0L, 0L, 0L);} + public default Vec4l negate() { return set(0L, 0L, 0L, 0L); } @Override - public default Vec4l invert(){return set(-getX(), -getY(), -getZ(), -getW());} - + public default Vec4l invert() { return set(-getX(), -getY(), -getZ(), -getW()); } @Override - public default Vec4l add(long value){return add(value, value, value, value);} - public default Vec4l add(Vec4l value){return add(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4l add(long x, long y, long z, long w){return set(getX() + x, getY() + y, getZ() + z, getW() + w);} - + public default Vec4l add(long value) { return add(value, value, value, value); } + public default Vec4l add(Vec4l value) { return add(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4l add(long x, long y, long z, long w) { return set(getX() + x, getY() + y, getZ() + z, getW() + w); } @Override - public default Vec4l sub(long value){return sub(value, value, value, value);} - public default Vec4l sub(Vec4l value){return sub(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4l sub(long x, long y, long z, long w){return set(getX() - x, getY() - y, getZ() - z, getW() - w);} - + public default Vec4l sub(long value) { return sub(value, value, value, value); } + public default Vec4l sub(Vec4l value) { return sub(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4l sub(long x, long y, long z, long w) { return set(getX() - x, getY() - y, getZ() - z, getW() - w); } @Override - public default Vec4l multiply(long value){return multiply(value, value, value, value);} - public default Vec4l multiply(Vec4l value){return multiply(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4l multiply(long x, long y, long z, long w){return set(getX() * x, getY() * y, getZ() * z, getW() * w);} - + public default Vec4l multiply(long value) { return multiply(value, value, value, value); } + public default Vec4l multiply(Vec4l value) { return multiply(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4l multiply(long x, long y, long z, long w) { return set(getX() * x, getY() * y, getZ() * z, getW() * w); } @Override - public default Vec4l devide(long value){return devide(value, value, value, value);} - public default Vec4l devide(Vec4l value){return devide(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4l devide(long x, long y, long z, long w){return set(getX() / x, getY() / y, getZ() / z, getW() / w);} - + public default Vec4l devide(long value) { return devide(value, value, value, value); } + public default Vec4l devide(Vec4l value) { return devide(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4l devide(long x, long y, long z, long w) { return set(getX() / x, getY() / y, getZ() / z, getW() / w); } @Override - public default Vec4l set(long value){return set(value, value, value, value);} - public default Vec4l set(Vec4l value){return set(value.getX(), value.getY(), value.getZ(), value.getW());} + public default Vec4l set(long value) { return set(value, value, value, value); } + public default Vec4l set(Vec4l value) { return set(value.getX(), value.getY(), value.getZ(), value.getW()); } public Vec4l set(long x, long y, long z, long w); - - public default double distanceTo(Vec4l value){return distanceTo(value.getX(), value.getY(), value.getZ(), value.getW());} - public default double distanceTo(long x, long y, long z, long w){return Math.sqrt(distanceTo(x, y, z, w));} - - public default long distanceToSquared(Vec4l value){return distanceToSquared(value.getX(), value.getY(), value.getZ(), value.getW());} - public default long distanceToSquared(long x, long y, long z, long w) - { + public default double distanceTo(Vec4l value) { return distanceTo(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default double distanceTo(long x, long y, long z, long w) { return Math.sqrt(distanceTo(x, y, z, w)); } + public default long distanceToSquared(Vec4l value) { return distanceToSquared(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default long distanceToSquared(long x, long y, long z, long w) { long xPos = getX() - x; long yPos = getY() - y; long zPos = getZ() - z; long wPos = getW() - w; return (xPos * xPos) + (yPos * yPos) + (zPos * zPos) + (wPos * wPos); } - @Override - public default long lengthSquared() {return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()) + (getW() * getW());} - - public default long dotProduct(Vec4l value){return dotProduct(value.getX(), value.getY(), value.getZ(), value.getW());} - public default long dotProduct(long x, long y, long z, long w){return (getX() * x) + (getY() * y) + (getZ() * z) + (getW() * w);}; - - public default Vec4l min(Vec4l other) {return min(other, this);} - public default Vec4l min(Vec4l other, Vec4l result){return min(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4l min(long x, long y, long z, long w) {return min(x, y, z, w, this);} - public default Vec4l min(long x, long y, long z, long w, Vec4l result){return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z), Math.min(getW(), w));} - - public default Vec4l max(Vec4l other) {return max(other, this);} - public default Vec4l max(Vec4l other, Vec4l result){return max(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4l max(long x, long y, long z, long w) {return max(x, y, z, w, this);} - public default Vec4l max(long x, long y, long z, long w, Vec4l result){return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z), Math.max(getZ(), z));} - - public default Vec4l difference(Vec4l other) {return difference(other, this);} - public default Vec4l difference(Vec4l other, Vec4l result){return difference(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4l difference(long x, long y, long z, long w) {return difference(x, y, z, w, this);} - public default Vec4l difference(long x, long y, long z, long w, Vec4l result){return result.set(getX() - x, getY() - y, getZ() - z, getW() - w);} @Override - public default Vec4l clamp(long min, long max){return clamp(min, max, ALL);} - public default Vec4l clamp(long min, long max, Vec4l result){return clamp(min, max, result, ALL);} + public default long lengthSquared() { return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()) + (getW() * getW()); } + public default long dotProduct(Vec4l value) { return dotProduct(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default long dotProduct(long x, long y, long z, long w) { return (getX() * x) + (getY() * y) + (getZ() * z) + (getW() * w); }; + public default Vec4l min(Vec4l other) { return min(other, this); } + public default Vec4l min(Vec4l other, Vec4l result) { return min(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4l min(long x, long y, long z, long w) { return min(x, y, z, w, this); } + public default Vec4l min(long x, long y, long z, long w, Vec4l result) { return result.set(Math.min(getX(), x), Math.min(getY(), y), Math.min(getZ(), z), Math.min(getW(), w)); } + public default Vec4l max(Vec4l other) { return max(other, this); } + public default Vec4l max(Vec4l other, Vec4l result) { return max(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4l max(long x, long y, long z, long w) { return max(x, y, z, w, this); } + public default Vec4l max(long x, long y, long z, long w, Vec4l result) { return result.set(Math.max(getX(), x), Math.max(getY(), y), Math.max(getZ(), z), Math.max(getZ(), z)); } + public default Vec4l difference(Vec4l other) { return difference(other, this); } + public default Vec4l difference(Vec4l other, Vec4l result) { return difference(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4l difference(long x, long y, long z, long w) { return difference(x, y, z, w, this); } + public default Vec4l difference(long x, long y, long z, long w, Vec4l result) { return result.set(getX() - x, getY() - y, getZ() - z, getW() - w); } @Override - public default Vec4l clamp(long min, long max, int filter){return clamp(min, max, this, filter);} - public default Vec4l clamp(long min, long max, Vec4l result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()), (filter & W) == 0 ? getW() : MathUtils.clamp(min, max, getW()));} + public default Vec4l clamp(long min, long max) { return clamp(min, max, ALL); } + public default Vec4l clamp(long min, long max, Vec4l result) { return clamp(min, max, result, ALL); } + @Override + public default Vec4l clamp(long min, long max, int filter) { return clamp(min, max, this, filter); } + public default Vec4l clamp(long min, long max, Vec4l result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()), (filter & W) == 0 ? getW() : MathUtils.clamp(min, max, getW())); } @Override - public default Vec4l store(ByteBuffer buffer) - { + public default Vec4l store(ByteBuffer buffer) { buffer.putLong(getX()).putLong(getY()).putLong(getZ()).putLong(getW()); return this; } @Override - public default Vec4l load(ByteBuffer buffer) - { - return set(buffer.getLong(), buffer.getLong(), buffer.getLong(), buffer.getLong()); - } + public default Vec4l load(ByteBuffer buffer) { return set(buffer.getLong(), buffer.getLong(), buffer.getLong(), buffer.getLong()); } @Override - public default Vec4l store(LongBuffer buffer) - { + public default Vec4l store(LongBuffer buffer) { buffer.put(getX()).put(getY()).put(getZ()).put(getW()); return this; } @Override - public default Vec4l load(LongBuffer buffer) - { - return set(buffer.get(), buffer.get(), buffer.get(), buffer.get()); - } - + public default Vec4l load(LongBuffer buffer) { return set(buffer.get(), buffer.get(), buffer.get(), buffer.get()); } @Override - public default Vec4b asByte(){return isMutable() ? Vec4b.mutable((byte)getX(), (byte)getY(), (byte)getZ(), (byte)getW()) : Vec4b.of((byte)getX(), (byte)getY(), (byte)getZ(), (byte)getW());} + public default Vec4b asByte() { return isMutable() ? Vec4b.mutable((byte)getX(), (byte)getY(), (byte)getZ(), (byte)getW()) : Vec4b.of((byte)getX(), (byte)getY(), (byte)getZ(), (byte)getW()); } @Override - public default Vec4s asShort(){return isMutable() ? Vec4s.mutable((short)getX(), (short)getY(), (short)getZ(), (short)getW()) : Vec4s.of((short)getX(), (short)getY(), (short)getZ(), (short)getW());} + public default Vec4s asShort() { return isMutable() ? Vec4s.mutable((short)getX(), (short)getY(), (short)getZ(), (short)getW()) : Vec4s.of((short)getX(), (short)getY(), (short)getZ(), (short)getW()); } @Override - public default Vec4i asInt(){return isMutable() ? Vec4i.mutable((int)getX(), (int)getY(), (int)getZ(), (int)getW()) : Vec4i.of((int)getX(), (int)getY(), (int)getZ(), (int)getW());} + public default Vec4i asInt() { return isMutable() ? Vec4i.mutable((int)getX(), (int)getY(), (int)getZ(), (int)getW()) : Vec4i.of((int)getX(), (int)getY(), (int)getZ(), (int)getW()); } @Override - public default Vec4f asFloat() {return isMutable() ? Vec4f.mutable(getX(), getY(), getZ(), getW()) : Vec4f.of(getX(), getY(), getZ(), getW());} + public default Vec4f asFloat() { return isMutable() ? Vec4f.mutable(getX(), getY(), getZ(), getW()) : Vec4f.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4d asDouble(){return isMutable() ? Vec4d.mutable(getX(), getY(), getZ(), getW()) : Vec4d.of(getX(), getY(), getZ(), getW());} - + public default Vec4d asDouble() { return isMutable() ? Vec4d.mutable(getX(), getY(), getZ(), getW()) : Vec4d.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4l asMutable(){return isMutable() ? this : mutable(this);} + public default Vec4l asMutable() { return isMutable() ? this : mutable(this); } @Override - public default Vec4l asImmutable(){return isMutable() ? of(this) : this;} + public default Vec4l asImmutable() { return isMutable() ? of(this) : this; } @Override - public default Vec4l copyAsMutable(){return mutable(this);} + public default Vec4l copyAsMutable() { return mutable(this); } @Override - public default Vec4l copyAsImmutable(){return of(this);} + public default Vec4l copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec4lImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec4lImmutable.java index 4e3364d..5d7a9a5 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec4lImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec4lImmutable.java @@ -2,114 +2,61 @@ package speiger.src.coreengine.math.vector.longs; import java.util.Objects; -public class Vec4lImmutable implements Vec4l -{ +public class Vec4lImmutable implements Vec4l { final long x; final long y; final long z; final long w; - public Vec4lImmutable() - { + public Vec4lImmutable() { x = 0; y = 0; z = 0; w = 0; } - public Vec4lImmutable(long value) - { + public Vec4lImmutable(long value) { x = value; y = value; z = value; w = value; } - public Vec4lImmutable(long x, long y, long z, long w) - { + public Vec4lImmutable(long x, long y, long z, long w) { this.x = x; this.y = y; this.z = z; this.w = w; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public long getX() - { - return x; - } + public boolean isMutable() { return false; } + @Override + public long getX() { return x; } + @Override + public long getY() { return y; } + @Override + public long getZ() { return z; } + @Override + public long getW() { return w; } + @Override + public Vec4l setX(long x) { return this.x == x ? this : Vec4l.of(x, y, z, w); } + @Override + public Vec4l setY(long y) { return this.y == y ? this : Vec4l.of(x, y, z, w); } + @Override + public Vec4l setZ(long z) { return this.z == z ? this : Vec4l.of(x, y, z, w); } + @Override + public Vec4l setW(long w) { return this.w == w ? this : Vec4l.of(x, y, z, w); } + @Override + public Vec4l copy() { return Vec4l.of(this); } + @Override + public Vec4l set(long x, long y, long z, long w) { return this.x == x && this.y == y && this.z == z && this.w == w ? this : Vec4l.of(x, y, z, w); } + @Override + public int hashCode() { return Objects.hash(x, y, z, w); } @Override - public long getY() - { - return y; - } - - @Override - public long getZ() - { - return z; - } - - @Override - public long getW() - { - return w; - } - - @Override - public Vec4l setX(long x) - { - return this.x == x ? this : Vec4l.of(x, y, z, w); - } - - @Override - public Vec4l setY(long y) - { - return this.y == y ? this : Vec4l.of(x, y, z, w); - } - - @Override - public Vec4l setZ(long z) - { - return this.z == z ? this : Vec4l.of(x, y, z, w); - } - - @Override - public Vec4l setW(long w) - { - return this.w == w ? this : Vec4l.of(x, y, z, w); - } - - @Override - public Vec4l copy() - { - return Vec4l.of(this); - } - - @Override - public Vec4l set(long x, long y, long z, long w) - { - return this.x == x && this.y == y && this.z == z && this.w == w ? this : Vec4l.of(x, y, z, w); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y, z, w); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec4l) - { + public boolean equals(Object obj) { + if(obj instanceof Vec4l) { Vec4l vec = (Vec4l)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z && vec.getW() == w; } @@ -117,8 +64,5 @@ public class Vec4lImmutable implements Vec4l } @Override - public String toString() - { - return "Vec4l[x="+x+", y="+y+", z="+z+", w="+w+"]"; - } + public String toString() { return "Vec4l[x="+x+", y="+y+", z="+z+", w="+w+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec4lMutable.java b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec4lMutable.java index 7beac5c..f12500c 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/longs/Vec4lMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/longs/Vec4lMutable.java @@ -2,100 +2,68 @@ package speiger.src.coreengine.math.vector.longs; import java.util.Objects; -public class Vec4lMutable implements Vec4l -{ +public class Vec4lMutable implements Vec4l { long x; long y; long z; long w; - public Vec4lMutable() - { - } + public Vec4lMutable() {} - public Vec4lMutable(long value) - { + public Vec4lMutable(long value) { x = value; y = value; z = value; w = value; } - public Vec4lMutable(long x, long y, long z, long w) - { + public Vec4lMutable(long x, long y, long z, long w) { this.x = x; this.y = y; this.z = z; this.w = w; } - - @Override - public boolean isMutable() - { - return true; - } @Override - public long getX() - { - return x; - } + public boolean isMutable() { return true; } + @Override + public long getX() { return x; } + @Override + public long getY() { return y; } + @Override + public long getZ() { return z; } + @Override + public long getW() { return w; } @Override - public long getY() - { - return y; - } - - @Override - public long getZ() - { - return z; - } - - @Override - public long getW() - { - return w; - } - - @Override - public Vec4l setX(long x) - { + public Vec4l setX(long x) { this.x = x; return this; } @Override - public Vec4l setY(long y) - { + public Vec4l setY(long y) { this.y = y; return this; } @Override - public Vec4l setZ(long z) - { + public Vec4l setZ(long z) { this.z = z; return this; } @Override - public Vec4l setW(long w) - { + public Vec4l setW(long w) { this.w = w; return this; } @Override - public Vec4l copy() - { - return Vec4l.mutable(this); - } + public Vec4l copy() { return Vec4l.mutable(this); } @Override - public Vec4l set(long x, long y, long z, long w) - { + public Vec4l set(long x, long y, long z, long w) { this.x = x; this.y = y; this.z = z; @@ -104,16 +72,11 @@ public class Vec4lMutable implements Vec4l } @Override - public int hashCode() - { - return Objects.hash(x, y, z, w); - } - + public int hashCode() { return Objects.hash(x, y, z, w); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec4l) - { + public boolean equals(Object obj) { + if(obj instanceof Vec4l) { Vec4l vec = (Vec4l)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z && vec.getW() == w; } @@ -121,8 +84,5 @@ public class Vec4lMutable implements Vec4l } @Override - public String toString() - { - return "Vec4l[x="+x+", y="+y+", z="+z+", w="+w+"]"; - } + public String toString() { return "Vec4l[x="+x+", y="+y+", z="+z+", w="+w+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/longs/Vecl.java b/src/main/java/speiger/src/coreengine/math/vector/longs/Vecl.java index 01fd402..c9e2528 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/longs/Vecl.java +++ b/src/main/java/speiger/src/coreengine/math/vector/longs/Vecl.java @@ -9,8 +9,7 @@ import speiger.src.coreengine.math.vector.floats.Vecf; import speiger.src.coreengine.math.vector.ints.Veci; import speiger.src.coreengine.math.vector.shorts.Vecs; -public interface Vecl extends Vec -{ +public interface Vecl extends Vec { public Vecl set(long value); public Vecl add(long value); public Vecl sub(long value); @@ -18,14 +17,11 @@ public interface Vecl extends Vec public Vecl devide(long value); public Vecl clamp(long min, long max); public Vecl clamp(long min, long max, int filter); - public long lengthSquared(); - public default double length(){return Math.sqrt(lengthSquared());} - + public default double length() { return Math.sqrt(lengthSquared()); } public Vecl store(LongBuffer buffer); public Vecl load(LongBuffer buffer); public long[] asArray(); - public Vecb asByte(); public Vecs asShort(); public Veci asInt(); diff --git a/src/main/java/speiger/src/coreengine/math/vector/matrix/Matrix4f.java b/src/main/java/speiger/src/coreengine/math/vector/matrix/Matrix4f.java index 28fa244..19ad342 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/matrix/Matrix4f.java +++ b/src/main/java/speiger/src/coreengine/math/vector/matrix/Matrix4f.java @@ -5,80 +5,55 @@ import java.nio.FloatBuffer; import java.util.Arrays; import speiger.src.coreengine.math.MathUtils; -import speiger.src.coreengine.math.vector.VectorUtil; import speiger.src.coreengine.math.vector.floats.Vec2f; import speiger.src.coreengine.math.vector.floats.Vec3f; import speiger.src.coreengine.math.vector.floats.Vec4f; import speiger.src.coreengine.math.vector.quaternion.Quaternion; -public class Matrix4f -{ +public class Matrix4f { static final Vec3f X_ROTATION = Vec3f.of(1F, 0F, 0F); static final Vec3f Y_ROTATION = Vec3f.of(0F, 1F, 0F); static final Vec3f Z_ROTATION = Vec3f.of(0F, 0F, 1F); - float[] data = new float[16]; - public Matrix4f() - { - setIdentity(); - } + public Matrix4f() { setIdentity(); } - public Matrix4f(float[] data) - { - System.arraycopy(data, 0, this.data, 0, 16); - } + public Matrix4f(float[] data) { System.arraycopy(data, 0, this.data, 0, 16); } - public Matrix4f(Matrix4f other) - { - this(other.data); - } + public Matrix4f(Matrix4f other) { this(other.data); } - public Matrix4f store(FloatBuffer buffer) - { + public Matrix4f store(FloatBuffer buffer) { buffer.put(data); return this; } - public Matrix4f store(ByteBuffer buffer) - { - for(int i = 0;i < 16;i++) - { - buffer.putFloat(data[i]); - } + public Matrix4f store(ByteBuffer buffer) { + for(int i = 0;i < 16;i++) { buffer.putFloat(data[i]); } return this; } - public Matrix4f store(Matrix4f other) - { + public Matrix4f store(Matrix4f other) { System.arraycopy(data, 0, other.data, 0, 16); return this; } - public Matrix4f load(FloatBuffer buffer) - { + public Matrix4f load(FloatBuffer buffer) { buffer.get(data); return this; } - public Matrix4f load(ByteBuffer buffer) - { - for(int i = 0;i < 16;i++) - { - data[i] = buffer.getFloat(); - } + public Matrix4f load(ByteBuffer buffer) { + for(int i = 0;i < 16;i++) { data[i] = buffer.getFloat(); } return this; } - public Matrix4f load(Matrix4f other) - { + public Matrix4f load(Matrix4f other) { System.arraycopy(other.data, 0, data, 0, 16); return this; } @Override - public String toString() - { + public String toString() { StringBuilder buf = new StringBuilder().append("\n"); buf.append("x0=").append(data[0]).append(' ').append("y0=").append(data[4]).append(' ').append("z0=").append(data[8]).append(' ').append("w0=").append(data[12]).append('\n'); buf.append("x1=").append(data[1]).append(' ').append("y1=").append(data[5]).append(' ').append("z1=").append(data[9]).append(' ').append("w1=").append(data[13]).append('\n'); @@ -88,44 +63,28 @@ public class Matrix4f } @Override - public boolean equals(Object obj) - { - if(obj instanceof Matrix4f) - { - return Arrays.equals(data, ((Matrix4f)obj).data); - } + public boolean equals(Object obj) { + if(obj instanceof Matrix4f) { return Arrays.equals(data, ((Matrix4f)obj).data); } return false; } - public float[] getData() - { - return data; - } + public float[] getData() { return data; } - public float get(int index) - { - return data[index]; - } + public float get(int index) { return data[index]; } - public float get(int column, int row) - { - return data[(column * 4) + row]; - } + public float get(int column, int row) { return data[(column * 4) + row]; } - public Matrix4f set(int column, int row, float value) - { + public Matrix4f set(int column, int row, float value) { data[(column * 4) + row] = value; return this; } - public Matrix4f set(int index, float value) - { + public Matrix4f set(int index, float value) { data[index] = value; return this; } - public Matrix4f setIdentity() - { + public Matrix4f setIdentity() { Arrays.fill(data, 0F); data[0] = 1F; data[5] = 1F; @@ -134,11 +93,9 @@ public class Matrix4f return this; } - public Matrix4f invert() - { + public Matrix4f invert() { float determinant = determinant(); - if(determinant != 0F) - { + if(determinant != 0F) { float determinant_inv = 1F / determinant; float t00 = determinant3x3(data[5], data[6], data[7], data[9], data[10], data[11], data[13], data[14], data[15]); float t01 = -determinant3x3(data[4], data[6], data[7], data[8], data[10], data[11], data[12], data[14], data[15]); @@ -177,8 +134,7 @@ public class Matrix4f return this; } - public Matrix4f flip() - { + public Matrix4f flip() { data[0] = -data[0]; data[1] = -data[1]; data[2] = -data[2]; @@ -198,14 +154,12 @@ public class Matrix4f return this; } - public Matrix4f negate() - { + public Matrix4f negate() { Arrays.fill(data, 0F); return this; } - public Matrix4f add(Matrix4f other) - { + public Matrix4f add(Matrix4f other) { data[0] += other.data[0]; data[1] += other.data[1]; data[2] += other.data[2]; @@ -225,8 +179,7 @@ public class Matrix4f return this; } - public Matrix4f sub(Matrix4f other) - { + public Matrix4f sub(Matrix4f other) { data[0] -= other.data[0]; data[1] -= other.data[1]; data[2] -= other.data[2]; @@ -246,8 +199,7 @@ public class Matrix4f return this; } - public Matrix4f multiply(Matrix4f other) - { + public Matrix4f multiply(Matrix4f other) { float data0 = data[0] * other.data[0] + data[4] * other.data[1] + data[8] * other.data[2] + data[12] * other.data[3]; float data1 = data[1] * other.data[0] + data[5] * other.data[1] + data[9] * other.data[2] + data[13] * other.data[3]; float data2 = data[2] * other.data[0] + data[6] * other.data[1] + data[10] * other.data[2] + data[14] * other.data[3]; @@ -283,8 +235,7 @@ public class Matrix4f return this; } - public Matrix4f transpose() - { + public Matrix4f transpose() { float data0 = data[0]; float data1 = data[4]; float data2 = data[8]; @@ -321,8 +272,7 @@ public class Matrix4f return this; } - public Matrix4f transpose3x3() - { + public Matrix4f transpose3x3() { float nm00 = data[0]; float nm01 = data[4]; float nm02 = data[8]; @@ -344,29 +294,23 @@ public class Matrix4f return this; } - public Matrix4f decompose(Vec3f position, Quaternion rotation, Vec3f scale) - { + public Matrix4f decompose(Vec3f position, Quaternion rotation, Vec3f scale) { position.set(get(3, 0), get(3, 1), get(3, 2)); rotation.set(this); scale.set(get(0, 0), get(1, 1), get(2, 2)); return this; } - public Matrix4f setTranslation(Vec3f vec) - { + public Matrix4f setTranslation(Vec3f vec) { data[12] = vec.getX(); data[13] = vec.getY(); data[14] = vec.getZ(); return this; } - public Matrix4f translate(Vec2f vec) - { - return translate(vec.getX(), vec.getY()); - } + public Matrix4f translate(Vec2f vec) { return translate(vec.getX(), vec.getY()); } - public Matrix4f translate(float x, float y) - { + public Matrix4f translate(float x, float y) { data[12] += data[0] * x + data[4] * y; data[13] += data[1] * x + data[5] * y; data[14] += data[2] * x + data[6] * y; @@ -374,8 +318,7 @@ public class Matrix4f return this; } - public Matrix4f translate(Vec3f vec) - { + public Matrix4f translate(Vec3f vec) { data[12] += data[0] * vec.getX() + data[4] * vec.getY() + data[8] * vec.getZ(); data[13] += data[1] * vec.getX() + data[5] * vec.getY() + data[9] * vec.getZ(); data[14] += data[2] * vec.getX() + data[6] * vec.getY() + data[10] * vec.getZ(); @@ -383,8 +326,7 @@ public class Matrix4f return this; } - public Matrix4f translate(float x, float y, float z) - { + public Matrix4f translate(float x, float y, float z) { data[12] += data[0] * x + data[4] * y + data[8] * z; data[13] += data[1] * x + data[5] * y + data[9] * z; data[14] += data[2] * x + data[6] * y + data[10] * z; @@ -392,38 +334,19 @@ public class Matrix4f return this; } - public Matrix4f rotateX(float angle) - { - return rotate((float)Math.toRadians(angle), X_ROTATION); - } + public Matrix4f rotateX(float angle) { return rotate((float)Math.toRadians(angle), X_ROTATION); } - public Matrix4f rotateY(float angle) - { - return rotate((float)Math.toRadians(angle), Y_ROTATION); - } + public Matrix4f rotateY(float angle) { return rotate((float)Math.toRadians(angle), Y_ROTATION); } - public Matrix4f rotateZ(float angle) - { - return rotate((float)Math.toRadians(angle), Z_ROTATION); - } + public Matrix4f rotateZ(float angle) { return rotate((float)Math.toRadians(angle), Z_ROTATION); } - public Matrix4f rotateRadX(float angle) - { - return rotate(angle, X_ROTATION); - } + public Matrix4f rotateRadX(float angle) { return rotate(angle, X_ROTATION); } - public Matrix4f rotateRadY(float angle) - { - return rotate(angle, Y_ROTATION); - } + public Matrix4f rotateRadY(float angle) { return rotate(angle, Y_ROTATION); } - public Matrix4f rotateRadZ(float angle) - { - return rotate(angle, Z_ROTATION); - } + public Matrix4f rotateRadZ(float angle) { return rotate(angle, Z_ROTATION); } - public Matrix4f rotate(float angle, Vec3f axis) - { + public Matrix4f rotate(float angle, Vec3f axis) { float c = MathUtils.cos(angle); float s = MathUtils.sin(angle); float oneminusc = 1.0f - c; @@ -469,8 +392,7 @@ public class Matrix4f return this; } - public Matrix4f rotate(Quaternion rotation) - { + public Matrix4f rotate(Quaternion rotation) { float w2 = rotation.getW() * rotation.getW(); float x2 = rotation.getX() * rotation.getX(); float y2 = rotation.getY() * rotation.getY(); @@ -519,8 +441,7 @@ public class Matrix4f return this; } - public Matrix4f setRotation(Matrix4f source) - { + public Matrix4f setRotation(Matrix4f source) { data[0] = source.data[0]; data[1] = source.data[1]; data[2] = source.data[2]; @@ -533,8 +454,7 @@ public class Matrix4f return this; } - public Matrix4f setBillboard(Matrix4f source) - { + public Matrix4f setBillboard(Matrix4f source) { data[0] = source.data[0]; data[1] = source.data[4]; data[2] = source.data[8]; @@ -547,18 +467,11 @@ public class Matrix4f return this; } - public Matrix4f scale(Vec3f vec) - { - return scale(vec.getX(), vec.getY(), vec.getZ()); - } + public Matrix4f scale(Vec3f vec) { return scale(vec.getX(), vec.getY(), vec.getZ()); } - public Matrix4f scale(float value) - { - return scale(value, value, value); - } + public Matrix4f scale(float value) { return scale(value, value, value); } - public Matrix4f scale(float x, float y, float z) - { + public Matrix4f scale(float x, float y, float z) { data[0] *= x; data[1] *= x; data[2] *= x; @@ -574,18 +487,11 @@ public class Matrix4f return this; } - public Matrix4f unscale(Vec3f vec) - { - return unscale(vec.getX(), vec.getY(), vec.getZ()); - } + public Matrix4f unscale(Vec3f vec) { return unscale(vec.getX(), vec.getY(), vec.getZ()); } - public Matrix4f unscale(float scale) - { - return unscale(scale, scale, scale); - } + public Matrix4f unscale(float scale) { return unscale(scale, scale, scale); } - public Matrix4f unscale(float x, float y, float z) - { + public Matrix4f unscale(float x, float y, float z) { data[0] /= x; data[1] /= x; data[2] /= x; @@ -601,50 +507,40 @@ public class Matrix4f return this; } - public Matrix4f setPerspective(float fovy, float aspect, float zNear, float zFar) - { + public Matrix4f setPerspective(float fovy, float aspect, float zNear, float zFar) { float h = (float)Math.tan(fovy * 0.5f); set(0, 0, 1F / (h * aspect)).set(1, 1, 1F / h); boolean farInf = zFar > 0 && Float.isInfinite(zFar); boolean nearInf = zNear > 0 && Float.isInfinite(zNear); - if(farInf) - { + if(farInf) { float e = 1E-6f; set(2, 2, e - 1F).set(3, 2, (e - 2F) * zNear); } - else if(nearInf) - { + else if(nearInf) { float e = 1E-6f; set(2, 2, 1F - e).set(3, 2, (2F - e) * zFar); } - else - { + else { set(2, 2, (zFar + zNear) / (zNear - zFar)).set(3, 2, (zFar + zFar) * zNear / (zNear - zFar)); } return set(2, 3, -1.0f); } - public Matrix4f getTranslation(Vec3f vec) - { + public Matrix4f getTranslation(Vec3f vec) { vec.set(data[12], data[13], data[14]); return this; } - public Matrix4f getScale(Vec3f vec) - { + public Matrix4f getScale(Vec3f vec) { vec.setX((float)Math.sqrt(data[0] * data[0] + data[1] * data[1] + data[2] * data[2])); vec.setY((float)Math.sqrt(data[4] * data[4] + data[5] * data[5] + data[6] * data[6])); vec.setZ((float)Math.sqrt(data[8] * data[8] + data[9] * data[9] + data[10] * data[10])); return this; } - public Vec4f transform(Vec4f input) - { - return transform(input, input); - } + public Vec4f transform(Vec4f input) { return transform(input, input); } - public Vec4f transform(Vec4f input, Vec4f output) - { + public Vec4f transform(Vec4f input, Vec4f output) { float x = data[0] * input.getX() + data[4] * input.getY() + data[8] * input.getZ() + data[12] * input.getW(); float y = data[1] * input.getX() + data[5] * input.getY() + data[9] * input.getZ() + data[13] * input.getW(); float z = data[2] * input.getX() + data[6] * input.getY() + data[10] * input.getZ() + data[14] * input.getW(); @@ -652,35 +548,28 @@ public class Matrix4f return output.set(x, y, z, w); } - public void transform(Vec4f input, FloatBuffer buffer) - { + public void transform(Vec4f input, FloatBuffer buffer) { buffer.put(data[0] * input.getX() + data[4] * input.getY() + data[8] * input.getZ() + data[12] * input.getW()); buffer.put(data[1] * input.getX() + data[5] * input.getY() + data[9] * input.getZ() + data[13] * input.getW()); buffer.put(data[2] * input.getX() + data[6] * input.getY() + data[10] * input.getZ() + data[14] * input.getW()); buffer.put(data[3] * input.getX() + data[7] * input.getY() + data[11] * input.getZ() + data[15] * input.getW()); } - public Vec3f transform(Vec3f input, boolean position) - { - return transform(input, input, position); - } + public Vec3f transform(Vec3f input, boolean position) { return transform(input, input, position); } - public Vec3f transform(Vec3f input, Vec3f output, boolean position) - { + public Vec3f transform(Vec3f input, Vec3f output, boolean position) { float pos = position ? 1F : 0F; return output.set(data[0] * input.getX() + data[4] * input.getY() + data[8] * input.getZ() + data[12] * pos, data[1] * input.getX() + data[5] * input.getY() + data[9] * input.getZ() + data[13] * pos, data[2] * input.getX() + data[6] * input.getY() + data[10] * input.getZ() + data[14] * pos); } - public void transform(Vec3f input, FloatBuffer buffer, boolean position) - { + public void transform(Vec3f input, FloatBuffer buffer, boolean position) { float pos = position ? 1F : 0F; buffer.put(data[0] * input.getX() + data[4] * input.getY() + data[8] * input.getZ() + data[12] * pos); buffer.put(data[1] * input.getX() + data[5] * input.getY() + data[9] * input.getZ() + data[13] * pos); buffer.put(data[2] * input.getX() + data[6] * input.getY() + data[10] * input.getZ() + data[14] * pos); } - public float determinant() - { + public float determinant() { float f = data[0] * ((data[5] * data[10] * data[15] + data[6] * data[11] * data[13] + data[7] * data[9] * data[14]) - data[7] * data[10] * data[13] - data[5] * data[11] * data[14] - data[6] * data[9] * data[15]); f -= data[1] * ((data[4] * data[10] * data[15] + data[6] * data[11] * data[12] + data[7] * data[8] * data[14]) - data[7] * data[10] * data[12] - data[4] * data[11] * data[14] - data[6] * data[8] * data[15]); f += data[2] * ((data[4] * data[9] * data[15] + data[5] * data[11] * data[12] + data[7] * data[8] * data[13]) - data[7] * data[9] * data[12] - data[4] * data[11] * data[13] - data[5] * data[8] * data[15]); @@ -688,13 +577,9 @@ public class Matrix4f return f; } - public float determinant3x3(float t00, float t01, float t02, float t10, float t11, float t12, float t20, float t21, float t22) - { - return t00 * (t11 * t22 - t12 * t21) + t01 * (t12 * t20 - t10 * t22) + t02 * (t10 * t21 - t11 * t20); - } + public float determinant3x3(float t00, float t01, float t02, float t10, float t11, float t12, float t20, float t21, float t22) { return t00 * (t11 * t22 - t12 * t21) + t01 * (t12 * t20 - t10 * t22) + t02 * (t10 * t21 - t11 * t20); } - public Matrix4f setTransform(Vec3f position, Vec3f rotation, float scale) - { + public Matrix4f setTransform(Vec3f position, Vec3f rotation, float scale) { setIdentity(); translate(position); rotate((float)Math.toRadians(rotation.getX()), X_ROTATION); @@ -704,8 +589,7 @@ public class Matrix4f return this; } - public Matrix4f setTransform(Vec3f position, Vec3f rotation, Vec3f scale) - { + public Matrix4f setTransform(Vec3f position, Vec3f rotation, Vec3f scale) { setIdentity(); translate(position); rotate((float)Math.toRadians(rotation.getX()), X_ROTATION); @@ -715,8 +599,7 @@ public class Matrix4f return this; } - public Matrix4f setTransform(Vec3f position, Vec3f offset, Vec3f rotation, float scale) - { + public Matrix4f setTransform(Vec3f position, Vec3f offset, Vec3f rotation, float scale) { setIdentity(); translate(position); translate(offset); @@ -727,8 +610,7 @@ public class Matrix4f return this; } - public Matrix4f setTransform(Vec3f position, Vec3f offset, Vec3f rotation, Vec3f scale) - { + public Matrix4f setTransform(Vec3f position, Vec3f offset, Vec3f rotation, Vec3f scale) { setIdentity(); translate(position); translate(offset); @@ -739,8 +621,7 @@ public class Matrix4f return this; } - public Matrix4f setTransform(Vec3f position, Quaternion rotation, float scale) - { + public Matrix4f setTransform(Vec3f position, Quaternion rotation, float scale) { setIdentity(); translate(position); rotate(rotation); @@ -748,8 +629,7 @@ public class Matrix4f return this; } - public Matrix4f setTransform(Vec3f position, Quaternion rotation, Vec3f scale) - { + public Matrix4f setTransform(Vec3f position, Quaternion rotation, Vec3f scale) { setIdentity(); translate(position); rotate(rotation); @@ -757,8 +637,7 @@ public class Matrix4f return this; } - public Matrix4f setTransform(Vec3f position, Vec3f offset, Quaternion rotation, float scale) - { + public Matrix4f setTransform(Vec3f position, Vec3f offset, Quaternion rotation, float scale) { setIdentity(); translate(position); translate(offset); @@ -767,8 +646,7 @@ public class Matrix4f return this; } - public Matrix4f setTransform(Vec3f position, Vec3f offset, Quaternion rotation, Vec3f scale) - { + public Matrix4f setTransform(Vec3f position, Vec3f offset, Quaternion rotation, Vec3f scale) { setIdentity(); translate(position); translate(offset); @@ -777,8 +655,7 @@ public class Matrix4f return this; } - public Matrix4f setTransform(Vec3f position, Matrix4f billRotation, float scale) - { + public Matrix4f setTransform(Vec3f position, Matrix4f billRotation, float scale) { setIdentity(); translate(position); setBillboard(billRotation); @@ -786,8 +663,7 @@ public class Matrix4f return this; } - public Matrix4f setTransform(Vec3f position, Matrix4f billRotation, Vec3f scale) - { + public Matrix4f setTransform(Vec3f position, Matrix4f billRotation, Vec3f scale) { setIdentity(); translate(position); setBillboard(billRotation); @@ -796,60 +672,55 @@ public class Matrix4f return this; } - public Vec3f project(float x, float y, float z, int[] viewport, Vec3f winCoordsDest) - { - float invW = 1F / VectorUtil.fma(data[3], x, VectorUtil.fma(data[7], y, VectorUtil.fma(data[11], z, data[15]))); - float nx = VectorUtil.fma(data[0], x, VectorUtil.fma(data[4], y, VectorUtil.fma(data[8], z, data[12]))) * invW; - float ny = VectorUtil.fma(data[1], x, VectorUtil.fma(data[5], y, VectorUtil.fma(data[9], z, data[13]))) * invW; - float nz = VectorUtil.fma(data[2], x, VectorUtil.fma(data[6], y, VectorUtil.fma(data[10], z, data[14]))) * invW; - return winCoordsDest.set(VectorUtil.fma(VectorUtil.fma(nx, 0.5F, 0.5F), viewport[2], viewport[0]), VectorUtil.fma(VectorUtil.fma(ny, 0.5F, 0.5F), viewport[3], viewport[1]), VectorUtil.fma(0.5F, nz, 0.5F)); + public Vec3f project(float x, float y, float z, int[] viewport, Vec3f winCoordsDest) { + float invW = 1F / Math.fma(data[3], x, Math.fma(data[7], y, Math.fma(data[11], z, data[15]))); + float nx = Math.fma(data[0], x, Math.fma(data[4], y, Math.fma(data[8], z, data[12]))) * invW; + float ny = Math.fma(data[1], x, Math.fma(data[5], y, Math.fma(data[9], z, data[13]))) * invW; + float nz = Math.fma(data[2], x, Math.fma(data[6], y, Math.fma(data[10], z, data[14]))) * invW; + return winCoordsDest.set( Math.fma(Math.fma(nx, 0.5F, 0.5F), viewport[2], viewport[0]), Math.fma( Math.fma(ny, 0.5F, 0.5F), viewport[3], viewport[1]), Math.fma(0.5F, nz, 0.5F)); } - public Vec3f unproject(float winX, float winY, float winZ, int[] viewport, Vec3f dest) { - float a = data[0] * data[5] - data[1] * data[4]; - float b = data[0] * data[6] - data[2] * data[4]; - float c = data[0] * data[7] - data[3] * data[4]; - float d = data[1] * data[6] - data[2] * data[5]; - float e = data[1] * data[7] - data[3] * data[5]; - float f = data[2] * data[7] - data[3] * data[6]; - float g = data[8] * data[13] - data[9] * data[12]; - float h = data[8] * data[14] - data[10] * data[12]; - float i = data[8] * data[15] - data[11] * data[12]; - float j = data[9] * data[14] - data[10] * data[13]; - float k = data[9] * data[15] - data[11] * data[13]; - float l = data[10] * data[15] - data[11] * data[14]; - float det = a * l - b * k + c * j + d * i - e * h + f * g; - det = 1.0f / det; - float im00 = ( data[5] * l - data[6] * k + data[7] * j) * det; - float im01 = (-data[1] * l + data[2] * k - data[3] * j) * det; - float im02 = ( data[13] * f - data[14] * e + data[15] * d) * det; - float im03 = (-data[9] * f + data[10] * e - data[11] * d) * det; - float im10 = (-data[4] * l + data[6] * i - data[7] * h) * det; - float im11 = ( data[0] * l - data[2] * i + data[3] * h) * det; - float im12 = (-data[12] * f + data[14] * c - data[15] * b) * det; - float im13 = ( data[8] * f - data[10] * c + data[11] * b) * det; - float im20 = ( data[4] * k - data[5] * i + data[7] * g) * det; - float im21 = (-data[0] * k + data[1] * i - data[3] * g) * det; - float im22 = ( data[12] * e - data[13] * c + data[15] * a) * det; - float im23 = (-data[8] * e + data[9] * c - data[11] * a) * det; - float im30 = (-data[4] * j + data[5] * h - data[6] * g) * det; - float im31 = ( data[0] * j - data[1] * h + data[2] * g) * det; - float im32 = (-data[12] * d + data[13] * b - data[14] * a) * det; - float im33 = ( data[8] * d - data[9] * b + data[10] * a) * det; - float ndcX = (winX-viewport[0])/viewport[2]*2.0f-1.0f; - float ndcY = (winY-viewport[1])/viewport[3]*2.0f-1.0f; - float ndcZ = winZ+winZ-1.0f; - float invW = 1.0f / (im03 * ndcX + im13 * ndcY + im23 * ndcZ + im33); - return dest.set((im00 * ndcX + im10 * ndcY + im20 * ndcZ + im30) * invW, (im01 * ndcX + im11 * ndcY + im21 * ndcZ + im31) * invW, (im02 * ndcX + im12 * ndcY + im22 * ndcZ + im32) * invW); - } - - public Matrix4f ortho(float x, float y, float width, float height, float zNear, float zFar) - { - return ortho(x, x+width, y+height, y, zNear, zFar, false); - } + public Vec3f unproject(float winX, float winY, float winZ, int[] viewport, Vec3f dest) { + float a = data[0] * data[5] - data[1] * data[4]; + float b = data[0] * data[6] - data[2] * data[4]; + float c = data[0] * data[7] - data[3] * data[4]; + float d = data[1] * data[6] - data[2] * data[5]; + float e = data[1] * data[7] - data[3] * data[5]; + float f = data[2] * data[7] - data[3] * data[6]; + float g = data[8] * data[13] - data[9] * data[12]; + float h = data[8] * data[14] - data[10] * data[12]; + float i = data[8] * data[15] - data[11] * data[12]; + float j = data[9] * data[14] - data[10] * data[13]; + float k = data[9] * data[15] - data[11] * data[13]; + float l = data[10] * data[15] - data[11] * data[14]; + float det = a * l - b * k + c * j + d * i - e * h + f * g; + det = 1.0f / det; + float im00 = (data[5] * l - data[6] * k + data[7] * j) * det; + float im01 = (-data[1] * l + data[2] * k - data[3] * j) * det; + float im02 = (data[13] * f - data[14] * e + data[15] * d) * det; + float im03 = (-data[9] * f + data[10] * e - data[11] * d) * det; + float im10 = (-data[4] * l + data[6] * i - data[7] * h) * det; + float im11 = (data[0] * l - data[2] * i + data[3] * h) * det; + float im12 = (-data[12] * f + data[14] * c - data[15] * b) * det; + float im13 = (data[8] * f - data[10] * c + data[11] * b) * det; + float im20 = (data[4] * k - data[5] * i + data[7] * g) * det; + float im21 = (-data[0] * k + data[1] * i - data[3] * g) * det; + float im22 = (data[12] * e - data[13] * c + data[15] * a) * det; + float im23 = (-data[8] * e + data[9] * c - data[11] * a) * det; + float im30 = (-data[4] * j + data[5] * h - data[6] * g) * det; + float im31 = (data[0] * j - data[1] * h + data[2] * g) * det; + float im32 = (-data[12] * d + data[13] * b - data[14] * a) * det; + float im33 = (data[8] * d - data[9] * b + data[10] * a) * det; + float ndcX = (winX - viewport[0]) / viewport[2] * 2.0f - 1.0f; + float ndcY = (winY - viewport[1]) / viewport[3] * 2.0f - 1.0f; + float ndcZ = winZ + winZ - 1.0f; + float invW = 1.0f / (im03 * ndcX + im13 * ndcY + im23 * ndcZ + im33); + return dest.set((im00 * ndcX + im10 * ndcY + im20 * ndcZ + im30) * invW, (im01 * ndcX + im11 * ndcY + im21 * ndcZ + im31) * invW, (im02 * ndcX + im12 * ndcY + im22 * ndcZ + im32) * invW); + } - public Matrix4f ortho(float left, float right, float bottom, float top, float zNear, float zFar, boolean zZeroToOne) - { + public Matrix4f ortho(float x, float y, float width, float height, float zNear, float zFar) { return ortho(x, x + width, y + height, y, zNear, zFar, false); } + + public Matrix4f ortho(float left, float right, float bottom, float top, float zNear, float zFar, boolean zZeroToOne) { float rm00 = 2F / (right - left); float rm11 = 2F / (top - bottom); float rm22 = (zZeroToOne ? 1F : 2F) / (zFar - zNear); @@ -876,10 +747,8 @@ public class Matrix4f return this; } - public Vec4f storeFrustrumPlane(int plane, Vec4f toStore) - { - switch(plane) - { + public Vec4f storeFrustrumPlane(int plane, Vec4f toStore) { + switch(plane) { case 0: return toStore.set(data[3] + data[0], data[7] + data[4], data[11] + data[8], data[15] + data[12]).normalize3D(); case 1: diff --git a/src/main/java/speiger/src/coreengine/math/vector/quaternion/Quaternion.java b/src/main/java/speiger/src/coreengine/math/vector/quaternion/Quaternion.java index 409686b..499159c 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/quaternion/Quaternion.java +++ b/src/main/java/speiger/src/coreengine/math/vector/quaternion/Quaternion.java @@ -7,24 +7,21 @@ import speiger.src.coreengine.math.MathUtils; import speiger.src.coreengine.math.vector.floats.Vec4f; import speiger.src.coreengine.math.vector.matrix.Matrix4f; -public interface Quaternion -{ +public interface Quaternion { public static final Quaternion ZERO = of(0F, 0F, 0F, 0F); public static final Quaternion IDENTITY = of(); - public static Quaternion mutable(){return new QuaternionMutable();} - public static Quaternion mutable(Quaternion source){return mutable(source.getX(), source.getY(), source.getZ(), source.getW());} - public static Quaternion mutable(float x, float y, float z, float w){return new QuaternionMutable(x, y, z, w);} - public static Quaternion mutableRad(float x, float y, float z, float angle){return mutable().setAxisRad(x, y, z, angle);} - public static Quaternion mutableDeg(float x, float y, float z, float angle){return mutable().setAxisDeg(x, y, z, angle);} - - public static Quaternion of(){return new QuaternionImmutable();} - public static Quaternion of(Quaternion source){return of(source.getX(), source.getY(), source.getZ(), source.getW());} - public static Quaternion of(float x, float y, float z, float w){return new QuaternionImmutable(x, y, z, w);} - public static Quaternion ofRad(float x, float y, float z, float angle){return ZERO.setAxisRad(x, y, z, angle);} - public static Quaternion ofDeg(float x, float y, float z, float angle){return ZERO.setAxisDeg(x, y, z, angle);} - - public static double acos(double v){return v < -1D ? 3.141592653589793D : (v > 1D ? 0D : Math.acos(v));} + public static Quaternion mutable() { return new QuaternionMutable(); } + public static Quaternion mutable(Quaternion source) { return mutable(source.getX(), source.getY(), source.getZ(), source.getW()); } + public static Quaternion mutable(float x, float y, float z, float w) { return new QuaternionMutable(x, y, z, w); } + public static Quaternion mutableRad(float x, float y, float z, float angle) { return mutable().setAxisRad(x, y, z, angle); } + public static Quaternion mutableDeg(float x, float y, float z, float angle) { return mutable().setAxisDeg(x, y, z, angle); } + public static Quaternion of() { return new QuaternionImmutable(); } + public static Quaternion of(Quaternion source) { return of(source.getX(), source.getY(), source.getZ(), source.getW()); } + public static Quaternion of(float x, float y, float z, float w) { return new QuaternionImmutable(x, y, z, w); } + public static Quaternion ofRad(float x, float y, float z, float angle) { return ZERO.setAxisRad(x, y, z, angle); } + public static Quaternion ofDeg(float x, float y, float z, float angle) { return ZERO.setAxisDeg(x, y, z, angle); } + public static double acos(double v) { return v < -1D ? 3.141592653589793D : (v > 1D ? 0D : Math.acos(v)); } public Quaternion setX(float x); public Quaternion setY(float y); @@ -34,46 +31,42 @@ public interface Quaternion public float getY(); public float getZ(); public float getW(); - public default float[] asArray(){return new float[]{getX(), getY(), getZ(), getW()};} - public default Quaternion negate(){return set(0F, 0F, 0F, 0F);} - public default Quaternion invert(){return set(-getX(), -getY(), -getZ(), -getW());} - public default Quaternion normalize(){return scale(1.0F / length());} - public default Quaternion conjugate(){return set(-getX(), -getY(), -getZ(), getW());} - public default Quaternion setIdentity(){return set(0F, 0F, 0F, 1F);} - - public default Quaternion multiply(Quaternion other){return set(getX() * other.getW() + getW() * other.getX() + getY() * other.getZ() - getZ() * other.getY(), getY() * other.getW() + getW() * other.getY() + getZ() * other.getX() - getX() * other.getZ(), getZ() * other.getW() + getW() * other.getZ() + getX() * other.getY() - getY() * other.getX(), getW() * other.getW() - getX() * other.getX() - getY() * other.getY() - getZ() * other.getZ());} - public default Quaternion scale(float scale){return set(getX() * scale, getY() * scale, getZ() * scale, getW() * scale);} - public default Quaternion rotateX(float angle) - { + public default float[] asArray() { return new float[] {getX(), getY(), getZ(), getW()}; } + public default Quaternion negate() { return set(0F, 0F, 0F, 0F); } + public default Quaternion invert() { return set(-getX(), -getY(), -getZ(), -getW()); } + public default Quaternion normalize() { return scale(1.0F / length()); } + public default Quaternion conjugate() { return set(-getX(), -getY(), -getZ(), getW()); } + public default Quaternion setIdentity() { return set(0F, 0F, 0F, 1F); } + public default Quaternion multiply(Quaternion other) { return set(getX() * other.getW() + getW() * other.getX() + getY() * other.getZ() - getZ() * other.getY(), getY() * other.getW() + getW() * other.getY() + getZ() * other.getX() - getX() * other.getZ(), getZ() * other.getW() + getW() * other.getZ() + getX() * other.getY() - getY() * other.getX(), getW() * other.getW() - getX() * other.getX() - getY() * other.getY() - getZ() * other.getZ()); } + public default Quaternion scale(float scale) { return set(getX() * scale, getY() * scale, getZ() * scale, getW() * scale); } + public default Quaternion rotateX(float angle) { angle = (float)Math.toRadians(angle); float sin = MathUtils.sin(angle * 0.5D); float cos = MathUtils.cos(angle * 0.5D); return set(getW() * sin + getX() * cos, getY() * cos + getZ() * sin, getZ() * cos - getY() * sin, getW() * cos - getX() * sin); } - public default Quaternion rotateY(float angle) - { + + public default Quaternion rotateY(float angle) { angle = (float)Math.toRadians(angle); float sin = MathUtils.sin(angle * 0.5D); float cos = MathUtils.cos(angle * 0.5D); return set(getX() * cos - getZ() * sin, getW() * sin + getY() * cos, getX() * sin + getZ() * cos, getW() * cos - getY() * sin); } - public default Quaternion rotateZ(float angle) - { + + public default Quaternion rotateZ(float angle) { angle = (float)Math.toRadians(angle); float sin = MathUtils.sin(angle * 0.5D); float cos = MathUtils.cos(angle * 0.5D); return set(getX() * cos + getY() * sin, getY() * cos - getX() * sin, getW() * sin + getZ() * cos, getW() * cos - getZ() * sin); } - public default Quaternion set(Vec4f value){return set(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Quaternion set(Quaternion value){return set(value.getX(), value.getY(), value.getZ(), value.getW());} + public default Quaternion set(Vec4f value) { return set(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Quaternion set(Quaternion value) { return set(value.getX(), value.getY(), value.getZ(), value.getW()); } - public default Quaternion set(Matrix4f matrix) - { + public default Quaternion set(Matrix4f matrix) { float tr = matrix.get(0, 0) + matrix.get(1, 1) + matrix.get(2, 2); - if(tr >= 0.0D) - { + if(tr >= 0.0D) { float s = (float)Math.sqrt(tr + 1.0D); float w = s * 0.5F; s = 0.5F / s; @@ -82,11 +75,9 @@ public interface Quaternion float z = (matrix.get(1, 0) - matrix.get(0, 1)) * s; return set(x, y, z, w); } - else - { + else { float max = Math.max(Math.max(matrix.get(0, 0), matrix.get(1, 1)), matrix.get(2, 2)); - if(max == matrix.get(0, 0)) - { + if(max == matrix.get(0, 0)) { float s = (float)Math.sqrt(matrix.get(0, 0) - (matrix.get(1, 1) + matrix.get(2, 2)) + 1.0D); float x = s * 0.5F; s = 0.5F / s; @@ -95,8 +86,7 @@ public interface Quaternion float w = (matrix.get(2, 1) - matrix.get(1, 2)) * s; return set(x, y, z, w); } - else if(max == matrix.get(1, 1)) - { + else if(max == matrix.get(1, 1)) { float s = (float)Math.sqrt(matrix.get(1, 1) - (matrix.get(2, 2) + matrix.get(0, 0)) + 1.0D); float y = s * 0.5F; s = 0.5F / s; @@ -105,8 +95,7 @@ public interface Quaternion float w = (matrix.get(0, 2) - matrix.get(2, 0)) * s; return set(x, y, z, w); } - else - { + else { float s = (float)Math.sqrt(matrix.get(2, 2) - (matrix.get(0, 0) + matrix.get(1, 1)) + 1.0D); float z = s * 0.5F; s = 0.5F / s; @@ -118,49 +107,45 @@ public interface Quaternion } } - public default Quaternion setAxisRad(float x, float y, float z, float angle) - { + public default Quaternion setAxisRad(float x, float y, float z, float angle) { float sin = MathUtils.sin(angle * 0.5D); float cos = MathUtils.cos(angle * 0.5D); return set(x * sin, y * sin, z * sin, cos); } - public default Quaternion setAxisDeg(float x, float y, float z, float angle) - { + + public default Quaternion setAxisDeg(float x, float y, float z, float angle) { angle = (float)Math.toRadians(angle); float sin = MathUtils.sin(angle * 0.5D); float cos = MathUtils.cos(angle * 0.5D); return set(x * sin, y * sin, z * sin, cos); } - public Quaternion set(float x, float y, float z, float w); - public default float dot(Quaternion other){return getX() * other.getX() + getY() * other.getY() + getZ() * other.getZ() + getW() * other.getW();} - public default Quaternion difference(Quaternion other){return difference(other, this);} - public default Quaternion difference(Quaternion other, Quaternion result) - { - float invNorm = 1.0F / (getX() * getX() + getY() * getY() + getZ() * getZ() + getW() * getW()); - float x = -getX() * invNorm; - float y = -getY() * invNorm; - float z = -getZ() * invNorm; - float w = getW() * invNorm; - return set(w * other.getX() + x * other.getW() + y * other.getZ() - z * other.getY(), w * other.getY() - x * other.getZ() + y * other.getW() + z * other.getX(), w * other.getZ() + x * other.getY() - y * other.getX() + z * other.getW(), w * other.getW() - x * other.getX() - y * other.getY() - z * other.getZ()); + public Quaternion set(float x, float y, float z, float w); + public default float dot(Quaternion other) { return getX() * other.getX() + getY() * other.getY() + getZ() * other.getZ() + getW() * other.getW(); } + public default Quaternion difference(Quaternion other) { return difference(other, this); } + public default Quaternion difference(Quaternion other, Quaternion result) { + float invNorm = 1.0F / (getX() * getX() + getY() * getY() + getZ() * getZ() + getW() * getW()); + float x = -getX() * invNorm; + float y = -getY() * invNorm; + float z = -getZ() * invNorm; + float w = getW() * invNorm; + return set(w * other.getX() + x * other.getW() + y * other.getZ() - z * other.getY(), w * other.getY() - x * other.getZ() + y * other.getW() + z * other.getX(), w * other.getZ() + x * other.getY() - y * other.getX() + z * other.getW(), w * other.getW() - x * other.getX() - y * other.getY() - z * other.getZ()); } - public default Quaternion lerp(Quaternion other, float progress){return lerp(other, progress, this);} - public default Quaternion lerp(Quaternion other, float progress, Quaternion result) - { + + public default Quaternion lerp(Quaternion other, float progress) { return lerp(other, progress, this); } + public default Quaternion lerp(Quaternion other, float progress, Quaternion result) { float cosom = getX() * other.getX() + getY() * other.getY() + getZ() * other.getZ() + getW() * other.getW(); float absCosom = Math.abs(cosom); float scale1; float scale0; - if(1.0F - absCosom > 1.0E-006F) - { + if(1.0F - absCosom > 1.0E-006F) { float sinSqr = 1.0F - absCosom * absCosom; float sinom = (float)(1.0D / Math.sqrt(sinSqr)); float omega = (float)Math.atan2(sinSqr * sinom, absCosom); scale0 = MathUtils.sin((1.0D - progress) * omega) * sinom; scale1 = MathUtils.sin(progress * omega) * sinom; } - else - { + else { scale0 = 1.0F - progress; scale1 = progress; } @@ -168,49 +153,39 @@ public interface Quaternion return result.set(scale0 * getX() + scale1 * other.getX(), scale0 * getY() + scale1 * other.getY(), scale0 * getZ() + scale1 * other.getZ(), scale0 * getW() + scale1 * other.getW()); } - public default float length(){return (float)Math.sqrt(lengthSquared());} - public default double lengthSquared(){return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()) + (getW() * getW());} - - public default Matrix4f asRotationMatrix(){return new Matrix4f().rotate(this);} - public default Vec4f toAxisDegreeRotation() {return toAxisDegreeRotation(Vec4f.mutable());} - public default Vec4f toAxisDegreeRotation(Vec4f input) - { - double invSqrt = 1.0D / Math.sqrt(1.0D - getW() * getW()); - return input.set((float)(getX() * invSqrt), (float)(getY() * invSqrt), (float)(getZ() * invSqrt), (float)Math.toDegrees(acos(getW()) * 2F)); + public default float length() { return (float)Math.sqrt(lengthSquared()); } + public default double lengthSquared() { return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()) + (getW() * getW()); } + public default Matrix4f asRotationMatrix() { return new Matrix4f().rotate(this); } + public default Vec4f toAxisDegreeRotation() { return toAxisDegreeRotation(Vec4f.mutable()); } + public default Vec4f toAxisDegreeRotation(Vec4f input) { + double invSqrt = 1.0D / Math.sqrt(1.0D - getW() * getW()); + return input.set((float)(getX() * invSqrt), (float)(getY() * invSqrt), (float)(getZ() * invSqrt), (float)Math.toDegrees(acos(getW()) * 2F)); } - public default Vec4f toAxisRotation() {return toAxisRotation(Vec4f.mutable());} - public default Vec4f toAxisRotation(Vec4f input) - { - double invSqrt = 1.0D / Math.sqrt(1.0D - getW() * getW()); + + public default Vec4f toAxisRotation() { return toAxisRotation(Vec4f.mutable()); } + public default Vec4f toAxisRotation(Vec4f input) { + double invSqrt = 1.0D / Math.sqrt(1.0D - getW() * getW()); return input.set((float)(getX() * invSqrt), (float)(getY() * invSqrt), (float)(getZ() * invSqrt), (float)acos(getW()) * 2F); } - public default Quaternion store(ByteBuffer buffer) - { + public default Quaternion store(ByteBuffer buffer) { buffer.putFloat(getX()).putFloat(getY()).putFloat(getZ()).putFloat(getW()); return this; } - public default Quaternion load(ByteBuffer buffer) - { - return set(buffer.getFloat(), buffer.getFloat(), buffer.getFloat(), buffer.getFloat()); - } + public default Quaternion load(ByteBuffer buffer) { return set(buffer.getFloat(), buffer.getFloat(), buffer.getFloat(), buffer.getFloat()); } - public default Quaternion store(FloatBuffer buffer) - { + public default Quaternion store(FloatBuffer buffer) { buffer.put(getX()).put(getY()).put(getZ()).put(getW()); return this; } - public default Quaternion load(FloatBuffer buffer) - { - return set(buffer.get(), buffer.get(), buffer.get(), buffer.get()); - } + public default Quaternion load(FloatBuffer buffer) { return set(buffer.get(), buffer.get(), buffer.get(), buffer.get()); } public Quaternion copy(); public boolean isMutable(); - public default Quaternion asMutable(){return isMutable() ? this : of(this);} - public default Quaternion asImmutable(){return isMutable() ? mutable(this) : this;} - public default Quaternion copyAsMutable(){return mutable(this);} - public default Quaternion copyAsImmutable(){return of(this);} + public default Quaternion asMutable() { return isMutable() ? this : of(this); } + public default Quaternion asImmutable() { return isMutable() ? mutable(this) : this; } + public default Quaternion copyAsMutable() { return mutable(this); } + public default Quaternion copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/quaternion/QuaternionImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/quaternion/QuaternionImmutable.java index c9a55c1..e938bcd 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/quaternion/QuaternionImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/quaternion/QuaternionImmutable.java @@ -2,106 +2,54 @@ package speiger.src.coreengine.math.vector.quaternion; import java.util.Arrays; -public class QuaternionImmutable implements Quaternion -{ +public class QuaternionImmutable implements Quaternion { final float x; final float y; final float z; final float w; - public QuaternionImmutable() - { + public QuaternionImmutable() { x = 0F; y = 0F; z = 0F; w = 1F; } - public QuaternionImmutable(float x, float y, float z, float w) - { + public QuaternionImmutable(float x, float y, float z, float w) { this.x = x; this.y = y; this.z = z; this.w = w; } - - @Override - public Quaternion setX(float x) - { - return this.x == x ? this : set(x, y, z, w); - } @Override - public Quaternion setY(float y) - { - return this.y == y ? this : set(x, y, z, w); - } + public Quaternion setX(float x) { return this.x == x ? this : set(x, y, z, w); } + @Override + public Quaternion setY(float y) { return this.y == y ? this : set(x, y, z, w); } + @Override + public Quaternion setZ(float z) { return this.z == z ? this : set(x, y, z, w); } + @Override + public Quaternion setW(float w) { return this.w == w ? this : set(x, y, z, w); } + @Override + public float getX() { return x; } + @Override + public float getY() { return y; } + @Override + public float getZ() { return z; } + @Override + public float getW() { return w; } + @Override + public Quaternion set(float x, float y, float z, float w) { return this.x == x && this.y == y && this.z == z && this.w == w ? this : Quaternion.of(x, y, z, w); } + @Override + public Quaternion copy() { return Quaternion.of(this); } + @Override + public boolean isMutable() { return false; } + @Override + public int hashCode() { return Arrays.hashCode(new float[] {x, y, z, w}); } @Override - public Quaternion setZ(float z) - { - return this.z == z ? this : set(x, y, z, w); - } - - @Override - public Quaternion setW(float w) - { - return this.w == w ? this : set(x, y, z, w); - } - - @Override - public float getX() - { - return x; - } - - @Override - public float getY() - { - return y; - } - - @Override - public float getZ() - { - return z; - } - - @Override - public float getW() - { - return w; - } - - @Override - public Quaternion set(float x, float y, float z, float w) - { - return this.x == x && this.y == y && this.z == z && this.w == w ? this : Quaternion.of(x, y, z, w); - } - - @Override - public Quaternion copy() - { - return Quaternion.of(this); - } - - @Override - public boolean isMutable() - { - return false; - } - - @Override - public int hashCode() - { - return Arrays.hashCode(new float[]{x,y,z,w}); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Quaternion) - { + public boolean equals(Object obj) { + if(obj instanceof Quaternion) { Quaternion other = (Quaternion)obj; return other.getX() == x && other.getY() == y && other.getZ() == z && other.getW() == w; } @@ -109,8 +57,5 @@ public class QuaternionImmutable implements Quaternion } @Override - public String toString() - { - return "Quaternion[x="+x+", y="+y+", z="+z+", w="+w+"]"; - } + public String toString() { return "Quaternion[x="+x+", y="+y+", z="+z+", w="+w+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/quaternion/QuaternionMutable.java b/src/main/java/speiger/src/coreengine/math/vector/quaternion/QuaternionMutable.java index 82bffa0..c34d14c 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/quaternion/QuaternionMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/quaternion/QuaternionMutable.java @@ -2,23 +2,20 @@ package speiger.src.coreengine.math.vector.quaternion; import java.util.Arrays; -public class QuaternionMutable implements Quaternion -{ +public class QuaternionMutable implements Quaternion { float x; float y; float z; float w; - public QuaternionMutable() - { + public QuaternionMutable() { x = 0F; y = 0F; z = 0F; w = 1F; } - public QuaternionMutable(float x, float y, float z, float w) - { + public QuaternionMutable(float x, float y, float z, float w) { this.x = x; this.y = y; this.z = z; @@ -26,60 +23,40 @@ public class QuaternionMutable implements Quaternion } @Override - public Quaternion setX(float x) - { + public Quaternion setX(float x) { this.x = x; return this; } @Override - public Quaternion setY(float y) - { + public Quaternion setY(float y) { this.y = y; return this; } @Override - public Quaternion setZ(float z) - { + public Quaternion setZ(float z) { this.z = z; return this; } @Override - public Quaternion setW(float w) - { + public Quaternion setW(float w) { this.w = w; return this; } @Override - public float getX() - { - return x; - } + public float getX() { return x; } + @Override + public float getY() { return y; } + @Override + public float getZ() { return z; } + @Override + public float getW() { return w; } @Override - public float getY() - { - return y; - } - - @Override - public float getZ() - { - return z; - } - - @Override - public float getW() - { - return w; - } - - @Override - public Quaternion set(float x, float y, float z, float w) - { + public Quaternion set(float x, float y, float z, float w) { this.x = x; this.y = y; this.z = z; @@ -88,28 +65,15 @@ public class QuaternionMutable implements Quaternion } @Override - public Quaternion copy() - { - return Quaternion.mutable(this); - } + public Quaternion copy() { return Quaternion.mutable(this); } + @Override + public boolean isMutable() { return true; } + @Override + public int hashCode() { return Arrays.hashCode(new float[] {x, y, z, w}); } @Override - public boolean isMutable() - { - return true; - } - - @Override - public int hashCode() - { - return Arrays.hashCode(new float[]{x,y,z,w}); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Quaternion) - { + public boolean equals(Object obj) { + if(obj instanceof Quaternion) { Quaternion other = (Quaternion)obj; return other.getX() == x && other.getY() == y && other.getZ() == z && other.getW() == w; } @@ -117,8 +81,5 @@ public class QuaternionMutable implements Quaternion } @Override - public String toString() - { - return "Quaternion[x="+x+", y="+y+", z="+z+", w="+w+"]"; - } + public String toString() { return "Quaternion[x="+x+", y="+y+", z="+z+", w="+w+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec2s.java b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec2s.java index 1508666..fd4e41c 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec2s.java +++ b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec2s.java @@ -10,153 +10,128 @@ import speiger.src.coreengine.math.vector.floats.Vec2f; import speiger.src.coreengine.math.vector.ints.Vec2i; import speiger.src.coreengine.math.vector.longs.Vec2l; -public interface Vec2s extends Vecs -{ +public interface Vec2s extends Vecs { public static final Vec2s ZERO = of(); public static final Vec2s MINUS_ONE = of((short)-1); public static final Vec2s ONE = of((short)1); - public static Vec2s mutable(){return new Vec2sMutable();} - public static Vec2s mutable(short value){return new Vec2sMutable(value);} - public static Vec2s mutable(short x, short y){return new Vec2sMutable(x, y);} - public static Vec2s mutable(Vec2s value){return mutable(value.getX(), value.getY());} - - public static Vec2s of(){return new Vec2sImmutable();} - public static Vec2s of(short value){return new Vec2sImmutable(value);} - public static Vec2s of(short x, short y){return new Vec2sImmutable(x, y);} - public static Vec2s of(Vec2s value){return of(value.getX(), value.getY());} + public static Vec2s mutable() { return new Vec2sMutable(); } + public static Vec2s mutable(short value) { return new Vec2sMutable(value); } + public static Vec2s mutable(short x, short y) { return new Vec2sMutable(x, y); } + public static Vec2s mutable(Vec2s value) { return mutable(value.getX(), value.getY()); } + public static Vec2s of() { return new Vec2sImmutable(); } + public static Vec2s of(short value) { return new Vec2sImmutable(value); } + public static Vec2s of(short x, short y) { return new Vec2sImmutable(x, y); } + public static Vec2s of(Vec2s value) { return of(value.getX(), value.getY()); } public short getX(); public short getY(); public Vec2s setX(short x); public Vec2s setY(short y); + @Override - public default short[] asArray(){return new short[]{getX(), getY()};} + public default short[] asArray() { return new short[] {getX(), getY()}; } @Override public Vec2s copy(); @Override - public default Vec2s abs(){return set((short)Math.abs(getX()), (short)Math.abs(getY()));} + public default Vec2s abs() { return set((short)Math.abs(getX()), (short)Math.abs(getY())); } @Override - public default Vec2s negate(){return set((short)0, (short)0);} + public default Vec2s negate() { return set((short)0, (short)0); } @Override - public default Vec2s invert(){return set((short)(-getX()), (short)(-getY()));}; - + public default Vec2s invert() { return set((short)(-getX()), (short)(-getY())); }; @Override - public default Vec2s add(short value) {return add(value, value);} - public default Vec2s add(Vec2s value) {return add(value.getX(), value.getY());} - public default Vec2s add(short x, short y) {return set((short)(x + getX()), (short)(y + getY()));} - + public default Vec2s add(short value) { return add(value, value); } + public default Vec2s add(Vec2s value) { return add(value.getX(), value.getY()); } + public default Vec2s add(short x, short y) { return set((short)(x + getX()), (short)(y + getY())); } @Override - public default Vec2s sub(short value){return sub(value, value);} - public default Vec2s sub(Vec2s value){return sub(value.getX(), value.getY());} - public default Vec2s sub(short x, short y) {return set((short)(getX() - x), (short)(getY() - y));} - + public default Vec2s sub(short value) { return sub(value, value); } + public default Vec2s sub(Vec2s value) { return sub(value.getX(), value.getY()); } + public default Vec2s sub(short x, short y) { return set((short)(getX() - x), (short)(getY() - y)); } @Override - public default Vec2s multiply(short value){return multiply(value, value);} - public default Vec2s multiply(Vec2s value){return multiply(value.getX(), value.getY());} - public default Vec2s multiply(short x, short y) {return set((short)(x * getX()), (short)(y * getY()));} - + public default Vec2s multiply(short value) { return multiply(value, value); } + public default Vec2s multiply(Vec2s value) { return multiply(value.getX(), value.getY()); } + public default Vec2s multiply(short x, short y) { return set((short)(x * getX()), (short)(y * getY())); } @Override - public default Vec2s devide(short value){return devide(value, value);} - public default Vec2s devide(Vec2s value){return devide(value.getX(), value.getY());} - public default Vec2s devide(short x, short y){return set((short)(getX() / x), (short)(getY() / y));} - + public default Vec2s devide(short value) { return devide(value, value); } + public default Vec2s devide(Vec2s value) { return devide(value.getX(), value.getY()); } + public default Vec2s devide(short x, short y) { return set((short)(getX() / x), (short)(getY() / y)); } @Override - public default Vec2s set(short value){return set(value, value);}; - public default Vec2s set(Vec2s value){return set(value.getX(), value.getY());} + public default Vec2s set(short value) { return set(value, value); }; + public default Vec2s set(Vec2s value) { return set(value.getX(), value.getY()); } public Vec2s set(short x, short y); - - public default double distanceTo(Vec2s value){return distanceTo(value.getX(), value.getY());} - public default double distanceTo(short x, short y){return Math.sqrt(distanceToSquared(x, y));} - - public default long distanceToSquared(Vec2s value){return distanceToSquared(value.getX(), value.getY());} - public default long distanceToSquared(short x, short y) - { + public default double distanceTo(Vec2s value) { return distanceTo(value.getX(), value.getY()); } + public default double distanceTo(short x, short y) { return Math.sqrt(distanceToSquared(x, y)); } + public default long distanceToSquared(Vec2s value) { return distanceToSquared(value.getX(), value.getY()); } + public default long distanceToSquared(short x, short y) { long xPos = getX() - x; long yPos = getY() - y; return (xPos * xPos) + (yPos * yPos); } + @Override - public default long lengthSquared() {return (getX() * getX()) + (getY() * getY());} - - public default long dotProduct(Vec2s value){return dotProduct(value.getX(), value.getY());} - public default long dotProduct(short x, short y){return (getX() * x) + (getY() * y);} - - public default Vec2s rotate(short angle, Vec2s center){return rotate(angle, center.getX(), center.getY());} - public default Vec2s rotate(short angle, short x, short y) - { + public default long lengthSquared() { return (getX() * getX()) + (getY() * getY()); } + public default long dotProduct(Vec2s value) { return dotProduct(value.getX(), value.getY()); } + public default long dotProduct(short x, short y) { return (getX() * x) + (getY() * y); } + public default Vec2s rotate(short angle, Vec2s center) { return rotate(angle, center.getX(), center.getY()); } + public default Vec2s rotate(short angle, short x, short y) { short xPos = (short)(getX() - x); short yPos = (short)(getY() - y); double cos = MathUtils.cos(angle); double sin = MathUtils.sin(angle); - return set((short)((xPos * cos) + (yPos * sin) + x), (short)(-(xPos * sin) + (yPos * cos) + y)); + return set((short)((xPos * cos) + (yPos * sin) + x), (short)(-(xPos * sin) + (yPos * cos) + y)); } - public default Vec2s min(Vec2s other) {return min(other, this);} - public default Vec2s min(Vec2s other, Vec2s result){return min(other.getX(), other.getY(), result);} - public default Vec2s min(short x, short y) {return min(x, y, this);} - public default Vec2s min(short x, short y, Vec2s result){return result.set((short)Math.min(getX(), x), (short)Math.min(getY(), y));} - - public default Vec2s max(Vec2s other) {return max(other, this);} - public default Vec2s max(Vec2s other, Vec2s result){return max(other.getX(), other.getY(), result);} - public default Vec2s max(short x, short y) {return max(x, y, this);} - public default Vec2s max(short x, short y, Vec2s result){return result.set((short)Math.max(getX(), x), (short)Math.max(getY(), y));} - - public default Vec2s difference(Vec2s other) {return difference(other, this);} - public default Vec2s difference(Vec2s other, Vec2s result){return difference(other.getX(), other.getY(), result);} - public default Vec2s difference(short x, short y) {return difference(x, y, this);} - public default Vec2s difference(short x, short y, Vec2s result){return result.set((short)(getX() - x), (short)(getY() - y));} - + public default Vec2s min(Vec2s other) { return min(other, this); } + public default Vec2s min(Vec2s other, Vec2s result) { return min(other.getX(), other.getY(), result); } + public default Vec2s min(short x, short y) { return min(x, y, this); } + public default Vec2s min(short x, short y, Vec2s result) { return result.set((short)Math.min(getX(), x), (short)Math.min(getY(), y)); } + public default Vec2s max(Vec2s other) { return max(other, this); } + public default Vec2s max(Vec2s other, Vec2s result) { return max(other.getX(), other.getY(), result); } + public default Vec2s max(short x, short y) { return max(x, y, this); } + public default Vec2s max(short x, short y, Vec2s result) { return result.set((short)Math.max(getX(), x), (short)Math.max(getY(), y)); } + public default Vec2s difference(Vec2s other) { return difference(other, this); } + public default Vec2s difference(Vec2s other, Vec2s result) { return difference(other.getX(), other.getY(), result); } + public default Vec2s difference(short x, short y) { return difference(x, y, this); } + public default Vec2s difference(short x, short y, Vec2s result) { return result.set((short)(getX() - x), (short)(getY() - y)); } @Override - public default Vec2s clamp(short min, short max){return clamp(min, max, ALL);} - public default Vec2s clamp(short min, short max, Vec2s result){return clamp(min, max, result, ALL);} + public default Vec2s clamp(short min, short max) { return clamp(min, max, ALL); } + public default Vec2s clamp(short min, short max, Vec2s result) { return clamp(min, max, result, ALL); } @Override - public default Vec2s clamp(short min, short max, int filter){return clamp(min, max, this, filter);} - public default Vec2s clamp(short min, short max, Vec2s result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()));} - + public default Vec2s clamp(short min, short max, int filter) { return clamp(min, max, this, filter); } + public default Vec2s clamp(short min, short max, Vec2s result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY())); } @Override - public default Vec2s store(ByteBuffer buffer) - { + public default Vec2s store(ByteBuffer buffer) { buffer.putShort(getX()).putShort(getY()); return this; } @Override - public default Vec2s load(ByteBuffer buffer) - { - return set(buffer.getShort(), buffer.getShort()); - } + public default Vec2s load(ByteBuffer buffer) { return set(buffer.getShort(), buffer.getShort()); } @Override - public default Vec2s store(ShortBuffer buffer) - { + public default Vec2s store(ShortBuffer buffer) { buffer.put(getX()).put(getY()); return this; } @Override - public default Vec2s load(ShortBuffer buffer) - { - return set(buffer.get(), buffer.get()); - } - + public default Vec2s load(ShortBuffer buffer) { return set(buffer.get(), buffer.get()); } @Override - public default Vec2b asByte(){return isMutable() ? Vec2b.mutable((byte)getX(), (byte)getY()) : Vec2b.of((byte)getX(), (byte)getY());} + public default Vec2b asByte() { return isMutable() ? Vec2b.mutable((byte)getX(), (byte)getY()) : Vec2b.of((byte)getX(), (byte)getY()); } @Override - public default Vec2i asInt(){return isMutable() ? Vec2i.mutable(getX(), getY()) : Vec2i.of(getX(), getY());} + public default Vec2i asInt() { return isMutable() ? Vec2i.mutable(getX(), getY()) : Vec2i.of(getX(), getY()); } @Override - public default Vec2l asLong(){return isMutable() ? Vec2l.mutable(getX(), getY()) : Vec2l.of(getX(), getY());} + public default Vec2l asLong() { return isMutable() ? Vec2l.mutable(getX(), getY()) : Vec2l.of(getX(), getY()); } @Override - public default Vec2f asFloat() {return isMutable() ? Vec2f.mutable(getX(), getY()) : Vec2f.of(getX(), getY());} + public default Vec2f asFloat() { return isMutable() ? Vec2f.mutable(getX(), getY()) : Vec2f.of(getX(), getY()); } @Override - public default Vec2d asDouble(){return isMutable() ? Vec2d.mutable(getX(), getY()) : Vec2d.of(getX(), getY());} - + public default Vec2d asDouble() { return isMutable() ? Vec2d.mutable(getX(), getY()) : Vec2d.of(getX(), getY()); } @Override - public default Vec2s asMutable(){return isMutable() ? this : of(this);} + public default Vec2s asMutable() { return isMutable() ? this : of(this); } @Override - public default Vec2s asImmutable(){return isMutable() ? mutable(this) : this;} + public default Vec2s asImmutable() { return isMutable() ? mutable(this) : this; } @Override - public default Vec2s copyAsMutable(){return mutable(this);} + public default Vec2s copyAsMutable() { return mutable(this); } @Override - public default Vec2s copyAsImmutable(){return of(this);} + public default Vec2s copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec2sImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec2sImmutable.java index e457b3c..47024a6 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec2sImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec2sImmutable.java @@ -2,91 +2,51 @@ package speiger.src.coreengine.math.vector.shorts; import java.util.Objects; -public class Vec2sImmutable implements Vec2s -{ +public class Vec2sImmutable implements Vec2s { final short x; final short y; - public Vec2sImmutable() - { + public Vec2sImmutable() { x = 0; y = 0; } - public Vec2sImmutable(short value) - { + public Vec2sImmutable(short value) { x = value; y = value; } - public Vec2sImmutable(short x, short y) - { + public Vec2sImmutable(short x, short y) { this.x = x; this.y = y; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public short getX() - { - return x; - } + public boolean isMutable() { return false; } + @Override + public short getX() { return x; } + @Override + public short getY() { return y; } + @Override + public Vec2s setX(short x) { return this.x == x ? this : Vec2s.of(x, y); } + @Override + public Vec2s setY(short y) { return this.y == y ? this : Vec2s.of(x, y); } + @Override + public Vec2s copy() { return Vec2s.of(this); } + @Override + public Vec2s set(short x, short y) { return this.x == x && this.y == y ? this : Vec2s.of(x, y); } + @Override + public int hashCode() { return Objects.hash(x, y); } @Override - public short getY() - { - return y; - } - - @Override - public Vec2s setX(short x) - { - return this.x == x ? this : Vec2s.of(x, y); - } - - @Override - public Vec2s setY(short y) - { - return this.y == y ? this : Vec2s.of(x, y); - } - - @Override - public Vec2s copy() - { - return Vec2s.of(this); - } - - @Override - public Vec2s set(short x, short y) - { - return this.x == x && this.y == y ? this : Vec2s.of(x, y); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec2s) - { + public boolean equals(Object obj) { + if(obj instanceof Vec2s) { Vec2s vec = (Vec2s)obj; return vec.getX() == x && vec.getY() == y; } return false; } - + @Override - public String toString() - { - return "Vec2s[x="+x+", y="+y+"]"; - } + public String toString() { return "Vec2s[x="+x+", y="+y+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec2sMutable.java b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec2sMutable.java index 98bc57b..771e1e5 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec2sMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec2sMutable.java @@ -2,93 +2,63 @@ package speiger.src.coreengine.math.vector.shorts; import java.util.Objects; -public class Vec2sMutable implements Vec2s -{ +public class Vec2sMutable implements Vec2s { short x; short y; - public Vec2sMutable() - { - } + public Vec2sMutable() {} - public Vec2sMutable(short value) - { + public Vec2sMutable(short value) { x = value; y = value; } - public Vec2sMutable(short x, short y) - { + public Vec2sMutable(short x, short y) { this.x = x; this.y = y; } - - @Override - public boolean isMutable() - { - return true; - } @Override - public short getX() - { - return x; - } + public boolean isMutable() { return true; } + @Override + public short getX() { return x; } + @Override + public short getY() { return y; } @Override - public short getY() - { - return y; - } - - @Override - public Vec2s setX(short x) - { + public Vec2s setX(short x) { this.x = x; return this; } @Override - public Vec2s setY(short y) - { + public Vec2s setY(short y) { this.y = y; return this; } @Override - public Vec2s copy() - { - return Vec2s.mutable(this); - } + public Vec2s copy() { return Vec2s.mutable(this); } @Override - public Vec2s set(short x, short y) - { + public Vec2s set(short x, short y) { this.x = x; this.y = y; return this; } @Override - public int hashCode() - { - return Objects.hash(x, y); - } - + public int hashCode() { return Objects.hash(x, y); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec2s) - { + public boolean equals(Object obj) { + if(obj instanceof Vec2s) { Vec2s vec = (Vec2s)obj; return vec.getX() == x && vec.getY() == y; } return false; } - + @Override - public String toString() - { - return "Vec2s[x="+x+", y="+y+"]"; - } + public String toString() { return "Vec2s[x="+x+", y="+y+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec3s.java b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec3s.java index 6b1be93..17d0478 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec3s.java +++ b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec3s.java @@ -10,21 +10,19 @@ import speiger.src.coreengine.math.vector.floats.Vec3f; import speiger.src.coreengine.math.vector.ints.Vec3i; import speiger.src.coreengine.math.vector.longs.Vec3l; -public interface Vec3s extends Vecs -{ +public interface Vec3s extends Vecs { public static final Vec3s ZERO = of(); public static final Vec3s MINUS_ONE = of((short)-1); public static final Vec3s ONE = of((short)1); - public static Vec3s mutable(){return new Vec3sMutable();} - public static Vec3s mutable(short value){return new Vec3sMutable(value);} - public static Vec3s mutable(short x, short y, short z){return new Vec3sMutable(x, y, z);} - public static Vec3s mutable(Vec3s vec){return mutable(vec.getX(), vec.getY(), vec.getZ());} - - public static Vec3s of(){return new Vec3sImmutable();} - public static Vec3s of(short value){return new Vec3sImmutable(value);} - public static Vec3s of(short x, short y, short z){return new Vec3sImmutable(x, y, z);} - public static Vec3s of(Vec3s vec){return of(vec.getX(), vec.getY(), vec.getZ());} + public static Vec3s mutable() { return new Vec3sMutable(); } + public static Vec3s mutable(short value) { return new Vec3sMutable(value); } + public static Vec3s mutable(short x, short y, short z) { return new Vec3sMutable(x, y, z); } + public static Vec3s mutable(Vec3s vec) { return mutable(vec.getX(), vec.getY(), vec.getZ()); } + public static Vec3s of() { return new Vec3sImmutable(); } + public static Vec3s of(short value) { return new Vec3sImmutable(value); } + public static Vec3s of(short x, short y, short z) { return new Vec3sImmutable(x, y, z); } + public static Vec3s of(Vec3s vec) { return of(vec.getX(), vec.getY(), vec.getZ()); } public short getX(); public short getY(); @@ -32,125 +30,103 @@ public interface Vec3s extends Vecs public Vec3s setX(short x); public Vec3s setY(short y); public Vec3s setZ(short z); - @Override - public default short[] asArray(){return new short[]{getX(), getY(), getZ()};} + @Override + public default short[] asArray() { return new short[] {getX(), getY(), getZ()}; } @Override public Vec3s copy(); @Override - public default Vec3s abs(){return set((short)Math.abs(getX()), (short)Math.abs(getY()), (short)Math.abs(getZ()));} + public default Vec3s abs() { return set((short)Math.abs(getX()), (short)Math.abs(getY()), (short)Math.abs(getZ())); } @Override - public default Vec3s negate(){return set((short)0, (short)0, (short)0);} + public default Vec3s negate() { return set((short)0, (short)0, (short)0); } @Override - public default Vec3s invert(){return set((short)-getX(), (short)-getY(), (short)-getZ());} + public default Vec3s invert() { return set((short)-getX(), (short)-getY(), (short)-getZ()); } @Override - public default Vec3s add(short value){return add(value, value, value);} - public default Vec3s add(Vec3s value){return add(value.getX(), value.getY(), value.getZ());} - public default Vec3s add(short x, short y, short z){return set((short)(getX() + x), (short)(getY() + y), (short)(getZ() + z));} - + public default Vec3s add(short value) { return add(value, value, value); } + public default Vec3s add(Vec3s value) { return add(value.getX(), value.getY(), value.getZ()); } + public default Vec3s add(short x, short y, short z) { return set((short)(getX() + x), (short)(getY() + y), (short)(getZ() + z)); } @Override - public default Vec3s sub(short value){return sub(value, value, value);} - public default Vec3s sub(Vec3s value){return sub(value.getX(), value.getY(), value.getZ());} - public default Vec3s sub(short x, short y, short z){return set((short)(getX() - x), (short)(getY() - y), (short)(getZ() - z));} - + public default Vec3s sub(short value) { return sub(value, value, value); } + public default Vec3s sub(Vec3s value) { return sub(value.getX(), value.getY(), value.getZ()); } + public default Vec3s sub(short x, short y, short z) { return set((short)(getX() - x), (short)(getY() - y), (short)(getZ() - z)); } @Override - public default Vec3s multiply(short value){return multiply(value, value, value);} - public default Vec3s multiply(Vec3s value){return multiply(value.getX(), value.getY(), value.getZ());} - public default Vec3s multiply(short x, short y, short z){return set((short)(getX() * x), (short)(getY() * y), (short)(getZ() * z));} - + public default Vec3s multiply(short value) { return multiply(value, value, value); } + public default Vec3s multiply(Vec3s value) { return multiply(value.getX(), value.getY(), value.getZ()); } + public default Vec3s multiply(short x, short y, short z) { return set((short)(getX() * x), (short)(getY() * y), (short)(getZ() * z)); } @Override - public default Vec3s devide(short value){return devide(value, value, value);} - public default Vec3s devide(Vec3s value){return devide(value.getX(), value.getY(), value.getZ());} - public default Vec3s devide(short x, short y, short z){return set((short)(getX() / x), (short)(getY() / y), (short)(getZ() / z));} - + public default Vec3s devide(short value) { return devide(value, value, value); } + public default Vec3s devide(Vec3s value) { return devide(value.getX(), value.getY(), value.getZ()); } + public default Vec3s devide(short x, short y, short z) { return set((short)(getX() / x), (short)(getY() / y), (short)(getZ() / z)); } @Override - public default Vec3s set(short value){return set(value, value, value);} - public default Vec3s set(Vec3s value){return set(value.getX(), value.getY(), value.getZ());} + public default Vec3s set(short value) { return set(value, value, value); } + public default Vec3s set(Vec3s value) { return set(value.getX(), value.getY(), value.getZ()); } public Vec3s set(short x, short y, short z); - - public default double distanceTo(Vec3s value){return distanceTo(value.getX(), value.getY(), value.getZ());} - public default double distanceTo(short x, short y, short z){return Math.sqrt(distanceToSquared(x, y, z));} - - public default long distanceToSquared(Vec3s value){return distanceToSquared(value.getX(), value.getY(), value.getZ());} - public default long distanceToSquared(short x, short y, short z) - { + public default double distanceTo(Vec3s value) { return distanceTo(value.getX(), value.getY(), value.getZ()); } + public default double distanceTo(short x, short y, short z) { return Math.sqrt(distanceToSquared(x, y, z)); } + public default long distanceToSquared(Vec3s value) { return distanceToSquared(value.getX(), value.getY(), value.getZ()); } + public default long distanceToSquared(short x, short y, short z) { long xPos = getX() - x; long yPos = getY() - y; long zPos = getZ() - z; return (xPos * xPos) + (yPos * yPos) + (zPos * zPos); } - @Override - public default long lengthSquared() {return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ());} - - public default long dotProduct(Vec3s value){return dotProduct(value.getX(), value.getY(), value.getZ());} - public default long dotProduct(short x, short y, short z){return (getX() * x) + (getY() * y) + (getZ() * z);} - - public default Vec3s min(Vec3s other) {return min(other, this);} - public default Vec3s min(Vec3s other, Vec3s result){return min(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3s min(short x, short y, short z) {return min(x, y, z, this);} - public default Vec3s min(short x, short y, short z, Vec3s result){return result.set((short)Math.min(getX(), x), (short)Math.min(getY(), y), (short)Math.min(getZ(), z));} - - public default Vec3s max(Vec3s other) {return max(other, this);} - public default Vec3s max(Vec3s other, Vec3s result){return max(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3s max(short x, short y, short z) {return max(x, y, z, this);} - public default Vec3s max(short x, short y, short z, Vec3s result){return result.set((short)Math.max(getX(), x), (short)Math.max(getY(), y), (short)Math.max(getZ(), z));} - - public default Vec3s difference(Vec3s other) {return difference(other, this);} - public default Vec3s difference(Vec3s other, Vec3s result){return difference(other.getX(), other.getY(), other.getZ(), result);} - public default Vec3s difference(short x, short y, short z) {return difference(x, y, z, this);} - public default Vec3s difference(short x, short y, short z, Vec3s result){return result.set((short)(getX() - x), (short)(getY() - y), (short)(getZ() - z));} @Override - public default Vec3s clamp(short min, short max){return clamp(min, max, ALL);} - public default Vec3s clamp(short min, short max, Vec3s result){return clamp(min, max, result, ALL);} + public default long lengthSquared() { return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()); } + public default long dotProduct(Vec3s value) { return dotProduct(value.getX(), value.getY(), value.getZ()); } + public default long dotProduct(short x, short y, short z) { return (getX() * x) + (getY() * y) + (getZ() * z); } + public default Vec3s min(Vec3s other) { return min(other, this); } + public default Vec3s min(Vec3s other, Vec3s result) { return min(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3s min(short x, short y, short z) { return min(x, y, z, this); } + public default Vec3s min(short x, short y, short z, Vec3s result) { return result.set((short)Math.min(getX(), x), (short)Math.min(getY(), y), (short)Math.min(getZ(), z)); } + public default Vec3s max(Vec3s other) { return max(other, this); } + public default Vec3s max(Vec3s other, Vec3s result) { return max(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3s max(short x, short y, short z) { return max(x, y, z, this); } + public default Vec3s max(short x, short y, short z, Vec3s result) { return result.set((short)Math.max(getX(), x), (short)Math.max(getY(), y), (short)Math.max(getZ(), z)); } + public default Vec3s difference(Vec3s other) { return difference(other, this); } + public default Vec3s difference(Vec3s other, Vec3s result) { return difference(other.getX(), other.getY(), other.getZ(), result); } + public default Vec3s difference(short x, short y, short z) { return difference(x, y, z, this); } + public default Vec3s difference(short x, short y, short z, Vec3s result) { return result.set((short)(getX() - x), (short)(getY() - y), (short)(getZ() - z)); } @Override - public default Vec3s clamp(short min, short max, int filter){return clamp(min, max, this, filter);} - public default Vec3s clamp(short min, short max, Vec3s result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()));} + public default Vec3s clamp(short min, short max) { return clamp(min, max, ALL); } + public default Vec3s clamp(short min, short max, Vec3s result) { return clamp(min, max, result, ALL); } + @Override + public default Vec3s clamp(short min, short max, int filter) { return clamp(min, max, this, filter); } + public default Vec3s clamp(short min, short max, Vec3s result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ())); } @Override - public default Vec3s store(ByteBuffer buffer) - { + public default Vec3s store(ByteBuffer buffer) { buffer.putShort(getX()).putShort(getY()).putShort(getZ()); return this; } @Override - public default Vec3s load(ByteBuffer buffer) - { - return set(buffer.getShort(), buffer.getShort(), buffer.getShort()); - } + public default Vec3s load(ByteBuffer buffer) { return set(buffer.getShort(), buffer.getShort(), buffer.getShort()); } @Override - public default Vec3s store(ShortBuffer buffer) - { + public default Vec3s store(ShortBuffer buffer) { buffer.put(getX()).put(getY()).put(getZ()); return this; } @Override - public default Vec3s load(ShortBuffer buffer) - { - return set(buffer.get(), buffer.get(), buffer.get()); - } - + public default Vec3s load(ShortBuffer buffer) { return set(buffer.get(), buffer.get(), buffer.get()); } @Override - public default Vec3b asByte(){return isMutable() ? Vec3b.mutable((byte)getX(), (byte)getY(), (byte)getZ()) : Vec3b.of((byte)getX(), (byte)getY(), (byte)getZ());} + public default Vec3b asByte() { return isMutable() ? Vec3b.mutable((byte)getX(), (byte)getY(), (byte)getZ()) : Vec3b.of((byte)getX(), (byte)getY(), (byte)getZ()); } @Override - public default Vec3i asInt(){return isMutable() ? Vec3i.mutable(getX(), getY(), getZ()) : Vec3i.of(getX(), getY(), getZ());} + public default Vec3i asInt() { return isMutable() ? Vec3i.mutable(getX(), getY(), getZ()) : Vec3i.of(getX(), getY(), getZ()); } @Override - public default Vec3l asLong(){return isMutable() ? Vec3l.mutable(getX(), getY(), getZ()) : Vec3l.of(getX(), getY(), getZ());} + public default Vec3l asLong() { return isMutable() ? Vec3l.mutable(getX(), getY(), getZ()) : Vec3l.of(getX(), getY(), getZ()); } @Override - public default Vec3f asFloat() {return isMutable() ? Vec3f.mutable(getX(), getY(), getZ()) : Vec3f.of(getX(), getY(), getZ());} + public default Vec3f asFloat() { return isMutable() ? Vec3f.mutable(getX(), getY(), getZ()) : Vec3f.of(getX(), getY(), getZ()); } @Override - public default Vec3d asDouble(){return isMutable() ? Vec3d.mutable(getX(), getY(), getZ()) : Vec3d.of(getX(), getY(), getZ());} - - + public default Vec3d asDouble() { return isMutable() ? Vec3d.mutable(getX(), getY(), getZ()) : Vec3d.of(getX(), getY(), getZ()); } @Override - public default Vec3s asMutable(){return isMutable() ? this : of(this);} + public default Vec3s asMutable() { return isMutable() ? this : of(this); } @Override - public default Vec3s asImmutable(){return isMutable() ? mutable(this) : this;} + public default Vec3s asImmutable() { return isMutable() ? mutable(this) : this; } @Override - public default Vec3s copyAsMutable(){return mutable(this);} + public default Vec3s copyAsMutable() { return mutable(this); } @Override - public default Vec3s copyAsImmutable(){return of(this);} + public default Vec3s copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec3sImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec3sImmutable.java index e008629..94a8e6e 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec3sImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec3sImmutable.java @@ -2,107 +2,59 @@ package speiger.src.coreengine.math.vector.shorts; import java.util.Objects; -public class Vec3sImmutable implements Vec3s -{ +public class Vec3sImmutable implements Vec3s { final short x; final short y; final short z; - public Vec3sImmutable() - { + public Vec3sImmutable() { x = 0; y = 0; z = 0; } - public Vec3sImmutable(short value) - { + public Vec3sImmutable(short value) { x = value; y = value; z = value; } - public Vec3sImmutable(short x, short y, short z) - { + public Vec3sImmutable(short x, short y, short z) { this.x = x; this.y = y; this.z = z; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public short getX() - { - return x; - } + public boolean isMutable() { return false; } + @Override + public short getX() { return x; } + @Override + public short getY() { return y; } + @Override + public short getZ() { return z; } + @Override + public Vec3s setX(short x) { return this.x == x ? this : Vec3s.of(x, y, z); } + @Override + public Vec3s setY(short y) { return this.y == y ? this : Vec3s.of(x, y, z); } + @Override + public Vec3s setZ(short z) { return this.z == z ? this : Vec3s.of(x, y, z); } + @Override + public Vec3s copy() { return Vec3s.of(this); } + @Override + public Vec3s set(short x, short y, short z) { return this.x == x && this.y == y && this.z == z ? this : Vec3s.of(x, y, z); } + @Override + public int hashCode() { return Objects.hash(x, y, z); } @Override - public short getY() - { - return y; - } - - @Override - public short getZ() - { - return z; - } - - @Override - public Vec3s setX(short x) - { - return this.x == x ? this : Vec3s.of(x, y, z); - } - - @Override - public Vec3s setY(short y) - { - return this.y == y ? this : Vec3s.of(x, y, z); - } - - @Override - public Vec3s setZ(short z) - { - return this.z == z ? this : Vec3s.of(x, y, z); - } - - @Override - public Vec3s copy() - { - return Vec3s.of(this); - } - - @Override - public Vec3s set(short x, short y, short z) - { - return this.x == x && this.y == y && this.z == z ? this : Vec3s.of(x, y, z); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y, z); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec3s) - { + public boolean equals(Object obj) { + if(obj instanceof Vec3s) { Vec3s vec = (Vec3s)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z; } return false; } - + @Override - public String toString() - { - return "Vec3s[x="+x+", y="+y+", z="+z+"]"; - } + public String toString() { return "Vec3s[x="+x+", y="+y+", z="+z+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec3sMutable.java b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec3sMutable.java index 9daed94..804d02b 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec3sMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec3sMutable.java @@ -2,84 +2,57 @@ package speiger.src.coreengine.math.vector.shorts; import java.util.Objects; -public class Vec3sMutable implements Vec3s -{ +public class Vec3sMutable implements Vec3s { short x; short y; short z; - public Vec3sMutable() - { - } + public Vec3sMutable() {} - public Vec3sMutable(short value) - { + public Vec3sMutable(short value) { x = value; y = value; z = value; } - public Vec3sMutable(short x, short y, short z) - { + public Vec3sMutable(short x, short y, short z) { this.x = x; this.y = y; this.z = z; } - - @Override - public boolean isMutable() - { - return true; - } @Override - public short getX() - { - return x; - } + public boolean isMutable() { return true; } + @Override + public short getX() { return x; } + @Override + public short getY() { return y; } + @Override + public short getZ() { return z; } @Override - public short getY() - { - return y; - } - - @Override - public short getZ() - { - return z; - } - - @Override - public Vec3s setX(short x) - { + public Vec3s setX(short x) { this.x = x; return this; } @Override - public Vec3s setY(short y) - { + public Vec3s setY(short y) { this.y = y; return this; } @Override - public Vec3s setZ(short z) - { + public Vec3s setZ(short z) { this.z = z; return this; } @Override - public Vec3s copy() - { - return Vec3s.mutable(this); - } + public Vec3s copy() { return Vec3s.mutable(this); } @Override - public Vec3s set(short x, short y, short z) - { + public Vec3s set(short x, short y, short z) { this.x = x; this.y = y; this.z = z; @@ -87,25 +60,17 @@ public class Vec3sMutable implements Vec3s } @Override - public int hashCode() - { - return Objects.hash(x, y, z); - } - + public int hashCode() { return Objects.hash(x, y, z); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec3s) - { + public boolean equals(Object obj) { + if(obj instanceof Vec3s) { Vec3s vec = (Vec3s)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z; } return false; } - + @Override - public String toString() - { - return "Vec3s[x="+x+", y="+y+", z="+z+"]"; - } + public String toString() { return "Vec3s[x="+x+", y="+y+", z="+z+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec4s.java b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec4s.java index b6921f4..bb1a92e 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec4s.java +++ b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec4s.java @@ -10,21 +10,19 @@ import speiger.src.coreengine.math.vector.floats.Vec4f; import speiger.src.coreengine.math.vector.ints.Vec4i; import speiger.src.coreengine.math.vector.longs.Vec4l; -public interface Vec4s extends Vecs -{ +public interface Vec4s extends Vecs { public static final Vec4s ZERO = of(); public static final Vec4s MINUS_ONE = of((short)-1); public static final Vec4s ONE = of((short)1); - public static Vec4s mutable(){return new Vec4sMutable();} - public static Vec4s mutable(short value){return new Vec4sMutable(value);} - public static Vec4s mutable(short x, short y, short z, short w){return new Vec4sMutable(x, y, z, w);} - public static Vec4s mutable(Vec4s vec){return mutable(vec.getX(), vec.getY(), vec.getZ(), vec.getW());} - - public static Vec4s of(){return new Vec4sImmutable();} - public static Vec4s of(short value){return new Vec4sImmutable(value);} - public static Vec4s of(short x, short y, short z, short w){return new Vec4sImmutable(x, y, z, w);} - public static Vec4s of(Vec4s vec){return of(vec.getX(), vec.getY(), vec.getZ(), vec.getW());} + public static Vec4s mutable() { return new Vec4sMutable(); } + public static Vec4s mutable(short value) { return new Vec4sMutable(value); } + public static Vec4s mutable(short x, short y, short z, short w) { return new Vec4sMutable(x, y, z, w); } + public static Vec4s mutable(Vec4s vec) { return mutable(vec.getX(), vec.getY(), vec.getZ(), vec.getW()); } + public static Vec4s of() { return new Vec4sImmutable(); } + public static Vec4s of(short value) { return new Vec4sImmutable(value); } + public static Vec4s of(short x, short y, short z, short w) { return new Vec4sImmutable(x, y, z, w); } + public static Vec4s of(Vec4s vec) { return of(vec.getX(), vec.getY(), vec.getZ(), vec.getW()); } public short getX(); public short getY(); @@ -34,126 +32,104 @@ public interface Vec4s extends Vecs public Vec4s setY(short y); public Vec4s setZ(short z); public Vec4s setW(short w); + @Override - public default short[] asArray(){return new short[]{getX(), getY(), getZ(), getW()};} + public default short[] asArray() { return new short[] {getX(), getY(), getZ(), getW()}; } @Override public Vec4s copy(); @Override - public default Vec4s abs(){return set((short)Math.abs(getX()), (short)Math.abs(getY()), (short)Math.abs(getZ()), (short)Math.abs(getW()));} + public default Vec4s abs() { return set((short)Math.abs(getX()), (short)Math.abs(getY()), (short)Math.abs(getZ()), (short)Math.abs(getW())); } @Override - public default Vec4s negate(){return set((short)0, (short)0, (short)0, (short)0);} + public default Vec4s negate() { return set((short)0, (short)0, (short)0, (short)0); } @Override - public default Vec4s invert(){return set((short)-getX(), (short)-getY(), (short)-getZ(), (short)-getW());} - + public default Vec4s invert() { return set((short)-getX(), (short)-getY(), (short)-getZ(), (short)-getW()); } @Override - public default Vec4s add(short value){return add(value, value, value, value);} - public default Vec4s add(Vec4s value){return add(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4s add(short x, short y, short z, short w){return set((short)(getX() + x), (short)(getY() + y), (short)(getZ() + z), (short)(getW() + w));} - + public default Vec4s add(short value) { return add(value, value, value, value); } + public default Vec4s add(Vec4s value) { return add(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4s add(short x, short y, short z, short w) { return set((short)(getX() + x), (short)(getY() + y), (short)(getZ() + z), (short)(getW() + w)); } @Override - public default Vec4s sub(short value){return sub(value, value, value, value);} - public default Vec4s sub(Vec4s value){return sub(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4s sub(short x, short y, short z, short w){return set((short)(getX() - x), (short)(getY() - y), (short)(getZ() - z), (short)(getW() - w));} - + public default Vec4s sub(short value) { return sub(value, value, value, value); } + public default Vec4s sub(Vec4s value) { return sub(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4s sub(short x, short y, short z, short w) { return set((short)(getX() - x), (short)(getY() - y), (short)(getZ() - z), (short)(getW() - w)); } @Override - public default Vec4s multiply(short value){return multiply(value, value, value, value);} - public default Vec4s multiply(Vec4s value){return multiply(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4s multiply(short x, short y, short z, short w){return set((short)(getX() * x), (short)(getY() * y), (short)(getZ() * z), (short)(getW() * w));} - + public default Vec4s multiply(short value) { return multiply(value, value, value, value); } + public default Vec4s multiply(Vec4s value) { return multiply(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4s multiply(short x, short y, short z, short w) { return set((short)(getX() * x), (short)(getY() * y), (short)(getZ() * z), (short)(getW() * w)); } @Override - public default Vec4s devide(short value){return devide(value, value, value, value);} - public default Vec4s devide(Vec4s value){return devide(value.getX(), value.getY(), value.getZ(), value.getW());} - public default Vec4s devide(short x, short y, short z, short w){return set((short)(getX() / x), (short)(getY() / y), (short)(getZ() / z), (short)(getW() / w));} - + public default Vec4s devide(short value) { return devide(value, value, value, value); } + public default Vec4s devide(Vec4s value) { return devide(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default Vec4s devide(short x, short y, short z, short w) { return set((short)(getX() / x), (short)(getY() / y), (short)(getZ() / z), (short)(getW() / w)); } @Override - public default Vec4s set(short value){return set(value, value, value, value);} - public default Vec4s set(Vec4s value){return set(value.getX(), value.getY(), value.getZ(), value.getW());} + public default Vec4s set(short value) { return set(value, value, value, value); } + public default Vec4s set(Vec4s value) { return set(value.getX(), value.getY(), value.getZ(), value.getW()); } public Vec4s set(short x, short y, short z, short w); - - public default double distanceTo(Vec4s value){return distanceTo(value.getX(), value.getY(), value.getZ(), value.getW());} - public default double distanceTo(short x, short y, short z, short w){return Math.sqrt(distanceTo(x, y, z, w));} - - public default long distanceToSquared(Vec4s value){return distanceToSquared(value.getX(), value.getY(), value.getZ(), value.getW());} - public default long distanceToSquared(short x, short y, short z, short w) - { + public default double distanceTo(Vec4s value) { return distanceTo(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default double distanceTo(short x, short y, short z, short w) { return Math.sqrt(distanceTo(x, y, z, w)); } + public default long distanceToSquared(Vec4s value) { return distanceToSquared(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default long distanceToSquared(short x, short y, short z, short w) { long xPos = getX() - x; long yPos = getY() - y; long zPos = getZ() - z; long wPos = getW() - w; return (xPos * xPos) + (yPos * yPos) + (zPos * zPos) + (wPos * wPos); } - @Override - public default long lengthSquared() {return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()) + (getW() * getW());} - - public default long dotProduct(Vec4s value){return dotProduct(value.getX(), value.getY(), value.getZ(), value.getW());} - public default long dotProduct(short x, short y, short z, short w){return (getX() * x) + (getY() * y) + (getZ() * z) + (getW() * w);}; - - public default Vec4s min(Vec4s other) {return min(other, this);} - public default Vec4s min(Vec4s other, Vec4s result){return min(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4s min(short x, short y, short z, short w) {return min(x, y, z, w, this);} - public default Vec4s min(short x, short y, short z, short w, Vec4s result){return result.set((short)Math.min(getX(), x), (short)Math.min(getY(), y), (short)Math.min(getZ(), z), (short)Math.min(getW(), w));} - - public default Vec4s max(Vec4s other) {return max(other, this);} - public default Vec4s max(Vec4s other, Vec4s result){return max(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4s max(short x, short y, short z, short w) {return max(x, y, z, w, this);} - public default Vec4s max(short x, short y, short z, short w, Vec4s result){return result.set((short)Math.max(getX(), x), (short)Math.max(getY(), y), (short)Math.max(getZ(), z), (short)Math.max(getZ(), z));} - - public default Vec4s difference(Vec4s other) {return difference(other, this);} - public default Vec4s difference(Vec4s other, Vec4s result){return difference(other.getX(), other.getY(), other.getZ(), other.getW(), result);} - public default Vec4s difference(short x, short y, short z, short w) {return difference(x, y, z, w, this);} - public default Vec4s difference(short x, short y, short z, short w, Vec4s result){return result.set((short)(getX() - x), (short)(getY() - y), (short)(getZ() - z), (short)(getW() - w));} @Override - public default Vec4s clamp(short min, short max){return clamp(min, max, ALL);} - public default Vec4s clamp(short min, short max, Vec4s result){return clamp(min, max, result, ALL);} + public default long lengthSquared() { return (getX() * getX()) + (getY() * getY()) + (getZ() * getZ()) + (getW() * getW()); } + public default long dotProduct(Vec4s value) { return dotProduct(value.getX(), value.getY(), value.getZ(), value.getW()); } + public default long dotProduct(short x, short y, short z, short w) { return (getX() * x) + (getY() * y) + (getZ() * z) + (getW() * w); }; + public default Vec4s min(Vec4s other) { return min(other, this); } + public default Vec4s min(Vec4s other, Vec4s result) { return min(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4s min(short x, short y, short z, short w) { return min(x, y, z, w, this); } + public default Vec4s min(short x, short y, short z, short w, Vec4s result) { return result.set((short)Math.min(getX(), x), (short)Math.min(getY(), y), (short)Math.min(getZ(), z), (short)Math.min(getW(), w)); } + public default Vec4s max(Vec4s other) { return max(other, this); } + public default Vec4s max(Vec4s other, Vec4s result) { return max(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4s max(short x, short y, short z, short w) { return max(x, y, z, w, this); } + public default Vec4s max(short x, short y, short z, short w, Vec4s result) { return result.set((short)Math.max(getX(), x), (short)Math.max(getY(), y), (short)Math.max(getZ(), z), (short)Math.max(getZ(), z)); } + public default Vec4s difference(Vec4s other) { return difference(other, this); } + public default Vec4s difference(Vec4s other, Vec4s result) { return difference(other.getX(), other.getY(), other.getZ(), other.getW(), result); } + public default Vec4s difference(short x, short y, short z, short w) { return difference(x, y, z, w, this); } + public default Vec4s difference(short x, short y, short z, short w, Vec4s result) { return result.set((short)(getX() - x), (short)(getY() - y), (short)(getZ() - z), (short)(getW() - w)); } @Override - public default Vec4s clamp(short min, short max, int filter){return clamp(min, max, this, filter);} - public default Vec4s clamp(short min, short max, Vec4s result, int filter){ return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()), (filter & W) == 0 ? getW() : MathUtils.clamp(min, max, getW()));} + public default Vec4s clamp(short min, short max) { return clamp(min, max, ALL); } + public default Vec4s clamp(short min, short max, Vec4s result) { return clamp(min, max, result, ALL); } + @Override + public default Vec4s clamp(short min, short max, int filter) { return clamp(min, max, this, filter); } + public default Vec4s clamp(short min, short max, Vec4s result, int filter) { return result.set((filter & X) == 0 ? getX() : MathUtils.clamp(min, max, getX()), (filter & Y) == 0 ? getY() : MathUtils.clamp(min, max, getY()), (filter & Z) == 0 ? getZ() : MathUtils.clamp(min, max, getZ()), (filter & W) == 0 ? getW() : MathUtils.clamp(min, max, getW())); } @Override - public default Vec4s store(ByteBuffer buffer) - { + public default Vec4s store(ByteBuffer buffer) { buffer.putShort(getX()).putShort(getY()).putShort(getZ()).putShort(getW()); return this; } @Override - public default Vec4s load(ByteBuffer buffer) - { - return set(buffer.getShort(), buffer.getShort(), buffer.getShort(), buffer.getShort()); - } + public default Vec4s load(ByteBuffer buffer) { return set(buffer.getShort(), buffer.getShort(), buffer.getShort(), buffer.getShort()); } @Override - public default Vec4s store(ShortBuffer buffer) - { + public default Vec4s store(ShortBuffer buffer) { buffer.put(getX()).put(getY()).put(getZ()).put(getW()); return this; } @Override - public default Vec4s load(ShortBuffer buffer) - { - return set(buffer.get(), buffer.get(), buffer.get(), buffer.get()); - } - + public default Vec4s load(ShortBuffer buffer) { return set(buffer.get(), buffer.get(), buffer.get(), buffer.get()); } @Override - public default Vec4b asByte(){return isMutable() ? Vec4b.mutable((byte)getX(), (byte)getY(), (byte)getZ(), (byte)getW()) : Vec4b.of((byte)getX(), (byte)getY(), (byte)getZ(), (byte)getW());} + public default Vec4b asByte() { return isMutable() ? Vec4b.mutable((byte)getX(), (byte)getY(), (byte)getZ(), (byte)getW()) : Vec4b.of((byte)getX(), (byte)getY(), (byte)getZ(), (byte)getW()); } @Override - public default Vec4i asInt(){return isMutable() ? Vec4i.mutable(getX(), getY(), getZ(), getW()) : Vec4i.of(getX(), getY(), getZ(), getW());} + public default Vec4i asInt() { return isMutable() ? Vec4i.mutable(getX(), getY(), getZ(), getW()) : Vec4i.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4l asLong(){return isMutable() ? Vec4l.mutable(getX(), getY(), getZ(), getW()) : Vec4l.of(getX(), getY(), getZ(), getW());} + public default Vec4l asLong() { return isMutable() ? Vec4l.mutable(getX(), getY(), getZ(), getW()) : Vec4l.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4f asFloat() {return isMutable() ? Vec4f.mutable(getX(), getY(), getZ(), getW()) : Vec4f.of(getX(), getY(), getZ(), getW());} + public default Vec4f asFloat() { return isMutable() ? Vec4f.mutable(getX(), getY(), getZ(), getW()) : Vec4f.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4d asDouble(){return isMutable() ? Vec4d.mutable(getX(), getY(), getZ(), getW()) : Vec4d.of(getX(), getY(), getZ(), getW());} - - + public default Vec4d asDouble() { return isMutable() ? Vec4d.mutable(getX(), getY(), getZ(), getW()) : Vec4d.of(getX(), getY(), getZ(), getW()); } @Override - public default Vec4s asMutable(){return isMutable() ? this : of(this);} + public default Vec4s asMutable() { return isMutable() ? this : of(this); } @Override - public default Vec4s asImmutable(){return isMutable() ? mutable(this) : this;} + public default Vec4s asImmutable() { return isMutable() ? mutable(this) : this; } @Override - public default Vec4s copyAsMutable(){return mutable(this);} + public default Vec4s copyAsMutable() { return mutable(this); } @Override - public default Vec4s copyAsImmutable(){return of(this);} + public default Vec4s copyAsImmutable() { return of(this); } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec4sImmutable.java b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec4sImmutable.java index 0f9ffea..671478c 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec4sImmutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec4sImmutable.java @@ -2,114 +2,61 @@ package speiger.src.coreengine.math.vector.shorts; import java.util.Objects; -public class Vec4sImmutable implements Vec4s -{ +public class Vec4sImmutable implements Vec4s { final short x; final short y; final short z; final short w; - public Vec4sImmutable() - { + public Vec4sImmutable() { x = 0; y = 0; z = 0; w = 0; } - public Vec4sImmutable(short value) - { + public Vec4sImmutable(short value) { x = value; y = value; z = value; w = value; } - public Vec4sImmutable(short x, short y, short z, short w) - { + public Vec4sImmutable(short x, short y, short z, short w) { this.x = x; this.y = y; this.z = z; this.w = w; } - - @Override - public boolean isMutable() - { - return false; - } @Override - public short getX() - { - return x; - } + public boolean isMutable() { return false; } + @Override + public short getX() { return x; } + @Override + public short getY() { return y; } + @Override + public short getZ() { return z; } + @Override + public short getW() { return w; } + @Override + public Vec4s setX(short x) { return this.x == x ? this : Vec4s.of(x, y, z, w); } + @Override + public Vec4s setY(short y) { return this.y == y ? this : Vec4s.of(x, y, z, w); } + @Override + public Vec4s setZ(short z) { return this.z == z ? this : Vec4s.of(x, y, z, w); } + @Override + public Vec4s setW(short w) { return this.w == w ? this : Vec4s.of(x, y, z, w); } + @Override + public Vec4s copy() { return Vec4s.of(this); } + @Override + public Vec4s set(short x, short y, short z, short w) { return this.x == x && this.y == y && this.z == z && this.w == w ? this : Vec4s.of(x, y, z, w); } + @Override + public int hashCode() { return Objects.hash(x, y, z, w); } @Override - public short getY() - { - return y; - } - - @Override - public short getZ() - { - return z; - } - - @Override - public short getW() - { - return w; - } - - @Override - public Vec4s setX(short x) - { - return this.x == x ? this : Vec4s.of(x, y, z, w); - } - - @Override - public Vec4s setY(short y) - { - return this.y == y ? this : Vec4s.of(x, y, z, w); - } - - @Override - public Vec4s setZ(short z) - { - return this.z == z ? this : Vec4s.of(x, y, z, w); - } - - @Override - public Vec4s setW(short w) - { - return this.w == w ? this : Vec4s.of(x, y, z, w); - } - - @Override - public Vec4s copy() - { - return Vec4s.of(this); - } - - @Override - public Vec4s set(short x, short y, short z, short w) - { - return this.x == x && this.y == y && this.z == z && this.w == w ? this : Vec4s.of(x, y, z, w); - } - - @Override - public int hashCode() - { - return Objects.hash(x, y, z, w); - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec4s) - { + public boolean equals(Object obj) { + if(obj instanceof Vec4s) { Vec4s vec = (Vec4s)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z && vec.getW() == w; } @@ -117,8 +64,5 @@ public class Vec4sImmutable implements Vec4s } @Override - public String toString() - { - return "Vec4s[x="+x+", y="+y+", z="+z+", w="+w+"]"; - } + public String toString() { return "Vec4s[x="+x+", y="+y+", z="+z+", w="+w+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec4sMutable.java b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec4sMutable.java index 6dc9bfd..36264a8 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec4sMutable.java +++ b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vec4sMutable.java @@ -2,100 +2,68 @@ package speiger.src.coreengine.math.vector.shorts; import java.util.Objects; -public class Vec4sMutable implements Vec4s -{ +public class Vec4sMutable implements Vec4s { short x; short y; short z; short w; - public Vec4sMutable() - { - } + public Vec4sMutable() {} - public Vec4sMutable(short value) - { + public Vec4sMutable(short value) { x = value; y = value; z = value; w = value; } - public Vec4sMutable(short x, short y, short z, short w) - { + public Vec4sMutable(short x, short y, short z, short w) { this.x = x; this.y = y; this.z = z; this.w = w; } - - @Override - public boolean isMutable() - { - return true; - } @Override - public short getX() - { - return x; - } + public boolean isMutable() { return true; } + @Override + public short getX() { return x; } + @Override + public short getY() { return y; } + @Override + public short getZ() { return z; } + @Override + public short getW() { return w; } @Override - public short getY() - { - return y; - } - - @Override - public short getZ() - { - return z; - } - - @Override - public short getW() - { - return w; - } - - @Override - public Vec4s setX(short x) - { + public Vec4s setX(short x) { this.x = x; return this; } @Override - public Vec4s setY(short y) - { + public Vec4s setY(short y) { this.y = y; return this; } @Override - public Vec4s setZ(short z) - { + public Vec4s setZ(short z) { this.z = z; return this; } @Override - public Vec4s setW(short w) - { + public Vec4s setW(short w) { this.w = w; return this; } @Override - public Vec4s copy() - { - return Vec4s.mutable(this); - } + public Vec4s copy() { return Vec4s.mutable(this); } @Override - public Vec4s set(short x, short y, short z, short w) - { + public Vec4s set(short x, short y, short z, short w) { this.x = x; this.y = y; this.z = z; @@ -104,16 +72,11 @@ public class Vec4sMutable implements Vec4s } @Override - public int hashCode() - { - return Objects.hash(x, y, z, w); - } - + public int hashCode() { return Objects.hash(x, y, z, w); } + @Override - public boolean equals(Object obj) - { - if(obj instanceof Vec4s) - { + public boolean equals(Object obj) { + if(obj instanceof Vec4s) { Vec4s vec = (Vec4s)obj; return vec.getX() == x && vec.getY() == y && vec.getZ() == z && vec.getW() == w; } @@ -121,8 +84,5 @@ public class Vec4sMutable implements Vec4s } @Override - public String toString() - { - return "Vec4s[x="+x+", y="+y+", z="+z+", w="+w+"]"; - } + public String toString() { return "Vec4s[x="+x+", y="+y+", z="+z+", w="+w+"]"; } } diff --git a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vecs.java b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vecs.java index 2c71c86..037634b 100644 --- a/src/main/java/speiger/src/coreengine/math/vector/shorts/Vecs.java +++ b/src/main/java/speiger/src/coreengine/math/vector/shorts/Vecs.java @@ -9,8 +9,7 @@ import speiger.src.coreengine.math.vector.floats.Vecf; import speiger.src.coreengine.math.vector.ints.Veci; import speiger.src.coreengine.math.vector.longs.Vecl; -public interface Vecs extends Vec -{ +public interface Vecs extends Vec { public Vecs set(short value); public Vecs add(short value); public Vecs sub(short value); @@ -18,14 +17,11 @@ public interface Vecs extends Vec public Vecs devide(short value); public Vecs clamp(short min, short max); public Vecs clamp(short min, short max, int filter); - public long lengthSquared(); - public default double length(){return Math.sqrt(lengthSquared());} - + public default double length() { return Math.sqrt(lengthSquared()); } public Vecs store(ShortBuffer buffer); public Vecs load(ShortBuffer buffer); public short[] asArray(); - public Vecb asByte(); public Veci asInt(); public Vecl asLong(); diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/GuiBase.java b/src/main/java/speiger/src/coreengine/rendering/gui/GuiBase.java index 9d15647..b6c87f1 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/GuiBase.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/GuiBase.java @@ -167,40 +167,27 @@ public abstract class GuiBase public final void onMouseEvent(MouseEvent evt) { - if(evt instanceof MouseClickEvent) + if(evt instanceof MouseClickEvent click) { - MouseClickEvent click = (MouseClickEvent)evt; - if(click.press) - { - pressedButtons.add(click.button); - if(onMousePressed(click.button, evt.mouseX, evt.mouseY)) - { + if(click.isPress()) { + pressedButtons.add(click.getButton()); + if(onMousePressed(click.getButton(), evt.getX(), evt.getY())) evt.cancel(); - } } else { - pressedButtons.remove(click.button); - if(onMouseReleased(click.button, evt.mouseX, evt.mouseY)) - { + pressedButtons.remove(click.getButton()); + if(onMouseReleased(click.getButton(), evt.getX(), evt.getY())) evt.cancel(); - } } } - else if(evt instanceof MouseMoveEvent && pressedButtons.size() > 0) - { - if(onMouseDragged(pressedButtons.getButtons(), evt.mouseX, evt.mouseY, pressedButtons)) - { + else if(evt instanceof MouseMoveEvent && pressedButtons.size() > 0) { + if(onMouseDragged(pressedButtons.getButtons(), evt.getX(), evt.getY(), pressedButtons)) evt.cancel(); - } } - else if(evt instanceof MouseScrollEvent) - { - MouseScrollEvent scroll = (MouseScrollEvent)evt; - if(onMouseScroll(evt.mouseX, evt.mouseY, scroll.scrollY)) - { + else if(evt instanceof MouseScrollEvent scroll) { + if(onMouseScroll(evt.getX(), evt.getY(), scroll.getScrollY())) evt.cancel(); - } } } diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/GuiManager.java b/src/main/java/speiger/src/coreengine/rendering/gui/GuiManager.java index 2d71301..f9ea7f3 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/GuiManager.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/GuiManager.java @@ -40,8 +40,8 @@ public abstract class GuiManager implements IWindowListener this.window = window; font = manager.loadFont(AssetLocation.of("font/roboto.json"), 18.5F); bus.register(MouseEvent.class, this::onMouseEvent); - bus.register(KeyPressEvent.class, (T) -> T.setCanceled(onKeyPressed(T.key))); - bus.register(CharTypeEvent.class, (T) -> T.setCanceled(onCharTyped(T.character, T.codePoint))); + bus.register(KeyPressEvent.class, T -> T.setCanceled(onKeyPressed(T.key))); + bus.register(CharTypeEvent.class, T -> T.setCanceled(onCharTyped(T.character, T.codePoint))); window.addListener(this, false); debug = createOverlay(); activeGuis[1] = debug; diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/components/misc/CheckBoxGroup.java b/src/main/java/speiger/src/coreengine/rendering/gui/components/misc/CheckBoxGroup.java index 4af6f3b..acc9668 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/components/misc/CheckBoxGroup.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/components/misc/CheckBoxGroup.java @@ -86,6 +86,7 @@ public class CheckBoxGroup> implements Con } @Override + @SuppressWarnings("unchecked") public void accept(GuiComponent t) { ICheckBox box = t.tryCast(ICheckBox.class); diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/helper/box/GuiBox.java b/src/main/java/speiger/src/coreengine/rendering/gui/helper/box/GuiBox.java index db50bca..31bb6ea 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/helper/box/GuiBox.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/helper/box/GuiBox.java @@ -6,7 +6,7 @@ import speiger.src.collections.objects.lists.ObjectArrayList; public class GuiBox implements IGuiBox { - List children = new ObjectArrayList(); + List children = new ObjectArrayList<>(); IGuiBox parent; float minX; @@ -25,54 +25,41 @@ public class GuiBox implements IGuiBox float baseScale = 1F; - protected GuiBox() - { - } + protected GuiBox() {} - public GuiBox(float x, float y, float width, float height) - { + public GuiBox(float x, float y, float width, float height) { set(x, y, width, height); onChanged(); } - public static IGuiBox createSimpleBox(float x, float y, float width, float height) - { + public static IGuiBox createSimpleBox(float x, float y, float width, float height) { return new GuiBox(x, y, width, height); } - public static IGuiBox createParentBox(IGuiBox box) - { + public static IGuiBox createParentBox(IGuiBox box) { return new GuiBox(box.getMinX(), box.getMinY(), box.getWidth(), box.getHeight()); } - public static IGuiBox createParentBox(IGuiBox box, float padding) - { - return new GuiBox(box.getMinX() + padding, box.getMinY() + padding, box.getWidth() - (padding * 2F), box.getHeight() - (padding * 2F)); + public static IGuiBox createParentBox(IGuiBox box, float padding) { + return new GuiBox(box.getMinX() + padding, box.getMinY() + padding, box.getWidth() - padding * 2F, box.getHeight() - padding * 2F); } @Override - public IGuiBox addChild(IGuiBox box) - { + public IGuiBox addChild(IGuiBox box) { children.add(box); box.setParent(this); return this; } @Override - public IGuiBox removeChild(IGuiBox box) - { - if(children.remove(box)) - { - box.setParent(null); - } + public IGuiBox removeChild(IGuiBox box) { + if(children.remove(box)) box.setParent(null); return this; } @Override - public IGuiBox clearChildren() - { - for(int i = 0,m=children.size();i= x && getMinY() <= y && getMaxY() >= y; - } + public default boolean isColiding(float x, float y) { return getMinX() <= x && getMaxX() >= x && getMinY() <= y && getMaxY() >= y; } - public default FacingList getColidingBorder(float x, float y, float margin) - { + public default FacingList getColidingBorder(float x, float y, float margin) { margin *= getScale(); float minX = getMinX(); float maxX = getMaxX(); @@ -89,13 +83,12 @@ public interface IGuiBox extends IScreenBox return list; } - public default boolean isIntersecting(IGuiBox box){return isIntersecting(box.getMinX(), box.getMaxX(), box.getMinY(), box.getMaxY());} - public default boolean isIntersecting(float minX, float maxX, float minY, float maxY) - { + public default boolean isIntersecting(IGuiBox box) { return isIntersecting(box.getMinX(), box.getMaxX(), box.getMinY(), box.getMaxY()); } + public default boolean isIntersecting(float minX, float maxX, float minY, float maxY) { float xMin = getMinX(); float yMin = getMinY(); float xMax = getMaxX(); float yMax = getMaxY(); return ((minX >= xMin && minX <= xMax) || (maxX >= xMin && maxX <= xMax)) && ((minY >= yMin && minY <= yMax) || (maxY >= yMin && maxY <= yMax)); } -} +} \ No newline at end of file diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/helper/box/IScreenBox.java b/src/main/java/speiger/src/coreengine/rendering/gui/helper/box/IScreenBox.java index c8ad501..143c460 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/helper/box/IScreenBox.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/helper/box/IScreenBox.java @@ -3,19 +3,15 @@ package speiger.src.coreengine.rendering.gui.helper.box; public interface IScreenBox { public float getBaseScale(); - public float getBaseWidth(); + public float getBaseHeight(); - public default float getSquaredBaseWidth() - { + public default float getSquaredBaseWidth() { float value = getBaseWidth(); return value * value; } - public float getBaseHeight(); - - public default float getSquaredBaseHeight() - { + public default float getSquaredBaseHeight() { float value = getBaseWidth(); return value * value; } diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/helper/box/ParentBox.java b/src/main/java/speiger/src/coreengine/rendering/gui/helper/box/ParentBox.java index d19a2d7..c6eca7d 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/helper/box/ParentBox.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/helper/box/ParentBox.java @@ -6,7 +6,7 @@ import speiger.src.collections.objects.lists.ObjectArrayList; public class ParentBox implements IGuiBox { - List children = new ObjectArrayList(); + List children = new ObjectArrayList<>(); IGuiBox parent; float minX; @@ -14,16 +14,14 @@ public class ParentBox implements IGuiBox float maxX; float maxY; - public ParentBox(float value) - { + public ParentBox(float value) { minX = value; minY = value; maxX = -value; maxY = -value; } - public ParentBox(float paddingTop, float paddingLeft, float paddingBottom, float paddingRight) - { + public ParentBox(float paddingTop, float paddingLeft, float paddingBottom, float paddingRight) { minX = paddingLeft; minY = paddingTop; maxX = paddingRight; @@ -31,28 +29,21 @@ public class ParentBox implements IGuiBox } @Override - public IGuiBox addChild(IGuiBox box) - { + public IGuiBox addChild(IGuiBox box) { children.add(box); box.setParent(this); return this; } @Override - public IGuiBox removeChild(IGuiBox box) - { - if(children.remove(box)) - { - box.setParent(null); - } + public IGuiBox removeChild(IGuiBox box) { + if(children.remove(box)) box.setParent(null); return this; } @Override - public IGuiBox clearChildren() - { - for(int i = 0,m=children.size();i[] maps = new Int2ObjectMap[]{new Int2ObjectOpenHashMap(), new Int2ObjectOpenHashMap()}; + Int2ObjectMap[] maps = new Int2ObjectMap[]{new Int2ObjectOpenHashMap<>(), new Int2ObjectOpenHashMap<>()}; JsonUtil.iterate(object.get("chars"), T -> { CharInstance instance = info.create(T); instance.scale(multiplier); diff --git a/src/main/java/speiger/src/coreengine/rendering/input/DropListener.java b/src/main/java/speiger/src/coreengine/rendering/input/DropListener.java index 6b1dc0b..dd83738 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/DropListener.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/DropListener.java @@ -1,6 +1,8 @@ package speiger.src.coreengine.rendering.input; -import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFWDropCallback; @@ -15,24 +17,19 @@ public class DropListener EventBus bus; ScaledResolution resolution; - public DropListener(Window window, EventBus bus) - { + public DropListener(Window window, EventBus bus) { window.addCallback(T -> GLFW.glfwSetDropCallback(T, this::onFileDropped)); resolution = window.getUIFrame(); this.bus = bus; } - public void onFileDropped(long windowId, int count, long names) - { + public void onFileDropped(long windowId, int count, long names) { int x = Mouse.getX(); int y = Mouse.getY(); - for(int i = 0;i filter; - public void init(EventBus bus, Window window) - { + public void init(EventBus bus, Window window) { this.bus = bus; window.addCallback(T -> GLFW.glfwSetKeyCallback(T, this::onKeyTyped)); window.addCallback(T -> GLFW.glfwSetCharCallback(T, this::onCharTyped)); } - public static void setFilter(BiPredicate filter) - { + public static void setFilter(BiPredicate filter) { INSTANCE.filter = filter; } - public static void clearFilter() - { + public static void clearFilter() { setFilter(null); } - protected void onKeyTyped(long window, int key, int scancode, int action, int mods) - { - if(key > 350 || key < 0) - { - return; - } - if(action >= 1) - { + protected void onKeyTyped(long window, int key, int scancode, int action, int mods) { + if(key > 350 || key < 0) return; + if(action >= 1) { pressedKeys[key] = true; onKeyPressed(key); } - else - { + else { pressedKeys[key] = false; nonConsumedKeys[key] = false; InputBinding.BINDINGS.updatePressing(BindingType.KEYBOARD, key, false); } } - public void onKeyPressed(int key) - { - if(filter == null || filter.test(key, this)) - { + public void onKeyPressed(int key) { + if(filter == null || filter.test(key, this)) { KeyPressEvent event = new KeyPressEvent(key); bus.post(event); - if(event.isCanceled()) - { - return; - } + if(event.isCanceled()) return; nonConsumedKeys[key] = true; InputBinding.BINDINGS.updatePressing(BindingType.KEYBOARD, key, true); } } - public void onCharTyped(long windowId, int codepoint) - { + public void onCharTyped(long windowId, int codepoint) { bus.post(new CharTypeEvent((char)codepoint, codepoint)); } - public static boolean isCtrlDown() - { + public static boolean isCtrlDown() { return isKeyPressed(GLFW.GLFW_KEY_LEFT_CONTROL) || isKeyPressed(GLFW.GLFW_KEY_RIGHT_CONTROL); } - public static boolean isShiftDown() - { + public static boolean isShiftDown() { return isKeyPressed(GLFW.GLFW_KEY_LEFT_SHIFT) || isKeyPressed(GLFW.GLFW_KEY_RIGHT_SHIFT); } - public static boolean isAltDown() - { + public static boolean isAltDown() { return isKeyPressed(GLFW.GLFW_KEY_LEFT_ALT) || isKeyPressed(GLFW.GLFW_KEY_RIGHT_ALT); } - public static boolean isPrintableKey(int key) - { + public static boolean isPrintableKey(int key) { return key <= 162; } - public static boolean isKeyFullyPressed(int key) - { + public static boolean isKeyFullyPressed(int key) { return INSTANCE.isPressed(key) && !INSTANCE.isConsumed(key); } - public static boolean isKeyPressed(int key) - { + public static boolean isKeyPressed(int key) { return INSTANCE.isPressed(key); } - public boolean isPressed(int key) - { + public boolean isPressed(int key) { return pressedKeys[key]; } - public boolean isConsumed(int key) - { + public boolean isConsumed(int key) { return !nonConsumedKeys[key]; } } diff --git a/src/main/java/speiger/src/coreengine/rendering/input/Mouse.java b/src/main/java/speiger/src/coreengine/rendering/input/Mouse.java index 337d4f5..aa51f9b 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/Mouse.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/Mouse.java @@ -31,30 +31,33 @@ public class Mouse { this.bus = bus; ray = new MouseRay(cam, window); + initSubWindow(window); + } + + public void initSubWindow(Window window) { window.addCallback(T -> GLFW.glfwSetCursorPosCallback(T, Mouse.this::onDrag)); window.addCallback(T -> GLFW.glfwSetMouseButtonCallback(T, Mouse.this::onClick)); window.addCallback(T -> GLFW.glfwSetScrollCallback(T, Mouse.this::onScroll)); window.addCallback(T -> GLFW.glfwSetCursorEnterCallback(T, (K, V) -> active = V)); } - protected void onDrag(long window, double xpos, double ypos) - { + protected void onDrag(long window, double xpos, double ypos) { int xChange = (int)xpos - position.getX(); int yChange = (int)ypos - position.getY(); position.set((int)xpos, (int)ypos); - pushEvent(new MouseMoveEvent(position.getX(), position.getY(), xChange, yChange)); + pushEvent(new MouseMoveEvent(window, position.getX(), position.getY(), xChange, yChange)); } protected void onScroll(long window, double xScroll, double yScroll) { - pushEvent(new MouseScrollEvent(position.getX(), position.getY(), (int)xScroll, (int)yScroll)); + pushEvent(new MouseScrollEvent(window, position.getX(), position.getY(), (int)xScroll, (int)yScroll)); } protected void onClick(long window, int button, int action, int mods) { if(action == 1) pressedButton.add(button); else pressedButton.remove(button); - pushEvent(new MouseClickEvent(position.getX(), position.getY(), button, action == 1)); + pushEvent(new MouseClickEvent(window, position.getX(), position.getY(), button, action == 1)); } public static void update() @@ -109,17 +112,17 @@ public class Mouse if(event instanceof MouseMoveEvent) { MouseMoveEvent move = (MouseMoveEvent)event; - movement.add(move.xMove, move.yMove); + movement.add(move.getXMove(), move.getYMove()); } else if(event instanceof MouseClickEvent) { MouseClickEvent click = (MouseClickEvent)event; - InputBinding.BINDINGS.updatePressing(BindingType.MOUSE, click.button, click.press); + InputBinding.BINDINGS.updatePressing(BindingType.MOUSE, click.getButton(), click.isPress()); } else if(event instanceof MouseScrollEvent) { MouseScrollEvent scroll = (MouseScrollEvent)event; - this.scroll.add(scroll.scrollX, scroll.scrollY); + this.scroll.add(scroll.getScrollX(), scroll.getScrollY()); } } } diff --git a/src/main/java/speiger/src/coreengine/rendering/input/bindings/Axis.java b/src/main/java/speiger/src/coreengine/rendering/input/bindings/Axis.java index 9486cf5..d814a4a 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/bindings/Axis.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/bindings/Axis.java @@ -1,16 +1,16 @@ package speiger.src.coreengine.rendering.input.bindings; -import java.util.LinkedHashMap; import java.util.Map; import org.lwjgl.glfw.GLFW; +import speiger.src.collections.objects.maps.interfaces.Object2ObjectMap; import speiger.src.coreengine.rendering.input.Mouse; import speiger.src.coreengine.rendering.input.bindings.utils.BindingType; public class Axis { - static final Map AXIS_MAP = new LinkedHashMap(); + static final Map AXIS_MAP = Object2ObjectMap.builder().linkedMap(); public static final IAxisSource MAIN_SCROLL_WEEL = new ScrollAxis(false); public static final IAxisSource SECOND_SCROLL_WEEL = new ScrollAxis(true); public static final Axis XMOVEMENT = new Axis("XMovement", BindingType.KEYBOARD, GLFW.GLFW_KEY_S, GLFW.GLFW_KEY_W); @@ -19,71 +19,52 @@ public class Axis public static final Axis PITCH = new Axis("Pitch", BindingType.KEYBOARD, GLFW.GLFW_KEY_X, GLFW.GLFW_KEY_C); public static final Axis ZOOM = new Axis("Zoom", MAIN_SCROLL_WEEL); - String name; IAxisSource source; - public Axis(String name) - { + public Axis(String name) { this(name, null); } - public Axis(String name, BindingType type, int pos, int neg) - { + public Axis(String name, BindingType type, int pos, int neg) { this(name, new KeySource(type, neg, pos)); } - public Axis(String id, IAxisSource provider) - { + public Axis(String id, IAxisSource provider) { name = id; source = provider; AXIS_MAP.put(id, this); } - public void setSource(BindingType type, int pos, int neg) - { + public void setSource(BindingType type, int pos, int neg) { setSource(new KeySource(type, neg, pos)); } - public void setSource(IAxisSource provider) - { + public void setSource(IAxisSource provider) { source = provider; } - public static Axis getAxis(String name) - { + public static Axis getAxis(String name) { return AXIS_MAP.get(name); } - public IAxisSource getSource() - { + public IAxisSource getSource() { return source; } - public float getValue() - { - if(source != null) - { - return source.getValue(); - } - return 0F; + public float getValue() { + return source != null ? source.getValue() : 0F; } - public String getName() - { + public String getName() { return name; } - public static interface IAxisSource - { + public static interface IAxisSource { public float getValue(); - public boolean isButton(); - public String getButtonName(boolean first); - public String getAxisName(); - public boolean isAlive(); } @@ -91,83 +72,42 @@ public class Axis { boolean first; - public ScrollAxis(boolean data) - { + public ScrollAxis(boolean data) { first = data; } @Override - public float getValue() - { - return first ? Mouse.INSTANCE.getScroll().getX() : Mouse.INSTANCE.getScroll().getY(); - } - + public float getValue() { return first ? Mouse.INSTANCE.getScroll().getX() : Mouse.INSTANCE.getScroll().getY(); } @Override - public boolean isAlive() - { - return true; - } - + public boolean isAlive() { return true; } @Override - public boolean isButton() - { - return false; - } - + public boolean isButton() { return false; } @Override - public String getButtonName(boolean first) - { - return "Not Present"; - } - + public String getButtonName(boolean first) { return "Not Present"; } @Override - public String getAxisName() - { - return "ScrollWeel "+(first ? 0 : 1); - } + public String getAxisName() { return "ScrollWeel "+(first ? 0 : 1); } } - public static class KeySource implements IAxisSource - { + public static class KeySource implements IAxisSource { BindingType type; int neg; int pos; - public KeySource(BindingType type, int neg, int pos) - { + public KeySource(BindingType type, int neg, int pos) { this.type = type; this.neg = neg; this.pos = pos; } @Override - public float getValue() - { - return (type.isPressed(pos) ? 1F : 0F) - (type.isPressed(neg) ? 1F : 0F); - } - + public float getValue() { return (type.isPressed(pos) ? 1F : 0F) - (type.isPressed(neg) ? 1F : 0F); } @Override - public boolean isButton() - { - return true; - } - + public boolean isButton() { return true; } @Override - public boolean isAlive() - { - return true; - } - + public boolean isAlive() { return true; } @Override - public String getButtonName(boolean first) - { - return type.getName(first ? pos : neg); - } - + public String getButtonName(boolean first) { return type.getName(first ? pos : neg); } @Override - public String getAxisName() - { - return "Not Present"; - } + public String getAxisName() { return "Not Present"; } } } diff --git a/src/main/java/speiger/src/coreengine/rendering/input/bindings/InputBinding.java b/src/main/java/speiger/src/coreengine/rendering/input/bindings/InputBinding.java index a9aab3b..c7860da 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/bindings/InputBinding.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/bindings/InputBinding.java @@ -1,10 +1,10 @@ package speiger.src.coreengine.rendering.input.bindings; -import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.function.Consumer; +import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.coreengine.rendering.input.bindings.utils.BindingRegistry; import speiger.src.coreengine.rendering.input.bindings.utils.BindingType; import speiger.src.coreengine.rendering.input.bindings.utils.ModType; @@ -37,7 +37,7 @@ public class InputBinding boolean pressed; int timePressed; - List> listeners = new ArrayList>(); + List> listeners = new ObjectArrayList<>(); public InputBinding(String category, String name, int key) { diff --git a/src/main/java/speiger/src/coreengine/rendering/input/bindings/utils/BindingRegistry.java b/src/main/java/speiger/src/coreengine/rendering/input/bindings/utils/BindingRegistry.java index 7ccaafe..815c00a 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/bindings/utils/BindingRegistry.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/bindings/utils/BindingRegistry.java @@ -1,64 +1,37 @@ package speiger.src.coreengine.rendering.input.bindings.utils; import java.util.Collections; -import java.util.EnumMap; -import java.util.Map; import java.util.Set; import speiger.src.collections.ints.maps.impl.hash.Int2ObjectLinkedOpenHashMap; import speiger.src.collections.ints.maps.interfaces.Int2ObjectMap; +import speiger.src.collections.objects.maps.impl.misc.Enum2ObjectMap; +import speiger.src.collections.objects.maps.interfaces.Object2ObjectMap; import speiger.src.collections.objects.sets.ObjectLinkedOpenHashSet; import speiger.src.coreengine.rendering.input.bindings.InputBinding; public class BindingRegistry { - Map>> handlers = new EnumMap<>(BindingType.class); + Object2ObjectMap>> handlers = new Enum2ObjectMap<>(BindingType.class); - public void registerBinding(InputBinding binding) - { - Int2ObjectMap> bindings = handlers.get(binding.getInputType()); - if(bindings == null) - { - bindings = new Int2ObjectLinkedOpenHashMap>(); - handlers.put(binding.getInputType(), bindings); - } - Set entries = bindings.get(binding.getKey()); - if(entries == null) - { - entries = new ObjectLinkedOpenHashSet(); - bindings.put(binding.getKey(), entries); - } - entries.add(binding); + public void registerBinding(InputBinding binding) { + handlers.supplyIfAbsent(binding.getInputType(), Int2ObjectLinkedOpenHashMap::new).supplyIfAbsent(binding.getKey(), ObjectLinkedOpenHashSet::new).add(binding); } - public void removeBinding(InputBinding binding) - { + public void removeBinding(InputBinding binding) { Int2ObjectMap> bindings = handlers.get(binding.getInputType()); - if(bindings == null) - { - return; - } + if(bindings == null) return; Set entries = bindings.get(binding.getKey()); - if(entries.remove(binding) && entries.isEmpty()) - { + if(entries.remove(binding) && entries.isEmpty()) { bindings.remove(binding.getKey()); - if(bindings.isEmpty()) - { - handlers.remove(binding.getInputType()); - } + if(bindings.isEmpty()) handlers.remove(binding.getInputType()); } } - public void updatePressing(BindingType type, int key, boolean pressed) - { + public void updatePressing(BindingType type, int key, boolean pressed) { Int2ObjectMap> bindings = handlers.get(type); - if(bindings == null) - { - return; - } + if(bindings == null) return; for(InputBinding binding : bindings.getOrDefault(key, Collections.emptySet())) - { binding.setPressed(pressed); - } } } diff --git a/src/main/java/speiger/src/coreengine/rendering/input/bindings/utils/BindingType.java b/src/main/java/speiger/src/coreengine/rendering/input/bindings/utils/BindingType.java index 91a7f9e..5141a68 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/bindings/utils/BindingType.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/bindings/utils/BindingType.java @@ -7,11 +7,9 @@ import speiger.src.coreengine.rendering.input.Mouse; public enum BindingType { - KEYBOARD - { + KEYBOARD { @Override - public String getName(int key) - { + public String getName(int key) { if(key >= GLFW.GLFW_KEY_F1 && key <= GLFW.GLFW_KEY_F25) return "F"+(key - GLFW.GLFW_KEY_F1+1); else if(key == GLFW.GLFW_KEY_DELETE) return "Delete"; String s = GLFW.glfwGetKeyName(key, GLFW.glfwGetKeyScancode(key)); @@ -19,41 +17,20 @@ public enum BindingType } @Override - public boolean isPressed(int key) - { - return Keyboard.isKeyFullyPressed(key); - } + public boolean isPressed(int key) { return Keyboard.isKeyFullyPressed(key); } }, - MOUSE - { + MOUSE { @Override - public String getName(int key) - { - return "Button: "+key; - } - + public String getName(int key) { return "Button: "+key; } @Override - public boolean isPressed(int key) - { - return Mouse.isButtonPressed(key); - } + public boolean isPressed(int key) { return Mouse.isButtonPressed(key); } }, - NONE - { + NONE { @Override - public String getName(int key) - { - return "None"; - } - + public String getName(int key) { return "None"; } @Override - public boolean isPressed(int key) - { - return false; - } + public boolean isPressed(int key) { return false; } }; - public abstract String getName(int key); - public abstract boolean isPressed(int key); } diff --git a/src/main/java/speiger/src/coreengine/rendering/input/bindings/utils/ModType.java b/src/main/java/speiger/src/coreengine/rendering/input/bindings/utils/ModType.java index a5fc46f..68ce642 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/bindings/utils/ModType.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/bindings/utils/ModType.java @@ -12,14 +12,12 @@ public final class ModType public static final int ALT = 4; public static final int IGNORE = 8; - public static boolean isActive(int flags) - { + public static boolean isActive(int flags) { boolean ignore = (flags & IGNORE) != 0; return valid(Keyboard.isCtrlDown(), (flags & CTRL) != 0, ignore) && valid(Keyboard.isShiftDown(), (flags & SHIFT) != 0, ignore) && valid(Keyboard.isAltDown(), (flags & ALT) != 0, ignore); } - public static String getMods(int flags) - { + public static String getMods(int flags) { flags &= ~IGNORE; if(flags == 0) return ""; StringJoiner builder = new StringJoiner(" + ", "", " + "); @@ -29,8 +27,7 @@ public final class ModType return builder.toString(); } - static boolean valid(boolean binding, boolean flags, boolean ignore) - { + static boolean valid(boolean binding, boolean flags, boolean ignore) { return (flags == binding) || (!flags && ignore); } } diff --git a/src/main/java/speiger/src/coreengine/rendering/input/events/FileDropEvent.java b/src/main/java/speiger/src/coreengine/rendering/input/events/FileDropEvent.java index 3b5f028..607e460 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/events/FileDropEvent.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/events/FileDropEvent.java @@ -1,42 +1,35 @@ package speiger.src.coreengine.rendering.input.events; -import java.io.File; +import java.nio.file.Path; import speiger.src.coreengine.rendering.input.window.ScaledResolution; public class FileDropEvent extends MouseEvent { - final File file; + final Path file; final String fileName; final String fileExtension; - public FileDropEvent(File file, int x, int y, ScaledResolution res) - { - super(x, y); + public FileDropEvent(Path file, long windowId, int x, int y, ScaledResolution res) { + super(windowId, x, y); this.file = file; - fileName = file.getName(); + fileName = file.getFileName().toString(); fileExtension = fileName.substring(fileName.lastIndexOf(".")+1); convertToScreenCoords(res); } - public String getFileExtension() - { + public String getFileExtension() { return fileExtension; } - public String getFileName() - { + public String getFileName() { return fileName; } - public File getFile() - { + public Path getFile() { return file; } @Override - public boolean isCancelable() - { - return true; - } + public boolean isCancelable(){ return true; } } diff --git a/src/main/java/speiger/src/coreengine/rendering/input/events/KeyEvent.java b/src/main/java/speiger/src/coreengine/rendering/input/events/KeyEvent.java index 8434429..8748153 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/events/KeyEvent.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/events/KeyEvent.java @@ -5,28 +5,23 @@ import speiger.src.coreengine.utils.eventbus.Event; public abstract class KeyEvent extends Event { @Override - public boolean isCancelable() - { + public boolean isCancelable() { return true; } - public static class KeyPressEvent extends KeyEvent - { + public static class KeyPressEvent extends KeyEvent { public final int key; - public KeyPressEvent(int key) - { + public KeyPressEvent(int key) { this.key = key; } } - public static class CharTypeEvent extends KeyEvent - { + public static class CharTypeEvent extends KeyEvent { public final char character; public final int codePoint; - public CharTypeEvent(char character, int codePoint) - { + public CharTypeEvent(char character, int codePoint) { this.character = character; this.codePoint = codePoint; } diff --git a/src/main/java/speiger/src/coreengine/rendering/input/events/MouseEvent.java b/src/main/java/speiger/src/coreengine/rendering/input/events/MouseEvent.java index c519297..da508a3 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/events/MouseEvent.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/events/MouseEvent.java @@ -3,86 +3,85 @@ package speiger.src.coreengine.rendering.input.events; import speiger.src.coreengine.rendering.input.window.ScaledResolution; import speiger.src.coreengine.utils.eventbus.Event; -public class MouseEvent extends Event +public abstract class MouseEvent extends Event { - public int mouseX; - public int mouseY; - public final int originX; - public final int originY; + final long windowId; + int mouseX; + int mouseY; + final int originX; + final int originY; - public MouseEvent(int x, int y) - { + public MouseEvent(long windowId, int x, int y) { + this.windowId = windowId; mouseX = x; mouseY = y; originX = x; originY = y; } - public void convertToOrigin() - { + public long getWindowId() { return windowId; } + public int getX() { return mouseX; } + public int getY() { return mouseY; } + public void setX(int x) { mouseX = x; } + public void setY(int y) { mouseY = y; } + public int getOriginX() { return originX; } + public int getOriginY() { return originY; } + + public void convertToOrigin() { mouseX = originX; mouseY = originY; } - public void convertToScreenCoords(ScaledResolution res) - { + public void convertToScreenCoords(ScaledResolution res) { res.getScaledMouseEvent(this); } @Override - public boolean isCancelable() - { - return true; - } + public boolean isCancelable() { return true; } + public boolean isForced() { return false; } - public boolean isForced() - { - return false; - } - - public static class MouseClickEvent extends MouseEvent - { - public final int button; - public final boolean press; + public static class MouseClickEvent extends MouseEvent { + final int button; + final boolean press; - public MouseClickEvent(int x, int y, int button, boolean press) - { - super(x, y); + public MouseClickEvent(long windowId, int x, int y, int button, boolean press) { + super(windowId, x, y); this.button = button; this.press = press; } //Forced so Buttons are always released. Maybe gets disabled. Not sure yet @Override - public boolean isForced() - { - return !press; - } + public boolean isForced() { return !press; } + public int getButton() { return button; } + public boolean isPress() { return press; } } - public static class MouseMoveEvent extends MouseEvent - { - public final int xMove; - public final int yMove; + public static class MouseMoveEvent extends MouseEvent { + final int xMove; + final int yMove; - public MouseMoveEvent(int x, int y, int xMove, int yMove) - { - super(x, y); + public MouseMoveEvent(long windowId, int x, int y, int xMove, int yMove) { + super(windowId, x, y); this.xMove = xMove; this.yMove = yMove; } + + public int getXMove() { return xMove; } + public int getYMove() { return yMove; } } - public static class MouseScrollEvent extends MouseEvent - { - public final int scrollX; - public final int scrollY; + public static class MouseScrollEvent extends MouseEvent { + final int scrollX; + final int scrollY; - public MouseScrollEvent(int x, int y, int scrollX, int scrollY) - { - super(x, y); + public MouseScrollEvent(long windowId, int x, int y, int scrollX, int scrollY) { + super(windowId, x, y); this.scrollX = scrollX; this.scrollY = scrollY; } + + public int getScrollX() { return scrollX; } + public int getScrollY() { return scrollY; } } } diff --git a/src/main/java/speiger/src/coreengine/rendering/input/raycast/Ray.java b/src/main/java/speiger/src/coreengine/rendering/input/raycast/Ray.java index d520b66..72e14c9 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/raycast/Ray.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/raycast/Ray.java @@ -2,34 +2,13 @@ package speiger.src.coreengine.rendering.input.raycast; import speiger.src.coreengine.math.vector.floats.Vec3f; -public class Ray -{ - protected Vec3f start; - protected Vec3f end; - - public Ray(Vec3f start, Vec3f end) - { - this.start = start.asImmutable(); - this.end = end.asImmutable(); - } - - public Vec3f getStart() - { - return start; - } - - public Vec3f getEnd() - { - return end; - } - - public Vec3f interpolate(float progress) - { +public record Ray(Vec3f start, Vec3f end) +{ + public Vec3f interpolate(float progress) { return start.lerp(end, progress, Vec3f.ZERO); } - public Vec3f distance() - { + public Vec3f distance() { return end.asMutable().sub(start); } } diff --git a/src/main/java/speiger/src/coreengine/rendering/input/raycast/RayCollisions.java b/src/main/java/speiger/src/coreengine/rendering/input/raycast/RayCollisions.java index 15bb8d4..f0b7867 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/raycast/RayCollisions.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/raycast/RayCollisions.java @@ -38,7 +38,7 @@ public class RayCollisions Vec3f distance = ray.distance(); double hitDot = distance.dotProduct(cross); if(Math.abs(hitDot) < 0.0000000001D) return null; - double step = first.sub(ray.getStart()).dotProduct(cross) / hitDot; + double step = first.sub(ray.start()).dotProduct(cross) / hitDot; return new RayResult(ray, ray.interpolate((float)step), step); } } diff --git a/src/main/java/speiger/src/coreengine/rendering/input/window/IWindowListener.java b/src/main/java/speiger/src/coreengine/rendering/input/window/IWindowListener.java index 26f6913..ea39202 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/window/IWindowListener.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/window/IWindowListener.java @@ -1,7 +1,5 @@ package speiger.src.coreengine.rendering.input.window; - -public interface IWindowListener -{ +public interface IWindowListener { public void onWindowChanged(Window window); } diff --git a/src/main/java/speiger/src/coreengine/rendering/input/window/Monitor.java b/src/main/java/speiger/src/coreengine/rendering/input/window/Monitor.java index 87cb36e..60fcfbf 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/window/Monitor.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/window/Monitor.java @@ -6,30 +6,25 @@ import org.lwjgl.PointerBuffer; import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFWVidMode; -import speiger.src.collections.longs.maps.impl.hash.Long2ObjectOpenHashMap; +import speiger.src.collections.longs.maps.impl.hash.Long2ObjectLinkedOpenHashMap; import speiger.src.collections.longs.maps.interfaces.Long2ObjectMap; import speiger.src.collections.objects.lists.ObjectArrayList; public class Monitor { final long monitor; - List modes = new ObjectArrayList(); + List modes = new ObjectArrayList<>(); VideoMode defaultMode; int xOffset; int yOffset; - public Monitor(long monitor) - { + public Monitor(long monitor) { this.monitor = monitor; GLFWVidMode.Buffer buffer = GLFW.glfwGetVideoModes(monitor); - for(int i = buffer.limit() - 1;i >= 0;--i) - { - buffer.position(i); - VideoMode videomode = new VideoMode(this, buffer); - if(videomode.getRedBits() >= 8 && videomode.getGreenBits() >= 8 && videomode.getBlueBits() >= 8) - { + for(int i = buffer.limit() - 1;i >= 0;--i) { + VideoMode videomode = new VideoMode(this, buffer.position(i)); + if(videomode.redBits() >= 8 && videomode.greenBits() >= 8 && videomode.blueBits() >= 8) modes.add(videomode); - } } defaultMode = new VideoMode(this, GLFW.glfwGetVideoMode(monitor)); int[] xPos = new int[1]; @@ -39,69 +34,56 @@ public class Monitor yOffset = yPos[0]; } - public String getMonitorName() - { + public String getMonitorName() { return GLFW.glfwGetMonitorName(monitor); } - public long getMonitorId() - { + public long getMonitorId() { return monitor; } - public int size() - { + public int size() { return modes.size(); } - public VideoMode getMode(int index) - { + public VideoMode getMode(int index) { return modes.get(index); } - public boolean contains(VideoMode mode) - { + public boolean contains(VideoMode mode) { return modes.indexOf(mode) != -1; } - public List getVideoMods() - { - return new ObjectArrayList(modes); + public List getVideoMods() { + return new ObjectArrayList<>(modes); } - public VideoMode getDefaultMode() - { + public VideoMode getDefaultMode() { return defaultMode; } - public int getXOffset() - { + public int getXOffset() { return xOffset; } - public int getYOffset() - { + public int getYOffset() { return yOffset; } - public long getInBounds(Window window) - { - if(xOffset <= window.getXPos() + window.getActualWidth() && xOffset + defaultMode.getWidth() >= window.getXPos() && yOffset <= window.getYPos() + window.getActualHeight() && yOffset + defaultMode.getHeight() >= window.getYPos()) - { - int xArea = Math.abs(window.getActualWidth() * defaultMode.getWidth()); - int yArea = Math.abs(window.getActualHeight() * defaultMode.getHeight()); - int areaI = (Math.min(window.getXPos() + window.getActualWidth(), xOffset + defaultMode.getWidth()) - Math.max(window.getXPos(), xOffset)) * (Math.min(window.getYPos() + window.getActualHeight(), yOffset + defaultMode.getHeight()) - Math.max(window.getYPos(), yOffset)); + public long getInBounds(Window window) { + if(xOffset <= window.getXPos() + window.getActualWidth() && xOffset + defaultMode.width() >= window.getXPos() && yOffset <= window.getYPos() + window.getActualHeight() && yOffset + defaultMode.height() >= window.getYPos()) { + int xArea = Math.abs(window.getActualWidth() * defaultMode.width()); + int yArea = Math.abs(window.getActualHeight() * defaultMode.height()); + int areaI = (Math.min(window.getXPos() + window.getActualWidth(), xOffset + defaultMode.width()) - Math.max(window.getXPos(), xOffset)) * (Math.min(window.getYPos() + window.getActualHeight(), yOffset + defaultMode.height()) - Math.max(window.getYPos(), yOffset)); return (xArea + yArea) - areaI; } return 0L; } - public static Long2ObjectMap createMonitors() - { - Long2ObjectMap monitors = new Long2ObjectOpenHashMap(); + public static Long2ObjectMap createMonitors() { + Long2ObjectMap monitors = new Long2ObjectLinkedOpenHashMap<>(); PointerBuffer buffer = GLFW.glfwGetMonitors(); - for(int i = 0,m=buffer.limit();i listeners = new ObjectArrayList<>(); GLCapabilities capabilities; - public Window() - { + public Window() { GLFW.glfwDefaultWindowHints(); GLFW.glfwWindowHint(GLFW.GLFW_VISIBLE, 0); // 0 = False, 1 = true GLFW.glfwWindowHint(GLFW.GLFW_RESIZABLE, 1); @@ -64,16 +63,14 @@ public class Window GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_FORWARD_COMPAT, 1); } - protected void initWindowListeners() - { + protected void initWindowListeners() { addCallback(T -> GLFW.glfwSetFramebufferSizeCallback(T, this::onResize)); addCallback(T -> GLFW.glfwSetWindowMaximizeCallback(T, (K, V) -> flags.setFlag(FLAG_WINDOW_CHANGE))); addCallback(T -> GLFW.glfwSetWindowPosCallback(T, (W, X, Y) -> setPosition(X, Y))); addCallback(T -> GLFW.glfwSetWindowFocusCallback(T, (K, V) -> flags.setFlag(FLAG_FOCUS, V))); } - Window createWindow(WindowStats stat) - { + Window createWindow(WindowStats stat) { owner = stat.provider; title = stat.name; width = stat.width; @@ -88,32 +85,21 @@ public class Window GLFW.glfwWindowHint(GLFW.GLFW_SAMPLES, aaLevel); GLFW.glfwWindowHint(GLFW.GLFW_DECORATED, flags.isFlagNotSet(FLAG_FULL_SCREEN) && flags.isFlagSet(FLAG_BORDERLESS) ? 0 : 1); GLFW.glfwWindowHint(GLFW.GLFW_FLOATING, flags.isFlagNotSet(FLAG_FULL_SCREEN) && flags.isFlagSet(FLAG_FLOATING) ? 1 : 0); - if(videoMode == null || videoMode.getMonitor() == null) - { - throw new IllegalStateException("Monitor or Video Mode is missing: "+videoMode); - } - Monitor monitor = videoMode.getMonitor(); - windowId = GLFW.glfwCreateWindow(flags.isFlagSet(FLAG_FULL_SCREEN) ? videoMode.getWidth() : width, flags.isFlagSet(FLAG_FULL_SCREEN) ? videoMode.getHeight() : height, title, flags.isFlagSet(FLAG_FULL_SCREEN) ? monitor.getMonitorId() : 0L, stat.parent == null ? 0 : stat.parent.windowId); - if(windowId == 0) - { - throw new IllegalStateException("Window Couldn't be Created"); - } + if(videoMode == null || videoMode.monitor() == null) throw new IllegalStateException("Monitor or Video Mode is missing: "+videoMode); + Monitor monitor = videoMode.monitor(); + windowId = GLFW.glfwCreateWindow(flags.isFlagSet(FLAG_FULL_SCREEN) ? videoMode.width() : width, flags.isFlagSet(FLAG_FULL_SCREEN) ? videoMode.height() : height, title, flags.isFlagSet(FLAG_FULL_SCREEN) ? monitor.getMonitorId() : 0L, stat.parent == null ? 0 : stat.parent.windowId); + if(windowId == 0) throw new IllegalStateException("Window Couldn't be Created"); initWindowListeners(); GLFW.glfwMakeContextCurrent(windowId); - if(capabilities == null) - { - capabilities = GL.createCapabilities(); - } - if(flags.isFlagNotSet(FLAG_FULL_SCREEN)) - { - xPos = stat.center ? (monitor.getXOffset() + (videoMode.getWidth() / 2) - (width / 2)) : monitor.getXOffset() + xPos; - yPos = stat.center ? (monitor.getYOffset() + (videoMode.getHeight() / 2) - (width / 2)) : monitor.getYOffset() + yPos; + if(capabilities == null) capabilities = GL.createCapabilities(); + if(flags.isFlagNotSet(FLAG_FULL_SCREEN)) { + xPos = stat.center ? (monitor.getXOffset() + (videoMode.width() / 2) - (width / 2)) : monitor.getXOffset() + xPos; + yPos = stat.center ? (monitor.getYOffset() + (videoMode.height() / 2) - (width / 2)) : monitor.getYOffset() + yPos; GLFW.glfwSetWindowPos(windowId, xPos, yPos); } - else - { - xPos = monitor.getXOffset() + (videoMode.getWidth() / 2) - (width / 2); - yPos = monitor.getYOffset() + (videoMode.getHeight() / 2) - (width / 2); + else { + xPos = monitor.getXOffset() + (videoMode.width() / 2) - (width / 2); + yPos = monitor.getYOffset() + (videoMode.height() / 2) - (width / 2); tempWidth = width; tempHeight = height; } @@ -123,52 +109,39 @@ public class Window return this; } - protected void onResize(long window, int newWidth, int newHeight) - { - if(flags.isFlagNotSet(FLAG_FULL_SCREEN | FLAG_MAXIMIZED) && window == windowId && (width != newWidth || height != newHeight)) - { + protected void onResize(long window, int newWidth, int newHeight) { + if(flags.isFlagNotSet(FLAG_FULL_SCREEN | FLAG_MAXIMIZED) && window == windowId && (width != newWidth || height != newHeight)) { width = newWidth; height = newHeight; flags.setFlag(FLAG_WINDOW_CHANGE); } } - protected void updateCallbacks() - { - for(int i = 0,m=callbacks.size();i provider) - { - if(provider == null) - { - return null; - } + public WindowCallback addCallback(LongFunction provider) { + if(provider == null) return null; WindowCallback callback = new WindowCallback(provider); callbacks.add(callback); - if(windowId != 0) - { - callback.reload(windowId); + if(windowId != 0) { + callback.load(windowId); } return callback; } - public void removeCallback(WindowCallback call) - { - if(callbacks.remove(call)) - { + public void removeCallback(WindowCallback call) { + if(callbacks.remove(call)) { call.destroy(); } } - private void createProjectionMatrix() - { -// float aspectRatio = (float)width / (float)height; -// float y_scale = (float)((1f / Math.tan(Math.toRadians(fieldOfView / 2f))) * aspectRatio); -// float x_scale = y_scale / aspectRatio; -// float frustum_length = far_plane - near_plane; -// projection.setIdentity(); -// projection.set(0, x_scale); -// projection.set(5, y_scale); -// projection.set(10, -((far_plane + near_plane) / frustum_length)); -// projection.set(11, -1); -// projection.set(14, -((2 * near_plane * far_plane) / frustum_length)); -// projection.set(15, 0); -// invertedProjection.load(projection).invert(); -// + private void createProjectionMatrix() { projection.setIdentity().setPerspective((float)Math.toRadians(fieldOfView), (float)width / (float)height, near_plane, far_plane); invertedProjection.load(projection).invert(); } - protected void fetchWindowBounds() - { + protected void fetchWindowBounds() { int[] width = new int[1]; int[] height = new int[1]; GLFW.glfwGetWindowSize(windowId, width, height); diff --git a/src/main/java/speiger/src/coreengine/rendering/input/window/WindowCallback.java b/src/main/java/speiger/src/coreengine/rendering/input/window/WindowCallback.java index 8365d8c..8449ad6 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/window/WindowCallback.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/window/WindowCallback.java @@ -9,22 +9,22 @@ public class WindowCallback Callback callback; LongFunction provider; - public WindowCallback(LongFunction provider) - { + public WindowCallback(LongFunction provider) { this.provider = provider; } - public void reload(long windowID) - { - callback = provider.apply(windowID); + public void reload(long windowId) { + destroy(); + load(windowId); } - public void destroy() - { - if(callback != null) - { - callback.free(); - callback = null; - } + public void load(long windowId) { + callback = provider.apply(windowId); + } + + public void destroy() { + if(callback == null) return; + callback.free(); + callback = null; } } diff --git a/src/main/java/speiger/src/coreengine/rendering/input/window/WindowProvider.java b/src/main/java/speiger/src/coreengine/rendering/input/window/WindowProvider.java index ce72431..84444cb 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/window/WindowProvider.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/window/WindowProvider.java @@ -1,6 +1,7 @@ package speiger.src.coreengine.rendering.input.window; import java.util.List; +import java.util.Objects; import org.lwjgl.glfw.GLFW; import org.lwjgl.system.Callback; @@ -14,16 +15,13 @@ public class WindowProvider List callbacks = new ObjectArrayList<>(); List activeWindows = new ObjectArrayList<>(); - public void init() - { + public void init() { monitors = Monitor.createMonitors(); callbacks.add(GLFW.glfwSetMonitorCallback(this::onMonitorChange)); } - protected void onMonitorChange(long id, int state) - { - switch(state) - { + protected void onMonitorChange(long id, int state) { + switch(state) { case GLFW.GLFW_CONNECTED: monitors.put(id, new Monitor(id)); break; @@ -33,30 +31,31 @@ public class WindowProvider } } - public WindowStats createBuilder() - { + public WindowStats createBuilder() { return new WindowStats(this); } - public Monitor getMonitors(long id) - { + public Monitor getMonitors(long id) { return monitors.get(id); } - public List getActiveWindows() - { + public Window getWindowFromId(long id) { + for(Window window : activeWindows) { + if(window.getId() == id) return window; + } + return null; + } + + public List getActiveWindows() { return activeWindows; } - public Monitor getMonitorFromWindow(Window window) - { + public Monitor getMonitorFromWindow(Window window) { Monitor monitor = null; long overlap = Long.MIN_VALUE; - for(Monitor entry : monitors.values()) - { + for(Monitor entry : monitors.values()) { long thisOverlap = entry.getInBounds(window); - if(thisOverlap > overlap) - { + if(thisOverlap > overlap) { monitor = entry; overlap = thisOverlap; } @@ -64,40 +63,26 @@ public class WindowProvider return monitor == null ? monitors.get(GLFW.glfwGetPrimaryMonitor()) : monitor; } - public List getMonitors() - { - return new ObjectArrayList(monitors.values()); + public List getMonitors() { + return new ObjectArrayList<>(monitors.values()); } - public void destroy() - { - for(int i = 0,m=callbacks.size();i 0) - { - this.width = width; - } + public WindowStats setWidth(int width) { + this.width = Math.max(1, width); return this; } - public WindowStats setHeight(int height) - { - if(height > 0) - { - this.height = height; - } + public WindowStats setHeight(int height) { + this.height = Math.max(1, height); return this; } - public WindowStats setAntiAlis(int antiAlis) - { - if(antiAlis >= 0) - { - this.antiAlis = antiAlis; - } + public WindowStats setAntiAlis(int antiAlis) { + this.antiAlis = Math.max(1, antiAlis); return this; } - public WindowStats setSubWindow(Window parent) - { + public WindowStats setSubWindow(Window parent) { this.parent = parent; return this; } - public WindowStats setFullScreen(boolean fullScreen) - { + public WindowStats setFullScreen(boolean fullScreen) { this.fullScreen = fullScreen; - if(fullScreen) - { - borderless = false; - floating = false; - } + borderless &= !fullScreen; + floating &= !fullScreen; return this; } - public WindowStats setBorderless(boolean borderless) - { + public WindowStats setBorderless(boolean borderless) { this.borderless = borderless; - if(borderless) - { - fullScreen = false; - } + fullScreen &= !borderless; return this; } - public WindowStats setFloating(boolean floating) - { + public WindowStats setFloating(boolean floating) { this.floating = floating; - if(floating) - { - fullScreen = false; - } + fullScreen &= !floating; return this; } - public WindowStats setCentered(boolean center) - { + public WindowStats setCentered(boolean center) { this.center = center; return this; } - public WindowStats setMonitor(VideoMode videoMode) - { - if(videoMode != null && videoMode.getMonitor() != null) - { + public WindowStats setMonitor(VideoMode videoMode) { + if(videoMode != null && videoMode.monitor() != null) { this.videoMode = videoMode; } return this; } - public WindowStats setVsync(boolean value) - { + public WindowStats setVsync(boolean value) { vsync = value; return this; } - public WindowStats setFPSCap(boolean cap) - { + public WindowStats setFPSCap(boolean cap) { fpsCap = cap; return this; } - public Window build() - { + public Window build() { Window window = new Window().createWindow(this); provider.activeWindows.add(window); return window; diff --git a/src/main/java/speiger/src/coreengine/rendering/newGui/components/base/GuiComponent.java b/src/main/java/speiger/src/coreengine/rendering/newGui/components/base/GuiComponent.java new file mode 100644 index 0000000..c74a254 --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/newGui/components/base/GuiComponent.java @@ -0,0 +1,175 @@ +package speiger.src.coreengine.rendering.newGui.components.base; + +import java.util.List; +import java.util.function.Consumer; + +import speiger.src.collections.ints.sets.IntOpenHashSet; +import speiger.src.collections.ints.sets.IntSet; +import speiger.src.collections.objects.lists.ObjectArrayList; +import speiger.src.coreengine.rendering.gui.helper.box.IGuiBox; +import speiger.src.coreengine.utils.collections.CollectionUtils; +import speiger.src.coreengine.utils.collections.FlagObject; + +public non-sealed class GuiComponent extends FlagObject implements IInteractableContainer, ICastable, ILayoutComponent, IListableComponent { + private static final int FLAG_FOCUSED = 1<<0; + private static final int FLAG_ENABLED = 1<<1; + private static final int FLAG_VISIBLE = 1<<2; + private static final int FLAG_MANUAL_MANAGED = 1<<3; + private static final int FLAG_SCISSORED = 1<<4; + + IGuiBox box; + + GuiComponent parent; + List children = new ObjectArrayList<>(); + List interactions = new ObjectArrayList<>(); + List>[] listeners = CollectionUtils.createList(IListableComponent.MAX_LISTENER_TYPES); + + + IInteractable focused; + IntSet activeButtons = new IntOpenHashSet(); + + @Override + public List getChildren() { + return interactions; + } + + @Override + public void setFocusedChild(IInteractable child) { + if(focused != null) focused.setFocused(false); + this.focused = child; + if(focused != null) focused.setFocused(true); + } + + @Override + public IInteractable getFocusedChild() { + return focused; + } + + @Override + public IntSet getActiveButtons() { + return activeButtons; + } + + @Override + public void calculateBounds(ILayoutScanner output) { + output.accept(getBox()); + for(GuiComponent child : children) { + if(child.isVisible() || output.acceptsInvisble()) { + child.calculateBounds(output); + } + } + } + + @Override + public GuiComponent addListener(Consumer listener, int index) { + listeners[index].add(listener); + return this; + } + + @Override + public GuiComponent removeListener(Consumer listener, int index) { + listeners[index].remove(listener); + return this; + } + + @Override + public void notifyListeners(int index) { + if(listeners[index].isEmpty()) return; + for(Consumer comp : listeners[index]) { + comp.accept(this); + } + } + + @Override + public IGuiBox getBox() { + return box; + } + + @Override + public boolean isMouseColliding(int mouseX, int mouseY) { + return isVisible() && box.isColiding(mouseX, mouseY); + } + + @Override + public GuiComponent set(float x, float y) { + if(box.getBaseX() != x || box.getBaseY() != y) { + box.setXY(x, y); + //TODO implement onChanged + } + return this; + } + + @Override + public GuiComponent bounds(float width, float height) { + if(box.getBaseWidth() != width || box.getBaseHeight() != height) { + box.setBounds(width, height); + //TODO implement onChanged + } + return this; + } + + @Override + public GuiComponent resize(float width, float height) { + if(width != 0F || height != 0F) { + box.grow(width, height); + //TODO implement onChanged + } + return this; + } + + @Override + public GuiComponent move(float moveX, float moveY) { + if(moveX != 0F || moveY != 0F) { + box.move(moveX, moveY); + //TODO implement onChanged + } + return this; + } + + @Override + public final boolean isFocused() { + return isFlagSet(FLAG_FOCUSED); + } + + public final boolean isEnabled() { + return isFlagSet(FLAG_ENABLED); + } + + public final boolean isVisible() { + return isFlagSet(FLAG_VISIBLE); + } + + public final boolean isManualManaged() { + return isFlagSet(FLAG_MANUAL_MANAGED); + } + + public final boolean isScissored() { + return isFlagSet(FLAG_SCISSORED); + } + + @Override + public final void setFocused(boolean value) { + setFlag(FLAG_FOCUSED, value); + if(!value) setFocusedChild(null); + } + + public final GuiComponent setEnabled(boolean value) { + setFlag(FLAG_ENABLED, value); + return this; + } + + public final GuiComponent setVisible(boolean value) { + setFlag(FLAG_VISIBLE, value); + return this; + } + + public final GuiComponent setManualManaged(boolean value) { + setFlag(FLAG_MANUAL_MANAGED, value); + return this; + } + + public final GuiComponent setScissored(boolean value) { + setFlag(FLAG_SCISSORED, value); + return this; + } +} diff --git a/src/main/java/speiger/src/coreengine/rendering/newGui/components/base/ICastable.java b/src/main/java/speiger/src/coreengine/rendering/newGui/components/base/ICastable.java new file mode 100644 index 0000000..d9d5302 --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/newGui/components/base/ICastable.java @@ -0,0 +1,19 @@ +package speiger.src.coreengine.rendering.newGui.components.base; + +public interface ICastable +{ + @SuppressWarnings("unchecked") + public default T cast() { + return (T)this; + } + + @SuppressWarnings("unchecked") + public default T cast(Class clz) { + return (T)this; + } + + @SuppressWarnings("unchecked") + public default T tryCast(Class clz) { + return clz.isInstance(this) ? (T)this : null; + } +} \ No newline at end of file diff --git a/src/main/java/speiger/src/coreengine/rendering/newGui/components/base/IInteractable.java b/src/main/java/speiger/src/coreengine/rendering/newGui/components/base/IInteractable.java new file mode 100644 index 0000000..c7c35b5 --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/newGui/components/base/IInteractable.java @@ -0,0 +1,19 @@ +package speiger.src.coreengine.rendering.newGui.components.base; + +public interface IInteractable +{ + public boolean isMouseColliding(int mouseX, int mouseY); + + public default boolean onMouseClick(int button, int mouseX, int mouseY) { return false; } + public default boolean onMouseDragged(int mouseX, int mouseY, int diffX, int diffY) { return false; } + public default boolean onMouseReleased(int button, int mouseX, int mouseY) { return false; } + public default boolean onMouseScroll(int scroll, int mouseX, int mouseY) { return false; } + + public default boolean isPriorityKeyTarget() { return false; } + public default boolean onKeyPressed(int key, int mouseX, int mouseY) { return false; } + public default boolean onKeyReleased(int key, int mouseX, int mouseY) { return false; } + public default boolean onKeyTyped(char letter, int codepoint) { return false; } + + public boolean isFocused(); + public void setFocused(boolean value); +} diff --git a/src/main/java/speiger/src/coreengine/rendering/newGui/components/base/IInteractableContainer.java b/src/main/java/speiger/src/coreengine/rendering/newGui/components/base/IInteractableContainer.java new file mode 100644 index 0000000..d8037be --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/newGui/components/base/IInteractableContainer.java @@ -0,0 +1,92 @@ +package speiger.src.coreengine.rendering.newGui.components.base; + +import java.util.List; + +import speiger.src.collections.ints.sets.IntSet; + +public interface IInteractableContainer extends IInteractable +{ + public List getChildren(); + + public void setFocusedChild(IInteractable child); + public IInteractable getFocusedChild(); + public IntSet getActiveButtons(); + + public default IInteractable getChildAt(int mouseX, int mouseY) { + List children = getChildren(); + for(int i = 0,m=children.size();i 0 && getFocusedChild() != null) { + IInteractable focus = getFocusedChild(); + if(focus.isMouseColliding(mouseX, mouseY) && focus.onMouseClick(button, mouseX, mouseY)) { + active.add(button); + return true; + } + return false; + } + List children = getChildren(); + for(int i = 0,m=children.size();i children = getChildren(); + for(int i = 0,m=children.size();i children = getChildren(); + for(int i = 0,m=children.size();i listener, int index); + public GuiComponent removeListener(Consumer listener, int index); + public void notifyListeners(int index); + + public default GuiComponent onAction(Consumer listener) { + return addListener(listener, IListableComponent.LISTENER_USER_ACTION); + } + + public default GuiComponent onAction(Runnable listener) { + return addListener(listener, IListableComponent.LISTENER_USER_ACTION); + } + + public default GuiComponent onChange(Consumer listener) { + return addListener(listener, IListableComponent.LISTENER_ON_CHANGE); + } + + public default GuiComponent onChange(Runnable listener) { + return addListener(listener, IListableComponent.LISTENER_ON_CHANGE); + } + + public default GuiComponent onClose(Consumer listener) { + return addListener(listener, IListableComponent.LISTENER_CLOSED); + } + + public default GuiComponent onClose(Runnable listener) { + return addListener(listener, IListableComponent.LISTENER_CLOSED); + } + + public default GuiComponent addListener(Runnable runnable, int index) { + return addListener(T -> runnable.run(), index); + } + + public default GuiComponent removeUserActionListener(Consumer listener) { + return removeListener(listener, GuiComponent.LISTENER_USER_ACTION); + } + + public default GuiComponent removeChangeListener(Consumer listener) { + return removeListener(listener, GuiComponent.LISTENER_ON_CHANGE); + } + + public default GuiComponent removeCloseListener(Consumer listener) { + return removeListener(listener, GuiComponent.LISTENER_CLOSED); + } +} \ No newline at end of file diff --git a/src/main/java/speiger/src/coreengine/rendering/newGui/renderer/IUIRenderer.java b/src/main/java/speiger/src/coreengine/rendering/newGui/renderer/IUIRenderer.java new file mode 100644 index 0000000..4b61b9d --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/newGui/renderer/IUIRenderer.java @@ -0,0 +1,8 @@ +package speiger.src.coreengine.rendering.newGui.renderer; + +public interface IUIRenderer { + public IUIRenderer drawQuad(float minX, float minY, float maxX, float maxY, float zOff, int color); + public IUIRenderer drawTexturedQuad(float minX, float minY, float maxX, float maxY, float zOff, int color); + public IUIRenderer drawLine(float minX, float minY, float maxX, float maxY, float zOff, int color); + public IUIRenderer drawFrame(float minX, float minY, float maxX, float maxY, float zOff, int color); +} diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/ProjectionBuffer.java b/src/main/java/speiger/src/coreengine/rendering/shader/ProjectionBuffer.java index bd91c09..ec586ea 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/ProjectionBuffer.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/ProjectionBuffer.java @@ -19,8 +19,7 @@ public class ProjectionBuffer implements IWindowListener, Consumer final Matrix4f proViewMatrix = new Matrix4f(); final Matrix4f orthoViewMatrix = new Matrix4f(); - public ProjectionBuffer(Camera camera, Window window) - { + public ProjectionBuffer(Camera camera, Window window) { this.camera = camera; this.window = window; projectionMatrixBuffer = new UniformBuffer(true); @@ -31,15 +30,13 @@ public class ProjectionBuffer implements IWindowListener, Consumer } @Override - public void accept(Camera t) - { + public void accept(Camera t) { proViewMatrix.load(window.getProjectionMatrix()).multiply(camera.getViewMatrix()); proViewMatrixBuffer.bind().setBufferData(proViewMatrix.getData()).unbind(); } - + @Override - public void onWindowChanged(Window window) - { + public void onWindowChanged(Window window) { ScaledResolution res = window.getUIFrame(); orthoViewMatrix.setIdentity().ortho(0, 0, res.getScaledWidth(), res.getScaledHeight(), 1000, -1000); projectionMatrixBuffer.bind().setBufferData(window.getProjectionMatrix().getData()).unbind(); @@ -47,28 +44,23 @@ public class ProjectionBuffer implements IWindowListener, Consumer accept(camera); } - public UniformBuffer getProjectionMatrixBuffer() - { + public UniformBuffer getProjectionMatrixBuffer() { return projectionMatrixBuffer; } - public UniformBuffer getProViewMatrixBuffer() - { + public UniformBuffer getProViewMatrixBuffer() { return proViewMatrixBuffer; } - public UniformBuffer getOrthoViewMatrixBuffer() - { + public UniformBuffer getOrthoViewMatrixBuffer() { return orthoViewMatrixBuffer; } - public Matrix4f getProViewMatrix() - { + public Matrix4f getProViewMatrix() { return proViewMatrix; } - public Matrix4f getOrthoViewMatrix() - { + public Matrix4f getOrthoViewMatrix() { return orthoViewMatrix; } } diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/ShaderEntry.java b/src/main/java/speiger/src/coreengine/rendering/shader/ShaderEntry.java index 66b5bcf..55657d5 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/ShaderEntry.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/ShaderEntry.java @@ -8,15 +8,13 @@ public class ShaderEntry implements Consumer List shaders; int index; - public ShaderEntry(List shaders, int index) - { + public ShaderEntry(List shaders, int index) { this.shaders = shaders; this.index = index; } @Override - public void accept(T t) - { + public void accept(T t) { shaders.set(index, t); } diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/ShaderProgram.java b/src/main/java/speiger/src/coreengine/rendering/shader/ShaderProgram.java index 2e30627..f015891 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/ShaderProgram.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/ShaderProgram.java @@ -14,24 +14,21 @@ import speiger.src.coreengine.utils.io.GameLog; public abstract class ShaderProgram { - protected List localUniforms = new ObjectArrayList(); + protected List localUniforms = new ObjectArrayList<>(); ReloadReference reference; private int shaderID; - protected ShaderProgram(AssetLocation vertex, AssetLocation fragment, String[] attributes) - { + protected ShaderProgram(AssetLocation vertex, AssetLocation fragment, String[] attributes) { int vertexID = loadShader(vertex, GL20.GL_VERTEX_SHADER); int fragmentID = loadShader(fragment, GL20.GL_FRAGMENT_SHADER); - if(vertexID == -1 || fragmentID == -1) - { + if(vertexID == -1 || fragmentID == -1) { shaderID = 0; return; } shaderID = GL20.glCreateProgram(); GL20.glAttachShader(shaderID, vertexID); GL20.glAttachShader(shaderID, fragmentID); - for(int i = 0;i < attributes.length;i++) - { + for(int i = 0;i < attributes.length;i++) { GL20.glBindAttribLocation(shaderID, i, attributes[i]); } GL20.glLinkProgram(shaderID); @@ -41,54 +38,42 @@ public abstract class ShaderProgram GL20.glDeleteShader(fragmentID); } - public void addUniforms(Uniform... uniforms) - { - for(Uniform uni : uniforms) - { + public void addUniforms(Uniform... uniforms) { + for(Uniform uni : uniforms) { uni.loadUniform(this); localUniforms.add(uni); } GL20.glValidateProgram(shaderID); } - void setReference(ReloadReference ref) - { + void setReference(ReloadReference ref) { reference = ref; } public abstract ShaderProgram init(); - public boolean isShaderValid() - { + public boolean isShaderValid() { return shaderID != 0; } - public int getShaderID() - { + public int getShaderID() { return shaderID; } - public void startShader() - { + public void startShader() { ShaderTracker.INSTANCE.startNextShader(this); } - public void stopShader() - { + public void stopShader() { ShaderTracker.INSTANCE.stopShader(this); } - public boolean isShaderRunning() - { + public boolean isShaderRunning() { return ShaderTracker.INSTANCE.activeShader == getShaderID(); } - public void removeShader() - { - if(shaderID == 0) - { - return; - } + public void removeShader() { + if(shaderID == 0) return; stopShader(); GL20.glDeleteProgram(shaderID); shaderID = 0; @@ -96,32 +81,27 @@ public abstract class ShaderProgram reference = null; } - private int loadShader(AssetLocation location, int type) - { + private int loadShader(AssetLocation location, int type) { StringBuilder shaderSource = new StringBuilder(); - try(IAsset asset = ShaderTracker.INSTANCE.getAssets().getAsset(location)) - { + try(IAsset asset = ShaderTracker.INSTANCE.getAssets().getAsset(location)) { for(String s : IterableWrapper.wrap(asset.getStringReader())) { - if(s.startsWith("//")) - { - continue; - } + if(s.startsWith("//")) continue; shaderSource.append(s).append("//\n"); } } - catch(Exception e) - { + catch(Exception e) { e.printStackTrace(); return -1; } int shaderID = GL20.glCreateShader(type); GL20.glShaderSource(shaderID, shaderSource); GL20.glCompileShader(shaderID); - if(GL20.glGetShaderi(shaderID, GL20.GL_COMPILE_STATUS) == 0) - { + if(GL20.glGetShaderi(shaderID, GL20.GL_COMPILE_STATUS) == 0) { GameLog.warn("Could not compile shader " + location); - GameLog.error(GL20.glGetShaderInfoLog(shaderID, 500)); + int[] length = new int[1]; + GL20.glGetShaderiv(shaderID, GL20.GL_INFO_LOG_LENGTH, length); + GameLog.error(GL20.glGetShaderInfoLog(shaderID, length[0])); return -1; } return shaderID; diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/ShaderTracker.java b/src/main/java/speiger/src/coreengine/rendering/shader/ShaderTracker.java index 95ccb76..2a2b459 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/ShaderTracker.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/ShaderTracker.java @@ -18,117 +18,82 @@ public class ShaderTracker implements IReloadableResource boolean reloading = false; AssetManager assets; - public void init(AssetManager assets) - { + public void init(AssetManager assets) { this.assets = assets; } - public T register(Supplier creator, Consumer reloader) - { + public T register(Supplier creator, Consumer reloader) { T result = creator.get(); result.init(); programs.add(new ReloadReference<>(result, creator, reloader)); return result; } - protected AssetManager getAssets() - { + protected AssetManager getAssets() { return assets; } - void startNextShader(ShaderProgram shader) - { - if(shader.getShaderID() == activeShader) - { - return; - } + void startNextShader(ShaderProgram shader) { + if(shader.getShaderID() == activeShader) return; activeShader = shader.getShaderID(); GL20.glUseProgram(activeShader); } - void stopShader(ShaderProgram shader) - { - if(activeShader == 0) - { - return; - } + void stopShader(ShaderProgram shader) { + if(activeShader == 0) return; activeShader = 0; GL20.glUseProgram(activeShader); } - public void stopShader() - { - if(activeShader == 0) - { - return; - } + public void stopShader() { + if(activeShader == 0) return; activeShader = 0; GL20.glUseProgram(activeShader); } - public boolean isShaderActive() - { + public boolean isShaderActive() { return activeShader > 0; } @Override - public void reload() - { - for(int i = 0,m = programs.size();i - { + class ReloadReference { T program; Supplier creator; Consumer listener; - public ReloadReference(T value, Supplier creator, Consumer listener) - { + public ReloadReference(T value, Supplier creator, Consumer listener) { this.program = value; this.creator = creator; this.listener = listener; program.setReference(this); } - private void destroy() - { - if(program == null || reloading) - { - return; - } + private void destroy() { + if(program == null || reloading) return; program.removeShader(); program = null; listener.accept(null); } - public void removeReference() - { + public void removeReference() { destroy(); - if(reloading) - { - return; - } + if(reloading) return; programs.remove(this); } - public void reload() - { + public void reload() { reloading = true; program.removeShader(); program = creator.get(); diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/Uniform.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/Uniform.java index 24721c7..6090f3f 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/Uniform.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/Uniform.java @@ -11,28 +11,22 @@ public abstract class Uniform protected int position; protected boolean optional = false; - public Uniform(String id) - { + public Uniform(String id) { name = id; } - public int getPosition() - { + public int getPosition() { return position; } - public T setOptional() - { + public T setOptional() { optional = true; return (T)this; } - public void loadUniform(ShaderProgram prog) - { + public void loadUniform(ShaderProgram prog) { position = GL20.glGetUniformLocation(prog.getShaderID(), name); if(position == -1 && !optional) - { GameLog.error("Couldn't find Shader Uniform: "+name+", Shader: "+"("+prog.getClass().getSimpleName()+".java:0) ("+prog.getShaderID()+")"); - } } } diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformArrayBase.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformArrayBase.java index d54f6e4..7bce69d 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformArrayBase.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformArrayBase.java @@ -6,56 +6,45 @@ import org.lwjgl.opengl.GL20; import speiger.src.coreengine.rendering.shader.ShaderProgram; -public class UniformArrayBase extends Uniform -{ +public class UniformArrayBase extends Uniform { protected int[] positions; protected boolean[] first; protected Object[] lastValues; protected int limit; - - public UniformArrayBase(String id, int length) - { + + public UniformArrayBase(String id, int length) { super(id); limit = length; positions = new int[length]; first = new boolean[length]; lastValues = new Object[length]; } - - public int getPosition(int index) - { + + public int getPosition(int index) { return positions[index]; } - - protected boolean hasChanged(int index, T value) - { - if(!first[index] || !Objects.equals(lastValues[index], value)) - { + + protected boolean hasChanged(int index, T value) { + if (!first[index] || !Objects.equals(lastValues[index], value)) { first[index] = true; - lastValues[index] = setValue((T)lastValues[index], value); + lastValues[index] = setValue((T) lastValues[index], value); return true; } return false; } - - protected T setValue(T oldValue, T newValue) - { + + protected T setValue(T oldValue, T newValue) { return newValue; } - + @Override - public void loadUniform(ShaderProgram prog) - { - for(int i = 0;i extends Uniform -{ +public abstract class UniformBase extends Uniform { T lastValue; boolean first = true; - - public UniformBase(String id) - { + + public UniformBase(String id) { super(id); } - - protected boolean hasChanged(T value) - { - if(first || !Objects.equals(lastValue, value)) - { + + protected boolean hasChanged(T value) { + if (first || !Objects.equals(lastValue, value)) { first = false; lastValue = setValue(lastValue, value); return true; } return false; } - - protected T setValue(T oldValue, T newValue) - { + + protected T setValue(T oldValue, T newValue) { return newValue; } } diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformBoolean.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformBoolean.java index 3111fe0..3e9bc02 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformBoolean.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformBoolean.java @@ -4,19 +4,16 @@ import org.lwjgl.opengl.GL20; import speiger.src.coreengine.rendering.utils.AllocationTracker; -public class UniformBoolean extends Uniform -{ +public class UniformBoolean extends Uniform { boolean last = false; boolean first = true; - public UniformBoolean(String id) - { + + public UniformBoolean(String id) { super(id); } - - public void storeData(boolean value) - { - if(last != value || first) - { + + public void storeData(boolean value) { + if (last != value || first) { first = false; last = value; GL20.glUniform1f(getPosition(), value ? 1F : 0F); diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformBufferBlock.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformBufferBlock.java index 24cb4d6..e64c7d0 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformBufferBlock.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformBufferBlock.java @@ -7,30 +7,25 @@ import speiger.src.coreengine.rendering.models.UniformBuffer; import speiger.src.coreengine.rendering.shader.ShaderProgram; import speiger.src.coreengine.utils.io.GameLog; -public class UniformBufferBlock extends Uniform -{ +public class UniformBufferBlock extends Uniform { ShaderProgram prog; int slot; - - public UniformBufferBlock(String id, int slot) - { + + public UniformBufferBlock(String id, int slot) { super(id); this.slot = slot; } - + @Override - public void loadUniform(ShaderProgram prog) - { + public void loadUniform(ShaderProgram prog) { this.prog = prog; position = GL31.glGetUniformBlockIndex(prog.getShaderID(), name); - if(position == -1) - { - GameLog.error("Couldn't find Shader Uniform Block: "+name+", Shader ID: "+prog.getShaderID()); + if (position == -1) { + GameLog.error("Couldn't find Shader Uniform Block: " + name + ", Shader ID: " + prog.getShaderID()); } } - - public void bindBuffer(UniformBuffer buffer) - { + + public void bindBuffer(UniformBuffer buffer) { GL30.glBindBufferBase(GL31.GL_UNIFORM_BUFFER, slot, buffer.getBufferID()); GL31.glUniformBlockBinding(prog.getShaderID(), position, slot); } diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformFloat.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformFloat.java index 7d1442e..98261f3 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformFloat.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformFloat.java @@ -4,20 +4,16 @@ import org.lwjgl.opengl.GL20; import speiger.src.coreengine.rendering.utils.AllocationTracker; -public class UniformFloat extends Uniform -{ +public class UniformFloat extends Uniform { float lastValue = 0F; boolean first = true; - - public UniformFloat(String id) - { + + public UniformFloat(String id) { super(id); } - - public void storeData(float value) - { - if(Float.floatToIntBits(lastValue) != Float.floatToIntBits(value) || first) - { + + public void storeData(float value) { + if (Float.floatToIntBits(lastValue) != Float.floatToIntBits(value) || first) { lastValue = value; first = false; GL20.glUniform1f(getPosition(), value); diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformInt.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformInt.java index 29b5058..97079d7 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformInt.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformInt.java @@ -4,17 +4,13 @@ import org.lwjgl.opengl.GL20; import speiger.src.coreengine.rendering.utils.AllocationTracker; -public class UniformInt extends UniformBase -{ - public UniformInt(String id) - { +public class UniformInt extends UniformBase { + public UniformInt(String id) { super(id); } - - public void storeData(Integer data) - { - if(hasChanged(data)) - { + + public void storeData(Integer data) { + if (hasChanged(data)) { GL20.glUniform1i(getPosition(), data); AllocationTracker.INSTANCE.addGPUBytes(4L); } diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformMatrix.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformMatrix.java index 5161654..94031e9 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformMatrix.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformMatrix.java @@ -5,27 +5,21 @@ import org.lwjgl.opengl.GL20; import speiger.src.coreengine.math.vector.matrix.Matrix4f; import speiger.src.coreengine.rendering.utils.AllocationTracker; -public class UniformMatrix extends UniformBase -{ - public UniformMatrix(String id) - { +public class UniformMatrix extends UniformBase { + public UniformMatrix(String id) { super(id); } - - public void storeData(Matrix4f data) - { - if(hasChanged(data)) - { + + public void storeData(Matrix4f data) { + if (hasChanged(data)) { GL20.glUniformMatrix4fv(getPosition(), false, data.getData()); AllocationTracker.INSTANCE.addGPUBytes(64L); } } @Override - protected Matrix4f setValue(Matrix4f oldValue, Matrix4f newValue) - { - if(oldValue != null) - { + protected Matrix4f setValue(Matrix4f oldValue, Matrix4f newValue) { + if (oldValue != null) { return oldValue.load(newValue); } return new Matrix4f(newValue); diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformTexture.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformTexture.java index 4cd8da2..aec614b 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformTexture.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformTexture.java @@ -3,42 +3,34 @@ package speiger.src.coreengine.rendering.shader.uniforms; import speiger.src.coreengine.rendering.textures.base.ITexture; import speiger.src.coreengine.rendering.textures.base.TextureManager; -public class UniformTexture extends UniformInt -{ +public class UniformTexture extends UniformInt { int bank; - - public UniformTexture(String id, int bank) - { + + public UniformTexture(String id, int bank) { super(id); this.bank = bank; } - - public void storeTexture(int id) - { - if(id == 0) - { + + public void storeTexture(int id) { + if (id == 0) { disable(); return; } TextureManager.bindTexture(id, bank); - if(hasChanged(id)) - { + if (hasChanged(id)) { storeData(id); } } - - public void storeTexture(ITexture textureID) - { - if(textureID == null) - { + + public void storeTexture(ITexture textureID) { + if (textureID == null) { disable(); return; } storeTexture(textureID.getTextureId()); } - - public void disable() - { + + public void disable() { TextureManager.unbindTexture(); } } diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec2f.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec2f.java index fa35107..e2ca81f 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec2f.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec2f.java @@ -5,36 +5,30 @@ import org.lwjgl.opengl.GL20; import speiger.src.coreengine.math.vector.floats.Vec2f; import speiger.src.coreengine.rendering.utils.AllocationTracker; -public class UniformVec2f extends UniformBase -{ +public class UniformVec2f extends UniformBase { static final Vec2f STORED = Vec2f.mutable(); - public UniformVec2f(String id) - { + + public UniformVec2f(String id) { super(id); } - + @Override - protected Vec2f setValue(Vec2f oldValue, Vec2f newValue) - { - if(oldValue != null) - { + protected Vec2f setValue(Vec2f oldValue, Vec2f newValue) { + if (oldValue != null) { oldValue.set(newValue.getX(), newValue.getY()); return oldValue; } return Vec2f.mutable(newValue); } - public void storeData(Vec2f data) - { - if(hasChanged(data)) - { + public void storeData(Vec2f data) { + if (hasChanged(data)) { GL20.glUniform2f(getPosition(), data.getX(), data.getY()); AllocationTracker.INSTANCE.addGPUBytes(8L); } } - public void storeData(float x, float y) - { + public void storeData(float x, float y) { STORED.set(x, y); storeData(STORED); } diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec3f.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec3f.java index bad3b98..5332d24 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec3f.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec3f.java @@ -6,39 +6,31 @@ import speiger.src.coreengine.math.misc.ColorUtils; import speiger.src.coreengine.math.vector.floats.Vec3f; import speiger.src.coreengine.rendering.utils.AllocationTracker; -public class UniformVec3f extends UniformBase -{ +public class UniformVec3f extends UniformBase { static final Vec3f STORAGE = Vec3f.mutable(); - - public UniformVec3f(String id) - { + + public UniformVec3f(String id) { super(id); } - - public void storeData(Vec3f data) - { - if(hasChanged(data)) - { + + public void storeData(Vec3f data) { + if (hasChanged(data)) { GL20.glUniform3f(getPosition(), data.getX(), data.getY(), data.getZ()); AllocationTracker.INSTANCE.addGPUBytes(12L); } } - - public void storeData(int color) - { + + public void storeData(int color) { storeData(STORAGE.set(ColorUtils.getRF(color), ColorUtils.getGF(color), ColorUtils.getBF(color))); } - - public void storeData(float x, float y, float z) - { + + public void storeData(float x, float y, float z) { storeData(STORAGE.set(x, y, z)); } - + @Override - protected Vec3f setValue(Vec3f oldValue, Vec3f newValue) - { - if(oldValue != null) - { + protected Vec3f setValue(Vec3f oldValue, Vec3f newValue) { + if (oldValue != null) { return oldValue.set(newValue); } return Vec3f.mutable(newValue); diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec3fArray.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec3fArray.java index 14b6683..ff71baa 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec3fArray.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec3fArray.java @@ -8,44 +8,35 @@ import org.lwjgl.opengl.GL20; import speiger.src.coreengine.math.vector.floats.Vec3f; import speiger.src.coreengine.rendering.utils.AllocationTracker; -public class UniformVec3fArray extends UniformArrayBase -{ +public class UniformVec3fArray extends UniformArrayBase { static final Vec3f STORAGE = Vec3f.mutable(); - - public UniformVec3fArray(String id, int length) - { + + public UniformVec3fArray(String id, int length) { super(id, length); } - - public void store(int index, Vec3f data) - { - if(hasChanged(index, data)) - { + + public void store(int index, Vec3f data) { + if (hasChanged(index, data)) { GL20.glUniform3f(getPosition(index), data.getX(), data.getY(), data.getZ()); AllocationTracker.INSTANCE.addGPUBytes(12L); } } - - public void store(int index, float x, float y, float z) - { + + public void store(int index, float x, float y, float z) { STORAGE.set(x, y, z); store(index, STORAGE); } - - public void store(Collection store) - { + + public void store(Collection store) { Iterator values = store.iterator(); - for(int i = 0;i -{ +public class UniformVec4f extends UniformBase { static final Vec4f STORAGE = Vec4f.mutable(); - public UniformVec4f(String id) - { + public UniformVec4f(String id) { super(id); } - - public void storeData(Vec4f data) - { - if(hasChanged(data)) - { + + public void storeData(Vec4f data) { + if (hasChanged(data)) { GL20.glUniform4f(getPosition(), data.getX(), data.getY(), data.getZ(), data.getW()); AllocationTracker.INSTANCE.addGPUBytes(16L); } } - - public void storeData(int color) - { - storeData(STORAGE.set(ColorUtils.getRF(color), ColorUtils.getGF(color), ColorUtils.getBF(color), ColorUtils.getAF(color))); + + public void storeData(int color) { + storeData(STORAGE.set(ColorUtils.getRF(color), ColorUtils.getGF(color), ColorUtils.getBF(color), + ColorUtils.getAF(color))); } - - public void storeData(float x, float y, float z, float w) - { + + public void storeData(float x, float y, float z, float w) { STORAGE.set(x, y, z, w); storeData(STORAGE); } - + @Override - protected Vec4f setValue(Vec4f oldValue, Vec4f newValue) - { - if(oldValue != null) - { + protected Vec4f setValue(Vec4f oldValue, Vec4f newValue) { + if (oldValue != null) { oldValue.set(newValue); return oldValue; } diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec4fArray.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec4fArray.java index 40d0562..a0be197 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec4fArray.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformVec4fArray.java @@ -8,44 +8,35 @@ import org.lwjgl.opengl.GL20; import speiger.src.coreengine.math.vector.floats.Vec4f; import speiger.src.coreengine.rendering.utils.AllocationTracker; -public class UniformVec4fArray extends UniformArrayBase -{ +public class UniformVec4fArray extends UniformArrayBase { static final Vec4f STORAGE = Vec4f.mutable(); - - public UniformVec4fArray(String id, int length) - { + + public UniformVec4fArray(String id, int length) { super(id, length); } - - public void store(int index, Vec4f data) - { - if(hasChanged(index, data)) - { + + public void store(int index, Vec4f data) { + if (hasChanged(index, data)) { GL20.glUniform4f(getPosition(index), data.getX(), data.getY(), data.getZ(), data.getW()); AllocationTracker.INSTANCE.addGPUBytes(16L); } } - - public void store(int index, float x, float y, float z, float w) - { + + public void store(int index, float x, float y, float z, float w) { STORAGE.set(x, y, z, w); store(index, STORAGE); } - - public void store(Collection store) - { + + public void store(Collection store) { Iterator values = store.iterator(); - for(int i = 0;i { List elements = new ArrayList(); - Set types = EnumSet.noneOf(ElementUsage.class); + Set types = EnumSet.noneOf(Usage.class); IntList offsets = new IntArrayList(); int totalOffset; @@ -31,8 +31,8 @@ public class VertexList implements Iterable { elements.add(element); offsets.add(totalOffset); - totalOffset += element.getSize(); - types.add(element.getUsage()); + totalOffset += element.size(); + types.add(element.usage()); return this; } @@ -62,7 +62,7 @@ public class VertexList implements Iterable return new ReadOnlyIterator<>(elements.iterator()); } - public boolean hasType(ElementUsage type) + public boolean hasType(Usage type) { return types.contains(type); } diff --git a/src/main/java/speiger/src/coreengine/rendering/tesselation/VertexType.java b/src/main/java/speiger/src/coreengine/rendering/tesselation/VertexType.java index a47434b..11fe977 100644 --- a/src/main/java/speiger/src/coreengine/rendering/tesselation/VertexType.java +++ b/src/main/java/speiger/src/coreengine/rendering/tesselation/VertexType.java @@ -1,16 +1,16 @@ package speiger.src.coreengine.rendering.tesselation; -import speiger.src.coreengine.rendering.tesselation.VertexElement.ElementUsage; +import speiger.src.coreengine.rendering.tesselation.VertexElement.Usage; public class VertexType { - public static final VertexElement POSITION_2F = new VertexElement(2, ElementUsage.POS); - public static final VertexElement POSITION_3F = new VertexElement(3, ElementUsage.POS); - public static final VertexElement TEXTURE_2F = new VertexElement(2, ElementUsage.UV); - public static final VertexElement COLOR_3F = new VertexElement(3, ElementUsage.COLOR); - public static final VertexElement COLOR_4F = new VertexElement(4, ElementUsage.COLOR); - public static final VertexElement NORMAL_3F = new VertexElement(3, ElementUsage.NORMAL); - public static final VertexElement CUSTOM_4F = new VertexElement(4, ElementUsage.CUSTOM); + public static final VertexElement POSITION_2F = new VertexElement(2, Usage.POS); + public static final VertexElement POSITION_3F = new VertexElement(3, Usage.POS); + public static final VertexElement TEXTURE_2F = new VertexElement(2, Usage.UV); + public static final VertexElement COLOR_3F = new VertexElement(3, Usage.COLOR); + public static final VertexElement COLOR_4F = new VertexElement(4, Usage.COLOR); + public static final VertexElement NORMAL_3F = new VertexElement(3, Usage.NORMAL); + public static final VertexElement CUSTOM_4F = new VertexElement(4, Usage.CUSTOM); public static final VertexList POS_COLOR_2F = new VertexList().add(POSITION_2F).add(COLOR_4F); public static final VertexList POS_COLOR_3F = new VertexList().add(POSITION_3F).add(COLOR_3F); diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/base/AbstractTexture.java b/src/main/java/speiger/src/coreengine/rendering/textures/base/AbstractTexture.java index 4979faf..cdcd27c 100644 --- a/src/main/java/speiger/src/coreengine/rendering/textures/base/AbstractTexture.java +++ b/src/main/java/speiger/src/coreengine/rendering/textures/base/AbstractTexture.java @@ -1,71 +1,46 @@ package speiger.src.coreengine.rendering.textures.base; -public abstract class AbstractTexture implements ITexture -{ +public abstract class AbstractTexture implements ITexture { protected int textureID; - + @Override - public ITexture makeReloadable() - { + public ITexture makeReloadable() { TextureManager.INSTANCE.addTexture(this); return this; } - - public void setTextureID(int textureID) - { + + public void setTextureID(int textureID) { this.textureID = textureID; } - + @Override - public int getTextureId() - { + public int getTextureId() { return textureID; } - + @Override - public void bindTexture() - { + public void bindTexture() { TextureManager.bindTexture(textureID); } @Override - public void destroy() - { + public void destroy() { deleteTexture(); } - + @Override - public void deleteTexture() - { - if(textureID == -1) - { - return; - } + public void deleteTexture() { + if (textureID == -1) return; TextureManager.INSTANCE.removeTexture(this); textureID = -1; } @Override - public float getUMin() - { - return 0F; - } - + public float getUMin() { return 0F; } @Override - public float getVMin() - { - return 0F; - } - + public float getVMin() { return 0F; } @Override - public float getUMax() - { - return 1F; - } - + public float getUMax() { return 1F; } @Override - public float getVMax() - { - return 1F; - } + public float getVMax() { return 1F; } } diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureManager.java b/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureManager.java index 3020c68..66b52a8 100644 --- a/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureManager.java +++ b/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureManager.java @@ -13,8 +13,6 @@ import speiger.src.coreengine.assets.AssetManager; import speiger.src.coreengine.assets.IAsset; import speiger.src.coreengine.assets.reloader.IReloadableResource; import speiger.src.coreengine.assets.reloader.ResourceReloader; -import speiger.src.coreengine.rendering.textures.base.ITexture; -import speiger.src.coreengine.rendering.textures.base.TextureManager; import speiger.src.coreengine.rendering.utils.GLUtils; import speiger.src.coreengine.rendering.utils.states.GLState; import speiger.src.coreengine.utils.io.GameLog; diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/stb/STBDirectTexture.java b/src/main/java/speiger/src/coreengine/rendering/textures/stb/STBDirectTexture.java index 0641038..dfd0c14 100644 --- a/src/main/java/speiger/src/coreengine/rendering/textures/stb/STBDirectTexture.java +++ b/src/main/java/speiger/src/coreengine/rendering/textures/stb/STBDirectTexture.java @@ -40,8 +40,7 @@ public class STBDirectTexture extends AbstractTexture loadTexture(); } - protected void loadTexture() - { + protected void loadTexture() { setTextureID(GL11.glGenTextures()); bindTexture(); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); diff --git a/src/main/java/speiger/src/coreengine/rendering/utils/ScissorsManager.java b/src/main/java/speiger/src/coreengine/rendering/utils/ScissorsManager.java index d96640b..c5fd605 100644 --- a/src/main/java/speiger/src/coreengine/rendering/utils/ScissorsManager.java +++ b/src/main/java/speiger/src/coreengine/rendering/utils/ScissorsManager.java @@ -10,67 +10,45 @@ public class ScissorsManager Plane[] instances; int inUse = -1; - public ScissorsManager(int limit) - { + public ScissorsManager(int limit) { instances = new Plane[limit]; - for(int i = 0;i= instances.length) - { + public void enableScissors(int x, int y, int width, int height) { + if(inUse + 1 >= instances.length) { GameLog.warn("Scissors test would go out of Bounds!"); return; } inUse++; - if(inUse == 0) - { + if(inUse == 0) { instances[inUse].set(x, y, x + width, y + height); GL11.glEnable(GL11.GL_SCISSOR_TEST); GL11.glScissor(x, y, width, height); return; } Plane oldBox = instances[inUse - 1]; - int maxX = x + width; - int maxY = y + height; - if (x < oldBox.getMinX()) x = oldBox.getMinX(); - if (maxX > oldBox.getMaxX()) maxX = oldBox.getMaxX(); - if (y < oldBox.getMinY()) y = oldBox.getMinY(); - if (maxY > oldBox.getMaxY()) maxY = oldBox.getMaxY(); - Plane box = instances[inUse]; - box.set(x, y, maxX, maxY); + Plane box = instances[inUse].set(Math.max(x, oldBox.getMinX()), Math.max(y, oldBox.getMinY()), Math.min(x + width, oldBox.getMaxX()), Math.min(y + height, oldBox.getMaxY())); GL11.glScissor(box.getMinX(), box.getMinY(), box.getWidth(), box.getHeight()); } - public boolean isInScissors(int x, int y, int width, int height) - { - if(inUse == -1) - { - return true; - } - return instances[inUse].isIntersecting(x, y, x + width, y + height); + public boolean isInScissors(int x, int y, int width, int height) { + return inUse == -1 || instances[inUse].isIntersecting(x, y, x + width, y + height); } - public void disableScissors() - { - if(inUse < 0) - { + public void disableScissors() { + if(inUse < 0) { GameLog.warn("Scissors test would go into negative"); return; } inUse--; - if(inUse >= 0) - { + if(inUse >= 0) { Plane box = instances[inUse]; GL11.glScissor(box.getMinX(), box.getMinY(), box.getWidth(), box.getHeight()); + return; } - else - { - GL11.glDisable(GL11.GL_SCISSOR_TEST); - } + GL11.glDisable(GL11.GL_SCISSOR_TEST); } } diff --git a/src/main/java/speiger/src/coreengine/rendering/utils/states/BlendState.java b/src/main/java/speiger/src/coreengine/rendering/utils/states/BlendState.java index 787ba75..ecef957 100644 --- a/src/main/java/speiger/src/coreengine/rendering/utils/states/BlendState.java +++ b/src/main/java/speiger/src/coreengine/rendering/utils/states/BlendState.java @@ -7,8 +7,7 @@ public class BlendState extends GLState int src; int func; - public BlendState() - { + public BlendState() { super(GL11.GL_BLEND, false); } diff --git a/src/main/java/speiger/src/coreengine/rendering/utils/states/GLState.java b/src/main/java/speiger/src/coreengine/rendering/utils/states/GLState.java index 02d4d14..53c2fd6 100644 --- a/src/main/java/speiger/src/coreengine/rendering/utils/states/GLState.java +++ b/src/main/java/speiger/src/coreengine/rendering/utils/states/GLState.java @@ -4,67 +4,51 @@ import java.util.BitSet; import org.lwjgl.opengl.GL11; -public class GLState implements IGLState -{ +public class GLState implements IGLState { final int id; protected final boolean defaultValue; protected final BitSet memory = new BitSet(); protected int index = -1; protected boolean lastState; - public GLState(int id, boolean defaultValue) - { + public GLState(int id, boolean defaultValue) { this.id = id; this.defaultValue = defaultValue; } - public GLState push(boolean newValue) - { - if((index < 0 && newValue != defaultValue) || (index >= 0 && memory.get(index) != newValue)) - { - setValue(newValue); - } + public GLState push(boolean newValue) { + if((index < 0 && newValue != defaultValue) || (index >= 0 && memory.get(index) != newValue)) setValue(newValue); memory.set(++index, newValue); return this; } - public void pop() - { + public void pop() { if(index < 0) throw new IllegalStateException("State is already reset"); - if(index == 0 && defaultValue != memory.get(0)) - { + if(index == 0 && defaultValue != memory.get(0)) { setValue(defaultValue); } - else if(index > 0 && memory.get(index-1) != memory.get(index)) - { - setValue(memory.get(index-1)); + else if(index > 0 && memory.get(index - 1) != memory.get(index)) { + setValue(memory.get(index - 1)); } index--; } - public boolean isEnabled() - { - return index < 0 ? defaultValue : memory.get(index); - } + public boolean isEnabled() { return index < 0 ? defaultValue : memory.get(index); } - protected void setValue(boolean value) - { + protected void setValue(boolean value) { if(value) GL11.glEnable(id); else GL11.glDisable(id); } @Override - public void reapply() - { + public void reapply() { if(index < 0) setValue(defaultValue); else setValue(memory.get(index)); } @Override - public void cleanup() - { - if(index > 0) - { + public void cleanup() { + if(index > 0) { memory.set(0, memory.get(index)); index = 0; } diff --git a/src/main/java/speiger/src/coreengine/utils/collections/FlagObject.java b/src/main/java/speiger/src/coreengine/utils/collections/FlagObject.java index 9a6095e..432f47c 100644 --- a/src/main/java/speiger/src/coreengine/utils/collections/FlagObject.java +++ b/src/main/java/speiger/src/coreengine/utils/collections/FlagObject.java @@ -4,62 +4,51 @@ public class FlagObject { int flags; - protected FlagObject() - { - } + protected FlagObject() {} - protected void setFlag(int flag) - { + protected void setFlag(int flag) { flags |= flag; } - protected boolean setFlag(int flag, boolean value) - { - if(isFlagSet(flag) == value) - { - return false; - } + protected void setFlag(int flag, boolean value) { + flags = (value ? flags | flag : flags & ~(flag)); + } + + protected boolean setFlagTested(int flag, boolean value) { + if(isFlagSet(flag) == value) return false; flags = (value ? flags | flag : flags & ~(flag)); return true; } - protected void setFlags(int flags) - { + protected void setFlags(int flags) { this.flags = flags; } - protected int getFlags() - { + protected int getFlags() { return flags; } - protected void flipFlag(int flag) - { + protected void flipFlag(int flag) { flags ^= flag; } - protected void clearFlag(int flag) - { + protected void clearFlag(int flag) { flags &= ~flag; } - protected void clearFlags() - { + protected void clearFlags() { flags = 0; } - protected boolean isFlagSet(int flag) - { + protected boolean isFlagSet(int flag) { return (flags & flag) == flag; } - protected boolean isAnyFlagSet(int flag) - { + protected boolean isAnyFlagSet(int flag) { return (flags & flag) != 0; } - protected boolean isFlagNotSet(int flag) - { + protected boolean isFlagNotSet(int flag) { return (flags & flag) == 0; } } \ No newline at end of file diff --git a/src/main/java/speiger/src/coreengine/utils/collections/registries/flat/FlatRegistry.java b/src/main/java/speiger/src/coreengine/utils/collections/registries/flat/FlatRegistry.java index ddd768b..139956e 100644 --- a/src/main/java/speiger/src/coreengine/utils/collections/registries/flat/FlatRegistry.java +++ b/src/main/java/speiger/src/coreengine/utils/collections/registries/flat/FlatRegistry.java @@ -26,6 +26,7 @@ public class FlatRegistry> extends SimpleRegistr return result; } + @SuppressWarnings("unchecked") public void bake() { freeze(); @@ -43,6 +44,7 @@ public class FlatRegistry> extends SimpleRegistr } } + @SuppressWarnings("unchecked") public T getFromFlatId(int id) { return (T)flatIds[id]; diff --git a/src/main/java/speiger/src/coreengine/utils/eventbus/Event.java b/src/main/java/speiger/src/coreengine/utils/eventbus/Event.java index b1ccf81..d20b1b4 100644 --- a/src/main/java/speiger/src/coreengine/utils/eventbus/Event.java +++ b/src/main/java/speiger/src/coreengine/utils/eventbus/Event.java @@ -4,26 +4,15 @@ public class Event { boolean canceled = false; - public void setCanceled(boolean canceled) - { - if(isCancelable()) - { - this.canceled = canceled; - } + public void setCanceled(boolean canceled) { + if(isCancelable()) this.canceled = canceled; + else throw new UnsupportedOperationException("Only Cancelable Events can be canceled"); } - public final void cancel() - { + public final void cancel() { setCanceled(true); } - public final boolean isCanceled() - { - return canceled; - } - - public boolean isCancelable() - { - return false; - } + public final boolean isCanceled() { return canceled; } + public boolean isCancelable() { return false; } } diff --git a/src/main/java/speiger/src/coreengine/utils/eventbus/EventBus.java b/src/main/java/speiger/src/coreengine/utils/eventbus/EventBus.java index 9c43d79..db709d2 100644 --- a/src/main/java/speiger/src/coreengine/utils/eventbus/EventBus.java +++ b/src/main/java/speiger/src/coreengine/utils/eventbus/EventBus.java @@ -6,7 +6,6 @@ import java.lang.invoke.MethodHandles.Lookup; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.List; -import java.util.Map; import java.util.function.Consumer; import speiger.src.collections.objects.lists.ObjectArrayList; @@ -19,57 +18,44 @@ public class EventBus { private static final Lookup LOOKUP = MethodHandles.lookup(); Object2ObjectMap, Listeners> listeners = Object2ObjectMaps.synchronize(new Object2ObjectOpenHashMap<>()); - Map> instances = Object2ObjectMaps.synchronize(new Object2ObjectOpenHashMap<>()); + Object2ObjectMap> instances = Object2ObjectMaps.synchronize(new Object2ObjectOpenHashMap<>()); - public void register(Class event, Consumer listener) - { + public void register(Class event, Consumer listener) { register(event, EventPriority.MEDIUM, listener); } - public void register(Class event, EventPriority priority, Consumer listener) - { + public void register(Class event, EventPriority priority, Consumer listener) { if(instances.containsKey(listener)) return; - getListeners(event).addListener(priority, (Consumer)listener); - instances.put(listener, ObjectLists.singleton(new EventListener(event, (Consumer)listener))); + getListeners(event).addListener(priority, cast(listener)); + instances.put(listener, ObjectLists.singleton(new EventListener(event, cast(listener)))); } - public void register(Object obj) - { + public void register(Object obj) { register(obj, false); } - public void register(Object obj, boolean superClasses) - { + public void register(Object obj, boolean superClasses) { if(instances.containsKey(obj)) return; final List list = new ObjectArrayList<>(); - try - { + try { register(obj.getClass().getDeclaredAnnotation(SubscribeEvent.class), obj, list); - findMethods(obj.getClass(), superClasses, new Consumer() { - @Override - public void accept(Method t) { - try - { - t.setAccessible(true); - SubscribeEvent data = t.getAnnotation(SubscribeEvent.class); - if(data == null) return; - Consumer listener = new MethodListener(LOOKUP.unreflect(t).bindTo(obj)); - getListeners((Class)t.getParameterTypes()[0]).addListener(data.priority(), listener); - list.add(new EventListener(data.value(), listener)); - } - catch(Exception e) { e.printStackTrace(); } + findMethods(obj.getClass(), superClasses, t -> { + try { + t.setAccessible(true); + SubscribeEvent data = t.getAnnotation(SubscribeEvent.class); + if(data == null) return; + Consumer listener = new MethodListener(LOOKUP.unreflect(t).bindTo(obj)); + getListeners(castClass(t.getParameterTypes()[0])).addListener(data.priority(), listener); + list.add(new EventListener(data.value(), listener)); } + catch(Exception e) { e.printStackTrace(); } }); - findFields(obj.getClass(), superClasses, new Consumer() { - @Override - public void accept(Field t) { - try - { - t.setAccessible(true); - register(t.getAnnotation(SubscribeEvent.class), t.get(obj), list); - } - catch(Exception e) { e.printStackTrace(); } + findFields(obj.getClass(), superClasses, t -> { + try { + t.setAccessible(true); + register(t.getAnnotation(SubscribeEvent.class), t.get(obj), list); } + catch(Exception e) { e.printStackTrace(); } }); } catch(Exception e) { e.printStackTrace(); } @@ -77,132 +63,82 @@ public class EventBus instances.put(obj, list); } - private void register(SubscribeEvent data, Object obj, List listeners) - { - if(data == null || !(obj instanceof Consumer)) - { - return; - } - getListeners(data.value()).addListener(data.priority(), (Consumer)obj); - listeners.add(new EventListener(data.value(), (Consumer)obj)); + private void register(SubscribeEvent data, Object obj, List listeners) { + if(data == null || !(obj instanceof Consumer)) return; + getListeners(data.value()).addListener(data.priority(), cast(obj)); + listeners.add(new EventListener(data.value(), cast(obj))); } - private void findFields(Class clz, boolean superClasses, Consumer fields) - { - do - { - for(Field field : clz.getDeclaredFields()) - { - fields.accept(field); - } + private void findFields(Class clz, boolean superClasses, Consumer fields) { + do { + for(Field field : clz.getDeclaredFields()) fields.accept(field); clz = clz.getSuperclass(); } while(clz != Object.class && superClasses); } - private void findMethods(Class clz, boolean superClasses, Consumer methods) - { - do - { - for(Method field : clz.getDeclaredMethods()) - { - methods.accept(field); - } + private void findMethods(Class clz, boolean superClasses, Consumer methods) { + do { + for(Method field : clz.getDeclaredMethods()) methods.accept(field); clz = clz.getSuperclass(); } while(clz != Object.class && superClasses); } - public void unregister(Object obj) - { - List instance = instances.remove(obj); - if(instance == null) - { - return; - } - for(EventListener entry : instance) - { - getListeners(entry.getEvent()).removeListeners(entry.getListener()); + public void unregister(Object obj) { + for(EventListener entry : instances.remOrDefault(obj, ObjectLists.empty())) { + getListeners(entry.event()).removeListeners(entry.listener()); } } - public void post(Event event) - { + public void post(Event event) { Consumer[] listeners = getListeners(event.getClass()).getListeners(); - if(listeners.length <= 0) - { - return; - } + if(listeners.length <= 0) return; int index = 0; - try - { - for(;index event) - { - Listeners entry = listeners.get(event); - if(entry == null) - { - if(event == Event.class) entry = new Listeners(); - else entry = new Listeners(getListeners((Class)event.getSuperclass())); - listeners.put(event, entry); - } - return entry; + protected Listeners getListeners(Class event) { + return listeners.computeIfAbsent(event, T -> { + if(T == Event.class) return new Listeners(); + else return new Listeners(getListeners(castClass(event.getSuperclass()))); + }); } - - public static class EventListener - { - Class event; - Consumer listener; - - public EventListener(Class event, Consumer listener) - { - this.event = event; - this.listener = listener; - } - - public Class getEvent() - { - return event; - } - - public Consumer getListener() - { - return listener; - } + @SuppressWarnings("unchecked") + private Consumer cast(Object obj) { + return (Consumer) obj; } - public static class MethodListener implements Consumer - { + @SuppressWarnings("unchecked") + private Class castClass(Class clz) { + return (Class) clz; + } + + public static record EventListener(Class event, Consumer listener) {} + + public static class MethodListener implements Consumer { MethodHandle handle; - public MethodListener(MethodHandle handle) - { + public MethodListener(MethodHandle handle) { this.handle = handle; } @Override - public void accept(Event t) - { - try - { + public void accept(Event t) { + try { handle.invoke(t); } - catch(Throwable e) - { + catch(Throwable e) { e.printStackTrace(); } } - } } diff --git a/src/main/java/speiger/src/coreengine/utils/eventbus/EventPriority.java b/src/main/java/speiger/src/coreengine/utils/eventbus/EventPriority.java index 5000e21..59d2b92 100644 --- a/src/main/java/speiger/src/coreengine/utils/eventbus/EventPriority.java +++ b/src/main/java/speiger/src/coreengine/utils/eventbus/EventPriority.java @@ -10,18 +10,15 @@ public enum EventPriority static final EventPriority[] PRIORITIES = new EventPriority[]{HIGH, MEDIUM, LOW}; - private EventPriority(int id) - { + private EventPriority(int id) { priority = id; } - public int getPriority() - { + public int getPriority() { return priority; } - public static EventPriority[] getPriorities() - { + public static EventPriority[] getPriorities() { return PRIORITIES; } } diff --git a/src/main/java/speiger/src/coreengine/utils/eventbus/Listeners.java b/src/main/java/speiger/src/coreengine/utils/eventbus/Listeners.java index 52ac58e..f485e42 100644 --- a/src/main/java/speiger/src/coreengine/utils/eventbus/Listeners.java +++ b/src/main/java/speiger/src/coreengine/utils/eventbus/Listeners.java @@ -9,59 +9,44 @@ import speiger.src.collections.objects.sets.ObjectLinkedOpenHashSet; public class Listeners { - Set>[] unsortedListeners = new Set[EventPriority.values().length]; + @SuppressWarnings("unchecked") + Set>[] unsortedListeners = new Set[EventPriority.getPriorities().length]; + @SuppressWarnings("unchecked") Consumer[] listeners = new Consumer[0]; boolean rebuild = true; Listeners parent; List childs = null; - public Listeners() - { - for(int i = 0;i(); } } - public Listeners(Listeners parent) - { + public Listeners(Listeners parent) { this(); this.parent = parent; this.parent.addChild(this); } - public void addChild(Listeners listener) - { + public void addChild(Listeners listener) { if(childs == null) childs = new ObjectArrayList<>(); childs.add(listener); } - public void addListener(EventPriority priority, Consumer listener) - { - if(unsortedListeners[priority.getPriority()].add(listener)) - { - markDirty(); + public void addListener(EventPriority priority, Consumer listener) { + if(unsortedListeners[priority.getPriority()].add(listener)) markDirty(); + } + + public void removeListeners(Consumer listener) { + for(int i = 0,m=unsortedListeners.length;i listener) - { - for(int i = 0,m=unsortedListeners.length;i> events) - { + public void getListeners(EventPriority entry, List> events) { events.addAll(unsortedListeners[entry.getPriority()]); - if(parent != null) - { - parent.getListeners(entry, events); - } + if(parent != null) parent.getListeners(entry, events); } public Consumer[] getListeners() @@ -70,25 +55,21 @@ public class Listeners return listeners; } - private void markDirty() - { + private void markDirty() { if(rebuild) return; rebuild = true; - if(childs != null) - { - for(int i = 0,m=childs.size();i> result = new ObjectArrayList<>(); - for(EventPriority entry : EventPriority.getPriorities()) - { + for(EventPriority entry : EventPriority.getPriorities()) { getListeners(entry, result); } listeners = result.toArray(new Consumer[result.size()]); diff --git a/src/main/java/speiger/src/coreengine/utils/io/dataTag/parsing/DataTagIO.java b/src/main/java/speiger/src/coreengine/utils/io/dataTag/parsing/DataTagIO.java index 3d83eb3..5da8c40 100644 --- a/src/main/java/speiger/src/coreengine/utils/io/dataTag/parsing/DataTagIO.java +++ b/src/main/java/speiger/src/coreengine/utils/io/dataTag/parsing/DataTagIO.java @@ -24,7 +24,7 @@ public class DataTagIO public T fromData(DataTag tag, Class type) throws IOException { IOEntry entry = entries.get(type); - return entry == null || entry.deserializer == null ? null : (T)entry.deserializer.deserialize(tag, context); + return entry == null || entry.deserializer == null ? null : type.cast(entry.deserializer.deserialize(tag, context)); } public List fromData(DataTag tag, Class type, List list) throws IOException @@ -36,12 +36,12 @@ public class DataTagIO { for(DataTag subTag : tag.cast(ListTag.class)) { - list.add((T)entry.deserializer.deserialize(subTag, context)); + list.add(type.cast(entry.deserializer.deserialize(subTag, context))); } } else { - list.add((T)entry.deserializer.deserialize(tag, context)); + list.add(type.cast(entry.deserializer.deserialize(tag, context))); } } return list; @@ -52,12 +52,14 @@ public class DataTagIO return toData(obj, obj.getClass()); } + @SuppressWarnings("unchecked") public DataTag toData(Object obj, Class type) { IOEntry entry = (IOEntry)entries.get(type); return entry == null || entry.serializer == null ? null : entry.serializer.serialize(obj, context); } + @SuppressWarnings("unchecked") public DataTag toData(List list, Class type) { IOEntry entry = (IOEntry)entries.get(type); diff --git a/src/main/java/speiger/src/coreengine/utils/io/finders/NativeFileFinder.java b/src/main/java/speiger/src/coreengine/utils/io/finders/NativeFileFinder.java index 5b858bb..a8188f6 100644 --- a/src/main/java/speiger/src/coreengine/utils/io/finders/NativeFileFinder.java +++ b/src/main/java/speiger/src/coreengine/utils/io/finders/NativeFileFinder.java @@ -4,7 +4,7 @@ import java.io.File; import org.lwjgl.PointerBuffer; import org.lwjgl.system.MemoryStack; -import org.lwjgl.util.nfd.NFDPathSet; +import org.lwjgl.util.nfd.NFDFilterItem; import org.lwjgl.util.nfd.NativeFileDialog; import speiger.src.collections.objects.lists.ObjectArrayList; @@ -24,7 +24,7 @@ public class NativeFileFinder implements IFileFinder try(MemoryStack stack = MemoryStack.stackPush()) { PointerBuffer output = stack.mallocPointer(1); - if(NativeFileDialog.NFD_SaveDialog(toFileFormat(validFormats), startPath, output) == NativeFileDialog.NFD_OKAY) + if(NativeFileDialog.NFD_SaveDialog(output, toFileFormat(stack, validFormats, description), startPath, "") == NativeFileDialog.NFD_OKAY) { File file = new File(output.getStringUTF8()); if(file.getName().lastIndexOf(".") == -1) file = new File(file.getParent(), file.getName()+"."+validFormats.first()); @@ -37,7 +37,7 @@ public class NativeFileFinder implements IFileFinder try(MemoryStack stack = MemoryStack.stackPush()) { PointerBuffer output = stack.mallocPointer(1); - if(NativeFileDialog.NFD_PickFolder(startPath, output) == NativeFileDialog.NFD_OKAY) + if(NativeFileDialog.NFD_PickFolder(output, startPath) == NativeFileDialog.NFD_OKAY) { files.add(new File(output.getStringUTF8())); } @@ -47,14 +47,19 @@ public class NativeFileFinder implements IFileFinder { try(MemoryStack stack = MemoryStack.stackPush()) { - NFDPathSet paths = NFDPathSet.mallocStack(stack); - if(NativeFileDialog.NFD_OpenDialogMultiple(toFileFormat(validFormats), startPath, paths) == NativeFileDialog.NFD_OKAY) + PointerBuffer result = stack.mallocPointer(1); + if(NativeFileDialog.NFD_OpenDialogMultiple(result, toFileFormat(stack, validFormats, description), startPath) == NativeFileDialog.NFD_OKAY) { - int size = (int)NativeFileDialog.NFD_PathSet_GetCount(paths); - for(int i = 0;i validFormats, String name) { + NFDFilterItem.Buffer buffer = NFDFilterItem.malloc(1, stack); + buffer.put(NFDFilterItem.malloc(stack).name(stack.UTF8(name)).spec(stack.UTF8(toFileFormat(validFormats)))); + return buffer; + } } diff --git a/src/main/java/speiger/src/coreengine/utils/tasks/ArrayRunCall.java b/src/main/java/speiger/src/coreengine/utils/tasks/ArrayRunCall.java index 0a478fa..eabba09 100644 --- a/src/main/java/speiger/src/coreengine/utils/tasks/ArrayRunCall.java +++ b/src/main/java/speiger/src/coreengine/utils/tasks/ArrayRunCall.java @@ -6,6 +6,7 @@ public class ArrayRunCall implements Callable { Callable[] calls; + @SafeVarargs public ArrayRunCall(Callable... calls) { this.calls = calls;