move tree lag compensation & rebalance
This commit is contained in:
parent
950c64bee9
commit
f70bd0c8e9
@ -88,8 +88,8 @@
|
|||||||
"movementSystems" : [
|
"movementSystems" : [
|
||||||
{
|
{
|
||||||
"type" : "GROUND",
|
"type" : "GROUND",
|
||||||
"acceleration" : 0.0015,
|
"acceleration" : 1.0,
|
||||||
"maxVelocity" : 0.005
|
"maxVelocity" : 4.0
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"collidable" : {
|
"collidable" : {
|
||||||
|
|||||||
@ -39,7 +39,7 @@ public class GroundMovementTree {
|
|||||||
IDLE,
|
IDLE,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static final double STATE_DIFFERENCE_HARD_UPDATE_THRESHOLD = 0.1;
|
||||||
|
|
||||||
MovementTreeState state;
|
MovementTreeState state;
|
||||||
|
|
||||||
@ -95,18 +95,20 @@ public class GroundMovementTree {
|
|||||||
// System.out.println("MOVE to " + message.getX() + " " + message.getY() + " " + message.getZ());
|
// System.out.println("MOVE to " + message.getX() + " " + message.getY() + " " + message.getZ());
|
||||||
switch(message.getMessageSubtype()){
|
switch(message.getMessageSubtype()){
|
||||||
case MOVE:
|
case MOVE:
|
||||||
position.set(message.getpositionX(), message.getpositionY(), message.getpositionZ());
|
if(Globals.RUN_CLIENT){
|
||||||
if(Globals.RUN_SERVER){
|
position.set(message.getpositionX(), message.getpositionY(), message.getpositionZ());
|
||||||
Globals.server.broadcastMessage(
|
|
||||||
EntityMessage.constructMoveMessage(
|
|
||||||
parent.getId(),
|
|
||||||
System.currentTimeMillis(),
|
|
||||||
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;
|
break;
|
||||||
case SETFACING:
|
case SETFACING:
|
||||||
break;
|
break;
|
||||||
@ -136,7 +138,9 @@ public class GroundMovementTree {
|
|||||||
}
|
}
|
||||||
// System.out.println(EntityUtils.getEntityPosition(parent));
|
// System.out.println(EntityUtils.getEntityPosition(parent));
|
||||||
// System.out.println(message.getpositionX() + " " + message.getpositionY() + " " + message.getpositionZ());
|
// 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()));
|
CreatureUtils.setMovementVector(parent, new Vector3f(message.getrotationX(),message.getrotationY(),message.getrotationZ()));
|
||||||
// EntityUtils.getEntityRotation(parent).set(message.getrotationX(), message.getrotationY(), message.getrotationZ(), message.getrotationW()).normalize();
|
// EntityUtils.getEntityRotation(parent).set(message.getrotationX(), message.getrotationY(), message.getrotationZ(), message.getrotationW()).normalize();
|
||||||
// velocity = message.getvelocity();
|
// velocity = message.getvelocity();
|
||||||
@ -150,7 +154,7 @@ public class GroundMovementTree {
|
|||||||
switch(state){
|
switch(state){
|
||||||
case STARTUP:
|
case STARTUP:
|
||||||
//run startup code
|
//run startup code
|
||||||
velocity = velocity + acceleration;
|
velocity = velocity + acceleration * Main.deltaTime;
|
||||||
CreatureUtils.setVelocity(parent, velocity);
|
CreatureUtils.setVelocity(parent, velocity);
|
||||||
if(entityActor != null){
|
if(entityActor != null){
|
||||||
if(!entityActor.isPlayingAnimation() || !entityActor.getCurrentAnimation().equals(Animation.ANIMATION_MOVEMENT_STARTUP)){
|
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);
|
// newPosition = Globals.collisionEngine.suggestMovementPosition(Globals.commonWorldData, parent, newPosition);
|
||||||
// }
|
// }
|
||||||
// //actually update
|
// //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);
|
// position.set(newPosition);
|
||||||
rotation.set(movementQuaternion);
|
rotation.set(movementQuaternion);
|
||||||
|
|
||||||
@ -243,7 +247,7 @@ public class GroundMovementTree {
|
|||||||
// if(!Globals.collisionEngine.checkCanOccupyPosition(Globals.commonWorldData, parent, newPosition)){
|
// if(!Globals.collisionEngine.checkCanOccupyPosition(Globals.commonWorldData, parent, newPosition)){
|
||||||
// newPosition = Globals.collisionEngine.suggestMovementPosition(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);
|
// position.set(newPosition);
|
||||||
rotation.set(movementQuaternion);
|
rotation.set(movementQuaternion);
|
||||||
|
|
||||||
@ -299,7 +303,7 @@ public class GroundMovementTree {
|
|||||||
break;
|
break;
|
||||||
case SLOWDOWN:
|
case SLOWDOWN:
|
||||||
//run slowdown code
|
//run slowdown code
|
||||||
velocity = velocity - acceleration;
|
velocity = velocity - acceleration * Main.deltaTime;
|
||||||
CreatureUtils.setVelocity(parent, velocity);
|
CreatureUtils.setVelocity(parent, velocity);
|
||||||
if(entityActor != null){
|
if(entityActor != null){
|
||||||
if(!entityActor.isPlayingAnimation() || !entityActor.getCurrentAnimation().equals(Animation.ANIMATION_MOVEMENT_STARTUP)){
|
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)){
|
// if(!Globals.collisionEngine.checkCanOccupyPosition(Globals.commonWorldData, parent, newPosition)){
|
||||||
// newPosition = Globals.collisionEngine.suggestMovementPosition(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);
|
// position.set(newPosition);
|
||||||
rotation.rotationTo(new Vector3f(0,0,1), movementVector);
|
rotation.rotationTo(new Vector3f(0,0,1), movementVector);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user