Add leenkx/Sources/leenkx/logicnode/AnyContactNode.hx

This commit is contained in:
2025-10-03 05:03:29 +00:00
parent 5cf33724e4
commit 506a0a0245

View File

@ -0,0 +1,48 @@
package leenkx.logicnode;
import iron.object.Object;
import leenkx.trait.physics.RigidBody;
class AnyContactNode extends LogicNode {
public var property0: String;
var lastContact = false;
public function new(tree: LogicTree) {
super(tree);
tree.notifyOnUpdate(update);
}
function update() {
var object1: Object = inputs[0].get();
if (object1 == null) object1 = tree.object;
if (object1 == null) return;
var contact = false;
#if lnx_physics
var rb1 = leenkx.trait.physics.PhysicsWorld.getCachedRigidBody(object1);
if (rb1 != null) {
var physics = leenkx.trait.physics.PhysicsWorld.active;
var rbs = physics.getContacts(rb1);
contact = (rbs != null && rbs.length > 0);
}
#end
var shouldTrigger = false;
switch (property0) {
case "begin":
shouldTrigger = contact && !lastContact;
case "overlap":
shouldTrigger = contact;
case "end":
shouldTrigger = !contact && lastContact;
}
lastContact = contact;
if (shouldTrigger) runOutput(0);
}
}