Update Files
This commit is contained in:
52
leenkx/Sources/leenkx/logicnode/OnVolumeTriggerNode.hx
Normal file
52
leenkx/Sources/leenkx/logicnode/OnVolumeTriggerNode.hx
Normal file
@ -0,0 +1,52 @@
|
||||
package leenkx.logicnode;
|
||||
|
||||
import iron.object.Object;
|
||||
import iron.math.Vec4;
|
||||
|
||||
class OnVolumeTriggerNode extends LogicNode {
|
||||
|
||||
public var property0: String;
|
||||
var lastOverlap = false;
|
||||
|
||||
var l1 = new Vec4();
|
||||
var l2 = new Vec4();
|
||||
|
||||
public function new(tree: LogicTree) {
|
||||
super(tree);
|
||||
|
||||
tree.notifyOnUpdate(update);
|
||||
}
|
||||
|
||||
function update() {
|
||||
var object: Object = inputs[0].get();
|
||||
var volume: Object = inputs[1].get();
|
||||
|
||||
if (object == null) return;
|
||||
if (volume == null) volume = tree.object;
|
||||
|
||||
var t1 = object.transform;
|
||||
var t2 = volume.transform;
|
||||
l1.set(t1.worldx(), t1.worldy(), t1.worldz());
|
||||
l2.set(t2.worldx(), t2.worldy(), t2.worldz());
|
||||
var d1 = t1.dim;
|
||||
var d2 = t2.dim;
|
||||
|
||||
var overlap = l1.x + d1.x / 2 > l2.x - d2.x / 2 && l1.x - d1.x / 2 < l2.x + d2.x / 2 &&
|
||||
l1.y + d1.y / 2 > l2.y - d2.y / 2 && l1.y - d1.y / 2 < l2.y + d2.y / 2 &&
|
||||
l1.z + d1.z / 2 > l2.z - d2.z / 2 && l1.z - d1.z / 2 < l2.z + d2.z / 2;
|
||||
|
||||
var b = false;
|
||||
switch (property0) {
|
||||
case "begin":
|
||||
b = overlap && !lastOverlap;
|
||||
case "overlap":
|
||||
b = overlap;
|
||||
case "end":
|
||||
b = !overlap && lastOverlap;
|
||||
}
|
||||
|
||||
lastOverlap = overlap;
|
||||
|
||||
if (b) runOutput(0);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user