worldbounds fix
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit

This commit is contained in:
austin 2024-08-01 11:04:25 -04:00
parent 2e4b8e2819
commit 87d1da4df1
3 changed files with 13 additions and 10 deletions

View File

@ -9,7 +9,6 @@
audio fx for everything audio fx for everything
+ bug fixes + bug fixes
fix items falling through floor
Things that feel bad: Things that feel bad:

View File

@ -492,6 +492,10 @@ Server synchronization manager
Jump tree synchronization Jump tree synchronization
Fix jump bugginess Fix jump bugginess
(08/01/2024)
Fix server entity camera rotation
Fix world bounds application
# TODO # TODO

View File

@ -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 * @param positionToCheck the position the entity wants to be at
* @return the position the engine recommends it move to instead (this is * @return the position the engine recommends it move to instead (this is
* guaranteed to be a valid position) * 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); 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 // adjust for world bounds
// //
if(suggestedPosition.x < collisionWorldData.getWorldBoundMin().x){ if(suggestedPosition.x < collisionWorldData.getWorldBoundMin().x){
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){ if(suggestedPosition.z < collisionWorldData.getWorldBoundMin().z){
suggestedPosition.z = collisionWorldData.getWorldBoundMin().z; suggestedPosition.z = collisionWorldData.getWorldBoundMin().z;
} }
if(suggestedPosition.x > collisionWorldData.getWorldBoundMax().x){ if(suggestedPosition.x > collisionWorldData.getWorldBoundMax().x){
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){ if(suggestedPosition.z > collisionWorldData.getWorldBoundMax().z){
suggestedPosition.z = collisionWorldData.getWorldBoundMax().z; suggestedPosition.z = collisionWorldData.getWorldBoundMax().z;
} }
@ -467,6 +466,7 @@ public class CollisionEngine {
Matrix4d inverseTransform = new Matrix4d(); Matrix4d inverseTransform = new Matrix4d();
Vector4d rawPos = inverseTransform.transform(new Vector4d(PhysicsUtils.getRigidBodyPosition(rigidBody),1)); Vector4d rawPos = inverseTransform.transform(new Vector4d(PhysicsUtils.getRigidBodyPosition(rigidBody),1));
Vector3d newPosition = new Vector3d(rawPos.x,rawPos.y,rawPos.z); Vector3d newPosition = new Vector3d(rawPos.x,rawPos.y,rawPos.z);
newPosition = this.suggestMovementPosition(collisionWorldData, newPosition);
Quaterniond newRotation = PhysicsUtils.getRigidBodyRotation(rigidBody); Quaterniond newRotation = PhysicsUtils.getRigidBodyRotation(rigidBody);
EntityUtils.getPosition(physicsEntity).set(newPosition); EntityUtils.getPosition(physicsEntity).set(newPosition);
EntityUtils.getRotation(physicsEntity).set(newRotation); EntityUtils.getRotation(physicsEntity).set(newRotation);