private static void ShowPopup(Event evt, UTNodeEditorModel model) { var menu = new GenericMenu(); if (!model.HasPlan) { menu.AddDisabledItem(new GUIContent("Please select an automation plan.")); menu.ShowAsContext(); return; } var hotNode = GetNodeUnderMouse(model, evt.mousePosition); var hotConnector = GetConnectorUnderMouse(model, evt.mousePosition); var data = new NodeEventData(evt, model, hotConnector); if (hotNode == null && hotConnector == null) { menu.AddItem(new GUIContent("Add Action Node"), false, AddActionNode, data); menu.AddItem(new GUIContent("Add Decision Node"), false, AddDecisionNode, data); menu.AddItem(new GUIContent("Add My Decision Node"), false, AddMyDecisionNode, data); menu.AddItem(new GUIContent("Add LowQuality Decision Node"), false, AddLowQualityDecisionNode, data); menu.AddItem(new GUIContent("Add My CopyAssetBundles Decision Node"), false, AddMyCopyAssetBundlesDecisionNode, data); menu.AddItem(new GUIContent("Add For-Each Node"), false, AddForEachNode, data); menu.AddItem(new GUIContent("Add For-Each File Node"), false, AddForEachFileNode, data); menu.AddItem(new GUIContent("Add My For-Each For Build Node"), false, AddMyForEachForBuildNode, data); menu.AddItem(new GUIContent("Add Sub-Plan Node"), false, AddPlanNode, data); menu.AddItem(new GUIContent("Add Note"), false, AddNote, data); } if (hotNode != null) { if (!model.SelectedNodes.Contains(hotNode)) { model.SelectNode(hotNode, UTNodeEditorModel.SelectionMode.Replace); } if (menu.GetItemCount() > 0) { menu.AddSeparator(""); } var isMultiSelection = model.SelectedNodes.Count > 1; if (!model.IsFirstNode(hotNode) && !isMultiSelection && !(hotNode.Data is UTAutomationPlanNoteEntry)) { menu.AddItem(new GUIContent("Set As First Node"), false, SetAsFirstNode, data); } menu.AddItem(new GUIContent(isMultiSelection ? "Delete Nodes" : "Delete Node"), false, DeleteNode, data); } if (hotConnector != null && hotConnector.isConnected) { if (menu.GetItemCount() > 0) { menu.AddSeparator(""); } menu.AddItem(new GUIContent("Delete Connection"), false, DeleteConnection, data); } menu.ShowAsContext(); }
private static void ShowPopup(Event evt, UTNodeEditorModel model) { var menu = new GenericMenu (); if (!model.HasPlan) { menu.AddDisabledItem (new GUIContent ("Please select an automation plan.")); menu.ShowAsContext (); return; } var hotNode = GetNodeUnderMouse (model, evt.mousePosition); var hotConnector = GetConnectorUnderMouse (model, evt.mousePosition); var data = new NodeEventData (evt, model, hotConnector); if (hotNode == null && hotConnector == null) { #if UTOMATE_DEMO if (!model.CanAddEntriesToPlan) { menu.AddDisabledItem (new GUIContent ("You cannot add any more entries in the demo version.")); } else { #endif menu.AddItem (new GUIContent ("Add Action Entry"), false, AddActionNode, data); menu.AddItem (new GUIContent ("Add Decision Entry"), false, AddDecisionNode, data); menu.AddItem (new GUIContent ("Add For-Each Entry"), false, AddForEachNode, data); menu.AddItem (new GUIContent ("Add For-Each File Entry"), false, AddForEachFileNode, data); menu.AddItem (new GUIContent ("Add Sub-Plan Entry"), false, AddPlanNode, data); menu.AddItem (new GUIContent ("Add Note"), false, AddNote, data); #if UTOMATE_DEMO } #endif } if (hotNode != null) { if (!model.SelectedNodes.Contains (hotNode)) { model.SelectNode (hotNode, UTNodeEditorModel.SelectionMode.Replace); } if (menu.GetItemCount () > 0) { menu.AddSeparator (""); } var isMultiSelection = model.SelectedNodes.Count > 1; if (!model.IsFirstNode (hotNode) && !isMultiSelection) { menu.AddItem (new GUIContent ("Set As First Entry"), false, SetAsFirstNode, data); } menu.AddItem (new GUIContent (isMultiSelection ? "Delete Entries" : "Delete Entry"), false, DeleteNode, data); } if (hotConnector != null && hotConnector.isConnected) { if (menu.GetItemCount () > 0) { menu.AddSeparator (""); } menu.AddItem (new GUIContent ("Delete Connection"), false, DeleteConnection, data); } menu.ShowAsContext (); }