diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index b1ed4b57..55721005 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -2122,6 +2122,7 @@ voxel tests Physics work Debug rendering for facing vectors Fix progressive pathfinding iteration +Non-body ground movement animation work diff --git a/src/main/java/electrosphere/entity/state/gravity/ClientGravityTree.java b/src/main/java/electrosphere/entity/state/gravity/ClientGravityTree.java index 6af877de..4b5345fb 100644 --- a/src/main/java/electrosphere/entity/state/gravity/ClientGravityTree.java +++ b/src/main/java/electrosphere/entity/state/gravity/ClientGravityTree.java @@ -136,7 +136,7 @@ public class ClientGravityTree implements BehaviorTree { */ private boolean bodyIsActive(){ if(PhysicsEntityUtils.getDBody(parent) == null){ - return true; + return false; } DBody body = PhysicsEntityUtils.getDBody(parent); return body.isEnabled(); diff --git a/src/main/java/electrosphere/entity/state/gravity/GravityUtils.java b/src/main/java/electrosphere/entity/state/gravity/GravityUtils.java index 1103f1b4..6cee312a 100644 --- a/src/main/java/electrosphere/entity/state/gravity/GravityUtils.java +++ b/src/main/java/electrosphere/entity/state/gravity/GravityUtils.java @@ -1,19 +1,20 @@ package electrosphere.entity.state.gravity; +import electrosphere.collision.PhysicsEntityUtils; import electrosphere.entity.Entity; import electrosphere.entity.EntityDataStrings; public class GravityUtils { public static void clientAttemptActivateGravity(Entity target){ - if(target.containsKey(EntityDataStrings.GRAVITY_ENTITY)){ + if(target.containsKey(EntityDataStrings.GRAVITY_ENTITY) && PhysicsEntityUtils.containsDBody(target)){ ClientGravityTree tree = ClientGravityTree.getClientGravityTree(target); tree.start(); } } public static void serverAttemptActivateGravity(Entity target){ - if(target.containsKey(EntityDataStrings.GRAVITY_ENTITY)){ + if(target.containsKey(EntityDataStrings.GRAVITY_ENTITY) && PhysicsEntityUtils.containsDBody(target)){ ServerGravityTree tree = ServerGravityTree.getServerGravityTree(target); tree.start(); } diff --git a/src/main/java/electrosphere/entity/state/gravity/ServerGravityTree.java b/src/main/java/electrosphere/entity/state/gravity/ServerGravityTree.java index af0a4c15..2ae6de4a 100644 --- a/src/main/java/electrosphere/entity/state/gravity/ServerGravityTree.java +++ b/src/main/java/electrosphere/entity/state/gravity/ServerGravityTree.java @@ -155,7 +155,7 @@ public class ServerGravityTree implements BehaviorTree { */ private boolean bodyIsActive(){ if(PhysicsEntityUtils.getDBody(parent) == null){ - return true; + return false; } DBody body = PhysicsEntityUtils.getDBody(parent); return body.isEnabled(); diff --git a/src/main/java/electrosphere/entity/state/movement/groundmove/ClientGroundMovementTree.java b/src/main/java/electrosphere/entity/state/movement/groundmove/ClientGroundMovementTree.java index 2501e132..55c0db18 100644 --- a/src/main/java/electrosphere/entity/state/movement/groundmove/ClientGroundMovementTree.java +++ b/src/main/java/electrosphere/entity/state/movement/groundmove/ClientGroundMovementTree.java @@ -209,8 +209,6 @@ public class ClientGroundMovementTree implements BehaviorTree { //body can be null if the behavior tree wasn't detatched for some reason if(body != null){ linearVelocity = body.getLinearVel(); - } else { - return; } // @@ -330,13 +328,15 @@ public class ClientGroundMovementTree implements BehaviorTree { } CreatureUtils.setVelocity(parent, velocity); //actually update - PhysicsEntityUtils.getDBody(parent).enable(); - body.setLinearVel( - movementVector.x * velocity * Globals.engineState.timekeeper.getSimFrameTime(), - linearVelocity.get1(), - movementVector.z * velocity * Globals.engineState.timekeeper.getSimFrameTime() - ); - body.setAngularVel(0, 0, 0); + if(body != null){ + PhysicsEntityUtils.getDBody(parent).enable(); + body.setLinearVel( + movementVector.x * velocity * Globals.engineState.timekeeper.getSimFrameTime(), + linearVelocity.get1(), + movementVector.z * velocity * Globals.engineState.timekeeper.getSimFrameTime() + ); + body.setAngularVel(0, 0, 0); + } rotation.set(movementQuaternion); GravityUtils.clientAttemptActivateGravity(parent); @@ -362,13 +362,15 @@ public class ClientGroundMovementTree implements BehaviorTree { this.updateVelocity(); float velocity = this.getModifiedVelocity(); - PhysicsEntityUtils.getDBody(parent).enable(); - body.setLinearVel( - movementVector.x * velocity * Globals.engineState.timekeeper.getSimFrameTime(), - linearVelocity.get1(), - movementVector.z * velocity * Globals.engineState.timekeeper.getSimFrameTime() - ); - body.setAngularVel(0, 0, 0); + if(body != null){ + PhysicsEntityUtils.getDBody(parent).enable(); + body.setLinearVel( + movementVector.x * velocity * Globals.engineState.timekeeper.getSimFrameTime(), + linearVelocity.get1(), + movementVector.z * velocity * Globals.engineState.timekeeper.getSimFrameTime() + ); + body.setAngularVel(0, 0, 0); + } rotation.set(movementQuaternion); GravityUtils.clientAttemptActivateGravity(parent); @@ -412,13 +414,15 @@ public class ClientGroundMovementTree implements BehaviorTree { } else { GravityUtils.clientAttemptActivateGravity(parent); } - PhysicsEntityUtils.getDBody(parent).enable(); - body.setLinearVel( - movementVector.x * velocity * Globals.engineState.timekeeper.getSimFrameTime(), - linearVelocity.get1(), - movementVector.z * velocity * Globals.engineState.timekeeper.getSimFrameTime() - ); - body.setAngularVel(0, 0, 0); + if(body != null){ + PhysicsEntityUtils.getDBody(parent).enable(); + body.setLinearVel( + movementVector.x * velocity * Globals.engineState.timekeeper.getSimFrameTime(), + linearVelocity.get1(), + movementVector.z * velocity * Globals.engineState.timekeeper.getSimFrameTime() + ); + body.setAngularVel(0, 0, 0); + } rotation.set(movementQuaternion); } break; diff --git a/src/test/java/electrosphere/collision/CollisionEngineStaticSpaceTests.java b/src/test/java/electrosphere/collision/CollisionEngineStaticSpaceTests.java index 61655fc1..8484a66d 100644 --- a/src/test/java/electrosphere/collision/CollisionEngineStaticSpaceTests.java +++ b/src/test/java/electrosphere/collision/CollisionEngineStaticSpaceTests.java @@ -23,7 +23,7 @@ public class CollisionEngineStaticSpaceTests extends EntityTestTemplate { CollisionEngine collisionEngine = realm.getCollisionEngine(); //base plane + static space - assertEquals(2, collisionEngine.getSpace().getNumGeoms()); + assertEquals(0, collisionEngine.getSpace().getNumGeoms()); } @IntegrationTest @@ -62,7 +62,7 @@ public class CollisionEngineStaticSpaceTests extends EntityTestTemplate { PhysicsEntityUtils.serverAttachCollidableTemplate(realm, ent1, CollidableTemplate.getBoxTemplate(new Vector3d(1,1,1)), new Vector3d(0)); - int expectedBoxBoxCollisions = 4; + int expectedBoxBoxCollisions = 3; int expectedTotalCollisions = expectedBoxBoxCollisions * CollisionEngine.PHYSICS_SIMULATION_RESOLUTION;