public override void OnInspectorGUI() { NodeGrid grid = (NodeGrid)target; if (!init) { width = grid.Width; height = grid.Height; } grid.NodePrefab = EditorGUILayout.ObjectField("Node Prefab", grid.NodePrefab, typeof(GameObject), false) as GameObject; grid.PathBaseMaterial = EditorGUILayout.ObjectField("Base Material", grid.PathBaseMaterial, typeof(Material), false) as Material; grid.PathNotTraversableMaterial = EditorGUILayout.ObjectField("Not Traversable Material", grid.PathNotTraversableMaterial, typeof(Material), false) as Material; grid.PathCheckedMaterial = EditorGUILayout.ObjectField("Checked Material", grid.PathCheckedMaterial, typeof(Material), false) as Material; grid.PathGoalMaterial = EditorGUILayout.ObjectField("Goal Material", grid.PathGoalMaterial, typeof(Material), false) as Material; grid.PathFinalMaterial = EditorGUILayout.ObjectField("Final Path Material", grid.PathFinalMaterial, typeof(Material), false) as Material; grid.PathStartMaterial = EditorGUILayout.ObjectField("Start Material", grid.PathStartMaterial, typeof(Material), false) as Material; width = Mathf.Max(EditorGUILayout.DelayedIntField("X Dimension:", width), 1); height = Mathf.Max(EditorGUILayout.DelayedIntField("Y Dimension:", height), 1); if (width != grid.Width || height != grid.Height) { grid.AlterSize(width, height); EditorUtility.SetDirty(target); } EditorGUILayout.BeginHorizontal(); { grid.StartX = EditorGUILayout.IntField("Start Node:", grid.StartX); grid.StartY = EditorGUILayout.IntField(grid.StartY); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { grid.EndX = EditorGUILayout.IntField("End Node:", grid.EndX); grid.EndY = EditorGUILayout.IntField(grid.EndY); } EditorGUILayout.EndHorizontal(); // Draw all the traversability check boxes traversabilityPosition = EditorGUILayout.BeginScrollView(traversabilityPosition); { EditorGUILayout.LabelField("Traversability"); EditorGUILayout.BeginVertical(); { for (int i = 0; i < grid.Height; i++) { EditorGUILayout.BeginHorizontal(); { for (int j = 0; j < grid.Width; j++) { grid.GetNode(j, i).Traversable = EditorGUILayout.Toggle(grid.GetNode(j, i).Traversable); } } EditorGUILayout.EndHorizontal(); } } EditorGUILayout.EndVertical(); } EditorGUILayout.EndScrollView(); // Draw all the text boxes for travel cost travelCostPosition = EditorGUILayout.BeginScrollView(travelCostPosition); { EditorGUILayout.LabelField("Travel Cost"); EditorGUILayout.BeginVertical(); { for (int i = 0; i < grid.Height; i++) { EditorGUILayout.BeginHorizontal(); { for (int j = 0; j < grid.Width; j++) { if (grid.GetNode(j, i).Traversable) { grid.GetNode(j, i).TravelCost = EditorGUILayout.IntField(grid.GetNode(j, i).TravelCost); } else { GUI.enabled = false; grid.GetNode(j, i).TravelCost = EditorGUILayout.IntField(grid.GetNode(j, i).TravelCost); GUI.enabled = true; } } } EditorGUILayout.EndHorizontal(); } } EditorGUILayout.EndVertical(); } EditorGUILayout.EndScrollView(); if (GUI.changed) { EditorUtility.SetDirty(target); } }