/// <summary> Copy all event subscriptions from this TimeFlowEngine to given one </summary> /// <param name="copyTo">TimeFlowEngine to which events should be copied.</param> public void CopyEventsSubscriptions(TimeFlowEngine copyTo) { List <TimeChangedDelegate> durationChangedSubscriptions; List <TimeChangedDelegate> currentTimeChangedSubscriptions; List <TimeDelegate> timeFlowStartedSubscriptions; List <TimeDelegate> timeFlowStoppedSubscriptions; List <TimeDelegate> timeFlowPausedSubscription; List <TimeChangedDelegate> durationChangedSubscriptionsOld; List <TimeChangedDelegate> currentTimeChangedSubscriptionsOld; List <TimeDelegate> timeFlowStartedSubscriptionsOld; List <TimeDelegate> timeFlowStoppedSubscriptionsOld; List <TimeDelegate> timeFlowPausedSubscriptionOld; CopyEventsSubscriptionsHandler(out durationChangedSubscriptionsOld, out currentTimeChangedSubscriptionsOld, out timeFlowStartedSubscriptionsOld, out timeFlowStoppedSubscriptionsOld, out timeFlowPausedSubscriptionOld); copyTo.CopyEventsSubscriptionsHandler(out durationChangedSubscriptions, out currentTimeChangedSubscriptions, out timeFlowStartedSubscriptions, out timeFlowStoppedSubscriptions, out timeFlowPausedSubscription); foreach (TimeChangedDelegate subscriber in durationChangedSubscriptionsOld) { if (!durationChangedSubscriptions.Contains(subscriber)) { copyTo.DurationChanged += subscriber; } } foreach (TimeChangedDelegate subscriber in currentTimeChangedSubscriptionsOld) { if (!currentTimeChangedSubscriptions.Contains(subscriber)) { copyTo.CurrentTimeChanged += subscriber; } } foreach (TimeDelegate subscriber in timeFlowStartedSubscriptionsOld) { if (!timeFlowStartedSubscriptions.Contains(subscriber)) { copyTo.TimeFlowStarted += subscriber; } } foreach (TimeDelegate subscriber in timeFlowStoppedSubscriptionsOld) { if (!timeFlowStoppedSubscriptions.Contains(subscriber)) { copyTo.TimeFlowStopped += subscriber; } } foreach (TimeDelegate subscriber in timeFlowPausedSubscriptionOld) { if (!timeFlowPausedSubscription.Contains(subscriber)) { copyTo.TimeFlowPaused += subscriber; } } }
public TimeFlowEngine(TimeFlowEngine copy, TimeSpan currentTime, TimeSpan duration) { _time = currentTime; _duration = duration.TotalMilliseconds / 1000.0; _isPlaying = copy._isPlaying; _pixelsPerSecond = copy._pixelsPerSecond; _readOnly = copy._readOnly; CopyEventsSubscriptions(copy); }