public static bool CanDeleteAction(TimelineActionNode action) { BeginActionNode beginActionNode = action as BeginActionNode; if (beginActionNode == null || beginActionNode.TargetTimeline == null) { return(true); } bool flag1 = false; bool flag2 = false; foreach (TimelineActionNode timelineActionNode in action.TargetTimeline.ControllingActions) { if (timelineActionNode is BeginActionNode && timelineActionNode != beginActionNode) { flag2 = true; } else if (timelineActionNode is ControllableStoryboardActionNode) { flag1 = true; } } if (!flag2) { return(!flag1); } return(true); }
public static bool CanDeleteTrigger(TriggerBaseNode triggerNode) { List <SceneNode> list = new List <SceneNode>(); foreach (SceneNode sceneNode in (IEnumerable <TriggerActionNode>)triggerNode.EnterActions) { list.Add(sceneNode); } foreach (SceneNode sceneNode in (IEnumerable <TriggerActionNode>)triggerNode.ExitActions) { list.Add(sceneNode); } EventTriggerNode eventTriggerNode = triggerNode as EventTriggerNode; if (eventTriggerNode != null) { list.AddRange((IEnumerable <SceneNode>)eventTriggerNode.Actions); } foreach (SceneNode sceneNode in list) { BeginActionNode beginActionNode = sceneNode as BeginActionNode; if (beginActionNode != null && beginActionNode.TargetTimeline != null) { bool flag1 = false; bool flag2 = false; foreach (TimelineActionNode timelineActionNode in beginActionNode.TargetTimeline.ControllingActions) { if (!list.Contains((SceneNode)timelineActionNode)) { if (timelineActionNode is BeginActionNode && timelineActionNode != beginActionNode) { flag2 = true; } else if (timelineActionNode is ControllableStoryboardActionNode) { flag1 = true; } } } if (!flag2 && flag1) { return(false); } } } return(true); }