Replace custom Vector with JOML's Vector2* in :API
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
package com.bartlomiejpluta.base.api.entity;
|
package com.bartlomiejpluta.base.api.entity;
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.api.geo.Vector;
|
import org.joml.Vector2i;
|
||||||
|
|
||||||
public enum Direction {
|
public enum Direction {
|
||||||
UP(0, -1),
|
UP(0, -1),
|
||||||
@@ -10,11 +10,13 @@ public enum Direction {
|
|||||||
|
|
||||||
public final int x;
|
public final int x;
|
||||||
public final int y;
|
public final int y;
|
||||||
public final Vector vector;
|
|
||||||
|
|
||||||
Direction(int x, int y) {
|
Direction(int x, int y) {
|
||||||
this.x = x;
|
this.x = x;
|
||||||
this.y = y;
|
this.y = y;
|
||||||
this.vector = Vector.of(x, y);
|
}
|
||||||
|
|
||||||
|
public Vector2i asVector() {
|
||||||
|
return new Vector2i(x, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,20 @@
|
|||||||
package com.bartlomiejpluta.base.api.entity;
|
package com.bartlomiejpluta.base.api.entity;
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.api.geo.Vector;
|
import org.joml.Vector2f;
|
||||||
|
import org.joml.Vector2i;
|
||||||
|
|
||||||
public interface Entity {
|
public interface Entity {
|
||||||
Vector getCoordinates();
|
Vector2i getCoordinates();
|
||||||
|
|
||||||
void setCoordinates(Vector coordinates);
|
void setCoordinates(Vector2i coordinates);
|
||||||
|
|
||||||
|
void setCoordinates(int x, int y);
|
||||||
|
|
||||||
|
Vector2f getPosition();
|
||||||
|
|
||||||
|
void setPosition(Vector2f position);
|
||||||
|
|
||||||
|
void setPosition(float x, float y);
|
||||||
|
|
||||||
Movement prepareMovement(Direction direction);
|
Movement prepareMovement(Direction direction);
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
package com.bartlomiejpluta.base.api.entity;
|
package com.bartlomiejpluta.base.api.entity;
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.api.geo.Vector;
|
|
||||||
|
import org.joml.Vector2i;
|
||||||
|
|
||||||
public interface Movement {
|
public interface Movement {
|
||||||
boolean perform();
|
boolean perform();
|
||||||
|
|
||||||
Movement another();
|
Movement another();
|
||||||
|
|
||||||
Vector getFrom();
|
Vector2i getFrom();
|
||||||
|
|
||||||
Vector getTo();
|
Vector2i getTo();
|
||||||
|
|
||||||
Direction getDirection();
|
Direction getDirection();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
package com.bartlomiejpluta.base.api.geo;
|
|
||||||
|
|
||||||
public class Vector {
|
|
||||||
public final int x;
|
|
||||||
public final int y;
|
|
||||||
|
|
||||||
public Vector(int x, int y) {
|
|
||||||
this.x = x;
|
|
||||||
this.y = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector add(Vector other) {
|
|
||||||
return new Vector(x + other.x, y + other.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Vector of(int x, int y) {
|
|
||||||
return new Vector(x, y);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -5,18 +5,14 @@ import com.bartlomiejpluta.base.api.entity.Movement;
|
|||||||
|
|
||||||
public interface GameMap {
|
public interface GameMap {
|
||||||
void addEntity(int objectLayerIndex, Entity entity);
|
void addEntity(int objectLayerIndex, Entity entity);
|
||||||
|
|
||||||
void removeEntity(int objectLayerIndex, Entity entity);
|
void removeEntity(int objectLayerIndex, Entity entity);
|
||||||
|
|
||||||
boolean isMovementPossible(int objectLayerIndex, Movement movement);
|
boolean isMovementPossible(int objectLayerIndex, Movement movement);
|
||||||
|
|
||||||
void setTile(int tileLayerIndex, int row, int column, int tileId);
|
|
||||||
|
|
||||||
void setTile(int tileLayerIndex, int row, int column, int tileSetRow, int tileSetColumn);
|
|
||||||
|
|
||||||
void clearTile(int tileLayerIndex, int row, int column);
|
|
||||||
|
|
||||||
void setPassageAbility(int objectLayerIndex, int row, int column, PassageAbility passageAbility);
|
void setPassageAbility(int objectLayerIndex, int row, int column, PassageAbility passageAbility);
|
||||||
|
|
||||||
|
void setTile(int tileLayerIndex, int row, int column, int tileId);
|
||||||
|
void setTile(int tileLayerIndex, int row, int column, int tileSetRow, int tileSetColumn);
|
||||||
|
void clearTile(int tileLayerIndex, int row, int column);
|
||||||
|
|
||||||
void setColor(int colorLayerIndex, float r, float g, float b, float alpha);
|
void setColor(int colorLayerIndex, float r, float g, float b, float alpha);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,24 @@
|
|||||||
package ${package};
|
package ${package};
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.api.map.MapHandler;
|
import com.bartlomiejpluta.base.api.map.MapHandler;
|
||||||
|
import com.bartlomiejpluta.base.api.map.GameMap;
|
||||||
import com.bartlomiejpluta.base.api.context.Context;
|
import com.bartlomiejpluta.base.api.context.Context;
|
||||||
|
import com.bartlomiejpluta.base.api.input.Keyboard;
|
||||||
|
|
||||||
public class ${className} implements MapHandler {
|
public class ${className} implements MapHandler {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(Context context) {
|
public void init(Context context, GameMap map) {
|
||||||
|
throw new RuntimeException("Not implemented yet");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void input(Keyboard keyboard) {
|
||||||
|
throw new RuntimeException("Not implemented yet");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(Context context, GameMap map, float dt) {
|
||||||
throw new RuntimeException("Not implemented yet");
|
throw new RuntimeException("Not implemented yet");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -27,52 +27,45 @@ public abstract class Model {
|
|||||||
@Setter
|
@Setter
|
||||||
protected float scaleY = 1.0f;
|
protected float scaleY = 1.0f;
|
||||||
|
|
||||||
public Model setPosition(float x, float y) {
|
public void setPosition(float x, float y) {
|
||||||
position.x = x;
|
position.x = x;
|
||||||
position.y = y;
|
position.y = y;
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Model setPosition(Vector2f position) {
|
public void setPosition(Vector2f position) {
|
||||||
this.position.x = position.x;
|
this.position.x = position.x;
|
||||||
this.position.y = position.y;
|
this.position.y = position.y;
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Model movePosition(float x, float y) {
|
public void movePosition(float x, float y) {
|
||||||
position.x += x;
|
position.x += x;
|
||||||
position.y += y;
|
position.y += y;
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Model movePosition(Vector2f position) {
|
public void movePosition(Vector2f position) {
|
||||||
this.position.x += position.x;
|
this.position.x += position.x;
|
||||||
this.position.y += position.y;
|
this.position.y += position.y;
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Model moveRotation(float rotation) {
|
public void moveRotation(float rotation) {
|
||||||
this.rotation += rotation;
|
this.rotation += rotation;
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Model setScale(float scale) {
|
public void setScale(float scale) {
|
||||||
this.scaleX = scale;
|
this.scaleX = scale;
|
||||||
this.scaleY = scale;
|
this.scaleY = scale;
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Model setScale(float scaleX, float scaleY) {
|
public void setScale(float scaleX, float scaleY) {
|
||||||
this.scaleX = scaleX;
|
this.scaleX = scaleX;
|
||||||
this.scaleY = scaleY;
|
this.scaleY = scaleY;
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Matrix4f getModelMatrix() {
|
public Matrix4f getModelMatrix() {
|
||||||
return modelMatrix
|
return modelMatrix
|
||||||
.identity()
|
.identity()
|
||||||
.translate(position.x, position.y, 0)
|
.translate(position.x, position.y, 0)
|
||||||
.rotateZ((float) toRadians(-rotation))
|
.rotateZ((float) toRadians(-rotation))
|
||||||
.scaleXY(scaleX, scaleY);
|
.scaleXY(scaleX, scaleY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package com.bartlomiejpluta.base.game.entity.model;
|
|||||||
|
|
||||||
import com.bartlomiejpluta.base.api.entity.Direction;
|
import com.bartlomiejpluta.base.api.entity.Direction;
|
||||||
import com.bartlomiejpluta.base.api.entity.Entity;
|
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||||
import com.bartlomiejpluta.base.api.geo.Vector;
|
|
||||||
import com.bartlomiejpluta.base.core.gl.object.material.Material;
|
import com.bartlomiejpluta.base.core.gl.object.material.Material;
|
||||||
import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh;
|
import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh;
|
||||||
import com.bartlomiejpluta.base.core.util.math.MathUtil;
|
import com.bartlomiejpluta.base.core.util.math.MathUtil;
|
||||||
@@ -64,11 +63,6 @@ public class DefaultEntity extends MovableSprite implements Entity {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setCoordinates(Vector coordinates) {
|
|
||||||
setCoordinates(coordinates.x, coordinates.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setSpeed(float speed) {
|
public void setSpeed(float speed) {
|
||||||
framesToCrossOneTile = (int) (1 / MathUtil.clamp(speed, Float.MIN_VALUE, 1.0));
|
framesToCrossOneTile = (int) (1 / MathUtil.clamp(speed, Float.MIN_VALUE, 1.0));
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
package com.bartlomiejpluta.base.game.map.layer.object;
|
package com.bartlomiejpluta.base.game.map.layer.object;
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.api.entity.Direction;
|
import com.bartlomiejpluta.base.api.entity.Direction;
|
||||||
import com.bartlomiejpluta.base.api.geo.Vector;
|
|
||||||
import com.bartlomiejpluta.base.api.map.PassageAbility;
|
import com.bartlomiejpluta.base.api.map.PassageAbility;
|
||||||
import com.bartlomiejpluta.base.core.gl.shader.manager.ShaderManager;
|
import com.bartlomiejpluta.base.core.gl.shader.manager.ShaderManager;
|
||||||
import com.bartlomiejpluta.base.core.ui.Window;
|
import com.bartlomiejpluta.base.core.ui.Window;
|
||||||
import com.bartlomiejpluta.base.core.world.camera.Camera;
|
import com.bartlomiejpluta.base.core.world.camera.Camera;
|
||||||
import com.bartlomiejpluta.base.game.map.layer.base.Layer;
|
import com.bartlomiejpluta.base.game.map.layer.base.Layer;
|
||||||
import com.bartlomiejpluta.base.game.movement.MovableSprite;
|
import com.bartlomiejpluta.base.game.movement.MovableSprite;
|
||||||
|
import org.joml.Vector2i;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ public class ObjectLayer implements Layer {
|
|||||||
passageMap[row][column] = passageAbility;
|
passageMap[row][column] = passageAbility;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isMovementPossible(Vector source, Vector target, Direction direction) {
|
public boolean isMovementPossible(Vector2i source, Vector2i target, Direction direction) {
|
||||||
var isTargetReachable = switch (passageMap[target.y][target.x]) {
|
var isTargetReachable = switch (passageMap[target.y][target.x]) {
|
||||||
case UP_ONLY -> direction != Direction.DOWN;
|
case UP_ONLY -> direction != Direction.DOWN;
|
||||||
case DOWN_ONLY -> direction != Direction.UP;
|
case DOWN_ONLY -> direction != Direction.UP;
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ package com.bartlomiejpluta.base.game.movement;
|
|||||||
|
|
||||||
import com.bartlomiejpluta.base.api.entity.Direction;
|
import com.bartlomiejpluta.base.api.entity.Direction;
|
||||||
import com.bartlomiejpluta.base.api.entity.Movement;
|
import com.bartlomiejpluta.base.api.entity.Movement;
|
||||||
import com.bartlomiejpluta.base.api.geo.Vector;
|
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.joml.Vector2i;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@RequiredArgsConstructor(access = AccessLevel.PACKAGE)
|
@RequiredArgsConstructor(access = AccessLevel.PACKAGE)
|
||||||
@@ -26,12 +26,12 @@ public class DefaultMovement implements Movement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getFrom() {
|
public Vector2i getFrom() {
|
||||||
return object.getCoordinates();
|
return object.getCoordinates();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getTo() {
|
public Vector2i getTo() {
|
||||||
return getFrom().add(direction.vector);
|
return direction.asVector().add(object.getCoordinates());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,12 +2,12 @@ package com.bartlomiejpluta.base.game.movement;
|
|||||||
|
|
||||||
import com.bartlomiejpluta.base.api.entity.Direction;
|
import com.bartlomiejpluta.base.api.entity.Direction;
|
||||||
import com.bartlomiejpluta.base.api.entity.Movement;
|
import com.bartlomiejpluta.base.api.entity.Movement;
|
||||||
import com.bartlomiejpluta.base.api.geo.Vector;
|
|
||||||
import com.bartlomiejpluta.base.core.gl.object.material.Material;
|
import com.bartlomiejpluta.base.core.gl.object.material.Material;
|
||||||
import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh;
|
import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh;
|
||||||
import com.bartlomiejpluta.base.core.logic.Updatable;
|
import com.bartlomiejpluta.base.core.logic.Updatable;
|
||||||
import com.bartlomiejpluta.base.game.animation.AnimatedSprite;
|
import com.bartlomiejpluta.base.game.animation.AnimatedSprite;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.Getter;
|
||||||
import org.joml.Vector2f;
|
import org.joml.Vector2f;
|
||||||
import org.joml.Vector2i;
|
import org.joml.Vector2i;
|
||||||
|
|
||||||
@@ -18,6 +18,7 @@ public abstract class MovableSprite extends AnimatedSprite implements Updatable
|
|||||||
private int moveTime = 0;
|
private int moveTime = 0;
|
||||||
private Vector2f movementVector;
|
private Vector2f movementVector;
|
||||||
|
|
||||||
|
@Getter
|
||||||
private final Vector2i coordinates = new Vector2i(0, 0);
|
private final Vector2i coordinates = new Vector2i(0, 0);
|
||||||
|
|
||||||
protected int framesToCrossOneTile = 1;
|
protected int framesToCrossOneTile = 1;
|
||||||
@@ -63,27 +64,20 @@ public abstract class MovableSprite extends AnimatedSprite implements Updatable
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector getCoordinates() {
|
public void setCoordinates(int x, int y) {
|
||||||
return Vector.of(coordinates.x, coordinates.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
public MovableSprite setCoordinates(int x, int y) {
|
|
||||||
coordinates.x = x;
|
coordinates.x = x;
|
||||||
coordinates.y = y;
|
coordinates.y = y;
|
||||||
setPosition((x + 0.5f) * coordinateStepSize.x, (y + 0.5f) * coordinateStepSize.y);
|
setPosition((x + 0.5f) * coordinateStepSize.x, (y + 0.5f) * coordinateStepSize.y);
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public MovableSprite setCoordinates(Vector2i coordinates) {
|
public void setCoordinates(Vector2i coordinates) {
|
||||||
return setCoordinates(coordinates.x, coordinates.y);
|
setCoordinates(coordinates.x, coordinates.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
public MovableSprite setStepSize(float x, float y) {
|
public void setStepSize(float x, float y) {
|
||||||
coordinateStepSize.x = x;
|
coordinateStepSize.x = x;
|
||||||
coordinateStepSize.y = y;
|
coordinateStepSize.y = y;
|
||||||
setCoordinates(coordinates);
|
setCoordinates(coordinates);
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public MovableSprite(Mesh mesh, Material material) {
|
public MovableSprite(Mesh mesh, Material material) {
|
||||||
|
|||||||
Reference in New Issue
Block a user