mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-22 02:06:03 +08:00
[unity] Fixed Unity Timeline editor errors after Add Spine Animation State Clip Clip due to unset Animation Reference. Closes #1257.
This commit is contained in:
parent
04e2dd835d
commit
1935d4a488
@ -138,16 +138,16 @@ namespace Spine.Unity.Playables {
|
|||||||
if (lastOneWeight != 0 && inputCount > 1) {
|
if (lastOneWeight != 0 && inputCount > 1) {
|
||||||
var fromClip = (ScriptPlayable<SpineAnimationStateBehaviour>)playable.GetInput(lastOneWeight - 1);
|
var fromClip = (ScriptPlayable<SpineAnimationStateBehaviour>)playable.GetInput(lastOneWeight - 1);
|
||||||
var fromClipData = fromClip.GetBehaviour();
|
var fromClipData = fromClip.GetBehaviour();
|
||||||
fromAnimation = fromClipData.animationReference.Animation;
|
fromAnimation = fromClipData.animationReference != null ? fromClipData.animationReference.Animation : null;
|
||||||
fromClipTime = (float)fromClip.GetTime();
|
fromClipTime = (float)fromClip.GetTime();
|
||||||
fromClipLoop = fromClipData.loop;
|
fromClipLoop = fromClipData.loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
Animation toAnimation = clipData.animationReference.Animation;
|
Animation toAnimation = clipData.animationReference != null ? clipData.animationReference.Animation : null;
|
||||||
float toClipTime = (float)inputPlayableClip.GetTime();
|
float toClipTime = (float)inputPlayableClip.GetTime();
|
||||||
float mixDuration = clipData.mixDuration;
|
float mixDuration = clipData.mixDuration;
|
||||||
|
|
||||||
if (!clipData.customDuration && fromAnimation != null) {
|
if (!clipData.customDuration && fromAnimation != null && toAnimation != null) {
|
||||||
mixDuration = spineComponent.AnimationState.Data.GetMix(fromAnimation, toAnimation);
|
mixDuration = spineComponent.AnimationState.Data.GetMix(fromAnimation, toAnimation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -163,13 +163,16 @@ namespace Spine.Unity.Playables {
|
|||||||
dummyAnimationState.ClearTracks();
|
dummyAnimationState.ClearTracks();
|
||||||
fromTrack = dummyAnimationState.SetAnimation(0, fromAnimation, fromClipLoop);
|
fromTrack = dummyAnimationState.SetAnimation(0, fromAnimation, fromClipLoop);
|
||||||
fromTrack.AllowImmediateQueue();
|
fromTrack.AllowImmediateQueue();
|
||||||
toTrack = dummyAnimationState.SetAnimation(0, toAnimation, clipData.loop);
|
if (toAnimation != null)
|
||||||
|
toTrack = dummyAnimationState.SetAnimation(0, toAnimation, clipData.loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update track times.
|
// Update track times.
|
||||||
fromTrack.trackTime = fromClipTime;
|
fromTrack.trackTime = fromClipTime;
|
||||||
toTrack.trackTime = toClipTime;
|
if (toTrack != null) {
|
||||||
toTrack.mixTime = toClipTime;
|
toTrack.trackTime = toClipTime;
|
||||||
|
toTrack.mixTime = toClipTime;
|
||||||
|
}
|
||||||
|
|
||||||
// Apply Pose
|
// Apply Pose
|
||||||
skeleton.SetToSetupPose();
|
skeleton.SetToSetupPose();
|
||||||
@ -177,7 +180,8 @@ namespace Spine.Unity.Playables {
|
|||||||
dummyAnimationState.Apply(skeleton);
|
dummyAnimationState.Apply(skeleton);
|
||||||
} else {
|
} else {
|
||||||
skeleton.SetToSetupPose();
|
skeleton.SetToSetupPose();
|
||||||
toAnimation.PoseSkeleton(skeleton, toClipTime, clipData.loop);
|
if (toAnimation != null)
|
||||||
|
toAnimation.PoseSkeleton(skeleton, toClipTime, clipData.loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user