From b51f20cd0d08e8069cd7e7d5432f949ee9a3c643 Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Tue, 5 Nov 2024 20:40:59 +0530 Subject: [PATCH] make trigger interaction more accurate --- src/MarbleWorld.hx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx index e087dc59..e46f7a32 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -1211,6 +1211,14 @@ class MarbleWorld extends Scheduler { // marbleHitbox.transform(endQuat.toMatrix()); // marbleHitbox.offset(end.x, end.y, end.z); + var marbleAABB = new Bounds(); + marbleAABB.xMin = end.x - this._radius; + marbleAABB.xMax = end.x + this._radius; + marbleAABB.yMin = end.y - this._radius; + marbleAABB.yMax = end.y + this._radius; + marbleAABB.zMin = end.z - this._radius; + marbleAABB.zMax = end.z + this._radius; + // spherebounds.addSpherePos(gjkCapsule.p2.x, gjkCapsule.p2.y, gjkCapsule.p2.z, gjkCapsule.radius); var contacts = this.collisionWorld.boundingSearch(box); // var contacts = marble.contactEntities; @@ -1234,7 +1242,7 @@ class MarbleWorld extends Scheduler { var trigger:Trigger = cast contact.go; var triggeraabb = trigger.collider.boundingBox; - if (triggeraabb.collide(box)) { + if (triggeraabb.collide(marbleAABB)) { trigger.onMarbleInside(timeState); if (!this.shapeOrTriggerInside.contains(contact.go)) { this.shapeOrTriggerInside.push(contact.go);