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"); }
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(); } }