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); }