void ActionPerformed(MenuAction newActionPerformed) { if (ToolManager.IsActiveTool(m_Tool) && newActionPerformed.GetType() != this.GetType()) { LeaveTool(); } }
static void MenuPerform_NewPolyShape() { var instance = EditorToolbarLoader.GetInstance <NewPolyShapeToggle>(); if (instance != null && instance.enabled) { var result = ToolManager.IsActiveTool(instance.Tool) ? instance.EndActivation() : instance.StartActivation(); EditorUtility.ShowNotification(result.notification); } }
protected override ActionResult PerformActionImplementation() { if (!CanCreateNewPolyShape()) { return(new ActionResult(ActionResult.Status.Canceled, "Canceled Create Poly Shape")); } GameObject go = new GameObject("PolyShape"); UndoUtility.RegisterCreatedObjectUndo(go, "Create Poly Shape"); PolyShape poly = Undo.AddComponent <PolyShape>(go); ProBuilderMesh pb = Undo.AddComponent <ProBuilderMesh>(go); pb.CreateShapeFromPolygon(poly.m_Points, poly.extrude, poly.flipNormals); EditorUtility.InitObject(pb); // Special case - we don't want to reset the grid pivot because we rely on it to set the active plane for // interaction, regardless of whether snapping is enabled or not. if (ProGridsInterface.SnapEnabled() || ProGridsInterface.GridVisible()) { Vector3 pivot; if (ProGridsInterface.GetPivot(out pivot)) { go.transform.position = pivot; } } MeshSelection.SetSelection(go); poly.polyEditMode = PolyShape.PolyEditMode.Path; ProBuilderEditor.selectMode = SelectMode.Object; m_Tool = ScriptableObject.CreateInstance <PolyShapeTool>(); ((PolyShapeTool)m_Tool).polygon = poly; ToolManager.SetActiveTool(m_Tool); Undo.RegisterCreatedObjectUndo(m_Tool, "Open PolyShape Tool"); MenuAction.onPerformAction += ActionPerformed; ToolManager.activeToolChanging += LeaveTool; ProBuilderEditor.selectModeChanged += OnSelectModeChanged; MeshSelection.objectSelectionChanged += OnObjectSelectionChanged; return(new ActionResult(ActionResult.Status.Success, "Create Poly Shape")); }