Просмотр исходного кода

[unity] Minor SkeletonAnimator and editor code cleanup.

pharan 8 лет назад
Родитель
Сommit
a2e3d999bc

+ 3 - 6
spine-unity/Assets/spine-unity/Editor/SkeletonAnimatorInspector.cs

@@ -36,19 +36,16 @@ namespace Spine.Unity.Editor {
 	[CustomEditor(typeof(SkeletonAnimator))]
 	[CanEditMultipleObjects]
 	public class SkeletonAnimatorInspector : SkeletonRendererInspector {
-		protected SerializedProperty layerMixModes;
-		protected SerializedProperty autoReset;
+		protected SerializedProperty mecanimTranslator;
 
 		protected override void OnEnable () {
 			base.OnEnable();
-			autoReset = serializedObject.FindProperty("autoReset");
-			layerMixModes = serializedObject.FindProperty("layerMixModes");
+			mecanimTranslator = serializedObject.FindProperty("mecanimTranslator");
 		}
 
 		protected override void DrawInspectorGUI (bool multi) {
 			base.DrawInspectorGUI(multi);
-			EditorGUILayout.PropertyField(autoReset);
-			EditorGUILayout.PropertyField(layerMixModes, true);
+			EditorGUILayout.PropertyField(mecanimTranslator, true);
 		}
 	}
 }

+ 0 - 29
spine-unity/Assets/spine-unity/Modules/Ragdoll/SkeletonRagdoll2D.cs

@@ -30,8 +30,6 @@
 
 // Contributed by: Mitch Thompson
 
-//#define FLIPDEBUG
-
 using UnityEngine;
 using System.Collections;
 using System.Collections.Generic;
@@ -42,14 +40,6 @@ namespace Spine.Unity.Modules {
 		static Transform parentSpaceHelper;
 
 		#region Inspector
-		#if FLIPDEBUG
-		[Header("DEBUG")]
-		public bool flipXInitially;
-		public bool flipYInitially;
-		public bool spawnKinematic;
-		public bool disableUpdateBones;
-		#endif
-
 		[Header("Hierarchy")]
 		[SpineBone]
 		public string startingBoneName = "";
@@ -94,20 +84,12 @@ namespace Spine.Unity.Modules {
 		IEnumerator Start () {
 			if (parentSpaceHelper == null) {
 				parentSpaceHelper = (new GameObject("Parent Space Helper")).transform;
-				#if !FLIPDEBUG
-				parentSpaceHelper.hideFlags = HideFlags.HideInHierarchy;
-				#endif
 			}
 
 			targetSkeletonComponent = GetComponent<SkeletonRenderer>() as ISkeletonAnimation;
 			if (targetSkeletonComponent == null) Debug.LogError("Attached Spine component does not implement ISkeletonAnimation. This script is not compatible.");
 			skeleton = targetSkeletonComponent.Skeleton;
 
-			#if FLIPDEBUG
-			skeleton.flipX = flipXInitially;
-			skeleton.flipY = flipYInitially;
-			#endif
-
 			if (applyOnStart) {
 				yield return null;
 				Apply();
@@ -144,9 +126,6 @@ namespace Spine.Unity.Modules {
 			RecursivelyCreateBoneProxies(startingBone);
 
 			RootRigidbody = boneTable[startingBone].GetComponent<Rigidbody2D>();
-			#if FLIPDEBUG
-			if (!RootRigidbody.isKinematic)
-			#endif
 			RootRigidbody.isKinematic = pinStartBone;
 			RootRigidbody.mass = rootMass;
 			var boneColliders = new List<Collider2D>();
@@ -324,20 +303,12 @@ namespace Spine.Unity.Modules {
 			var rb = boneGameObject.AddComponent<Rigidbody2D>();
 			rb.gravityScale = this.gravityScale;
 
-			#if FLIPDEBUG
-			rb.isKinematic = spawnKinematic;
-			#endif
-
 			foreach (Bone child in b.Children)
 				RecursivelyCreateBoneProxies(child);
 		}
 
 		/// <summary>Performed every skeleton animation update to translate Unity Transforms positions into Spine bone transforms.</summary>
 		void UpdateSpineSkeleton (ISkeletonAnimation animatedSkeleton) {
-			#if FLIPDEBUG
-			if (disableUpdateBones) return;
-			#endif
-
 			bool flipX = skeleton.flipX;
 			bool flipY = skeleton.flipY;
 			bool flipXOR = flipX ^ flipY;

+ 25 - 17
spine-unity/Assets/spine-unity/SkeletonAnimator.cs

@@ -37,9 +37,6 @@ namespace Spine.Unity {
 	[RequireComponent(typeof(Animator))]
 	public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation {
 
-		public enum MixMode { AlwaysMix, MixNext, SpineStyle }
-		public MixMode[] layerMixModes = new MixMode[0];
-
 		#region Bone Callbacks (ISkeletonAnimation)
 		protected event UpdateBonesDelegate _UpdateLocal;
 		protected event UpdateBonesDelegate _UpdateWorld;
@@ -63,29 +60,40 @@ namespace Spine.Unity {
 		public event UpdateBonesDelegate UpdateComplete { add { _UpdateComplete += value; } remove { _UpdateComplete -= value; } }
 		#endregion
 
-		public class SpineMecanimTranslator {
+		public bool AutoReset {
+			get { return mecanimTranslator.autoReset; }
+			set { mecanimTranslator.autoReset = value; }
+		}
+
+		[System.Serializable]
+		public class MecanimTranslator {
+			#region Inspector
+			public bool autoReset = true;
+			public MixMode[] layerMixModes = new MixMode[0];
+			#endregion
+
+			public enum MixMode { AlwaysMix, MixNext, SpineStyle }
+
 			readonly Dictionary<int, Spine.Animation> animationTable = new Dictionary<int, Spine.Animation>();
 			readonly Dictionary<AnimationClip, int> clipNameHashCodeTable = new Dictionary<AnimationClip, int>();
+			readonly List<Animation> previousAnimations = new List<Animation>();
 			Animator animator;
 
-			List<Animation> previousAnimations = new List<Animation>();
-			public bool autoReset = true;
-
 			public void Initialize (Animator animator, SkeletonDataAsset skeletonDataAsset) {
 				this.animator = animator;
 				animationTable.Clear();
 				clipNameHashCodeTable.Clear();
 				var data = skeletonDataAsset.GetSkeletonData(true);
 				foreach (var a in data.Animations)
-					animationTable.Add(a.Name.GetHashCode(), a);	
+					animationTable.Add(a.Name.GetHashCode(), a);
 			}
 
-			public void Apply (Skeleton skeleton, ref MixMode[] layerMixModes) {
+			public void Apply (Skeleton skeleton) {
 
 				if (layerMixModes.Length < animator.layerCount)
 					System.Array.Resize<MixMode>(ref layerMixModes, animator.layerCount);
 				
-				//skeleton.Update(Time.deltaTime); // Doesn't actually do anything, currently. (Spine 3.5).
+				//skeleton.Update(Time.deltaTime); // Doesn't actually do anything, currently. (Spine 3.6).
 
 				// Clear Previous
 				if (autoReset) {
@@ -138,7 +146,7 @@ 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.speed <0), stateInfo.loop, null, weight, MixPose.Current, MixDirection.In);
+							animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop, stateInfo.speed < 0), stateInfo.loop, null, weight, MixPose.Current, MixDirection.In);
 						}
 						if (hasNext) {
 							for (int c = 0; c < nextClipInfo.Length; c++) {
@@ -151,13 +159,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.speed <0), stateInfo.loop, null, 1f, MixPose.Current, MixDirection.In);
+							animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop, stateInfo.speed < 0), stateInfo.loop, null, 1f, MixPose.Current, MixDirection.In);
 							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.speed <0), stateInfo.loop, null, weight, MixPose.Current, MixDirection.In);
+							animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop, stateInfo.speed < 0), stateInfo.loop, null, weight, MixPose.Current, MixDirection.In);
 						}
 
 						c = 0;
@@ -206,21 +214,21 @@ namespace Spine.Unity {
 			}
 		}
 
-		public SpineMecanimTranslator translator;
+		public MecanimTranslator mecanimTranslator;
 
 		public override void Initialize (bool overwrite) {
 			if (valid && !overwrite) return;
 			base.Initialize(overwrite);
 			if (!valid) return;
 
-			translator = new SpineMecanimTranslator();
-			translator.Initialize(GetComponent<Animator>(), this.skeletonDataAsset);
+			mecanimTranslator = mecanimTranslator ?? new MecanimTranslator();
+			mecanimTranslator.Initialize(GetComponent<Animator>(), this.skeletonDataAsset);
 		}
 
 		public void Update () {
 			if (!valid) return;
 
-			translator.Apply(skeleton, ref layerMixModes);
+			mecanimTranslator.Apply(skeleton);
 
 			// UpdateWorldTransform and Bone Callbacks
 			{