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
+ bug fixes
fix items falling through floor
Things that feel bad:

View File

@ -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

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
* @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);