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.PhysicsCache.getCachedRigidBody(object1); if (rb1 != null) { var rbs = leenkx.trait.physics.PhysicsCache.getCachedContacts(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); } }