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 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

@ -52,6 +52,29 @@ public class CameraEntityUtils {
Globals.entityManager.registerBehaviorTree(entityTrackingTree); Globals.entityManager.registerBehaviorTree(entityTrackingTree);
return rVal; 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){ public static Entity getOrbitalCameraTarget(Entity camera){
return (Entity)camera.getData(EntityDataStrings.DATA_STRING_CAMERA_ORBIT_TARGET); return (Entity)camera.getData(EntityDataStrings.DATA_STRING_CAMERA_ORBIT_TARGET);

View File

@ -202,19 +202,14 @@ public class ServerConnectionHandler implements Runnable {
case ENTITY_MESSAGE: case ENTITY_MESSAGE:
switch(((EntityMessage)message).getMessageSubtype()){ switch(((EntityMessage)message).getMessageSubtype()){
case MOVEUPDATE: 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 ATTACKUPDATE:
case SPAWNCREATURE:
if(((EntityMessage)message).getentityID()==playerCharacterID){ if(((EntityMessage)message).getentityID()==playerCharacterID){
//basically don't send the message if this is the player's character and it's a move update //basically don't send the message if this is the player's character and it's a move update
} else { } else {
networkParser.addOutgoingMessage(message); networkParser.addOutgoingMessage(message);
} }
break; break;
default: default:
networkParser.addOutgoingMessage(message); networkParser.addOutgoingMessage(message);
break; break;