Esempio n. 1
0
        static void MenuDoDetachFaces()
        {
            DetachFaces instance = EditorToolbarLoader.GetInstance <DetachFaces>();

            if (instance != null)
            {
                UnityEditor.ProBuilder.EditorUtility.ShowNotification(instance.DoAction().notification);
            }
        }
Esempio n. 2
0
    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);
    }
Esempio n. 3
0
        static bool MenuVerifyDetachFaces()
        {
            DetachFaces instance = EditorToolbarLoader.GetInstance <DetachFaces>();

            return(instance != null && instance.enabled);
        }