public virtual void InsertClip(Clip clip) { if (Clips.Any(c => c.Ordering == clip.Ordering)) { throw new InvalidOperationException(); } Clips.Add(clip); }
protected string GetNewAnimationName() { for (var i = Clips.Count + 1; i < 999; i++) { var animationName = "Anim " + i; if (!Clips.Any(c => c.AnimationName == animationName)) { return(animationName); } } return(Guid.NewGuid().ToString()); }
public void Stop() { _playQueuedAfterInterpolation = false; _isPlaying = false; if (Current == null) { return; } _unityAnimation.Stop(); foreach (var clip in Clips) { if (clip.AnimationPattern) { clip.AnimationPattern.SetBoolParamValue("loopOnce", true); } } _blendingTimeLeft = 0; _blendingDuration = 0; _previousClip = null; _nextAnimation = null; _nextAnimationTime = 0; if (PlayedAnimation != null && PlayedAnimation != Current.AnimationName) { if (Clips.Any(c => c.AnimationName == PlayedAnimation)) { ChangeAnimation(PlayedAnimation); } PlayedAnimation = null; } if (Time > Current.animationLength - 0.001f) { Time = Current.loop ? 0f : Current.animationLength; } else { Time = Time.Snap(); } Sample(); }