worldbounds fix
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
This commit is contained in:
parent
2e4b8e2819
commit
87d1da4df1
@ -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:
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user