public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { Propulsion propulsion = fieldInfo.GetValue(property.serializedObject.targetObject) as Propulsion; property.isExpanded = EditorGUI.Foldout(CustomEditorUtility.GetPropertyRect(0, position), property.isExpanded, property.name); if (property.isExpanded) { CustomEditorUtility.QuickSerializeRelativeGUI("separateAxes", property, position, 1); float w = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth = 0.01f; if (propulsion.separateAxes) { CustomEditorUtility.QuickSerializeRelativeGUI("strengthHoriz", property, CustomEditorUtility.GetPropertyRect(2, position, 0, 0.5f, position.width)); CustomEditorUtility.QuickSerializeRelativeGUI("curveHoriz", property, CustomEditorUtility.GetPropertyRect(2, position, 0.5f, 0.5f, position.width)); CustomEditorUtility.QuickSerializeRelativeGUI("strengthVerti", property, CustomEditorUtility.GetPropertyRect(3, position, 0, 0.5f, position.width)); CustomEditorUtility.QuickSerializeRelativeGUI("curveVerti", property, CustomEditorUtility.GetPropertyRect(3, position, 0.5f, 0.5f, position.width)); } else { CustomEditorUtility.QuickSerializeRelativeGUI("strength", property, CustomEditorUtility.GetPropertyRect(2, position, 0, 0.5f, position.width)); CustomEditorUtility.QuickSerializeRelativeGUI("curve", property, CustomEditorUtility.GetPropertyRect(2, position, 0.5f, 0.5f, position.width)); } EditorGUIUtility.labelWidth = w; int start = propulsion.separateAxes ? 4 : 3; CustomEditorUtility.QuickSerializeRelativeGUI("duration", property, position, start, 0, 1, position.width); CustomEditorUtility.QuickSerializeRelativeGUI("airControl", property, position, start + 1, 0, 1, position.width); CustomEditorUtility.QuickSerializeRelativeGUI("direction", property, position, start + 2, 0, 1, position.width); CustomEditorUtility.QuickSerializeRelativeGUI("priority", property, position, start + 3, 0, 1, position.width); } property.serializedObject.ApplyModifiedProperties(); }
void OnGUI() { DrawerTransition(); DataTransition(); Init(); GUILayout.BeginVertical(); DrawHeader(); Rect temp = GUILayoutUtility.GetLastRect(); GUILayout.BeginHorizontal(); DrawSideBar(); DrawEditor(); GUILayout.EndHorizontal(); GUILayout.EndVertical(); CustomEditorUtility.DrawShadow(CustomEditorUtility.Directions.Bottom, temp); DoChangeCheck(); if (ForceSaveFlag) { OnDatabaseChanged(); ForceSaveFlag = false; } if (EditorApplication.timeSinceStartup - lastSavedTime > AutoSaveInterval) { SaveDatabase(); } }
public override void OnInspectorGUI() { CustomEditorUtility.DrawTitle("Quik Feedback"); DrawGeneralSettings(); EditorGUILayout.Space(); DrawFeedbacks(); serializedObject.ApplyModifiedProperties(); }
public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { if (property.isExpanded) { return(CustomEditorUtility.PropertyHeight(8)); } else { return(CustomEditorUtility.PropertyHeight(1)); } }
public override void OnInspectorGUI() { EditorGUILayout.Space(); CustomEditorUtility.DrawTitle("Pool Manager"); CustomEditorUtility.QuickSerializeObject("instantiateOnAwake", serializedObject); DrawPools(); RefreshPoolsButton(); AddPoolButton(); DestroyPoolsButton(); serializedObject.ApplyModifiedProperties(); }
private void DrawGeneralSettings() { EditorGUILayout.BeginVertical("box"); CustomEditorUtility.QuickSerializeObject("feedbackName", serializedObject); CustomEditorUtility.QuickSerializeObject("enableDebug", serializedObject); CustomEditorUtility.QuickSerializeObject("generalDelay", serializedObject); if (f.enableDebug) { CustomEditorUtility.QuickSerializeObject("debugKey", serializedObject); } EditorGUILayout.EndVertical(); }
void UpdateCache(Sprite sprite) { if (sprite == null) { return; } previewTexRectCache = new Rect(sprite.rect.position.x / sprite.texture.width, sprite.rect.position.y / sprite.texture.height, sprite.rect.width / sprite.texture.width, sprite.rect.height / sprite.texture.height); previewRect = CustomEditorUtility.ScaleRect(boxRect, 0.96f); previewRect = CustomEditorUtility.TransfromRectRatio(previewRect, false, previewRect.size, new Vector2(16, 9), new Vector2(sprite.rect.width, sprite.rect.height)); }
public static void CreateLevelData() { AudioClip clip = Selection.activeObject as AudioClip; SoundItem item = ScriptableObject.CreateInstance <SoundItem>(); if (item != null && clip != null) { item.clip = clip; } CustomEditorUtility.CreateAsset <SoundItem>(item, (clip != null ? clip.name : "")); EditorUtility.FocusProjectWindow(); Selection.activeObject = item; }
public override void OnInspectorGUI() { EditorGUI.BeginChangeCheck(); CustomEditorUtility.DrawTitle(t.name.Replace("POW_", "")); CustomEditorUtility.QuickSerializeObject("cooldown", serializedObject); EditorGUILayout.LabelField("Actions", EditorStyles.boldLabel); SerializedProperty actions = serializedObject.FindProperty("actions"); for (int i = 0; i < actions.arraySize; i++) { EditorGUILayout.BeginVertical("box"); SerializedProperty action = actions.GetArrayElementAtIndex(i); EditorGUILayout.BeginHorizontal(); if (i < t.actions.Count) { t.actions[i].enabled = EditorGUILayout.Toggle(t.actions[i].enabled); } CustomEditorUtility.QuickSerializeRelative("delay", action); if (CustomEditorUtility.RemoveButton()) { Undo.RecordObject(t, "Remove"); t.actions.RemoveAt(i); } EditorGUILayout.EndHorizontal(); CustomEditorUtility.QuickSerializeRelative("action", action); EditorGUILayout.EndVertical(); } if (CustomEditorUtility.AddButton()) { Undo.RecordObject(t, "Add"); t.actions.Add(new PowerActionSettings()); } if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(t); Repaint(); } serializedObject.ApplyModifiedProperties(); }
public override void OnInspectorGUI() { EditorGUI.BeginChangeCheck(); CustomEditorUtility.DrawTitle("Instantiate " + EntityNames[t.indexInPool]); t.indexInPool = EditorGUILayout.Popup(t.indexInPool, EntityNames.ToArray()); CustomEditorUtility.QuickSerializeObject(EntityNames[t.indexInPool], serializedObject); serializedObject.ApplyModifiedProperties(); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(t); } }
void DrawAttachedImages(InfoLogEntry entry) { GUILayout.Label("Attached Images"); GUILayout.BeginHorizontal(GUILayout.Height(160)); GUILayout.Space(8); for (int i = 0; i < entry.attachedImages.Count; i++) { Rect temp; GUILayout.BeginVertical(GUILayout.Width(160)); GUILayout.Space(4); GUILayout.Box(GUIContent.none, GUILayout.Width(160), GUILayout.Height(160)); temp = GUILayoutUtility.GetLastRect(); GUI.DrawTextureWithTexCoords(temp, BoxBG, new Rect(0, 0, 12, 12)); CustomEditorUtility.DrawRectOutline(temp); GUI.DrawTexture(CustomEditorUtility.RectScaler(temp, 0.96f), entry.attachedImages[i].texture, ScaleMode.ScaleToFit); entry.attachedImages[i] = EditorGUILayout.ObjectField(entry.attachedImages[i], typeof(Sprite), false) as Sprite; entry.imageCaptions[i] = EditorGUILayout.TextField(entry.imageCaptions[i]); GUILayout.EndVertical(); DeleteButtonOnAttachment(temp, entry, i); } GUILayout.BeginVertical(GUILayout.Height(160)); GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); Layout_ImagePickerButton("+", ref imagePickerBuffer, GUIUtility.GetControlID(FocusType.Passive), GUILayout.Width(32), GUILayout.Height(32)); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); GUILayout.EndVertical(); GUILayout.Space(8); GUILayout.EndHorizontal(); CustomEditorUtility.DrawRectOutline(GUILayoutUtility.GetLastRect()); if (imagePickerBuffer != null) { entry.attachedImages.Add(imagePickerBuffer); entry.imageCaptions.Add(""); imagePickerBuffer = null; } }
void DrawEditor_Normal() { EditorGUI.BeginChangeCheck(); scrollPos_Editor = GUILayout.BeginScrollView(scrollPos_Editor); GUILayout.BeginVertical(); infoGroupCache.groupTag = EditorGUILayout.TextField("Group Tag", infoGroupCache.groupTag); GUILayout.Space(48); for (int i = 0; i < infoGroupCache.entries.Count; i++) { switch (infoGroupCache.entries[i].entryType) { case InfoLogEntry.EntryType.Article: DrawArticleInfo(infoGroupCache.entries[i]); break; case InfoLogEntry.EntryType.Gallery: DrawGalleryInfo(infoGroupCache.entries[i]); break; case InfoLogEntry.EntryType.Comment: DrawCommentInfo(infoGroupCache.entries[i]); break; } GUILayout.Space(24); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label("", GUILayout.Height(1), GUILayout.Width(420)); CustomEditorUtility.DrawRectOutline(GUILayoutUtility.GetLastRect()); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.Space(24); } GUILayout.EndVertical(); GUILayout.EndScrollView(); if (EditorGUI.EndChangeCheck()) { OnDataValueChanged(); CacheGroupTags(); } }
private void DrawSinglePool(int i, SerializedProperty pools) { if (i < m.pools.Count) { Color defaultCol = GUI.color; GameObject prefab = m.pools[i].prefab; string name = "Pool " + i; bool hasPrefab = prefab != null; bool hasEntity = true; EditorGUILayout.BeginVertical("box"); if (hasPrefab) { hasEntity = prefab.GetComponentInChildren <Entity>(); name += ": " + prefab.name; if (!hasEntity) { GUI.color = Color.red; } //if (elem) name += ": Level element"; } else { GUI.color = Color.yellow; name += ": No prefab "; } EditorGUILayout.BeginHorizontal(); EditorGUI.indentLevel += 1; m.pools[i].foldout = EditorGUILayout.Foldout(m.pools[i].foldout, name, EditorStyles.foldoutHeader); GUI.color = defaultCol; EditorGUI.indentLevel -= 1; if (GUILayout.Button("x", GUILayout.MaxWidth(50))) { if (m.pools[i].parent) { Undo.DestroyObjectImmediate(m.pools[i].parent.gameObject); } Undo.RecordObject(m, "Remove Pool"); m.pools.RemoveAt(i); } EditorGUILayout.EndHorizontal(); if (i < m.pools.Count) { if (m.pools[i].foldout) { EditorGUILayout.Space(); SerializedProperty arrayElement = pools.GetArrayElementAtIndex(i); CustomEditorUtility.QuickSerializeRelative("prefab", arrayElement); if (hasPrefab) { if (!hasEntity) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("Error : The specified prefab is not an entity. Please add an entity script on it.", MessageType.Error); if (GUILayout.Button("Fix")) { Undo.AddComponent(prefab, typeof(Entity)); //prefab.AddComponent<Entity>(); } EditorGUILayout.EndHorizontal(); } else { CustomEditorUtility.QuickSerializeRelative("amount", arrayElement); GUI.enabled = false; CustomEditorUtility.QuickSerializeRelative("parent", arrayElement); CustomEditorUtility.QuickSerializeRelative("entities", arrayElement); GUI.enabled = true; EditorGUILayout.Space(); int currentlyActive = m.UpdateCurrentlyActive(i); Rect r = EditorGUILayout.BeginVertical(); int usage = Mathf.CeilToInt(m.pools[i].usage * 100); EditorGUI.ProgressBar(r, m.pools[i].usage, "Current usage of the pool: " + usage.ToString("F2") + "% (" + currentlyActive + " out of " + m.pools[i].entities.Count + ")"); GUILayout.Space(18); EditorGUILayout.EndVertical(); } } else { EditorGUILayout.HelpBox("Please assign a prefab.", MessageType.Warning); } } } EditorGUILayout.EndVertical(); } }
public void Draw_RectLayout(string LabelText, Rect LabelAndFieldRect, Rect ButtonRect, Rect AreaRect, GUIStyle LabelStyle = null, GUIStyle InputFieldStyle = null, GUIStyle ButtonStyle = null, bool InputUnderline = false, bool ReadOnly = false) { if (LabelStyle == null) { LabelStyle = StaticLabelStyle; } if (InputFieldStyle == null) { InputFieldStyle = StaticFieldStyle; } if (ButtonStyle == null) { ButtonStyle = StaticButtonStyle; } if (!isEditing) { GUI.Label(LabelAndFieldRect, LabelText, LabelStyle); GUILayout.Space(4); if (!ReadOnly) { if (GUI.Button(ButtonRect, ButtonLabel_Edit, ButtonStyle)) { isEditing = true; if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } } if (InputUnderline) { CustomEditorUtility.DrawSideBorder(CustomEditorUtility.Directions.Bottom, LabelAndFieldRect); } } else { bool temp = false; if (EditingCache == null) { EditingCache = LabelText; temp = true; GUI.SetNextControlName("input"); } EditingCache = EditorGUI.TextField(LabelAndFieldRect, EditingCache, InputFieldStyle); GUILayout.Space(4); if (temp) { GUI.FocusControl("input"); temp = false; } if (GUI.Button(ButtonRect, ButtonLabel_Save, ButtonStyle) || Event.current.keyCode == KeyCode.Return || Event.current.keyCode == KeyCode.KeypadEnter) { if (EditingCache != LabelText) { Edited.Invoke(this.EditingCache); } EditingCache = null; isEditing = false; GUI.FocusControl("0"); if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } if (Event.current.type == EventType.MouseUp) { if (!LabelAndFieldRect.Contains(Event.current.mousePosition)) { isEditing = false; EditingCache = null; GUI.FocusControl("0"); if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } } } }
public void Draw(string labelText, bool inputUnderline = false, GUIStyle LabelStyle = null, GUIStyle InputFieldStyle = null, GUIStyle ButtonStyle = null, GUILayoutOption[] LabelAndFieldLayout = null, GUILayoutOption[] ButtonLayout = null, GUILayoutOption[] AreaLayout = null, bool ReadOnly = false) { if (LabelAndFieldLayout == null) { LabelAndFieldLayout = StaticLabelFieldLayout; } if (AreaLayout == null) { AreaLayout = StaticAreaLayout; } if (LabelStyle == null) { LabelStyle = StaticLabelStyle; } if (InputFieldStyle == null) { InputFieldStyle = StaticFieldStyle; } if (ButtonStyle == null) { ButtonStyle = StaticButtonStyle; } if (ButtonLayout == null) { ButtonLayout = StaticButtonLayout; } GUILayout.BeginHorizontal(AreaLayout); Rect labelAndFieldRect = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, LabelAndFieldLayout); Rect spacingRect = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.Width(4)); Rect buttonRect = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, ButtonLayout); if (!isEditing) { GUI.Label(labelAndFieldRect, labelText, LabelStyle); if (!ReadOnly) { if (GUI.Button(buttonRect, ButtonLabel_Edit, ButtonStyle)) { isEditing = true; if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } } if (inputUnderline) { CustomEditorUtility.DrawSideBorder(CustomEditorUtility.Directions.Bottom, labelAndFieldRect); } } else { bool temp = false; if (EditingCache == null) { EditingCache = labelText; temp = true; GUI.SetNextControlName("input"); } EditingCache = EditorGUI.TextField(labelAndFieldRect, EditingCache, InputFieldStyle); if (temp) { GUI.FocusControl("input"); temp = false; } if (GUI.Button(buttonRect, ButtonLabel_Save, ButtonStyle) || Event.current.keyCode == KeyCode.Return || Event.current.keyCode == KeyCode.KeypadEnter) { if (EditingCache != labelText) { Edited.Invoke(this.EditingCache); } EditingCache = null; isEditing = false; GUI.FocusControl("0"); if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } if (Event.current.type == EventType.MouseUp) { if (!labelAndFieldRect.Contains(Event.current.mousePosition)) { isEditing = false; EditingCache = null; GUI.FocusControl("0"); if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } } } GUILayout.EndHorizontal(); }
public void Draw(Rect position, string labelText, bool inputUnderline = false) { Rect labelRect; if (labelExpandWidth) { labelRect = new Rect(position.position, position.size - new Vector2(buttonWidth, 0)); } else { labelRect = new Rect(position.position, new Vector2(labelWidth, position.height)); } Rect inputRect = new Rect(labelRect.position, labelRect.size - new Vector2(buttonWidth + 8, 0)); Rect buttonRect; buttonHeight = position.height; if (labelExpandWidth) { buttonRect = new Rect(position.x + position.width - buttonWidth, position.y, buttonWidth, buttonHeight); } else { buttonRect = new Rect(position.x + labelWidth + 8, position.y, buttonWidth, buttonHeight); } int cache; if (!editing) { cache = GUI.skin.label.fontSize; GUI.skin.label.fontSize = fontSize; if (labelWidth > 0) { GUI.Label(labelRect, labelText); } else { GUI.Label(labelRect, labelText); } GUI.skin.label.fontSize = cache; if (inputUnderline) { CustomEditorUtility.DrawSideBorder(CustomEditorUtility.Directions.Bottom, labelRect); } if (GUI.Button(buttonRect, editText)) { editing = true; } } else { if (editCache == null) { editCache = labelText; } cache = GUI.skin.textField.fontSize; GUI.skin.textField.fontSize = fontSize; if (labelWidth > 0) { editCache = EditorGUI.TextField(inputRect, editCache); } else { editCache = EditorGUI.TextField(inputRect, editCache); } GUI.skin.textField.fontSize = cache; if (GUI.Button(buttonRect, saveText) || Event.current.keyCode == KeyCode.Return || Event.current.keyCode == KeyCode.KeypadEnter) { if (editCache != labelText) { Edited.Invoke(this.editCache); } editCache = null; editing = false; GUI.FocusControl("0"); if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } if (Event.current.type == EventType.MouseUp) { if (!inputRect.Contains(Event.current.mousePosition) && !buttonRect.Contains(Event.current.mousePosition)) { editing = false; editCache = null; if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } } } }
public void DrawLayout(string labelText, bool inputUnderline = false, GUILayoutOption[] labelLayout = null, GUILayoutOption[] fieldLayout = null) { if (areaWidth > 0) { GUILayout.BeginHorizontal(GUILayout.Width(areaWidth)); } else { GUILayout.BeginHorizontal(GUILayout.ExpandWidth(areaExpandWidth)); } if (!editing) { if (labelWidth > 0) { GUILayout.Label(labelText, LabelStyle, GUILayout.Width(labelWidth), GUILayout.Height(areaHeight)); } else { GUILayout.Label(labelText, LabelStyle, GUILayout.ExpandWidth(labelExpandWidth), GUILayout.Height(areaHeight)); } if (inputUnderline) { CustomEditorUtility.DrawSideBorder(CustomEditorUtility.Directions.Bottom, GUILayoutUtility.GetLastRect()); } if (GUILayout.Button(editText, GUILayout.ExpandWidth(false), GUILayout.Height(areaHeight))) { editing = true; } } else { bool temp = false; if (editCache == null) { editCache = labelText; temp = true; GUI.SetNextControlName("input"); } if (labelWidth > 0) { editCache = EditorGUILayout.TextField(editCache, InputFieldStyle, GUILayout.Width(labelWidth + 60), GUILayout.MinWidth(80), GUILayout.Height(areaHeight)); } else { editCache = EditorGUILayout.TextField(editCache, InputFieldStyle, GUILayout.ExpandWidth(labelExpandWidth), GUILayout.MinWidth(80), GUILayout.Height(areaHeight)); } if (temp) { GUI.FocusControl("input"); temp = false; } Rect inputRect = GUILayoutUtility.GetLastRect(); if (GUILayout.Button(saveText, GUILayout.ExpandWidth(false), GUILayout.Height(areaHeight)) || Event.current.keyCode == KeyCode.Return || Event.current.keyCode == KeyCode.KeypadEnter) { if (editCache != labelText) { Edited.Invoke(this.editCache); } editCache = null; editing = false; GUI.FocusControl("0"); if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } Rect buttonRect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.MouseUp) { if (!inputRect.Contains(Event.current.mousePosition) && !buttonRect.Contains(Event.current.mousePosition)) { editing = false; editCache = null; GUI.FocusControl("0"); if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } } } GUILayout.EndHorizontal(); if (Event.current.type == EventType.Repaint) { if (rect == null) { rect = GUILayoutUtility.GetLastRect(); } topLeftPoint = new Vector2(rect.xMin, rect.yMin); bottomRightPoint = new Vector2(rect.xMax, rect.yMax); } }
public Sprite DrawLayout(Sprite sprite, bool readOnly = false, params GUILayoutOption[] SizeLayoutOptions) { if (TransparentBoxBG == null) { TransparentBoxBG = (Texture2D)EditorGUIUtility.Load("TransparentBGPattern.png"); } stored = sprite; //Auto Layout List <GUILayoutOption> options = new List <GUILayoutOption>(); switch (layoutMode) { case LayoutMode.FixedSize: if (!useGUILayoutSizeOptions) { options.Add(GUILayout.Width(width)); options.Add(GUILayout.Height(height)); } break; case LayoutMode.ScaleByWidth: if (!useGUILayoutSizeOptions) { options.Add(GUILayout.MaxWidth(maxWidth)); } options.Add(GUILayout.Height(heightAuto)); options.Add(GUILayout.ExpandHeight(false)); break; case LayoutMode.ScaleByHeight: if (!useGUILayoutSizeOptions) { options.Add(GUILayout.MaxHeight(maxHeight)); } options.Add(GUILayout.Width(widthAuto)); options.Add(GUILayout.ExpandWidth(false)); break; case LayoutMode.Stretch: if (!useGUILayoutSizeOptions) { options.Add(GUILayout.MaxWidth(maxWidth)); options.Add(GUILayout.MaxHeight(maxHeight)); } options.Add(GUILayout.ExpandWidth(true)); options.Add(GUILayout.ExpandHeight(true)); break; } if (useGUILayoutSizeOptions) { options.AddRange(fixedOptions); } else { options.AddRange(SizeLayoutOptions); } boxRect = GUILayoutUtility.GetRect(GUIContent.none, GUI.skin.box, options.ToArray()); if (previewTexRectCache == null || previewRect == null) { UpdateCache(sprite); } if (stored == null) { GUI.Box(boxRect, string.Empty, boxStyle); } else { GUI.DrawTextureWithTexCoords(boxRect, TransparentBoxBG, new Rect(0, 0, widthRatio, heightRatio)); CustomEditorUtility.DrawSideBorders(boxRect, new Color(0.24f, 0.24f, 0.24f, 1f)); GUI.DrawTextureWithTexCoords(previewRect, sprite.texture, previewTexRectCache); } if (layoutMode == LayoutMode.ScaleByWidth) { float cache = heightAuto; if (Event.current.type == EventType.Repaint) { // boxRect = GUILayoutUtility.GetLastRect(); heightAuto = boxRect.width * heightRatio / widthRatio; layoutJustChanged = true; if (heightAuto != cache) { if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } } } else if (layoutMode == LayoutMode.ScaleByHeight) { float cache = widthAuto; if (Event.current.type == EventType.Repaint) { // boxRect = GUILayoutUtility.GetLastRect(); Debug.Log(boxRect.width + ", " + boxRect.height); widthAuto = boxRect.height * widthRatio / heightRatio; layoutJustChanged = true; if (cache != widthAuto) { if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } } } if (boxRect.Contains(Event.current.mousePosition)) { EditorGUI.DrawRect(boxRect, new Color(0, 0, 0, 0.2f)); GUI.Label(boxRect, "Select", hoverLabelStyle); if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } int ID = EditorGUIUtility.GetControlID(FocusType.Passive); if (Event.current.type == EventType.MouseDown) { if (boxRect.Contains(Event.current.mousePosition)) { EditorGUIUtility.ShowObjectPicker <Sprite>(sprite, false, "t:Sprite", ID); } } if (layoutJustChanged) { UpdateCache(sprite); layoutJustChanged = false; if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } if (Event.current.commandName == "ObjectSelectorUpdated") { if (EditorGUIUtility.GetObjectPickerControlID() == ID) { stored = (Sprite)EditorGUIUtility.GetObjectPickerObject(); UpdateCache(stored); } } return(stored); }
public string Draw_Advanced(string labelText, bool inputUnderline = false, GUIStyle labelStyle = null, GUIStyle inputFieldStyle = null, GUILayoutOption[] labelAndFieldLayout = null, GUILayoutOption[] areaLayout = null, bool ReadOnly = false) { if (labelAndFieldLayout == null) { labelAndFieldLayout = staticLabelFieldLayout; } if (areaLayout == null) { areaLayout = staticAreaLayout; } if (labelStyle == null) { labelStyle = staticLabelStyle; } if (inputFieldStyle == null) { inputFieldStyle = staticFieldStyle; } Rect labelAndFieldRect = GUILayoutUtility.GetRect(GUIContent.none, new GUIStyle(), labelAndFieldLayout); GUILayout.BeginHorizontal(areaLayout); if (!isEditing) { if (Event.current.type == EventType.MouseMove && !ReadOnly) { isHovering = (labelAndFieldRect.Contains(Event.current.mousePosition))? true : false; if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } // if (isHovering) { // GUI.Label(labelAndFieldRect, "<color=#4228FF>" + labelText + "</color>", labelStyle); // } GUI.Label(labelAndFieldRect, labelText, labelStyle); if (inputUnderline) { CustomEditorUtility.DrawSideBorder(CustomEditorUtility.Directions.Bottom, labelAndFieldRect); } if (!ReadOnly) { EditorGUIUtility.AddCursorRect(labelAndFieldRect, MouseCursor.Text); } if (!ReadOnly) { if (Event.current.type == EventType.MouseUp) { if (labelAndFieldRect.Contains(Event.current.mousePosition)) { isEditing = true; if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } } } } else { bool temp = false; if (EditingCache == null) { EditingCache = labelText; temp = true; GUI.SetNextControlName("input"); } EditingCache = EditorGUI.TextField(labelAndFieldRect, EditingCache, inputFieldStyle); if (showEnterTip) { GUI.Label(new Rect(labelAndFieldRect.xMax + 4, labelAndFieldRect.yMax - 14, 128, 14), "Press Enter to save."); } if (temp) { GUI.FocusControl("input"); temp = false; } if (Event.current.keyCode == KeyCode.Return || Event.current.keyCode == KeyCode.KeypadEnter) { if (EditingCache != labelText) { Edited.Invoke(this.EditingCache); } EditingCache = null; isEditing = false; GUI.FocusControl("0"); if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } if (Event.current.type == EventType.MouseUp) { if (!labelAndFieldRect.Contains(Event.current.mousePosition)) { isEditing = false; EditingCache = null; GUI.FocusControl("0"); if (EditorWindow.focusedWindow) { EditorWindow.focusedWindow.Repaint(); } } } } GUILayout.EndHorizontal(); return(EditingCache); }