From 769dc20e9689e15fb7f5be100766e70fd1008f4c Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 20 Aug 2021 19:16:57 +0800 Subject: *mics --- Assets/ActionTool/Editor/ActionColliderEditor.cs | 44 +++++++++++++++++++----- Assets/ActionTool/Editor/ActionEditorStyles.cs | 4 +++ 2 files changed, 40 insertions(+), 8 deletions(-) (limited to 'Assets/ActionTool/Editor') diff --git a/Assets/ActionTool/Editor/ActionColliderEditor.cs b/Assets/ActionTool/Editor/ActionColliderEditor.cs index 78cd65d6..9aa9b788 100644 --- a/Assets/ActionTool/Editor/ActionColliderEditor.cs +++ b/Assets/ActionTool/Editor/ActionColliderEditor.cs @@ -16,13 +16,17 @@ namespace ActionTool ColliderBox collider; + Dictionary m_Foldout = new Dictionary (); + private void OnEnable() { titleContent = new GUIContent("Collider Editor"); + m_Foldout.Clear(); } private void OnDisable() { + m_Foldout.Clear(); ActionManager.colliderData = null; ActionManager.ColliderWindow = null; if(ActionManager.PreviewWindow != null) @@ -80,6 +84,9 @@ namespace ActionTool FieldInfo[] fields = type.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly); if (fields != null && fields.Length > 0) { + int collliderType = -1; + FoldoutAttribute foldout = null; + int foldoutElementCount = 0; for (int i = 0; i < fields.Length; ++i) { FieldInfo field = fields[i]; @@ -103,11 +110,7 @@ namespace ActionTool else if(attr.GetType() == typeof(ColliderTypeAttribute)) { ColliderTypeAttribute t = attr as ColliderTypeAttribute; - if (t.type != collider.type) - { - skip = true; - break; - } + collliderType = (int)t.type; } else if (attr.GetType() == typeof(WhenAttribute)) { @@ -162,13 +165,38 @@ namespace ActionTool { CommentAttribute comment = attr as CommentAttribute; EditorGUILayout.LabelField(comment.comment); - } - } - if (skip) + } + else if (attr.GetType() == typeof(FoldoutAttribute)) + { + if(collliderType == -1 || collliderType == (int)collider.type) + { + foldout = attr as FoldoutAttribute; + if (!m_Foldout.ContainsKey(foldout.title)) + m_Foldout.Add(foldout.title, false); + m_Foldout[foldout.title] = EditorGUILayout.Foldout(m_Foldout[foldout.title], foldout.title); + foldoutElementCount = 0; + } + } + } + if (collliderType != -1 && collliderType != (int)collider.type) + { + skip = true; + } + if(foldout != null && (++foldoutElementCount) <= foldout.count) + { + skip |= !m_Foldout[foldout.title]; + if (foldoutElementCount == foldout.count) + { + foldout = null; + foldoutElementCount = 0; + } + } + if (skip) { GUI.enabled = true; continue; } + EditorGUILayout.LabelField(new GUIContent(name, tooltip), styles.textBold); if (field.FieldType == typeof(Vector3)) { diff --git a/Assets/ActionTool/Editor/ActionEditorStyles.cs b/Assets/ActionTool/Editor/ActionEditorStyles.cs index ccb3d72a..3b03cde8 100644 --- a/Assets/ActionTool/Editor/ActionEditorStyles.cs +++ b/Assets/ActionTool/Editor/ActionEditorStyles.cs @@ -19,6 +19,8 @@ namespace ActionTool public GUIStyle toggleSmallBold; + public GUIStyle foldout; + public Texture2D selectIcon; public Texture2D keyFrameIcon; public Texture2D addFileIcon; @@ -98,6 +100,8 @@ namespace ActionTool s.fontSize = 10; //s.fontStyle = FontStyle.Bold; }); + InitStyle(out foldout, EditorStyles.foldout, s => { + }); } private delegate void Initter(GUIStyle style); -- cgit v1.1-26-g67d0