private void DetermineNextAnimation(float time) { _nextAnimation = null; _nextAnimationTime = 0; if (Current.NextAnimationName == null) { return; } if (Clips.Count == 1) { return; } if (Current.NextAnimationTime > 0 + float.Epsilon) { _nextAnimationTime = (time + Current.NextAnimationTime).Snap(); } else { return; } if (Current.NextAnimationName == RandomizeAnimationName) { var idx = Random.Range(0, Clips.Count - 1); if (idx >= Clips.IndexOf(Current)) { idx += 1; } _nextAnimation = Clips[idx].AnimationName; } else if (Current.NextAnimationName.EndsWith(RandomizeGroupSuffix)) { var prefix = Current.NextAnimationName.Substring(0, Current.NextAnimationName.Length - RandomizeGroupSuffix.Length); var group = Clips .Where(c => c.AnimationName != Current.AnimationName) .Where(c => c.AnimationName.StartsWith(prefix)) .ToList(); var idx = Random.Range(0, group.Count); _nextAnimation = group[idx].AnimationName; } else { _nextAnimation = Current.NextAnimationName; } }
public int GetClip() { return(Clips.IndexOf(finalPlayer.Clip)); }