diff options
Diffstat (limited to 'Assets/ActionTool/Editor/ActionColliderEditor.cs')
-rw-r--r-- | Assets/ActionTool/Editor/ActionColliderEditor.cs | 44 |
1 files changed, 36 insertions, 8 deletions
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<string, bool> m_Foldout = new Dictionary<string, bool> ();
+
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))
{
|