From 74a9ea4a5f38f58007f317499347eda0fe23115a Mon Sep 17 00:00:00 2001 From: austin Date: Mon, 9 May 2022 22:06:58 -0400 Subject: [PATCH] Fix player camera bug --- .../electrosphere/engine/LoadingThread.java | 2 +- .../types/camera/CameraEntityUtils.java | 23 +++++++++++++++++++ .../net/server/ServerConnectionHandler.java | 9 ++------ 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/main/java/electrosphere/engine/LoadingThread.java b/src/main/java/electrosphere/engine/LoadingThread.java index 24ad3317..6b730883 100644 --- a/src/main/java/electrosphere/engine/LoadingThread.java +++ b/src/main/java/electrosphere/engine/LoadingThread.java @@ -553,7 +553,7 @@ public class LoadingThread extends Thread { Player Camera */ - Globals.playerCamera = CameraEntityUtils.spawnEntityTrackingCameraEntity(new Vector3f(1,0,1), new Vector3f(0,0,0), Globals.playerEntity); + Globals.playerCamera = CameraEntityUtils.spawnPlayerEntityTrackingCameraEntity(new Vector3f(1,0,1), new Vector3f(0,0,0)); diff --git a/src/main/java/electrosphere/entity/types/camera/CameraEntityUtils.java b/src/main/java/electrosphere/entity/types/camera/CameraEntityUtils.java index b260e380..a90f6de2 100644 --- a/src/main/java/electrosphere/entity/types/camera/CameraEntityUtils.java +++ b/src/main/java/electrosphere/entity/types/camera/CameraEntityUtils.java @@ -52,6 +52,29 @@ public class CameraEntityUtils { Globals.entityManager.registerBehaviorTree(entityTrackingTree); return rVal; } + + public static Entity spawnPlayerEntityTrackingCameraEntity(Vector3f center, Vector3f eye){ + Entity rVal = new Entity(); + Globals.entityManager.registerEntity(rVal); + rVal.putData(EntityDataStrings.DATA_STRING_CAMERA_TYPE, EntityDataStrings.DATA_STRING_CAMERA_TYPE_ORBIT); + rVal.putData(EntityDataStrings.DATA_STRING_CAMERA_CENTER, center); + rVal.putData(EntityDataStrings.DATA_STRING_CAMERA_EYE, eye); + rVal.putData(EntityDataStrings.DATA_STRING_CAMERA_ORBIT_DISTANCE, 1.0f); + rVal.putData(EntityDataStrings.CAMERA_ORBIT_RADIAL_OFFSET, new Vector3f(0,1,0)); + rVal.putData(EntityDataStrings.CAMERA_PITCH, 0.0f); + rVal.putData(EntityDataStrings.CAMERA_YAW, 0.0f); + BehaviorTree entityTrackingTree = new BehaviorTree() { + @Override + public void simulate() { + if(Globals.playerEntity != null){ + Vector3d entityPos = EntityUtils.getPosition(Globals.playerEntity); + CameraEntityUtils.setCameraCenter(rVal, new Vector3f((float)entityPos.x,(float)entityPos.y,(float)entityPos.z).add(getOrbitalCameraRadialOffset(rVal))); + } + } + }; + Globals.entityManager.registerBehaviorTree(entityTrackingTree); + return rVal; + } public static Entity getOrbitalCameraTarget(Entity camera){ return (Entity)camera.getData(EntityDataStrings.DATA_STRING_CAMERA_ORBIT_TARGET); diff --git a/src/main/java/electrosphere/net/server/ServerConnectionHandler.java b/src/main/java/electrosphere/net/server/ServerConnectionHandler.java index e275356a..20c3ec25 100644 --- a/src/main/java/electrosphere/net/server/ServerConnectionHandler.java +++ b/src/main/java/electrosphere/net/server/ServerConnectionHandler.java @@ -202,19 +202,14 @@ public class ServerConnectionHandler implements Runnable { case ENTITY_MESSAGE: switch(((EntityMessage)message).getMessageSubtype()){ case MOVEUPDATE: - if(((EntityMessage)message).getentityID()==playerCharacterID){ - //basically don't send the message if this is the player's character and it's a move update - } else { - networkParser.addOutgoingMessage(message); - } - break; case ATTACKUPDATE: + case SPAWNCREATURE: if(((EntityMessage)message).getentityID()==playerCharacterID){ //basically don't send the message if this is the player's character and it's a move update } else { networkParser.addOutgoingMessage(message); } - break; + break; default: networkParser.addOutgoingMessage(message); break;