Fix player camera bug

This commit is contained in:
austin 2022-05-09 22:06:58 -04:00
parent 0d3e242188
commit 74a9ea4a5f
3 changed files with 26 additions and 8 deletions

View File

@ -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));

View File

@ -53,6 +53,29 @@ public class CameraEntityUtils {
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);
}

View File

@ -202,13 +202,8 @@ 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 {