armory/Sources/armory/logicnode/CallFunctionNode.hx
Zicklag f00b72836b Add Functions and Function Calls to Logic Nodes
* Renamed Call Haxe node to Call Function because it will now be able
to call node functions as well.
 * Added ability to pass arguments to the Call Function node.
 * Created Function and Function output nodes that allow you to create
functions in node trees. Node functions can be called from other nodes
and from Haxe.
2018-11-04 09:00:38 -06:00

35 lines
633 B
Haxe

package armory.logicnode;
import iron.object.Object;
class CallFunctionNode extends LogicNode {
var result:Dynamic;
public function new(tree:LogicTree) {
super(tree);
}
override function run(from:Int) {
var object:Object = inputs[1].get();
if (object == null) return;
var funName:String = inputs[2].get();
var args:Array<Dynamic> = [];
for (i in 3...inputs.length) {
args.push(inputs[i].get());
}
var func = Reflect.field(object, funName);
if (func != null)
result = Reflect.callMethod(object, func, args);
runOutput(0);
}
override function get(from:Int):Dynamic {
return result;
}
}