public static TriggerNode ConvertToTrigger(MultiTriggerNode multiTrigger) { TriggerNode triggerNode = TriggerNode.Factory.Instantiate(multiTrigger.ViewModel); if (multiTrigger.Conditions.Count > 0) { ConditionNode conditionNode = multiTrigger.Conditions[0]; ((ITriggerConditionNode)triggerNode).Value = conditionNode.Value; ((ITriggerConditionNode)triggerNode).PropertyKey = conditionNode.PropertyKey; if (conditionNode.SourceName != null) { ((ITriggerConditionNode)triggerNode).SourceName = conditionNode.SourceName; } } List <SceneNode> list1 = new List <SceneNode>((IEnumerable <SceneNode>)multiTrigger.Setters); while (multiTrigger.Setters.Count > 0) { multiTrigger.Setters.RemoveAt(0); } List <TriggerActionNode> list2 = new List <TriggerActionNode>((IEnumerable <TriggerActionNode>)multiTrigger.EnterActions); while (multiTrigger.EnterActions.Count > 0) { multiTrigger.EnterActions.RemoveAt(0); } List <TriggerActionNode> list3 = new List <TriggerActionNode>((IEnumerable <TriggerActionNode>)multiTrigger.ExitActions); while (multiTrigger.ExitActions.Count > 0) { multiTrigger.ExitActions.RemoveAt(0); } TriggersHelper.ReplaceSceneNode((SceneNode)multiTrigger, (SceneNode)triggerNode); foreach (SceneNode sceneNode in list1) { triggerNode.Setters.Add(sceneNode); } foreach (TriggerActionNode triggerActionNode in list2) { triggerNode.EnterActions.Add(triggerActionNode); } foreach (TriggerActionNode triggerActionNode in list3) { triggerNode.ExitActions.Add(triggerActionNode); } SceneViewModel viewModel = multiTrigger.ViewModel; if (viewModel.ActiveVisualTrigger == multiTrigger) { viewModel.SetActiveTrigger((TriggerBaseNode)triggerNode); } return(triggerNode); }
public void Delete() { ConditionNode conditionNode = this.Condition as ConditionNode; if (conditionNode == null) { return; } using (SceneEditTransaction editTransaction = conditionNode.ViewModel.CreateEditTransaction(StringTable.TriggerChangeUndoUnit)) { MultiTriggerNode nodeTypeAncestor = conditionNode.FindSceneNodeTypeAncestor <MultiTriggerNode>(); conditionNode.Remove(); if (nodeTypeAncestor != null && nodeTypeAncestor.Conditions.Count == 1) { TriggersHelper.ConvertToTrigger(nodeTypeAncestor); } editTransaction.Commit(); } }
public static void DefaultAddAction(TriggerBaseNode trigger, TriggerActionNode action) { TriggerNode triggerNode = trigger as TriggerNode; MultiTriggerNode multiTriggerNode = trigger as MultiTriggerNode; EventTriggerNode eventTriggerNode = trigger as EventTriggerNode; if (triggerNode != null) { triggerNode.EnterActions.Add(action); } else if (multiTriggerNode != null) { multiTriggerNode.EnterActions.Add(action); } else { if (eventTriggerNode == null) { return; } eventTriggerNode.Actions.Add((SceneNode)action); } }
private void AddCondition() { ConditionNode defaultCondition = TriggersHelper.CreateDefaultCondition(this.baseTriggerNode.TriggerContainer.TargetElementType, this.baseTriggerNode.ViewModel, this.baseTriggerNode.DocumentContext); if (defaultCondition == null) { return; } using (SceneEditTransaction editTransaction = this.baseTriggerNode.ViewModel.CreateEditTransaction(StringTable.TriggerChangeUndoUnit)) { MultiTriggerNode multiTriggerNode1 = this.baseTriggerNode as MultiTriggerNode; if (multiTriggerNode1 != null) { multiTriggerNode1.Conditions.Add(defaultCondition); } else { MultiTriggerNode multiTriggerNode2 = TriggersHelper.ConvertToMultiTrigger((Microsoft.Expression.DesignSurface.ViewModel.TriggerNode) this.baseTriggerNode); multiTriggerNode2.Conditions.Add(defaultCondition); this.triggerManager.TriggerToBeSelected = (TriggerBaseNode)multiTriggerNode2; } editTransaction.Commit(); } }