|
@@ -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
|
|
|
}
|
|
|
}
|