From dcbd87d90a2e1747cfc9e1738c01c1a123e1cd36 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Thu, 13 Jun 2013 20:00:25 +0200 Subject: [PATCH] Added defaultMix to AnimationStateData. --- spine-as3/spine-as3/src/spine/AnimationStateData.as | 3 ++- spine-c/include/spine/AnimationStateData.h | 1 + spine-c/src/spine/AnimationStateData.c | 2 +- spine-csharp/src/AnimationStateData.cs | 5 +++-- spine-js/spine.js | 3 ++- .../esotericsoftware/spine/AnimationStateData.java | 11 ++++++++++- 6 files changed, 19 insertions(+), 6 deletions(-) diff --git a/spine-as3/spine-as3/src/spine/AnimationStateData.as b/spine-as3/spine-as3/src/spine/AnimationStateData.as index 0f2261067..fce61ae39 100644 --- a/spine-as3/spine-as3/src/spine/AnimationStateData.as +++ b/spine-as3/spine-as3/src/spine/AnimationStateData.as @@ -4,6 +4,7 @@ import spine.animation.Animation; public class AnimationStateData { private var _skeletonData:SkeletonData; private var animationToMixTime:Object = new Object(); + public var defaultMix:Number; public function AnimationStateData (skeletonData:SkeletonData) { _skeletonData = skeletonData; @@ -34,7 +35,7 @@ public class AnimationStateData { public function getMix (from:Animation, to:Animation) : Number { var time:Object = animationToMixTime[from.name + ":" + to.name]; if (time == null) - return 0; + return defaultMix; return time as Number; } } diff --git a/spine-c/include/spine/AnimationStateData.h b/spine-c/include/spine/AnimationStateData.h index bcd33a705..b8fcbce4d 100644 --- a/spine-c/include/spine/AnimationStateData.h +++ b/spine-c/include/spine/AnimationStateData.h @@ -35,6 +35,7 @@ extern "C" { typedef struct { SkeletonData* const skeletonData; + float defaultMix; const void* const entries; } AnimationStateData; diff --git a/spine-c/src/spine/AnimationStateData.c b/spine-c/src/spine/AnimationStateData.c index 06c019fcb..7da261577 100644 --- a/spine-c/src/spine/AnimationStateData.c +++ b/spine-c/src/spine/AnimationStateData.c @@ -142,5 +142,5 @@ float AnimationStateData_getMix (AnimationStateData* self, Animation* from, Anim } fromEntry = fromEntry->next; } - return 0; + return self->defaultMix; } diff --git a/spine-csharp/src/AnimationStateData.cs b/spine-csharp/src/AnimationStateData.cs index 571e9fc08..93532ffc1 100644 --- a/spine-csharp/src/AnimationStateData.cs +++ b/spine-csharp/src/AnimationStateData.cs @@ -30,6 +30,7 @@ namespace Spine { public class AnimationStateData { public SkeletonData SkeletonData { get; private set; } private Dictionary, float> animationToMixTime = new Dictionary, float>(); + public float defaultMix { get; set; } public AnimationStateData (SkeletonData skeletonData) { SkeletonData = skeletonData; @@ -54,8 +55,8 @@ namespace Spine { public float GetMix (Animation from, Animation to) { KeyValuePair key = new KeyValuePair(from, to); float duration; - animationToMixTime.TryGetValue(key, out duration); - return duration; + if (animationToMixTime.TryGetValue(key, out duration)) return duration; + return defaultMix; } } } diff --git a/spine-js/spine.js b/spine-js/spine.js index 956bd5282..388836a30 100644 --- a/spine-js/spine.js +++ b/spine-js/spine.js @@ -750,6 +750,7 @@ spine.AnimationStateData = function (skeletonData) { this.animationToMixTime = {}; }; spine.AnimationStateData.prototype = { + defaultMix: 0, setMixByName: function (fromName, toName, duration) { var from = this.skeletonData.findAnimation(fromName); if (!from) throw "Animation not found: " + fromName; @@ -762,7 +763,7 @@ spine.AnimationStateData.prototype = { }, getMix: function (from, to) { var time = this.animationToMixTime[from.name + ":" + to.name]; - return time ? time : 0; + return time ? time : this.defaultMix; } }; diff --git a/spine-libgdx/src/com/esotericsoftware/spine/AnimationStateData.java b/spine-libgdx/src/com/esotericsoftware/spine/AnimationStateData.java index 55a169ab6..31a3a68e9 100644 --- a/spine-libgdx/src/com/esotericsoftware/spine/AnimationStateData.java +++ b/spine-libgdx/src/com/esotericsoftware/spine/AnimationStateData.java @@ -32,6 +32,7 @@ public class AnimationStateData { private final SkeletonData skeletonData; final ObjectFloatMap animationToMixTime = new ObjectFloatMap(); final Key tempKey = new Key(); + float defaultMix; public AnimationStateData (SkeletonData skeletonData) { this.skeletonData = skeletonData; @@ -62,10 +63,18 @@ public class AnimationStateData { tempKey.a1 = from; tempKey.a2 = to; float time = animationToMixTime.get(tempKey, Float.MIN_VALUE); - if (time == Float.MIN_VALUE) return 0; + if (time == Float.MIN_VALUE) return defaultMix; return time; } + public float getDefaultMix () { + return defaultMix; + } + + public void setDefaultMix (float defaultMix) { + this.defaultMix = defaultMix; + } + static class Key { Animation a1, a2;