private void TaskFinished(BehaviourTask task)
        {
            if (_currentHighlights.TryGetValue(task.Index, out var highlight))
            {
                _currentHighlights.Remove(task.Index);

                var anim = ValueAnimation <float> .Create(highlight, (a, b, t) => Mathf.Lerp(a, b, Easing.OutQuad(t)));

                anim.from       = 1f;
                anim.to         = 0f;
                anim.durationMs = 500;
                anim.OnCompleted(highlight.RemoveFromHierarchy);
                anim.valueUpdated = (e, value) => e.style.opacity = value;
                anim.Start();
            }
        }
 private ValueAnimation <StyleValues> Start(Func <VisualElement, StyleValues> fromValueGetter, StyleValues to, int durationMs)
 {
     return(StartAnimation(ValueAnimation <StyleValues> .Create(this, Lerp.Interpolate), fromValueGetter, to, durationMs, AssignStyleValues));
 }
 ValueAnimation <Quaternion> ITransitionAnimations.Start(Func <VisualElement, Quaternion> fromValueGetter, Quaternion to, int durationMs, Action <VisualElement, Quaternion> onValueChanged)
 {
     return(StartAnimation(ValueAnimation <Quaternion> .Create(this, Lerp.Interpolate), fromValueGetter, to, durationMs, onValueChanged));
 }