add gravity to movement tree
This commit is contained in:
parent
3d0acb530e
commit
3f899ed746
@ -140,7 +140,7 @@ public class MovementTree {
|
|||||||
state = MovementTreeState.MOVE;
|
state = MovementTreeState.MOVE;
|
||||||
}
|
}
|
||||||
//move the entity
|
//move the entity
|
||||||
newPosition = new Vector3f(position).add(new Vector3f(movementVector).mul(velocity));
|
newPosition = new Vector3f(position).add(new Vector3f(movementVector).mul(velocity)).add(0,-9.8f,0);
|
||||||
//check/update if collision
|
//check/update if collision
|
||||||
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);
|
||||||
@ -191,7 +191,7 @@ public class MovementTree {
|
|||||||
}
|
}
|
||||||
//check if can move forward (collision engine)
|
//check if can move forward (collision engine)
|
||||||
//if can, move forward by entity movement stats
|
//if can, move forward by entity movement stats
|
||||||
newPosition = new Vector3f(position).add(new Vector3f(movementVector).mul(velocity));
|
newPosition = new Vector3f(position).add(new Vector3f(movementVector).mul(velocity)).add(0,-9.8f,0);
|
||||||
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);
|
||||||
}
|
}
|
||||||
@ -245,7 +245,7 @@ public class MovementTree {
|
|||||||
state = MovementTreeState.IDLE;
|
state = MovementTreeState.IDLE;
|
||||||
}
|
}
|
||||||
//move the entity
|
//move the entity
|
||||||
newPosition = new Vector3f(position).add(new Vector3f(movementVector).mul(velocity));
|
newPosition = new Vector3f(position).add(new Vector3f(movementVector).mul(velocity)).add(0,-9.8f,0);
|
||||||
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);
|
||||||
}
|
}
|
||||||
@ -290,6 +290,9 @@ public class MovementTree {
|
|||||||
entityActor.incrementAnimationTime(0.01);
|
entityActor.incrementAnimationTime(0.01);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(Globals.collisionEngine.gravityCheck(Globals.commonWorldData, parent)){
|
||||||
|
EntityUtils.getEntityPosition(parent).set(Globals.collisionEngine.suggestMovementPosition(Globals.commonWorldData,parent,new Vector3f(position.x,position.y - 9.8f,position.z)));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -107,4 +107,13 @@ public class CollisionEngine {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Check if the entity is being accelerated by gravity
|
||||||
|
*/
|
||||||
|
public boolean gravityCheck(CommonWorldData w, Entity e){
|
||||||
|
float worldHeight = w.getElevationAtPoint(EntityUtils.getEntityPosition(e));
|
||||||
|
float entityHeight = EntityUtils.getEntityPosition(e).y;
|
||||||
|
return entityHeight > worldHeight + 0.1f;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user