diff --git a/leenkx/Sources/iron/object/ObjectAnimation.hx b/leenkx/Sources/iron/object/ObjectAnimation.hx index db0b8387..3d9b49f5 100644 --- a/leenkx/Sources/iron/object/ObjectAnimation.hx +++ b/leenkx/Sources/iron/object/ObjectAnimation.hx @@ -55,10 +55,23 @@ class ObjectAnimation extends Animation { oaction = getAction(this.action); if (oaction != null) { isSampled = oaction.sampled != null && oaction.sampled; - setupDefaultSampler(onComplete, speed, loop); + if (defaultSampler != null) { + deRegisterAction(DEFAULT_SAMPLER_ID); + } + var callbacks = onComplete != null ? [onComplete] : null; + defaultSampler = new ActionSampler(this.action, speed, loop, false, callbacks); + registerAction(DEFAULT_SAMPLER_ID, defaultSampler); + if (paused) defaultSampler.paused = true; + updateAnimation = function(map: Map) { + sampleAction(defaultSampler, map); + }; } else { - clearDefaultSampler(); + if (defaultSampler != null) { + deRegisterAction(DEFAULT_SAMPLER_ID); + defaultSampler = null; + } + updateAnimation = null; } } @@ -73,6 +86,7 @@ class ObjectAnimation extends Animation { transformMap = initTransformMap(); super.update(delta); + if (defaultSampler != null) defaultSampler.paused = paused; if (paused) return; if (updateAnimation == null) return; if (!isSkinned) updateObjectAnimation(); @@ -103,39 +117,6 @@ class ObjectAnimation extends Animation { updateAnimation = f; } - function setupDefaultSampler(onComplete: Void->Void, speed: FastFloat, loop: Bool) { - if (defaultSampler != null) { - deRegisterAction(DEFAULT_SAMPLER_ID); - defaultSampler = null; - } - var onCompleteCallbacks:ArrayVoid> = null; - if (onComplete != null) onCompleteCallbacks = [onComplete]; - defaultSampler = new ActionSampler(this.action, speed, loop, false, onCompleteCallbacks); - registerAction(DEFAULT_SAMPLER_ID, defaultSampler); - if (paused) defaultSampler.paused = true; - updateAnimation = function(map: Map) { - sampleAction(defaultSampler, map); - }; - } - - function clearDefaultSampler() { - if (defaultSampler != null) { - deRegisterAction(DEFAULT_SAMPLER_ID); - defaultSampler = null; - } - updateAnimation = null; - } - - override public function pause() { - super.pause(); - if (defaultSampler != null) defaultSampler.paused = true; - } - - override public function resume() { - super.resume(); - if (defaultSampler != null) defaultSampler.paused = false; - } - function updateObjectAnimation() { updateAnimation(transformMap); updateTransform(transformMap, object.transform);