diff --git a/leenkx/Sources/leenkx/logicnode/PlayAnimationTreeNode.hx b/leenkx/Sources/leenkx/logicnode/PlayAnimationTreeNode.hx index 8a1d236..27c17e4 100644 --- a/leenkx/Sources/leenkx/logicnode/PlayAnimationTreeNode.hx +++ b/leenkx/Sources/leenkx/logicnode/PlayAnimationTreeNode.hx @@ -9,19 +9,38 @@ 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) { - var object: Object = inputs[1].get(); - var action: Dynamic = inputs[2].get(); - + 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); }); @@ -32,7 +51,6 @@ class PlayAnimationTreeNode extends LogicNode { action(mats); }); } - runOutput(0); } }