internal static ActiveTimeline <T> Add <T>(
            this ConcurrentDictionary <Guid, ActiveTimeline <T> > actives,
            T timeline, AnimationSettings settings,
            FrameworkElement element,
            AnimationState state,
            IterationBehavior iterationBehavior,
            int iterationCount,
            bool isSequence,
            int sequenceOrder = 0)
            where T : DependencyObject
        {
            var elementGuid  = Animations.GetElementGuid(element);
            var timelineGuid = Guid.NewGuid();

            if (elementGuid.Equals(Guid.Empty))
            {
                elementGuid = Guid.NewGuid();
            }

            Animations.SetElementGuid(element, elementGuid);

            if (timeline != null)
            {
                Animations.SetElementGuid(timeline, elementGuid);
                Animations.SetTimelineGuid(timeline, timelineGuid);
            }

            var active = new ActiveTimeline <T>()
            {
                ElementGuid       = elementGuid,
                Timeline          = timeline,
                Settings          = settings,
                Element           = element,
                State             = state,
                IterationBehavior = iterationBehavior,
                IterationCount    = iterationCount,
                IsSequence        = isSequence,
                SequenceOrder     = sequenceOrder
            };

            if (actives.TryAdd(timelineGuid, active) && Animations.EnableActiveTimelinesLogging == LogLevel.Debug)
            {
                LogActiveTimelines(actives, "Active timeline added");
            }

            return(active);
        }
Exemplo n.º 2
0
 public static void SetIterationBehavior(DependencyObject obj, IterationBehavior value) => obj.SetValue(IterationBehaviorProperty, value);