From a10eea6e4ce647061813519d5b0ea496f29495b9 Mon Sep 17 00:00:00 2001
From: leonard Wu <364452445@qq.com>
Date: 星期四, 09 八月 2018 09:47:08 +0800
Subject: [PATCH] 同步最新svn内容
---
Assets/Plugins/PostProcessing/Editor/Utils/EditorGUIHelper.cs | 388 +++++++++++++++++++++++++++---------------------------
1 files changed, 194 insertions(+), 194 deletions(-)
diff --git a/Assets/Plugins/PostProcessing/Editor/Utils/EditorGUIHelper.cs b/Assets/Plugins/PostProcessing/Editor/Utils/EditorGUIHelper.cs
index c0d4e1e..c3f2ffe 100644
--- a/Assets/Plugins/PostProcessing/Editor/Utils/EditorGUIHelper.cs
+++ b/Assets/Plugins/PostProcessing/Editor/Utils/EditorGUIHelper.cs
@@ -1,194 +1,194 @@
-using System;
-using UnityEngine;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Reflection;
-using UnityEngine.PostProcessing;
-
-namespace UnityEditor.PostProcessing
-{
- public static class EditorGUIHelper
- {
- static EditorGUIHelper()
- {
- s_GUIContentCache = new Dictionary<string, GUIContent>();
- }
-
- #region GUIContent caching
-
- static Dictionary<string, GUIContent> s_GUIContentCache;
-
- public static GUIContent GetContent(string textAndTooltip)
- {
- if (string.IsNullOrEmpty(textAndTooltip))
- return GUIContent.none;
-
- GUIContent content;
-
- if (!s_GUIContentCache.TryGetValue(textAndTooltip, out content))
- {
- var s = textAndTooltip.Split('|');
- content = new GUIContent(s[0]);
-
- if (s.Length > 1 && !string.IsNullOrEmpty(s[1]))
- content.tooltip = s[1];
-
- s_GUIContentCache.Add(textAndTooltip, content);
- }
-
- return content;
- }
-
- #endregion
-
- public static bool Header(string title, SerializedProperty group, Action resetAction)
- {
- var rect = GUILayoutUtility.GetRect(16f, 22f, FxStyles.header);
- GUI.Box(rect, title, FxStyles.header);
-
- var display = group == null || group.isExpanded;
-
- var foldoutRect = new Rect(rect.x + 4f, rect.y + 2f, 13f, 13f);
- var e = Event.current;
-
- var popupRect = new Rect(rect.x + rect.width - FxStyles.paneOptionsIcon.width - 5f, rect.y + FxStyles.paneOptionsIcon.height / 2f + 1f, FxStyles.paneOptionsIcon.width, FxStyles.paneOptionsIcon.height);
- GUI.DrawTexture(popupRect, FxStyles.paneOptionsIcon);
-
- if (e.type == EventType.Repaint)
- FxStyles.headerFoldout.Draw(foldoutRect, false, false, display, false);
-
- if (e.type == EventType.MouseDown)
- {
- if (popupRect.Contains(e.mousePosition))
- {
- var popup = new GenericMenu();
- popup.AddItem(GetContent("Reset"), false, () => resetAction());
- popup.AddSeparator(string.Empty);
- popup.AddItem(GetContent("Copy Settings"), false, () => CopySettings(group));
-
- if (CanPaste(group))
- popup.AddItem(GetContent("Paste Settings"), false, () => PasteSettings(group));
- else
- popup.AddDisabledItem(GetContent("Paste Settings"));
-
- popup.ShowAsContext();
- }
- else if (rect.Contains(e.mousePosition) && group != null)
- {
- display = !display;
-
- if (group != null)
- group.isExpanded = !group.isExpanded;
-
- e.Use();
- }
- }
-
- return display;
- }
-
- public static bool Header(string title, SerializedProperty group, SerializedProperty enabledField, Action resetAction)
- {
- var field = ReflectionUtils.GetFieldInfoFromPath(enabledField.serializedObject.targetObject, enabledField.propertyPath);
- object parent = null;
- PropertyInfo prop = null;
-
- if (field != null && field.IsDefined(typeof(GetSetAttribute), false))
- {
- var attr = (GetSetAttribute)field.GetCustomAttributes(typeof(GetSetAttribute), false)[0];
- parent = ReflectionUtils.GetParentObject(enabledField.propertyPath, enabledField.serializedObject.targetObject);
- prop = parent.GetType().GetProperty(attr.name);
- }
-
- var display = group == null || group.isExpanded;
- var enabled = enabledField.boolValue;
-
- var rect = GUILayoutUtility.GetRect(16f, 22f, FxStyles.header);
- GUI.Box(rect, title, FxStyles.header);
-
- var toggleRect = new Rect(rect.x + 4f, rect.y + 4f, 13f, 13f);
- var e = Event.current;
-
- var popupRect = new Rect(rect.x + rect.width - FxStyles.paneOptionsIcon.width - 5f, rect.y + FxStyles.paneOptionsIcon.height / 2f + 1f, FxStyles.paneOptionsIcon.width, FxStyles.paneOptionsIcon.height);
- GUI.DrawTexture(popupRect, FxStyles.paneOptionsIcon);
-
- if (e.type == EventType.Repaint)
- FxStyles.headerCheckbox.Draw(toggleRect, false, false, enabled, false);
-
- if (e.type == EventType.MouseDown)
- {
- const float kOffset = 2f;
- toggleRect.x -= kOffset;
- toggleRect.y -= kOffset;
- toggleRect.width += kOffset * 2f;
- toggleRect.height += kOffset * 2f;
-
- if (toggleRect.Contains(e.mousePosition))
- {
- enabledField.boolValue = !enabledField.boolValue;
-
- if (prop != null)
- prop.SetValue(parent, enabledField.boolValue, null);
-
- e.Use();
- }
- else if (popupRect.Contains(e.mousePosition))
- {
- var popup = new GenericMenu();
- popup.AddItem(GetContent("Reset"), false, () => resetAction());
- popup.AddSeparator(string.Empty);
- popup.AddItem(GetContent("Copy Settings"), false, () => CopySettings(group));
-
- if (CanPaste(group))
- popup.AddItem(GetContent("Paste Settings"), false, () => PasteSettings(group));
- else
- popup.AddDisabledItem(GetContent("Paste Settings"));
-
- popup.ShowAsContext();
- }
- else if (rect.Contains(e.mousePosition) && group != null)
- {
- display = !display;
- group.isExpanded = !group.isExpanded;
- e.Use();
- }
- }
-
- return display;
- }
-
- static void CopySettings(SerializedProperty settings)
- {
- var t = typeof(PostProcessingProfile);
- var settingsStruct = ReflectionUtils.GetFieldValueFromPath(settings.serializedObject.targetObject, ref t, settings.propertyPath);
- var serializedString = t.ToString() + '|' + JsonUtility.ToJson(settingsStruct);
- EditorGUIUtility.systemCopyBuffer = serializedString;
- }
-
- static bool CanPaste(SerializedProperty settings)
- {
- var data = EditorGUIUtility.systemCopyBuffer;
-
- if (string.IsNullOrEmpty(data))
- return false;
-
- var parts = data.Split('|');
-
- if (string.IsNullOrEmpty(parts[0]))
- return false;
-
- var field = ReflectionUtils.GetFieldInfoFromPath(settings.serializedObject.targetObject, settings.propertyPath);
- return parts[0] == field.FieldType.ToString();
- }
-
- static void PasteSettings(SerializedProperty settings)
- {
- Undo.RecordObject(settings.serializedObject.targetObject, "Paste effect settings");
- var field = ReflectionUtils.GetFieldInfoFromPath(settings.serializedObject.targetObject, settings.propertyPath);
- var json = EditorGUIUtility.systemCopyBuffer.Substring(field.FieldType.ToString().Length + 1);
- var obj = JsonUtility.FromJson(json, field.FieldType);
- var parent = ReflectionUtils.GetParentObject(settings.propertyPath, settings.serializedObject.targetObject);
- field.SetValue(parent, obj, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, CultureInfo.CurrentCulture);
- }
- }
-}
+using System;
+using UnityEngine;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Reflection;
+using UnityEngine.PostProcessing;
+
+namespace UnityEditor.PostProcessing
+{
+ public static class EditorGUIHelper
+ {
+ static EditorGUIHelper()
+ {
+ s_GUIContentCache = new Dictionary<string, GUIContent>();
+ }
+
+ #region GUIContent caching
+
+ static Dictionary<string, GUIContent> s_GUIContentCache;
+
+ public static GUIContent GetContent(string textAndTooltip)
+ {
+ if (string.IsNullOrEmpty(textAndTooltip))
+ return GUIContent.none;
+
+ GUIContent content;
+
+ if (!s_GUIContentCache.TryGetValue(textAndTooltip, out content))
+ {
+ var s = textAndTooltip.Split('|');
+ content = new GUIContent(s[0]);
+
+ if (s.Length > 1 && !string.IsNullOrEmpty(s[1]))
+ content.tooltip = s[1];
+
+ s_GUIContentCache.Add(textAndTooltip, content);
+ }
+
+ return content;
+ }
+
+ #endregion
+
+ public static bool Header(string title, SerializedProperty group, Action resetAction)
+ {
+ var rect = GUILayoutUtility.GetRect(16f, 22f, FxStyles.header);
+ GUI.Box(rect, title, FxStyles.header);
+
+ var display = group == null || group.isExpanded;
+
+ var foldoutRect = new Rect(rect.x + 4f, rect.y + 2f, 13f, 13f);
+ var e = Event.current;
+
+ var popupRect = new Rect(rect.x + rect.width - FxStyles.paneOptionsIcon.width - 5f, rect.y + FxStyles.paneOptionsIcon.height / 2f + 1f, FxStyles.paneOptionsIcon.width, FxStyles.paneOptionsIcon.height);
+ GUI.DrawTexture(popupRect, FxStyles.paneOptionsIcon);
+
+ if (e.type == EventType.Repaint)
+ FxStyles.headerFoldout.Draw(foldoutRect, false, false, display, false);
+
+ if (e.type == EventType.MouseDown)
+ {
+ if (popupRect.Contains(e.mousePosition))
+ {
+ var popup = new GenericMenu();
+ popup.AddItem(GetContent("Reset"), false, () => resetAction());
+ popup.AddSeparator(string.Empty);
+ popup.AddItem(GetContent("Copy Settings"), false, () => CopySettings(group));
+
+ if (CanPaste(group))
+ popup.AddItem(GetContent("Paste Settings"), false, () => PasteSettings(group));
+ else
+ popup.AddDisabledItem(GetContent("Paste Settings"));
+
+ popup.ShowAsContext();
+ }
+ else if (rect.Contains(e.mousePosition) && group != null)
+ {
+ display = !display;
+
+ if (group != null)
+ group.isExpanded = !group.isExpanded;
+
+ e.Use();
+ }
+ }
+
+ return display;
+ }
+
+ public static bool Header(string title, SerializedProperty group, SerializedProperty enabledField, Action resetAction)
+ {
+ var field = ReflectionUtils.GetFieldInfoFromPath(enabledField.serializedObject.targetObject, enabledField.propertyPath);
+ object parent = null;
+ PropertyInfo prop = null;
+
+ if (field != null && field.IsDefined(typeof(GetSetAttribute), false))
+ {
+ var attr = (GetSetAttribute)field.GetCustomAttributes(typeof(GetSetAttribute), false)[0];
+ parent = ReflectionUtils.GetParentObject(enabledField.propertyPath, enabledField.serializedObject.targetObject);
+ prop = parent.GetType().GetProperty(attr.name);
+ }
+
+ var display = group == null || group.isExpanded;
+ var enabled = enabledField.boolValue;
+
+ var rect = GUILayoutUtility.GetRect(16f, 22f, FxStyles.header);
+ GUI.Box(rect, title, FxStyles.header);
+
+ var toggleRect = new Rect(rect.x + 4f, rect.y + 4f, 13f, 13f);
+ var e = Event.current;
+
+ var popupRect = new Rect(rect.x + rect.width - FxStyles.paneOptionsIcon.width - 5f, rect.y + FxStyles.paneOptionsIcon.height / 2f + 1f, FxStyles.paneOptionsIcon.width, FxStyles.paneOptionsIcon.height);
+ GUI.DrawTexture(popupRect, FxStyles.paneOptionsIcon);
+
+ if (e.type == EventType.Repaint)
+ FxStyles.headerCheckbox.Draw(toggleRect, false, false, enabled, false);
+
+ if (e.type == EventType.MouseDown)
+ {
+ const float kOffset = 2f;
+ toggleRect.x -= kOffset;
+ toggleRect.y -= kOffset;
+ toggleRect.width += kOffset * 2f;
+ toggleRect.height += kOffset * 2f;
+
+ if (toggleRect.Contains(e.mousePosition))
+ {
+ enabledField.boolValue = !enabledField.boolValue;
+
+ if (prop != null)
+ prop.SetValue(parent, enabledField.boolValue, null);
+
+ e.Use();
+ }
+ else if (popupRect.Contains(e.mousePosition))
+ {
+ var popup = new GenericMenu();
+ popup.AddItem(GetContent("Reset"), false, () => resetAction());
+ popup.AddSeparator(string.Empty);
+ popup.AddItem(GetContent("Copy Settings"), false, () => CopySettings(group));
+
+ if (CanPaste(group))
+ popup.AddItem(GetContent("Paste Settings"), false, () => PasteSettings(group));
+ else
+ popup.AddDisabledItem(GetContent("Paste Settings"));
+
+ popup.ShowAsContext();
+ }
+ else if (rect.Contains(e.mousePosition) && group != null)
+ {
+ display = !display;
+ group.isExpanded = !group.isExpanded;
+ e.Use();
+ }
+ }
+
+ return display;
+ }
+
+ static void CopySettings(SerializedProperty settings)
+ {
+ var t = typeof(PostProcessingProfile);
+ var settingsStruct = ReflectionUtils.GetFieldValueFromPath(settings.serializedObject.targetObject, ref t, settings.propertyPath);
+ var serializedString = t.ToString() + '|' + JsonUtility.ToJson(settingsStruct);
+ EditorGUIUtility.systemCopyBuffer = serializedString;
+ }
+
+ static bool CanPaste(SerializedProperty settings)
+ {
+ var data = EditorGUIUtility.systemCopyBuffer;
+
+ if (string.IsNullOrEmpty(data))
+ return false;
+
+ var parts = data.Split('|');
+
+ if (string.IsNullOrEmpty(parts[0]))
+ return false;
+
+ var field = ReflectionUtils.GetFieldInfoFromPath(settings.serializedObject.targetObject, settings.propertyPath);
+ return parts[0] == field.FieldType.ToString();
+ }
+
+ static void PasteSettings(SerializedProperty settings)
+ {
+ Undo.RecordObject(settings.serializedObject.targetObject, "Paste effect settings");
+ var field = ReflectionUtils.GetFieldInfoFromPath(settings.serializedObject.targetObject, settings.propertyPath);
+ var json = EditorGUIUtility.systemCopyBuffer.Substring(field.FieldType.ToString().Length + 1);
+ var obj = JsonUtility.FromJson(json, field.FieldType);
+ var parent = ReflectionUtils.GetParentObject(settings.propertyPath, settings.serializedObject.targetObject);
+ field.SetValue(parent, obj, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, CultureInfo.CurrentCulture);
+ }
+ }
+}
--
Gitblit v1.8.0