/// <summary> /// Instantly begins the specified clip /// </summary> /// <param name="parameters"></param> /// <param name="clearQueue"></param> public void InterruptClip(ClipPlaybackParameters parameters, bool clearQueue = true) { if (clearQueue) _animationQueue.Clear(); if (parameters.Clip == null) parameters = DefaultClip; parameters.Clip.Start(); _fadingIn = PlayingClip.Create(parameters, _animation.BonesCount); _fadingIn.TimeFactor = 1; _fadingIn.Loop = parameters.Loop; _fadingIn.FadeOutTime = parameters.FadeOutTime; _crossfadeProgress = 0; var fadeOutTime = _fadingOut == null ? 0 : _fadingOut.FadeOutTime.Ticks; _crossfadeDuration = TimeSpan.FromTicks(Math.Max(parameters.FadeInTime.Ticks, fadeOutTime)); _crossfadeElapsed = TimeSpan.Zero; }
/// <summary> /// Enqueues the givem clip, to be played once the previous clip reaches it's fade out time /// </summary> /// <param name="parameters"></param> /// <param name="clearQueue">Whether to cancel the animation queue and add this to it</param> public void EnqueueClip(ClipPlaybackParameters parameters, bool clearQueue = false) { if (clearQueue) _animationQueue.Clear(); _animationQueue.Enqueue(parameters); }