diff --git a/docs/src/progress/currenttarget.md b/docs/src/progress/currenttarget.md index 3240316f..69bd2ba2 100644 --- a/docs/src/progress/currenttarget.md +++ b/docs/src/progress/currenttarget.md @@ -9,7 +9,6 @@ audio fx for everything + bug fixes - fix items falling through floor Things that feel bad: diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 9e630859..b66f0e65 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -492,6 +492,10 @@ Server synchronization manager Jump tree synchronization Fix jump bugginess +(08/01/2024) +Fix server entity camera rotation +Fix world bounds application + # TODO diff --git a/src/main/java/electrosphere/collision/CollisionEngine.java b/src/main/java/electrosphere/collision/CollisionEngine.java index e06b46cb..b9302a8c 100644 --- a/src/main/java/electrosphere/collision/CollisionEngine.java +++ b/src/main/java/electrosphere/collision/CollisionEngine.java @@ -399,32 +399,31 @@ public class CollisionEngine { /** * - * @param e the entity that's trying to move + * @param w The collision world data * @param positionToCheck the position the entity wants to be at * @return the position the engine recommends it move to instead (this is * guaranteed to be a valid position) */ - public Vector3d suggestMovementPosition(CollisionWorldData w, Entity e, Vector3d positionToCheck){ + public Vector3d suggestMovementPosition(CollisionWorldData w, Vector3d positionToCheck){ Vector3d suggestedPosition = new Vector3d(positionToCheck); - // - // adjust for minimum height (Terrain) - // -// float heightMapBias = 0.00001f; -// if(w.getElevationAtPoint(positionToCheck) > positionToCheck.y){ -// suggestedPosition.y = w.getElevationAtPoint(positionToCheck) + heightMapBias; -// } // // adjust for world bounds // if(suggestedPosition.x < collisionWorldData.getWorldBoundMin().x){ suggestedPosition.x = collisionWorldData.getWorldBoundMin().x; } + if(suggestedPosition.y < collisionWorldData.getWorldBoundMin().y){ + suggestedPosition.y = collisionWorldData.getWorldBoundMin().y; + } if(suggestedPosition.z < collisionWorldData.getWorldBoundMin().z){ suggestedPosition.z = collisionWorldData.getWorldBoundMin().z; } if(suggestedPosition.x > collisionWorldData.getWorldBoundMax().x){ suggestedPosition.x = collisionWorldData.getWorldBoundMax().x; } + if(suggestedPosition.y > collisionWorldData.getWorldBoundMax().y){ + suggestedPosition.y = collisionWorldData.getWorldBoundMax().y; + } if(suggestedPosition.z > collisionWorldData.getWorldBoundMax().z){ suggestedPosition.z = collisionWorldData.getWorldBoundMax().z; } @@ -467,6 +466,7 @@ public class CollisionEngine { Matrix4d inverseTransform = new Matrix4d(); Vector4d rawPos = inverseTransform.transform(new Vector4d(PhysicsUtils.getRigidBodyPosition(rigidBody),1)); Vector3d newPosition = new Vector3d(rawPos.x,rawPos.y,rawPos.z); + newPosition = this.suggestMovementPosition(collisionWorldData, newPosition); Quaterniond newRotation = PhysicsUtils.getRigidBodyRotation(rigidBody); EntityUtils.getPosition(physicsEntity).set(newPosition); EntityUtils.getRotation(physicsEntity).set(newRotation);