Пример #1
0
    void OnEnable()
    {
        //Hide Unity's Handles
        LastTool      = Tools.current;
        Tools.current = Tool.None;

        //Hide WireFrame
        gridObject = (Grid)target;
        EditorUtility.SetSelectedWireframeHidden(gridObject.gameObject.GetComponent <Renderer>(), true);

        if (!EditorApplication.isPlaying)
        {
            if (gridObject.GetComponent <MeshFilter>().sharedMesh == null)
            {
                gridObject.X = 0;
                gridObject.Z = 0;

                GridEditorUtility.NewGrid(target);
                GridEditorUtility.UpdateGridMesh(target);
            }

            GridEditorUtility.vertices = gridObject.GetComponent <MeshFilter>().sharedMesh.vertices;
        }

        //Editor Serialized Properties
        grid = new SerializedObject(target);

        X = grid.FindProperty("X");
        Z = grid.FindProperty("Z");

        snap = grid.FindProperty("snap");
    }
Пример #2
0
    public override void OnInspectorGUI()
    {
        grid.Update();

        GUILayout.Space(10f);

        GUILayout.BeginHorizontal();
        if (GUILayout.Button(new GUIContent("<-", "Undo"), EditorStyles.miniButtonLeft, GUILayout.Width(25f)))
        {
            if (GridEditorUtility.MeshUndo.Count > 0)
            {
                VertexUndo undo = GridEditorUtility.MeshUndo.Pop();

                foreach (int n in undo.vertices)
                {
                    GridEditorUtility.vertices[n].y -= undo.added;
                }
                foreach (int n in undo.faces)
                {
                    GridEditorUtility.SmoothFace(n);
                }

                GridEditorUtility.MeshRedo.Push(undo);

                gridObject.gameObject.GetComponent <MeshFilter>().sharedMesh.vertices = GridEditorUtility.vertices;

                gridObject.gameObject.GetComponent <MeshCollider>().sharedMesh =
                    gridObject.gameObject.GetComponent <MeshFilter>().sharedMesh;

                SceneView.RepaintAll();
            }
        }

        if (GUILayout.Button(new GUIContent("->", "Redo"), EditorStyles.miniButtonRight, GUILayout.Width(25f)))
        {
            if (GridEditorUtility.MeshRedo.Count > 0)
            {
                VertexUndo undo = GridEditorUtility.MeshRedo.Pop();

                foreach (int n in undo.vertices)
                {
                    GridEditorUtility.vertices[n].y += undo.added;
                }
                foreach (int n in undo.faces)
                {
                    GridEditorUtility.SmoothFace(n);
                }

                GridEditorUtility.MeshUndo.Push(undo);

                gridObject.gameObject.GetComponent <MeshFilter>().sharedMesh.vertices = GridEditorUtility.vertices;

                gridObject.gameObject.GetComponent <MeshCollider>().sharedMesh =
                    gridObject.gameObject.GetComponent <MeshFilter>().sharedMesh;

                SceneView.RepaintAll();
            }
        }
        GUILayout.EndHorizontal();


        GUILayout.Space(10f);


        GUILayout.BeginHorizontal();
        if (GUILayout.Toggle((gridObject.Edition == 1 && gridObject.EditionType == 1)? true : false, "1 1", "Button"))
        {
            gridObject.Edition     = 1;
            gridObject.EditionType = 1;
            SceneView.RepaintAll();
        }

        if (GUILayout.Toggle((gridObject.Edition == 2 && gridObject.EditionType == 1)? true : false, "2 1", "Button"))
        {
            gridObject.Edition     = 2;
            gridObject.EditionType = 1;
            SceneView.RepaintAll();
        }

        if (GUILayout.Toggle((gridObject.Edition == 3 && gridObject.EditionType == 1)? true : false, "3 1", "Button"))
        {
            gridObject.Edition     = 3;
            gridObject.EditionType = 1;
            SceneView.RepaintAll();
        }
        GUILayout.EndHorizontal();


        GUILayout.BeginHorizontal();
        if (GUILayout.Toggle((gridObject.Edition == 1 && gridObject.EditionType == 2)? true : false, "1 2", "Button"))
        {
            gridObject.Edition     = 1;
            gridObject.EditionType = 2;
            SceneView.RepaintAll();
        }

        if (GUILayout.Toggle((gridObject.Edition == 2 && gridObject.EditionType == 2)? true : false, "2 2", "Button"))
        {
            gridObject.Edition     = 2;
            gridObject.EditionType = 2;
            SceneView.RepaintAll();
        }

        if (GUILayout.Toggle((gridObject.Edition == 3 && gridObject.EditionType == 2)? true : false, "3 2", "Button"))
        {
            gridObject.Edition     = 3;
            gridObject.EditionType = 2;
            SceneView.RepaintAll();
        }
        GUILayout.EndHorizontal();


        GUILayout.Space(10f);


        GUILayout.BeginHorizontal();
        if (GUILayout.Toggle((gridObject.Edition == 4)? true : false, "4", "Button"))
        {
            gridObject.Edition = 4;
            SceneView.RepaintAll();
        }

        if (GUILayout.Toggle((gridObject.Edition == 5)? true : false, "5", "Button"))
        {
            gridObject.Edition = 5;
            SceneView.RepaintAll();
        }
        GUILayout.EndHorizontal();



        EditorGUILayout.PropertyField(X);
        EditorGUILayout.PropertyField(Z);

        if (grid.ApplyModifiedProperties())
        {
            GridEditorUtility.NewGrid(target);
            GridEditorUtility.UpdateGridMesh(target);
        }

        EditorGUILayout.PropertyField(snap);

        if (grid.ApplyModifiedProperties())
        {
            SceneView.RepaintAll();
            GridEditorUtility.DeselectAll();
        }
    }