/// <summary> /// Updates the target value and starts the interpolator if it is not running already. /// </summary> /// <param name="updateTargetValue">The new target value.</param> /// <param name="forceUpdate">A flag for forcing an update propagation.</param> public void UpdateTarget(T updateTargetValue, bool forceUpdate) { performingInterpolativeSnap = false; targetValue = updateTargetValue; startValue = Value; timeInterpolationStartedAt = CurrentTime; if (!DoValuesEqual(updateTargetValue, Value)) { EnsureEnabled(); } else if (forceUpdate && !IsRunning) { ValueChanged.RaiseEvent(this); } }