diff options
| author | ilotterytea <iltsu@alright.party> | 2025-01-22 21:17:25 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-01-22 21:17:25 +0500 |
| commit | 80e7342650a9d71b73a838230733c54c50ffcc1b (patch) | |
| tree | b555c40ef4d15f493f2df7b6b7fe527087c4a58f | |
| parent | cbcb7b4bebeadd3f61e2f0c6071a000827188887 (diff) | |
upd: Vector2 instead of Vector3 for directions (because we don't actually need the y coordinate)
7 files changed, 42 insertions, 29 deletions
diff --git a/core/src/main/java/kz/ilotterytea/frogartha/entities/LocalPlayerEntity.java b/core/src/main/java/kz/ilotterytea/frogartha/entities/LocalPlayerEntity.java index 4971635..f3d3ef1 100644 --- a/core/src/main/java/kz/ilotterytea/frogartha/entities/LocalPlayerEntity.java +++ b/core/src/main/java/kz/ilotterytea/frogartha/entities/LocalPlayerEntity.java @@ -3,6 +3,7 @@ package kz.ilotterytea.frogartha.entities; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.graphics.Camera; +import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.math.collision.Ray; import kz.ilotterytea.frogartha.FrogarthaGame; @@ -52,10 +53,10 @@ public class LocalPlayerEntity extends PlayerEntity { Ray ray = camera.getPickRay(Gdx.input.getX(), Gdx.input.getY()); final float distance = -ray.origin.y / ray.direction.y; Vector3 point = new Vector3(ray.direction).scl(distance).add(ray.origin); - Vector3 direction = new Vector3(point.x, position.y, point.z); + Vector2 d = new Vector2(point.x, point.z); - if (direction.x != this.direction.x || direction.z != this.direction.z) { - FrogarthaGame.getInstance().getSessionClient().send(new ChangedDirectionAction(direction)); + if (d.x != this.direction.x || d.y != this.direction.z) { + FrogarthaGame.getInstance().getSessionClient().send(new ChangedDirectionAction(d)); } } diff --git a/core/src/main/java/kz/ilotterytea/frogartha/entities/RenderableEntity.java b/core/src/main/java/kz/ilotterytea/frogartha/entities/RenderableEntity.java index 181be14..4a6e547 100644 --- a/core/src/main/java/kz/ilotterytea/frogartha/entities/RenderableEntity.java +++ b/core/src/main/java/kz/ilotterytea/frogartha/entities/RenderableEntity.java @@ -4,6 +4,7 @@ import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.g3d.decals.Decal; import com.badlogic.gdx.graphics.g3d.decals.DecalBatch; +import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.math.collision.BoundingBox; @@ -51,6 +52,10 @@ public abstract class RenderableEntity extends Entity { setDirection(dir.x, dir.y, dir.z); } + public void setDirection(Vector2 dir) { + setDirection(dir.x, position.y, dir.y); + } + public void setDirection(float x, float y, float z) { direction.set(x, y, z); decal.lookAt(direction, Vector3.Y); diff --git a/core/src/main/java/kz/ilotterytea/frogartha/sessions/SessionHandlers.java b/core/src/main/java/kz/ilotterytea/frogartha/sessions/SessionHandlers.java index 38e8578..35311ac 100644 --- a/core/src/main/java/kz/ilotterytea/frogartha/sessions/SessionHandlers.java +++ b/core/src/main/java/kz/ilotterytea/frogartha/sessions/SessionHandlers.java @@ -1,6 +1,6 @@ package kz.ilotterytea.frogartha.sessions; -import com.badlogic.gdx.math.Vector3; +import com.badlogic.gdx.math.Vector2; import kz.ilotterytea.frogartha.FrogarthaGame; import kz.ilotterytea.frogartha.domain.PlayerData; import kz.ilotterytea.frogartha.domain.RoomTopic; @@ -81,9 +81,9 @@ public class SessionHandlers { return; } - Vector3 direction = event.getDirection(); + Vector2 direction = event.getDirection(); - entity.setDirection(direction.x, entity.getPosition().y, direction.z); + entity.setDirection(direction.x, entity.getPosition().y, direction.y); } public static void handleSenderJoinedRoomEvent(SenderJoinedRoomEvent event) { diff --git a/server/src/main/java/kz/ilotterytea/frogartha/server/ServerHandlers.java b/server/src/main/java/kz/ilotterytea/frogartha/server/ServerHandlers.java index 621affd..6f16281 100644 --- a/server/src/main/java/kz/ilotterytea/frogartha/server/ServerHandlers.java +++ b/server/src/main/java/kz/ilotterytea/frogartha/server/ServerHandlers.java @@ -1,5 +1,6 @@ package kz.ilotterytea.frogartha.server; +import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector3; import kz.ilotterytea.frogartha.FrogarthaConstants; import kz.ilotterytea.frogartha.domain.Identity; @@ -54,7 +55,7 @@ public class ServerHandlers { Vector3 startPosition = position.cpy(); float jumpDistance = action.getJumpStrength() * FrogarthaConstants.Player.JUMP_SPEED; - Vector3 d = new Vector3(state.getDirection()).sub(startPosition).nor(); + Vector3 d = new Vector3(state.getDirection().x, state.getPosition().y, state.getDirection().y).sub(startPosition).nor(); Vector3 endPosition = new Vector3( position.x + d.x * jumpDistance, @@ -79,9 +80,9 @@ public class ServerHandlers { } PlayerState state = player.getState(); - Vector3 direction = action.getDirection(); + Vector2 direction = action.getDirection(); - state.setDirection(direction.x, state.getPosition().y, direction.z); + state.setDirection(direction.x, direction.y); ChangedDirectionEvent event = new ChangedDirectionEvent(player.getId(), state.getDirection()); diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerState.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerState.java index d745822..0aa89c5 100644 --- a/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerState.java +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerState.java @@ -1,5 +1,6 @@ package kz.ilotterytea.frogartha.domain; +import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector3; import com.github.czyzby.websocket.serialization.SerializationException; import com.github.czyzby.websocket.serialization.Transferable; @@ -7,14 +8,15 @@ import com.github.czyzby.websocket.serialization.impl.Deserializer; import com.github.czyzby.websocket.serialization.impl.Serializer; public class PlayerState implements Transferable<PlayerState> { - private final Vector3 position, direction; + private final Vector3 position; + private final Vector2 direction; private float nextJumpTimestamp; public PlayerState() { - this(new Vector3(), new Vector3()); + this(new Vector3(), new Vector2()); } - public PlayerState(Vector3 position, Vector3 direction) { + public PlayerState(Vector3 position, Vector2 direction) { this.position = position; this.direction = direction; this.nextJumpTimestamp = 0; @@ -28,7 +30,7 @@ public class PlayerState implements Transferable<PlayerState> { this.position.set(x, y, z); } - public Vector3 getDirection() { + public Vector2 getDirection() { return direction; } @@ -40,22 +42,23 @@ public class PlayerState implements Transferable<PlayerState> { this.nextJumpTimestamp = nextJumpTimestamp; } - public void setDirection(float x, float y, float z) { - this.direction.set(x, y, z); + public void setDirection(float x, float z) { + this.direction.set(x, z); } @Override public void serialize(Serializer serializer) throws SerializationException { serializer .serializeFloatArray(new float[]{position.x, position.y, position.z}) - .serializeFloatArray(new float[]{direction.x, direction.y, direction.z}); + .serializeFloat(direction.x) + .serializeFloat(direction.y); } @Override public PlayerState deserialize(Deserializer deserializer) throws SerializationException { return new PlayerState( new Vector3(deserializer.deserializeFloatArray()), - new Vector3(deserializer.deserializeFloatArray()) + new Vector2(deserializer.deserializeFloat(), deserializer.deserializeFloat()) ); } } diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/ChangedDirectionAction.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/ChangedDirectionAction.java index b3004ba..579e3a2 100644 --- a/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/ChangedDirectionAction.java +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/ChangedDirectionAction.java @@ -1,32 +1,34 @@ package kz.ilotterytea.frogartha.domain.actions; -import com.badlogic.gdx.math.Vector3; +import com.badlogic.gdx.math.Vector2; import com.github.czyzby.websocket.serialization.SerializationException; import com.github.czyzby.websocket.serialization.Transferable; import com.github.czyzby.websocket.serialization.impl.Deserializer; import com.github.czyzby.websocket.serialization.impl.Serializer; public class ChangedDirectionAction implements Transferable<ChangedDirectionAction> { - private Vector3 direction; + private Vector2 direction; public ChangedDirectionAction() { } - public ChangedDirectionAction(Vector3 direction) { + public ChangedDirectionAction(Vector2 direction) { this.direction = direction; } - public Vector3 getDirection() { + public Vector2 getDirection() { return direction; } @Override public void serialize(Serializer serializer) throws SerializationException { - serializer.serializeFloatArray(new float[]{direction.x, direction.y, direction.z}); + serializer + .serializeFloat(direction.x) + .serializeFloat(direction.y); } @Override public ChangedDirectionAction deserialize(Deserializer deserializer) throws SerializationException { - return new ChangedDirectionAction(new Vector3(deserializer.deserializeFloatArray())); + return new ChangedDirectionAction(new Vector2(deserializer.deserializeFloat(), deserializer.deserializeFloat())); } } diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/ChangedDirectionEvent.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/ChangedDirectionEvent.java index 71eea4d..bc8a3a9 100644 --- a/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/ChangedDirectionEvent.java +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/ChangedDirectionEvent.java @@ -1,23 +1,23 @@ package kz.ilotterytea.frogartha.domain.events; -import com.badlogic.gdx.math.Vector3; +import com.badlogic.gdx.math.Vector2; import com.github.czyzby.websocket.serialization.SerializationException; import com.github.czyzby.websocket.serialization.Transferable; import com.github.czyzby.websocket.serialization.impl.Deserializer; import com.github.czyzby.websocket.serialization.impl.Serializer; public class ChangedDirectionEvent extends Event implements Transferable<ChangedDirectionEvent> { - private Vector3 direction; + private Vector2 direction; public ChangedDirectionEvent() { } - public ChangedDirectionEvent(int playerId, Vector3 direction) { + public ChangedDirectionEvent(int playerId, Vector2 direction) { super(playerId); this.direction = direction; } - public Vector3 getDirection() { + public Vector2 getDirection() { return direction; } @@ -25,11 +25,12 @@ public class ChangedDirectionEvent extends Event implements Transferable<Changed public void serialize(Serializer serializer) throws SerializationException { serializer .serializeInt(playerId) - .serializeFloatArray(new float[]{direction.x, direction.y, direction.z}); + .serializeFloat(direction.x) + .serializeFloat(direction.y); } @Override public ChangedDirectionEvent deserialize(Deserializer deserializer) throws SerializationException { - return new ChangedDirectionEvent(deserializer.deserializeInt(), new Vector3(deserializer.deserializeFloatArray())); + return new ChangedDirectionEvent(deserializer.deserializeInt(), new Vector2(deserializer.deserializeFloat(), deserializer.deserializeFloat())); } } |
