Пример #1
0
        /// <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;
                }
            }
        }
Пример #2
0
        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);
        }