From 5b54167005ee65107aad191634015404492aa305 Mon Sep 17 00:00:00 2001 From: Hj Date: Sat, 20 May 2017 10:06:32 +0800 Subject: [PATCH 1/5] [Unity] Allow negative Animator state speed (#889) --- .../Assets/spine-unity/SkeletonAnimator.cs | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/spine-unity/Assets/spine-unity/SkeletonAnimator.cs b/spine-unity/Assets/spine-unity/SkeletonAnimator.cs index 05e6359d6..695c63238 100644 --- a/spine-unity/Assets/spine-unity/SkeletonAnimator.cs +++ b/spine-unity/Assets/spine-unity/SkeletonAnimator.cs @@ -142,12 +142,12 @@ namespace Spine.Unity { // Always use Mix instead of Applying the first non-zero weighted clip. for (int c = 0; c < clipInfo.Length; c++) { var info = clipInfo[c]; float weight = info.weight * layerWeight; if (weight == 0) continue; - animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop), stateInfo.loop, null, weight, false, false); + animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop, stateInfo.speed <0), stateInfo.loop, null, weight, false, false); } if (hasNext) { for (int c = 0; c < nextClipInfo.Length; c++) { var info = nextClipInfo[c]; float weight = info.weight * layerWeight; if (weight == 0) continue; - animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, nextStateInfo.normalizedTime * info.clip.length, nextStateInfo.loop, null, weight, false, false); + animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(nextStateInfo.normalizedTime , info.clip.length,nextStateInfo.speed < 0), nextStateInfo.loop, null, weight, false, false); } } } else { // case MixNext || SpineStyle @@ -155,13 +155,13 @@ namespace Spine.Unity { int c = 0; for (; c < clipInfo.Length; c++) { var info = clipInfo[c]; float weight = info.weight * layerWeight; if (weight == 0) continue; - animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop), stateInfo.loop, null, 1f, false, false); + animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop, stateInfo.speed <0), stateInfo.loop, null, 1f, false, false); break; } // Mix the rest for (; c < clipInfo.Length; c++) { var info = clipInfo[c]; float weight = info.weight * layerWeight; if (weight == 0) continue; - animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop), stateInfo.loop, null, weight, false, false); + animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop, stateInfo.speed <0), stateInfo.loop, null, weight, false, false); } c = 0; @@ -170,14 +170,14 @@ namespace Spine.Unity { if (mode == MixMode.SpineStyle) { for (; c < nextClipInfo.Length; c++) { var info = nextClipInfo[c]; float weight = info.weight * layerWeight; if (weight == 0) continue; - animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, nextStateInfo.normalizedTime * info.clip.length, nextStateInfo.loop, null, 1f, false, false); + animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(nextStateInfo.normalizedTime , info.clip.length,nextStateInfo.speed < 0), nextStateInfo.loop, null, 1f, false, false); break; } } // Mix the rest for (; c < nextClipInfo.Length; c++) { var info = nextClipInfo[c]; float weight = info.weight * layerWeight; if (weight == 0) continue; - animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, nextStateInfo.normalizedTime * info.clip.length, nextStateInfo.loop, null, weight, false, false); + animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(nextStateInfo.normalizedTime , info.clip.length,nextStateInfo.speed < 0), nextStateInfo.loop, null, weight, false, false); } } } @@ -200,13 +200,24 @@ namespace Spine.Unity { } } - static float AnimationTime (float normalizedTime, float clipLength, bool loop) { + static float AnimationTime (float normalizedTime, float clipLength, bool loop, bool reversed) { + if(reversed){ + normalizedTime = (1-normalizedTime+(int)normalizedTime) + (int)normalizedTime; + } float time = normalizedTime * clipLength; if (loop) return time; const float EndSnapEpsilon = 1f/30f; // Workaround for end-duration keys not being applied. return (clipLength - time < EndSnapEpsilon) ? clipLength : time; // return a time snapped to clipLength; } + static float AnimationTime(float normalizedTime, float clipLength, bool reversed) { + if(reversed){ + normalizedTime = (1-normalizedTime+(int)normalizedTime) + (int)normalizedTime; + } + + return normalizedTime * clipLength; + } + int NameHashCode (AnimationClip clip) { int clipNameHashCode; if (!clipNameHashCodeTable.TryGetValue(clip, out clipNameHashCode)) { From 06c2482dcd89430bde5f8a4c061f2a3756e9d61e Mon Sep 17 00:00:00 2001 From: John Date: Sat, 20 May 2017 10:24:00 +0800 Subject: [PATCH 2/5] [unity] Formatting (#889) --- .../Assets/spine-unity/SkeletonAnimator.cs | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/spine-unity/Assets/spine-unity/SkeletonAnimator.cs b/spine-unity/Assets/spine-unity/SkeletonAnimator.cs index 695c63238..135f92f58 100644 --- a/spine-unity/Assets/spine-unity/SkeletonAnimator.cs +++ b/spine-unity/Assets/spine-unity/SkeletonAnimator.cs @@ -88,7 +88,7 @@ namespace Spine.Unity { if (layerMixModes.Length < animator.layerCount) System.Array.Resize(ref layerMixModes, animator.layerCount); - + //skeleton.Update(Time.deltaTime); // Doesn't actually do anything, currently. (Spine 3.5). // Clear Previous @@ -132,10 +132,10 @@ namespace Spine.Unity { bool hasNext = nextStateInfo.fullPathHash != 0; AnimatorClipInfo[] clipInfo = animator.GetCurrentAnimatorClipInfo(layer); AnimatorClipInfo[] nextClipInfo = animator.GetNextAnimatorClipInfo(layer); -// UNITY 4 -// bool hasNext = nextStateInfo.nameHash != 0; -// var clipInfo = animator.GetCurrentAnimationClipState(i); -// var nextClipInfo = animator.GetNextAnimationClipState(i); + //UNITY 4 + //bool hasNext = nextStateInfo.nameHash != 0; + //var clipInfo = animator.GetCurrentAnimationClipState(i); + //var nextClipInfo = animator.GetNextAnimationClipState(i); MixMode mode = layerMixModes[layer]; if (mode == MixMode.AlwaysMix) { @@ -201,19 +201,17 @@ namespace Spine.Unity { } static float AnimationTime (float normalizedTime, float clipLength, bool loop, bool reversed) { - if(reversed){ - normalizedTime = (1-normalizedTime+(int)normalizedTime) + (int)normalizedTime; - } + if (reversed) + normalizedTime = (1-normalizedTime + (int)normalizedTime) + (int)normalizedTime; float time = normalizedTime * clipLength; if (loop) return time; const float EndSnapEpsilon = 1f/30f; // Workaround for end-duration keys not being applied. return (clipLength - time < EndSnapEpsilon) ? clipLength : time; // return a time snapped to clipLength; } - static float AnimationTime(float normalizedTime, float clipLength, bool reversed) { - if(reversed){ - normalizedTime = (1-normalizedTime+(int)normalizedTime) + (int)normalizedTime; - } + static float AnimationTime (float normalizedTime, float clipLength, bool reversed) { + if (reversed) + normalizedTime = (1-normalizedTime + (int)normalizedTime) + (int)normalizedTime; return normalizedTime * clipLength; } From 6ccde168c7e8518485a5217e355e63c7e8fc49f5 Mon Sep 17 00:00:00 2001 From: badlogic Date: Wed, 24 May 2017 11:18:52 +0200 Subject: [PATCH 3/5] [ue4] Fixed inheritance of include paths, looks like this changed in 4.15.2 --- .../Source/SpineEditorPlugin/SpineEditorPlugin.Build.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpineEditorPlugin/SpineEditorPlugin.Build.cs b/spine-ue4/Plugins/SpinePlugin/Source/SpineEditorPlugin/SpineEditorPlugin.Build.cs index c8aaba35c..25a37d1cb 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpineEditorPlugin/SpineEditorPlugin.Build.cs +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpineEditorPlugin/SpineEditorPlugin.Build.cs @@ -6,9 +6,9 @@ namespace UnrealBuildTool.Rules { public SpineEditorPlugin(TargetInfo Target) { - PublicIncludePaths.AddRange(new string[] { "SpineEditorPlugin/Public" }); + PublicIncludePaths.AddRange(new string[] { "SpineEditorPlugin/Public", "SpinePlugin/Public/spine-c/include" }); - PrivateIncludePaths.AddRange(new string[] { "SpineEditorPlugin/Private" }); + PrivateIncludePaths.AddRange(new string[] { "SpineEditorPlugin/Private", "SpinePlugin/Public/spine-c/include" }); PublicDependencyModuleNames.AddRange(new string[] { "Core", From 39ac179cdb4da50dfb2b64f9c59b6157028767c9 Mon Sep 17 00:00:00 2001 From: badlogic Date: Wed, 24 May 2017 11:19:41 +0200 Subject: [PATCH 4/5] [ue4] Fixed camera position in sample 4 --- .../GettingStarted/04-basic-controls.umap | Bin 51217 -> 50868 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/spine-ue4/Content/GettingStarted/04-basic-controls.umap b/spine-ue4/Content/GettingStarted/04-basic-controls.umap index a3c1a472059824b5ecba9ee1292802863a75e6d7..d6149b0999ea876cecb9ee51d3106f2b0809ad4a 100644 GIT binary patch literal 50868 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 literal 51217 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 Date: Wed, 24 May 2017 11:22:05 +0200 Subject: [PATCH 5/5] Excluded new VS2017 file --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 6a3a7bfdb..b9ae2be71 100644 --- a/.gitignore +++ b/.gitignore @@ -113,3 +113,4 @@ spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/spine-c spine-ue4/Plugins/SpinePlugin/Binaries spine-ue4/SpineUE4.VC.opendb spine-ue4/SpineUE4.sln +spine-ue4/SpineUE4.VC.db