diff options
| author | Elizabeth Hunt <me@liz.coffee> | 2026-01-24 15:38:12 -0800 |
|---|---|---|
| committer | Elizabeth Hunt <me@liz.coffee> | 2026-01-24 15:38:12 -0800 |
| commit | 99fe9f7e459643080ac1de7040f0572e0850d01d (patch) | |
| tree | b8a21ae97f0484fda07d164a73d3f3dcce293bb4 /core/src/main/java/coffee/liz/ecs | |
| parent | 52864cb701e59a1d847fd5586245519eb5e3b3bc (diff) | |
| download | the-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.java | 23 | ||||
| -rw-r--r-- | core/src/main/java/coffee/liz/ecs/math/Vec2f.java | 7 | ||||
| -rw-r--r-- | core/src/main/java/coffee/liz/ecs/math/Vec2i.java | 8 |
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; } |
