package leenkx.logicnode; import iron.object.Object; import iron.object.ObjectAnimation; #if lnx_skin import iron.object.BoneAnimation; #end import iron.Scene; class PlayAnimationTreeNode extends LogicNode { var object: Object; var action: Dynamic; var init: Bool = false; public function new(tree: LogicTree) { super(tree); } override function run(from: Int) { object = inputs[1].get(); action = inputs[2].get(); assert(Error, object != null, "The object input not be null"); init = true; tree.notifyOnUpdate(playAnim); // TO DO: Investigate AnimAction get and PlayAnimationTree notifiers } function playAnim() { if (init = false) return; init = false; tree.removeUpdate(playAnim); var animation = object.animation; if(animation == null) { #if lnx_skin animation = object.getBoneAnimation(object.uid); if (animation == null) { tree.notifyOnUpdate(playAnim); init = true; return; } cast(animation, BoneAnimation).setAnimationLoop(function f(mats) { action(mats); }); #end } else{ cast(animation, ObjectAnimation).animationLoop(function f(mats) { action(mats); }); } runOutput(0); } }