Bladeren bron

[unity] Timeline: Added editor warning when SpineAnimationStateTrack 'Track Index' is identical to target 'Track Index' of other track.

Harald Csaszar 3 jaren geleden
bovenliggende
commit
7db783c660

+ 30 - 0
spine-unity/Modules/com.esotericsoftware.spine.timeline/Runtime/SpineAnimationState/SpineAnimationStateTrack.cs

@@ -48,9 +48,39 @@ namespace Spine.Unity.Playables {
 			}
 
 			var scriptPlayable = ScriptPlayable<SpineAnimationStateMixerBehaviour>.Create(graph, inputCount);
+#if UNITY_EDITOR
+			WarnIfDuplicateTrackIndex();
+#endif
 			var mixerBehaviour = scriptPlayable.GetBehaviour();
 			mixerBehaviour.trackIndex = this.trackIndex;
 			return scriptPlayable;
 		}
+
+#if UNITY_EDITOR
+		static float lastWarningTime = 0;
+
+		public void WarnIfDuplicateTrackIndex () {
+			if (Time.frameCount == lastWarningTime) // only warn once.
+				return;
+			lastWarningTime = Time.frameCount;
+
+			var rootTracks = timelineAsset.GetRootTracks();
+			List<int> trackIndices = new List<int>();
+			int trackFromTop = -1; // first invisible track is marker track, skipped.
+			foreach (var track in rootTracks) {
+				++trackFromTop;
+				if (track.GetType() != typeof(SpineAnimationStateTrack))
+					continue;
+				var animationStateTrack = (SpineAnimationStateTrack)track;
+				int trackIndex = animationStateTrack.trackIndex;
+				if (trackIndices.Contains(trackIndex)) {
+					Debug.LogWarning(string.Format("Please change the 'Track Index' Inspector property " +
+						"at Track number {0} from the top, both tracks are setting animations at track index '{1}'.",
+						trackFromTop, trackIndex));
+				} else
+					trackIndices.Add(trackIndex);
+			}
+		}
+#endif
 	}
 }

+ 1 - 1
spine-unity/Modules/com.esotericsoftware.spine.timeline/package-no-spine-unity-dependency.json

@@ -2,7 +2,7 @@
 	"name": "com.esotericsoftware.spine.timeline",
 	"displayName": "Spine Timeline Extensions",
 	"description": "This plugin provides integration of spine-unity for the Unity Timeline.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime (via the spine-unity unitypackage), version 4.0.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)",
-	"version": "4.0.7",
+	"version": "4.0.8",
 	"unity": "2018.3",
 	"author": {
 		"name": "Esoteric Software",

+ 1 - 1
spine-unity/Modules/com.esotericsoftware.spine.timeline/package.json

@@ -2,7 +2,7 @@
 	"name": "com.esotericsoftware.spine.timeline",
 	"displayName": "Spine Timeline Extensions",
 	"description": "This plugin provides integration of spine-unity for the Unity Timeline.\n\nPrerequisites:\nIt requires a working installation of the spine-unity and spine-csharp runtimes as UPM packages (not as spine-unity unitypackage), version 4.0.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)",
-	"version": "4.0.7",
+	"version": "4.0.8",
 	"unity": "2018.3",
 	"author": {
 		"name": "Esoteric Software",