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; }
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); }