static void MenuDoDetachFaces() { DetachFaces instance = EditorToolbarLoader.GetInstance <DetachFaces>(); if (instance != null) { UnityEditor.ProBuilder.EditorUtility.ShowNotification(instance.DoAction().notification); } }
public static void DetachFaceUndoTest() { var cube = ShapeFactory.Instantiate <Cube>(); var duplicate = UnityEngine.Object.Instantiate(cube.gameObject).GetComponent <ProBuilderMesh>(); duplicate.MakeUnique(); // Select the mesh MeshSelection.SetSelection(cube.gameObject); MeshSelection.OnObjectSelectionChanged(); Assume.That(MeshSelection.selectedObjectCount, Is.EqualTo(1)); // Select a face cube.SetSelectedFaces(new Face[] { cube.facesInternal[0] }); Assume.That(cube.selectedFacesInternal.Length, Is.EqualTo(1)); // Perform `Detach Faces` action var detachAction = new DetachFaces(); var result = detachAction.PerformAction(); Assume.That(result.status, Is.EqualTo(ActionResult.Status.Success)); UnityEditor.Undo.PerformUndo(); // this is usually caught by UndoUtility cube.InvalidateCaches(); cube.ToMesh(); cube.Refresh(); // After undo, previously edited mesh should match the duplicate TestUtility.AssertAreEqual(duplicate.mesh, cube.mesh); UnityEngine.Object.DestroyImmediate(cube.gameObject); UnityEngine.Object.DestroyImmediate(duplicate.gameObject); }
static bool MenuVerifyDetachFaces() { DetachFaces instance = EditorToolbarLoader.GetInstance <DetachFaces>(); return(instance != null && instance.enabled); }