public override void OnInspectorGUI() { EditorGUI.BeginChangeCheck(); InstantGuiElement script = (InstantGuiElement)target; Undo.RecordObject(script, "InstantGui Change"); //EditorGUIUtility.LookLikeInspector (); //DrawDefaultInspector (); //text string newText = EditorGUILayout.TextField("Text:", script.text); script.guiLinkText = EditorGUILayout.Toggle("Use Object Name:", script.guiLinkText); if (script.guiLinkText && !EditorApplication.isPlayingOrWillChangePlaymode && script.GetType() != typeof(InstantGuiTextArea)) { if (script.text != newText) //if text changed { if (newText.Length != 0) { script.gameObject.name = newText; } else { script.gameObject.name = "GuiElement"; } script.text = newText; } if (script.text != script.gameObject.name && newText.Length != 0) { script.text = script.gameObject.name; } } else { script.text = newText; } //setting style script.guiStyle = EditorGUILayout.Foldout(script.guiStyle, "Style"); if (script.guiStyle) { EditorGUI.indentLevel = 1; script.styleSet = (InstantGuiStyleSet)EditorGUILayout.ObjectField("Style Set:", script.styleSet, typeof(InstantGuiStyleSet), false); bool customStyle = EditorGUILayout.Toggle("Custom Style:", script.customStyle); //custom style if (customStyle) { if (!script.customStyle) { if (script.style != null) { script.style = script.style.Clone(); } else { script.style = new InstantGuiStyle(); } } script.style.name = EditorGUILayout.TextField("Name:", script.style.name); script.styleName = script.style.name; InstantGuiInspector.DrawStyle(script.style, false); EditorGUILayout.Space(); if (script.styleSet != null && script.style != null && script.style.name.Length > 0) { InstantGuiInspector.DrawSaveToStyleButton("Add to StyleSet", script, true, false); } } //else if (!customStyle && script.styleSet != null) { string[] styleNames = new string[script.styleSet.styles.Length]; int selectedStyle = -1; //default if style could not be found //compiling popup array for (int i = 0; i < script.styleSet.styles.Length; i++) { styleNames[i] = script.styleSet.styles[i].name; } //finding popup selected if (script.style == null) { selectedStyle = 0; } else { for (int i = 0; i < styleNames.Length; i++) { if (styleNames[i] == script.styleName) { selectedStyle = i; } } } styleNames[0] = "None"; int newSelected = EditorGUILayout.Popup("Style:", selectedStyle, styleNames); if (newSelected != selectedStyle) { script.style = script.styleSet.styles[newSelected]; script.styleName = script.style.name; //script.styleNum = newSelected; } } script.customStyle = customStyle; EditorGUI.indentLevel = 0; } //position script.guiPosition = EditorGUILayout.Foldout(script.guiPosition, "Position"); if (script.guiPosition) { EditorGUI.indentLevel = 1; script.useStylePlacement = EditorGUILayout.ToggleLeft("Use Style Placement", script.useStylePlacement); if (!script.useStylePlacement) { int preset = EditorGUILayout.Popup("Preset:", -1, positionPresets); switch (preset) { //case 0: if (script.style!=null) { script.relative.Set(script.style.relative); script.offset.Set(script.style.offset); script.layerOffset = script.style.layerOffset; } break; case 0: script.relative.Set(0, 100, 0, 100); script.offset.Set(0, 0, 0, 0); break; case 1: script.relative.Set(10, 90, 10, 90); script.offset.Set(10, -10, 10, -10); break; case 2: script.offset.right = -script.offset.left; script.offset.bottom = -script.offset.top; break; case 3: script.relative.Set(50, 50, 50, 50); script.offset.Set(20, -20, 20, -20); break; case 4: if (script.style != null) { script.offset.left = (int)(-script.style.fixedWidthSize * 0.5f); script.offset.right = (int)(script.style.fixedWidthSize * 0.5f); } break; case 5: if (script.style != null) { script.offset.top = (int)(-script.style.fixedHeightSize * 0.5f); script.offset.bottom = (int)(script.style.fixedHeightSize * 0.5f); } break; } InstantGuiInspector.DrawElementPosLabels("", "Left", "Right", "Top", "Bottom"); script.relative = InstantGuiInspector.DrawElementPos("Relative:", script.relative); script.offset = InstantGuiInspector.DrawElementPos("Offset:", script.offset); InstantGuiInspector.DrawElementPosLabels("Absolute:", script.absolute.left.ToString(), script.absolute.right.ToString(), script.absolute.top.ToString(), script.absolute.bottom.ToString()); script.layerOffset = InstantGuiInspector.DrawLayerOffset("Layer Offset:", script.layerOffset); script.lockPosition = EditorGUILayout.Toggle("Lock Position", script.lockPosition); if (script.styleSet != null && script.style != null && script.style.name != null && script.style.name.Length > 0) { InstantGuiInspector.DrawSaveToStyleButton("Set as Default in Style", script, false, true); } } EditorGUI.indentLevel = 0; } script.guiAttributes = EditorGUILayout.Foldout(script.guiAttributes, "Attributes"); if (script.guiAttributes) { EditorGUI.indentLevel = 1; //EditorGUI.indentLevel = 20; script.dynamic = EditorGUILayout.Toggle("Dynamic", script.dynamic); script.editable = EditorGUILayout.Toggle("Editable", script.editable); script.pointed = EditorGUILayout.Toggle("Pointed", script.pointed); script.disabled = EditorGUILayout.Toggle("Disabled", script.disabled); script.activated = EditorGUILayout.Toggle("Activated", script.activated); script.pressed = EditorGUILayout.Toggle("Pressed", script.pressed); //script.checkbutton = EditorGUILayout.Toggle("\tCheckbutton", script.checkbutton); script.check = EditorGUILayout.Toggle("Checked", script.check); script.instant = EditorGUILayout.Toggle("Instant", script.instant); script.password = EditorGUILayout.Toggle("Password", script.password); EditorGUI.indentLevel = 0; } if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(script); InstantGui.instance.Update(); } else { Undo.ClearUndo(script); } }
public override void OnInspectorGUI() { InstantGuiStyleSet script = (InstantGuiStyleSet)target; if (script.styles == null) { script.styles = new InstantGuiStyle[1]; script.styles[0] = new InstantGuiStyle(); } EditorGUI.BeginChangeCheck(); Undo.RecordObject(script, "InstantGui Style Change"); Rect rect = new Rect(0, 0, 0, 0); if (script.styles != null) { for (int i = 1; i < script.styles.Length; i++) { //if (script.styles[i]==null) script.styles[i] = new InstantGuiStyle(); EditorGUI.indentLevel = 0; rect = GUILayoutUtility.GetRect(50, 18, "TextField"); //name rect.x += 10; rect.width -= 90; script.styles[i].name = EditorGUI.TextField(rect, script.styles[i].name); //move up rect.x = rect.width + 30; rect.width = 23; if (GUI.Button(rect, "∧ ") && i != 1) { InstantGuiStyle tmp = script.styles[i - 1]; script.styles[i - 1] = script.styles[i]; script.styles[i] = tmp; EditorUtility.SetDirty(script); } //move down rect.x += 25; if (GUI.Button(rect, "∨ ") && i != script.styles.Length - 1) { InstantGuiStyle tmp = script.styles[i + 1]; script.styles[i + 1] = script.styles[i]; script.styles[i] = tmp; EditorUtility.SetDirty(script); } //delete rect.x += 25; if (GUI.Button(rect, "✕ ") && EditorUtility.DisplayDialog("Remove Style?", "Are you sure you want to remove style?", "OK", "Cancel")) { InstantGuiStyle[] newStyles = new InstantGuiStyle[script.styles.Length - 1]; int counter = 0; for (int j = 0; j < script.styles.Length; j++) { if (j != i) { newStyles[counter] = script.styles[j]; counter++; } } script.styles = newStyles; EditorUtility.SetDirty(script); } if (i == script.styles.Length) { break; } //foldout rect.x = 20; rect.width = 20; script.styles[i].show = EditorGUI.Foldout(rect, script.styles[i].show, ""); //display style if (script.styles[i].show) { InstantGuiInspector.DrawStyle(script.styles[i], true); } } } //adding rect = GUILayoutUtility.GetRect(50, 18, "TextField"); rect.x = rect.width - 70; rect.width = 73; if (GUI.Button(rect, "Add")) { InstantGuiStyle[] newStyles = new InstantGuiStyle[script.styles.Length + 1]; for (int j = 0; j < script.styles.Length; j++) { newStyles[j] = script.styles[j]; } newStyles[newStyles.Length - 1] = new InstantGuiStyle(); script.styles = newStyles; EditorUtility.SetDirty(script); } if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(target); if (InstantGui.instance != null) { InstantGui.instance.Update(); } } //else Undo.ClearUndo(script); }