protected override void OnMixer(float time, MixClip mix) { if (mixPlayable.IsValid()) { if (!mix.connect || !Application.isPlaying) { XAnimationClip clipA = (XAnimationClip)mix.blendA; XAnimationClip clipB = (XAnimationClip)mix.blendB; if (clipA && clipB) { mixA = clipA.playable; mixB = clipB.playable; } } mix.connect = true; float weight = (time - mix.start) / mix.duration; if (mixA.IsValid() && mixB.IsValid()) { mixJob.weight = weight; mixPlayable.SetJobData(mixJob); } else { string tip = "playable invalid while animating mix "; Debug.LogError(tip + mixA.IsValid() + " " + mixB.IsValid()); } } }
protected void AddMix(MixClip mix) { if (mixs == null) { mixs = new List <MixClip>(); } if (!mixs.Contains(mix)) { mixs.Add(mix); } }
private bool MixTriger(float time, out MixClip mixClip) { if (mixs != null) { int cnt = mixs.Count; for (int i = 0; i < cnt; i++) { if (mixs[i].IsIn(time)) { mixClip = mixs[i]; return(true); } } } mixClip = null; return(false); }
protected virtual void OnMixer(float time, MixClip mix) { }