Пример #1
0
        private void ValidateTransitions()
        {
            using (new UndoRedo.DontLogBlock(Controller))
            {
                //  First, mark all the transitions for potential removal

                foreach (Transition groupTransition in TransitionsFrom.Where(t => t.TransitionType == Transition.TransitionTypes.Group))
                {
                    groupTransition.IsValid = false;
                }
                foreach (Transition groupTransition in TransitionsTo.Where(t => t.TransitionType == Transition.TransitionTypes.Group))
                {
                    groupTransition.IsValid = false;
                }

                //  Now figure what transitions we actually need

                if (Members != null)
                {
                    foreach (ObjectModel.ITransitionEndpoint endpoint in Members.Where(m => m.LayerPositions.Any(lp => lp.Layer == Layer && lp.GroupStatus == LayerPosition.GroupStatuses.Explicit)))
                    {
                        AddTransitionsForEndpoint(endpoint);
                    }
                }

                //  And finally, get rid of those not needed

                DeleteInvalidTransitions(TransitionsFrom);
                DeleteInvalidTransitions(TransitionsTo);
            }
            System.Threading.Interlocked.Exchange(ref ValidationPendingCount, 0);
        }