Ejemplo n.º 1
0
        protected void AdjustMixDuration(SpineAnimationStateClip targetClip, ClipInfo timelineClipInfo)
        {
            if (timelineClipInfo == null)
            {
                return;
            }

            var timelineClip = timelineClipInfo.timelineClip;

            if (timelineClip == null)
            {
                return;
            }

            float blendInDur        = System.Math.Max((float)timelineClip.blendInDuration, (float)timelineClip.easeInDuration);
            bool  isBlendingNow     = blendInDur > 0;
            bool  wasBlendingBefore = timelineClipInfo.previousBlendInDuration > 0;

            if (isBlendingNow)
            {
                if (!wasBlendingBefore)
                {
                    timelineClipInfo.unblendedMixDuration = targetClip.template.mixDuration;
                }
                targetClip.template.mixDuration = blendInDur;
                EditorUtility.SetDirty(targetClip);
            }
            else if (wasBlendingBefore)
            {
                targetClip.template.mixDuration = timelineClipInfo.unblendedMixDuration;
                EditorUtility.SetDirty(targetClip);
            }
            timelineClipInfo.previousBlendInDuration = blendInDur;
        }
Ejemplo n.º 2
0
 protected TimelineClip FindTimelineClip(SpineAnimationStateClip targetClip)
 {
     string[] guids = AssetDatabase.FindAssets("t:TimelineAsset");
     foreach (string guid in guids)
     {
         TimelineAsset timeline = (TimelineAsset)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(guid), typeof(TimelineAsset));
         foreach (var track in timeline.GetOutputTracks())
         {
             foreach (var clip in track.GetClips())
             {
                 if (clip.asset.GetType() == typeof(SpineAnimationStateClip) && object.ReferenceEquals(clip.asset, targetClip))
                 {
                     return(clip);
                 }
             }
         }
     }
     return(null);
 }