/// <summary> /// Registers a standalone animation (one that does not correspond to a scheduled value change). It is expected to be initialized /// </summary> /// <typeparam name="TValueType"></typeparam> /// <param name="acc"></param> /// <param name="delayed"></param> public void RegisterAnimation <TValueType>(Accessor <TValueType> acc, DelayedDataChange <TValueType> delayed) { var lastRelevantDelayedDataChange = _delayedChanges.LastOrDefault(delayedChange => delayedChange.GetAccessor().Equals(acc)); _delayedChanges.Add(delayed); if (lastRelevantDelayedDataChange == null) { delayed.Start(); } }
public void ConfirmDelayedDataCompletion <TValueType>(DelayedDataChange <TValueType> ddc) { Debug.Assert(_delayedChanges.Contains(ddc), "Confirming DelayedDataChange that was never scheduled."); Debug.Assert(EqualityComparer <TValueType> .Default.Equals(ddc.NewValue, ddc.Accessor.GetValue(Element)), "DelayedDataChange was confirmed, but value was not changed correctly"); _delayedChanges.Remove(ddc); }