void OnGUI() { GUIStyle generateButton = new GUIStyle(GUI.skin.button), label = EditorStyles.boldLabel; generateButton.active.textColor = AnyWalkerEditor.col_black; generateButton.normal.textColor = AnyWalkerEditor.col_semiblack; generateButton.onHover.textColor = AnyWalkerEditor.col_black; generateButton.fontStyle = FontStyle.Bold; generateButton.padding = new RectOffset(10, 10, 10, 5); label.normal.textColor = AnyWalkerEditor.col_egg; bgCol = new GUIStyle(); bgCol.normal.background = Texture2D.blackTexture; if (obj == null) { return; } if (editor == null) { editor = Editor.CreateEditor(obj); } editor.OnInteractivePreviewGUI(GUILayoutUtility.GetRect(size.x, size.y - 30), bgCol); //Loaded File Display if (settings.file != null && settings.file.GetType() == typeof(Texture2D)) { GUI.DrawTexture(new Rect(size.x - 70, size.y - 100, 60, 60), (Texture2D)settings.file); } //Settings int settingAmount = settings.variables.Count + 1; int generateButtonWidth = 150; GUI.backgroundColor = AnyWalkerEditor.col_semiblack; GUILayout.BeginHorizontal(); GUILayout.BeginVertical("Box", GUILayout.Width(size.x - (generateButtonWidth + 10))); GUILayout.Label("Settings", EditorStyles.boldLabel); GUI.backgroundColor = AnyWalkerEditor.col_egg; GUIStyle setting = EditorStyles.boldLabel; int oldFontSize = setting.fontSize; float elementX = (size.x - (generateButtonWidth + 10)) / settingAmount, elementY = 30; GUILayoutOption elementWidth = GUILayout.Width(elementX), elementHeight = GUILayout.Height(elementY); setting.fontSize = 10; GUILayout.BeginHorizontal(); //Individual Settings EditorGUI.BeginChangeCheck(); for (int i = 0; i < settings.variables.Count; i++) { GUI.backgroundColor = AnyWalkerEditor.col_black; GUILayout.BeginVertical("Box"); GUI.backgroundColor = AnyWalkerEditor.col_egg; GUILayout.Label(settings.variables[i].name, setting, elementWidth); if (values[i].GetType() == typeof(float)) { values[i] = EditorGUILayout.Slider((float)values[i], (float)settings.variables[i].options[0], (float)settings.variables[i].options[1], elementWidth, GUILayout.Height(elementY / 2)); GUILayout.Space(15); } else if (values[i].GetType() == typeof(int)) { values[i] = EditorGUILayout.IntSlider((int)values[i], (int)settings.variables[i].options[0], (int)settings.variables[i].options[1], GUILayout.Height(elementY / 2)); GUILayout.Space(15); } else if (values[i].GetType() == typeof(bool)) { int val = ((bool)values[i])? 1 : 0; val = GUILayout.SelectionGrid(val, new string[] { settings.variables[i].options[0].ToString(), settings.variables[i].options[1].ToString() }, 2); values[i] = (val == 0)? true : false; GUILayout.Space(12.5f); } else if (values[i].GetType() == typeof(string)) { values[i] = GUILayout.TextField((string)values[i], elementWidth, GUILayout.Height(elementY / 2)); GUILayout.Space(15); } else if (values[i].GetType() == typeof(Color)) { values[i] = EditorGUILayout.ColorField((Color)values[i], GUILayout.Width(elementX / 1.6f), GUILayout.Height(elementY / 2)); } //Color array else if (values[i].GetType() == typeof(AnyWalker.TerrainType)) { GUILayout.BeginHorizontal(); AnyWalker.TerrainType cast = (AnyWalker.TerrainType)values[i]; int count = (int)settings.variables[i].options[0]; cast.Synchronize(count); for (int v = 0; v < count; v++) { GUILayout.BeginVertical(); cast.colors[v] = EditorGUILayout.ColorField(cast.colors[v], GUILayout.Width(elementX / 2f), GUILayout.Height(elementY / 2)); cast.heights[v] = EditorGUILayout.FloatField(cast.heights[v], GUILayout.Width(elementX / 2.8f), GUILayout.Height(elementY / 2)); GUILayout.EndVertical(); } GUILayout.EndHorizontal(); } else if (values[i].GetType() == typeof(FilterMode)) { int selected = 0; if ((FilterMode)values[i] == FilterMode.Point) { selected = 0; } else if ((FilterMode)values[i] == FilterMode.Bilinear) { selected = 1; } else { selected = 2; } string[] names = { "Low", "Medium", "High" }; selected = EditorGUILayout.Popup(selected, names, GUILayout.Width(elementX / 2)); if (selected == 0) { values[i] = FilterMode.Point; } else if (selected == 1) { values[i] = FilterMode.Bilinear; } else { values[i] = FilterMode.Trilinear; } GUILayout.Space(15); } GUILayout.EndVertical(); } if (EditorGUI.EndChangeCheck()) { UpdateMesh(); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); //Generate Button GUI.backgroundColor = AnyWalkerEditor.col_semiblack; GUILayout.BeginVertical("Box", GUILayout.Width(generateButtonWidth)); GUILayout.Label("Finalise", EditorStyles.boldLabel); GUI.backgroundColor = AnyWalkerEditor.col_egg; GUILayout.Space(32); if (GUILayout.Button("Generate", generateButton)) { tar.Generate(obj, settings.size); this.Close(); } GUILayout.EndVertical(); GUILayout.EndHorizontal(); setting.fontSize = oldFontSize; label.normal.textColor = Color.black; }