47 lines
994 B
Haxe
47 lines
994 B
Haxe
package leenkx.logicnode;
|
|
|
|
import iron.object.Object;
|
|
#if lnx_bullet
|
|
import leenkx.trait.physics.bullet.PhysicsHook;
|
|
#end
|
|
|
|
class AddPhysicsHookNode extends LogicNode {
|
|
|
|
public function new(tree: LogicTree) {
|
|
super(tree);
|
|
}
|
|
|
|
override function run(from: Int) {
|
|
var obj: Object = inputs[1].get();
|
|
var target: Object = inputs[2].get();
|
|
var inputVerts: Dynamic = inputs[3].get();
|
|
|
|
var flattenedVerts: Array<Float> = [];
|
|
|
|
if (Std.isOfType(inputVerts, Array)) {
|
|
var vArray: Array<Dynamic> = cast inputVerts;
|
|
for (v in vArray) {
|
|
if (v.x != null) {
|
|
flattenedVerts.push(v.x);
|
|
flattenedVerts.push(v.y);
|
|
flattenedVerts.push(v.z);
|
|
}
|
|
else if (v[0] != null) {
|
|
flattenedVerts.push(v[0]);
|
|
flattenedVerts.push(v[1]);
|
|
flattenedVerts.push(v[2]);
|
|
}
|
|
}
|
|
}
|
|
|
|
#if lnx_bullet
|
|
var hook = obj.getTrait(PhysicsHook);
|
|
if (hook == null) {
|
|
hook = new PhysicsHook(target.name, flattenedVerts);
|
|
obj.addTrait(hook);
|
|
}
|
|
#end
|
|
runOutput(0);
|
|
}
|
|
}
|