public override void OnInspectorGUI() { serializedObject.Update(); CustomTerrain terrain = (CustomTerrain)target; EditorGUILayout.PropertyField(resetTerrain); showRandom = EditorGUILayout.Foldout(showRandom, "Random"); if (showRandom) { EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); GUILayout.Label("Set heights randomly between values", EditorStyles.boldLabel); EditorGUILayout.PropertyField(randomHeightRange); if (GUILayout.Button("Random Heights")) { terrain.RandomTerrain(); } } showLoadHeights = EditorGUILayout.Foldout(showLoadHeights, "Height Map Texture"); if (showLoadHeights) { EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); GUILayout.Label("Load Height Map Texture", EditorStyles.boldLabel); EditorGUILayout.PropertyField(heightMapImage); EditorGUILayout.PropertyField(heightMapScale); if (GUILayout.Button("Load Texture")) { terrain.LoadHeightMapImage(); } } showPerlin = EditorGUILayout.Foldout(showPerlin, "Perlin Noise Generator"); if (showPerlin) { EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); GUILayout.Label("Perlin Generator", EditorStyles.boldLabel); EditorGUILayout.Slider(perlinNoiseXScale, 0f, 0.05f, new GUIContent("X Scale")); EditorGUILayout.Slider(PerlinNoiseYScale, 0f, 0.05f, new GUIContent("Y Scale")); EditorGUILayout.IntSlider(perlinOffsetX, 0, 10000, new GUIContent("X Offset")); EditorGUILayout.IntSlider(perlinOffsetY, 0, 10000, new GUIContent("Y Offset")); EditorGUILayout.IntSlider(perlinOctaves, 0, 50, new GUIContent("Brownian Octaves")); EditorGUILayout.Slider(perlinPersistance, 0.1f, 20f, new GUIContent("Brownian Persistance")); EditorGUILayout.Slider(perlinHeightScale, 0f, 1f, new GUIContent("Height Scale")); if (GUILayout.Button("Run Generator")) { terrain.PerlinNoise(); } } showMultiPerlin = EditorGUILayout.Foldout(showMultiPerlin, "Multiple Perlin Noise Generator"); if (showMultiPerlin) { EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); GUILayout.Label("Multiple Perlin Generator", EditorStyles.boldLabel); perlinParameterTable = GUITableLayout.DrawTable(perlinParameterTable, serializedObject.FindProperty("perlinParameters")); GUILayout.Space(29); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("+")) { terrain.AddNewPerlin(); } if (GUILayout.Button("-")) { terrain.RemovePerlin(); } EditorGUILayout.EndHorizontal(); if (GUILayout.Button("Run Multi Perlin Generator")) { terrain.MultiPerlin(); } } showVoronoi = EditorGUILayout.Foldout(showVoronoi, "Voronoi"); if (showVoronoi) { EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); GUILayout.Label("Voronoi Generator", EditorStyles.boldLabel); EditorGUILayout.Slider(voronoiFallOff, 0f, 10f, new GUIContent("Fall Off")); EditorGUILayout.Slider(voronoiDropOff, 0f, 10f, new GUIContent("Drop Off")); EditorGUILayout.Slider(voronoiMinHeight, 0f, 1f, new GUIContent("Min Height")); EditorGUILayout.Slider(voronoiMaxHeight, 0f, 1f, new GUIContent("Max Height")); EditorGUILayout.IntSlider(voronoiPeakCount, 1, 10, new GUIContent("Peak Count")); EditorGUILayout.PropertyField(voronoiType); if (GUILayout.Button("Run Voronoi")) { terrain.VeronoiLift(); } } EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); if (GUILayout.Button("Reset Terrain")) { terrain.ResetTerrain(); } serializedObject.ApplyModifiedProperties(); }