From 3f02095e00a2bddcc6e4d98725490ca77718b9a1 Mon Sep 17 00:00:00 2001 From: Kostas Chatzikokolakis Date: Tue, 22 Jan 2019 21:32:00 +0200 Subject: [PATCH] Add option to delay overwrite until tween initialization --- src/motion/Actuate.hx | 33 +++++++++++++++++++------ src/motion/actuators/GenericActuator.hx | 2 ++ src/motion/actuators/SimpleActuator.hx | 6 +++++ 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/motion/Actuate.hx b/src/motion/Actuate.hx index 79c7587..a2e5106 100644 --- a/src/motion/Actuate.hx +++ b/src/motion/Actuate.hx @@ -23,6 +23,7 @@ class Actuate { public static var defaultActuator:Class = SimpleActuator; public static var defaultEase:IEasing = Expo.easeOut; + public static var delayOverwrite = false; private static var targetLibraries = new ObjectMap> (); #if neko private static var methodLibraries = new FunctionMap> (); @@ -415,21 +416,22 @@ class Actuate { var actuator:GenericActuator = Type.createInstance (customActuator, [ target, duration, properties ]); var library = getLibrary (actuator.target); + library.push (actuator); if (overwrite) { - var i = library.length - 1; - - while (i >= 0) { - library[i].stop (actuator.properties, false, false); - i--; + if (delayOverwrite) { + + actuator.delayOverwrite = true; + + } else { + + doOverwrite (actuator); + } - library = getLibrary (actuator.target); - } - library.push (actuator); actuator.move (); return actuator; @@ -446,6 +448,21 @@ class Actuate { } + + @:allow(motion.actuators) + private static function doOverwrite (actuator:GenericActuator):Void { + + // only overwrite actuators created earlier than ours + var library = getLibrary (actuator.target); + var i = library.indexOf (actuator) - 1; + + while (i >= 0) { + library[i].stop (actuator.properties, false, false); + i--; + } + + } + /*@:generic*/ public static function unload (actuator:GenericActuator):Void { diff --git a/src/motion/actuators/GenericActuator.hx b/src/motion/actuators/GenericActuator.hx index cae064b..c0b5755 100644 --- a/src/motion/actuators/GenericActuator.hx +++ b/src/motion/actuators/GenericActuator.hx @@ -33,6 +33,7 @@ class GenericActuator implements IGenericActuator { private var _smartRotation:Bool; private var _snapping:Bool; private var special:Bool; + private var delayOverwrite:Bool; public function new (target:T, duration:Float, properties:Dynamic) { @@ -45,6 +46,7 @@ class GenericActuator implements IGenericActuator { _smartRotation = false; _snapping = false; special = false; + delayOverwrite = false; this.target = target; this.properties = properties; diff --git a/src/motion/actuators/SimpleActuator.hx b/src/motion/actuators/SimpleActuator.hx index e6ae0f9..ae73a06 100644 --- a/src/motion/actuators/SimpleActuator.hx +++ b/src/motion/actuators/SimpleActuator.hx @@ -222,6 +222,12 @@ class SimpleActuator extends GenericActuator { var details:PropertyDetails; var start:Dynamic; + + if (delayOverwrite) { + + Actuate.doOverwrite (this); + + } for (i in Reflect.fields (properties)) {