aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/java/coffee/liz/ecs
diff options
context:
space:
mode:
authorElizabeth Hunt <me@liz.coffee>2026-01-24 15:38:12 -0800
committerElizabeth Hunt <me@liz.coffee>2026-01-24 15:38:12 -0800
commit99fe9f7e459643080ac1de7040f0572e0850d01d (patch)
treeb8a21ae97f0484fda07d164a73d3f3dcce293bb4 /core/src/main/java/coffee/liz/ecs
parent52864cb701e59a1d847fd5586245519eb5e3b3bc (diff)
downloadthe-abstraction-engine-v2-99fe9f7e459643080ac1de7040f0572e0850d01d.tar.gz
the-abstraction-engine-v2-99fe9f7e459643080ac1de7040f0572e0850d01d.zip
Scene2d
Diffstat (limited to 'core/src/main/java/coffee/liz/ecs')
-rw-r--r--core/src/main/java/coffee/liz/ecs/math/Vec2.java23
-rw-r--r--core/src/main/java/coffee/liz/ecs/math/Vec2f.java7
-rw-r--r--core/src/main/java/coffee/liz/ecs/math/Vec2i.java8
3 files changed, 38 insertions, 0 deletions
diff --git a/core/src/main/java/coffee/liz/ecs/math/Vec2.java b/core/src/main/java/coffee/liz/ecs/math/Vec2.java
index ec7e531..7620395 100644
--- a/core/src/main/java/coffee/liz/ecs/math/Vec2.java
+++ b/core/src/main/java/coffee/liz/ecs/math/Vec2.java
@@ -1,5 +1,7 @@
package coffee.liz.ecs.math;
+import java.util.function.Function;
+
/**
* Cartesian vectors.
*
@@ -47,6 +49,17 @@ public interface Vec2<T> {
Vec2<T> scale(final T scaleX, final T scaleY);
/**
+ * Scales this vector by the given vector.
+ *
+ * @param scale
+ * scale vec.
+ * @return a new scaled vector
+ */
+ default Vec2<T> scale(final Vec2<T> scale) {
+ return scale(scale.getX(), scale.getY());
+ }
+
+ /**
* Length of the vector.
*
* @return length.
@@ -62,4 +75,14 @@ public interface Vec2<T> {
* @return Vec2<Float> components of {@link Vec2<T>}
*/
Vec2<Float> floatValue();
+
+ /**
+ * @param xTransform
+ * transform of x component.
+ * @param yTransform
+ * transform of y component.
+ * @return transformed vec applying {@param xTransform} to x component,
+ * {@param yTransform} to y component.
+ */
+ Vec2<T> transform(final Function<T, T> xTransform, final Function<T, T> yTransform);
}
diff --git a/core/src/main/java/coffee/liz/ecs/math/Vec2f.java b/core/src/main/java/coffee/liz/ecs/math/Vec2f.java
index 46f3fb8..5b91a2d 100644
--- a/core/src/main/java/coffee/liz/ecs/math/Vec2f.java
+++ b/core/src/main/java/coffee/liz/ecs/math/Vec2f.java
@@ -7,6 +7,8 @@ import lombok.Data;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import java.util.function.Function;
+
/** Float impl of {@link Vec2}. */
@Getter
@RequiredArgsConstructor
@@ -45,6 +47,11 @@ public final class Vec2f implements Vec2<Float> {
}
@Override
+ public Vec2<Float> transform(final Function<Float, Float> xTransform, final Function<Float, Float> yTransform) {
+ return new Vec2f(xTransform.apply(getX()), yTransform.apply(getY()));
+ }
+
+ @Override
public Vec2<Integer> intValue() {
return Vec2i.builder().x(this.x.intValue()).y(this.y.intValue()).build();
}
diff --git a/core/src/main/java/coffee/liz/ecs/math/Vec2i.java b/core/src/main/java/coffee/liz/ecs/math/Vec2i.java
index dbe246e..c7f9c83 100644
--- a/core/src/main/java/coffee/liz/ecs/math/Vec2i.java
+++ b/core/src/main/java/coffee/liz/ecs/math/Vec2i.java
@@ -7,6 +7,8 @@ import lombok.Data;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import java.util.function.Function;
+
/** Integer impl of {@link Vec2}. */
@Getter
@RequiredArgsConstructor
@@ -40,6 +42,12 @@ public final class Vec2i implements Vec2<Integer> {
}
@Override
+ public Vec2<Integer> transform(final Function<Integer, Integer> xTransform,
+ final Function<Integer, Integer> yTransform) {
+ return new Vec2i(xTransform.apply(getX()), yTransform.apply(getY()));
+ }
+
+ @Override
public Vec2<Integer> intValue() {
return this;
}