diff --git a/assets/Data/creatures.json b/assets/Data/creatures.json index d8ce4963..fcef4adb 100644 --- a/assets/Data/creatures.json +++ b/assets/Data/creatures.json @@ -88,8 +88,8 @@ "movementSystems" : [ { "type" : "GROUND", - "acceleration" : 0.0015, - "maxVelocity" : 0.005 + "acceleration" : 1.0, + "maxVelocity" : 4.0 } ], "collidable" : { diff --git a/src/main/java/electrosphere/entity/state/movement/GroundMovementTree.java b/src/main/java/electrosphere/entity/state/movement/GroundMovementTree.java index 44eb094e..985e6dec 100644 --- a/src/main/java/electrosphere/entity/state/movement/GroundMovementTree.java +++ b/src/main/java/electrosphere/entity/state/movement/GroundMovementTree.java @@ -39,7 +39,7 @@ public class GroundMovementTree { IDLE, } - + static final double STATE_DIFFERENCE_HARD_UPDATE_THRESHOLD = 0.1; MovementTreeState state; @@ -95,18 +95,20 @@ public class GroundMovementTree { // System.out.println("MOVE to " + message.getX() + " " + message.getY() + " " + message.getZ()); switch(message.getMessageSubtype()){ case MOVE: - position.set(message.getpositionX(), message.getpositionY(), message.getpositionZ()); - if(Globals.RUN_SERVER){ - Globals.server.broadcastMessage( - EntityMessage.constructMoveMessage( - parent.getId(), - System.currentTimeMillis(), - message.getpositionX(), - message.getpositionY(), - message.getpositionZ() - ) - ); + if(Globals.RUN_CLIENT){ + position.set(message.getpositionX(), message.getpositionY(), message.getpositionZ()); } +// if(Globals.RUN_SERVER){ +// Globals.server.broadcastMessage( +// EntityMessage.constructMoveMessage( +// parent.getId(), +// System.currentTimeMillis(), +// message.getpositionX(), +// message.getpositionY(), +// message.getpositionZ() +// ) +// ); +// } break; case SETFACING: break; @@ -136,7 +138,9 @@ public class GroundMovementTree { } // System.out.println(EntityUtils.getEntityPosition(parent)); // System.out.println(message.getpositionX() + " " + message.getpositionY() + " " + message.getpositionZ()); - EntityUtils.getPosition(parent).set(message.getpositionX(),message.getpositionY(),message.getpositionZ()); + if(position.distance(message.getpositionX(),message.getpositionY(),message.getpositionZ()) > STATE_DIFFERENCE_HARD_UPDATE_THRESHOLD){ + EntityUtils.getPosition(parent).set(message.getpositionX(),message.getpositionY(),message.getpositionZ()); + } CreatureUtils.setMovementVector(parent, new Vector3f(message.getrotationX(),message.getrotationY(),message.getrotationZ())); // EntityUtils.getEntityRotation(parent).set(message.getrotationX(), message.getrotationY(), message.getrotationZ(), message.getrotationW()).normalize(); // velocity = message.getvelocity(); @@ -150,7 +154,7 @@ public class GroundMovementTree { switch(state){ case STARTUP: //run startup code - velocity = velocity + acceleration; + velocity = velocity + acceleration * Main.deltaTime; CreatureUtils.setVelocity(parent, velocity); if(entityActor != null){ if(!entityActor.isPlayingAnimation() || !entityActor.getCurrentAnimation().equals(Animation.ANIMATION_MOVEMENT_STARTUP)){ @@ -172,7 +176,7 @@ public class GroundMovementTree { // newPosition = Globals.collisionEngine.suggestMovementPosition(Globals.commonWorldData, parent, newPosition); // } // //actually update - collidable.addImpulse(new Impulse(new Vector3d(movementVector), velocity, "movement")); + collidable.addImpulse(new Impulse(new Vector3d(movementVector), velocity * Main.deltaTime, "movement")); // position.set(newPosition); rotation.set(movementQuaternion); @@ -243,7 +247,7 @@ public class GroundMovementTree { // if(!Globals.collisionEngine.checkCanOccupyPosition(Globals.commonWorldData, parent, newPosition)){ // newPosition = Globals.collisionEngine.suggestMovementPosition(Globals.commonWorldData, parent, newPosition); // } - collidable.addImpulse(new Impulse(new Vector3d(movementVector), velocity, "movement")); + collidable.addImpulse(new Impulse(new Vector3d(movementVector), velocity * Main.deltaTime, "movement")); // position.set(newPosition); rotation.set(movementQuaternion); @@ -299,7 +303,7 @@ public class GroundMovementTree { break; case SLOWDOWN: //run slowdown code - velocity = velocity - acceleration; + velocity = velocity - acceleration * Main.deltaTime; CreatureUtils.setVelocity(parent, velocity); if(entityActor != null){ if(!entityActor.isPlayingAnimation() || !entityActor.getCurrentAnimation().equals(Animation.ANIMATION_MOVEMENT_STARTUP)){ @@ -319,7 +323,7 @@ public class GroundMovementTree { // if(!Globals.collisionEngine.checkCanOccupyPosition(Globals.commonWorldData, parent, newPosition)){ // newPosition = Globals.collisionEngine.suggestMovementPosition(Globals.commonWorldData, parent, newPosition); // } - collidable.addImpulse(new Impulse(new Vector3d(movementVector), velocity, "movement")); + collidable.addImpulse(new Impulse(new Vector3d(movementVector), velocity * Main.deltaTime, "movement")); // position.set(newPosition); rotation.rotationTo(new Vector3f(0,0,1), movementVector);