fix entity collisions (#2348)

This commit is contained in:
Lorenz Wrobel 2024-08-22 03:15:19 +02:00 committed by GitHub
parent 6b660a4e6a
commit a521c4e7cd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -32,12 +32,13 @@ final class EntityCollision {
if (e.getBoundingBox().intersectBox(e.getPosition().sub(point), boundingBox)) { if (e.getBoundingBox().intersectBox(e.getPosition().sub(point), boundingBox)) {
var p = Pos.fromPoint(point); var p = Pos.fromPoint(point);
result.add(new EntityCollisionResult(p, e, Vec.ZERO, 0)); result.add(new EntityCollisionResult(p, e, Vec.ZERO, 0));
continue;
} }
// Check collisions with entity // Check collisions with entity
e.getBoundingBox().intersectBoxSwept(point, entityVelocity, e.getPosition(), boundingBox, sweepResult); boolean intersected = e.getBoundingBox().intersectBoxSwept(point, entityVelocity, e.getPosition(), boundingBox, sweepResult);
if (sweepResult.res < 1) { if (intersected && sweepResult.res < 1) {
var p = Pos.fromPoint(point).add(entityVelocity.mul(sweepResult.res)); var p = Pos.fromPoint(point).add(entityVelocity.mul(sweepResult.res));
Vec direction = new Vec(sweepResult.collidedPositionX, sweepResult.collidedPositionY, sweepResult.collidedPositionZ); Vec direction = new Vec(sweepResult.collidedPositionX, sweepResult.collidedPositionY, sweepResult.collidedPositionZ);
result.add(new EntityCollisionResult(p, e, direction, sweepResult.res)); result.add(new EntityCollisionResult(p, e, direction, sweepResult.res));