Hi with latest 3.7.30 and latest beta runtime we get this error.
(Filename: Assets/Git/Spine/Runtime/spine-csharp/src/AnimationState.cs Line: 203)
IndexOutOfRangeException: Index was outside the bounds of the array.
at Spine.AnimationState.Apply (Spine.Skeleton skeleton) [0x001be] in /Volumes/OSX/Projects/Unity/TypingFingers/Assets/Git/Spine/Runtime/spine-csharp/src/AnimationState.cs:203
at Spine.Unity.SkeletonAnimation.Update (System.Single deltaTime) [0x0003f] in /Volumes/OSX/Projects/Unity/TypingFingers/Assets/Git/Spine/Runtime/spine-unity/Components/SkeletonAnimation.cs:191
at Spine.Unity.SkeletonAnimation.Update () [0x00007] in /Volumes/OSX/Projects/Unity/TypingFingers/Assets/Git/Spine/Runtime/spine-unity/Components/SkeletonAnimation.cs:180
This line. MixBlend timelineBlend = timelineMode[ii] >= AnimationState.Subsequent ? blend : MixBlend.Setup;
Just tried latest runtime repository and all works again. Thank you.
Taking back... with more further app testing we have found that the infinite mix cycle happened again. :-(
So for some reason seems like animation is null. So this code will fail.
static bool HasTimeline (TrackEntry entry, int id) {
var timelines = entry.animation.timelines.Items;
for (int i = 0, n = entry.animation.timelines.Count; i < n; i++)
if (timelines[i].PropertyId == id) return true;
return false;
}
I tried this and get ANIMATION NULL.
static bool HasTimeline (TrackEntry entry, int id) {
if (entry == null) UnityEngine.Debug.LogError("ENTRY NULL");
if (entry.animation == null) UnityEngine.Debug.LogError("ANIMATION NULL");
if (entry.animation.timelines == null) UnityEngine.Debug.LogError("TIMELINE NULL");
if (entry.animation.timelines.Items == null) UnityEngine.Debug.LogError("ITEMS NULL");
var timelines = entry.animation.timelines.Items;
for (int i = 0, n = entry.animation.timelines.Count; i < n; i++)
if (timelines[i].PropertyId == id) return true;
return false;
}
Pharan, is this solution for this issue?
static bool HasTimeline (TrackEntry entry, int id) {
if (entry == null) return false;
if (entry.animation == null) return false;
if (entry.animation.timelines == null) return false;
if (entry.animation.timelines.Items == null) return false;
var timelines = entry.animation.timelines.Items;
for (int i = 0, n = entry.animation.timelines.Count; i < n; i++)
if (timelines[i].PropertyId == id) return true;
return false;
}
I tried but seems like there is other code with similar issues. :-(