move tree lag compensation & rebalance
This commit is contained in:
parent
950c64bee9
commit
f70bd0c8e9
@ -88,8 +88,8 @@
|
||||
"movementSystems" : [
|
||||
{
|
||||
"type" : "GROUND",
|
||||
"acceleration" : 0.0015,
|
||||
"maxVelocity" : 0.005
|
||||
"acceleration" : 1.0,
|
||||
"maxVelocity" : 4.0
|
||||
}
|
||||
],
|
||||
"collidable" : {
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user