public override void OnInspectorGUI() { EditorGUIUtility.LookLikeControls(); TerrainWaterErosion weTerrain = (TerrainWaterErosion)target as TerrainWaterErosion; if (!weTerrain.gameObject) { return; } Terrain terComponent = (Terrain)weTerrain.GetComponent(typeof(Terrain)); if (terComponent == null) { NonTerrainMessage(); return; } if (GUI.changed) { EditorUtility.SetDirty(weTerrain); } GUI.changed = false; EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Iterations"); weTerrain.waterErosionIterations = (int)EditorGUILayout.Slider(weTerrain.waterErosionIterations, 1, 250); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Rainfall"); weTerrain.waterErosionRainfall = EditorGUILayout.Slider(weTerrain.waterErosionRainfall, 0, 10); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Stream Turbulence"); weTerrain.waterErosionConeThreshold = EditorGUILayout.Slider(weTerrain.waterErosionConeThreshold, 1, 5); EditorGUILayout.EndHorizontal(); Rect buttonRect = EditorGUILayout.BeginHorizontal(); buttonRect.x = buttonRect.width / 2 - 100; buttonRect.width = 200; buttonRect.height = 28; if (GUI.Button(buttonRect, "Apply Water Erosion")) { // Undo Terrain ter = (Terrain)weTerrain.GetComponent(typeof(Terrain)); if (ter == null) { return; } TerrainData terData = ter.terrainData; //Undo.RecordObject (terData, "Terrain Water Erosion"); Undo.RegisterUndo(terData, "Terrain Water Erosion"); // Start time... DateTime startTime = DateTime.Now; TerrainWaterErosion.ErosionProgressDelegate erosionProgressDelegate = new TerrainWaterErosion.ErosionProgressDelegate(updateErosionProgress); weTerrain.processTerrain(erosionProgressDelegate); EditorUtility.ClearProgressBar(); TimeSpan processTime = DateTime.Now - startTime; Debug.Log("Process complete in: " + processTime.ToString()); GUIUtility.ExitGUI(); } EditorGUILayout.EndHorizontal(); for (int i = 0; i < 6; i++) { EditorGUILayout.Separator(); } if (GUI.changed) { EditorUtility.SetDirty(weTerrain); } }
public override void OnInspectorGUI() { EditorGUIUtility.LookLikeControls (); TerrainWaterErosion weTerrain = (TerrainWaterErosion)target as TerrainWaterErosion; if (!weTerrain.gameObject) { return; } Terrain terComponent = (Terrain)weTerrain.GetComponent (typeof(Terrain)); if (terComponent == null) { NonTerrainMessage (); return; } if (GUI.changed) { EditorUtility.SetDirty (weTerrain); } GUI.changed = false; EditorGUILayout.BeginHorizontal (); EditorGUILayout.PrefixLabel ("Iterations"); weTerrain.waterErosionIterations = (int)EditorGUILayout.Slider (weTerrain.waterErosionIterations, 1, 250); EditorGUILayout.EndHorizontal (); EditorGUILayout.BeginHorizontal (); EditorGUILayout.PrefixLabel ("Rainfall"); weTerrain.waterErosionRainfall = EditorGUILayout.Slider (weTerrain.waterErosionRainfall, 0, 10); EditorGUILayout.EndHorizontal (); EditorGUILayout.BeginHorizontal (); EditorGUILayout.PrefixLabel ("Stream Turbulence"); weTerrain.waterErosionConeThreshold = EditorGUILayout.Slider (weTerrain.waterErosionConeThreshold, 1, 5); EditorGUILayout.EndHorizontal (); Rect buttonRect = EditorGUILayout.BeginHorizontal (); buttonRect.x = buttonRect.width / 2 - 100; buttonRect.width = 200; buttonRect.height = 28; if (GUI.Button (buttonRect, "Apply Water Erosion")) { // Undo Terrain ter = (Terrain)weTerrain.GetComponent (typeof(Terrain)); if (ter == null) { return; } TerrainData terData = ter.terrainData; //Undo.RecordObject (terData, "Terrain Water Erosion"); Undo.RegisterUndo(terData, "Terrain Water Erosion"); // Start time... DateTime startTime = DateTime.Now; TerrainWaterErosion.ErosionProgressDelegate erosionProgressDelegate = new TerrainWaterErosion.ErosionProgressDelegate (updateErosionProgress); weTerrain.processTerrain (erosionProgressDelegate); EditorUtility.ClearProgressBar (); TimeSpan processTime = DateTime.Now - startTime; Debug.Log ("Process complete in: " + processTime.ToString ()); GUIUtility.ExitGUI (); } EditorGUILayout.EndHorizontal (); for (int i = 0; i < 6; i++) EditorGUILayout.Separator (); if (GUI.changed) { EditorUtility.SetDirty (weTerrain); } }