88
99namespace GitHub . Unity
1010{
11+ [ Serializable ]
12+ public class TreeNodeDictionary : SerializableDictionary < string , TreeNode > { }
13+
1114 [ Serializable ]
1215 public class Tree
1316 {
@@ -36,10 +39,9 @@ public class Tree
3639 [ SerializeField ] private List < TreeNode > nodes = new List < TreeNode > ( ) ;
3740 [ SerializeField ] private TreeNode selectedNode = null ;
3841 [ SerializeField ] private TreeNode activeNode = null ;
39- [ SerializeField ] private List < string > foldersKeys = new List < string > ( ) ;
42+ [ SerializeField ] private TreeNodeDictionary folders = new TreeNodeDictionary ( ) ;
4043
4144 [ NonSerialized ] private Stack < bool > indents = new Stack < bool > ( ) ;
42- [ NonSerialized ] private Hashtable folders ;
4345
4446 public bool IsInitialized { get { return nodes != null && nodes . Count > 0 && ! String . IsNullOrEmpty ( nodes [ 0 ] . Name ) ; } }
4547 public bool RequiresRepaint { get ; private set ; }
@@ -60,26 +62,9 @@ private set
6062
6163 public TreeNode ActiveNode { get { return activeNode ; } }
6264
63- private Hashtable Folders
64- {
65- get
66- {
67- if ( folders == null )
68- {
69- folders = new Hashtable ( ) ;
70- for ( int i = 0 ; i < foldersKeys . Count ; i ++ )
71- {
72- folders . Add ( foldersKeys [ i ] , null ) ;
73- }
74- }
75- return folders ;
76- }
77- }
78-
7965 public void Load ( IEnumerable < ITreeData > data , string title )
8066 {
81- foldersKeys . Clear ( ) ;
82- Folders . Clear ( ) ;
67+ folders . Clear ( ) ;
8368 nodes . Clear ( ) ;
8469
8570 var titleNode = new TreeNode ( )
@@ -100,7 +85,7 @@ public void Load(IEnumerable<ITreeData> data, string title)
10085 var label = parts [ i ] ;
10186 var name = String . Join ( "/" , parts , 0 , i + 1 ) ;
10287 var isFolder = i < parts . Length - 1 ;
103- var alreadyExists = Folders . ContainsKey ( name ) ;
88+ var alreadyExists = folders . ContainsKey ( name ) ;
10489 if ( ! alreadyExists )
10590 {
10691 var node = new TreeNode ( )
@@ -124,12 +109,11 @@ public void Load(IEnumerable<ITreeData> data, string title)
124109 nodes . Add ( node ) ;
125110 if ( isFolder )
126111 {
127- Folders . Add ( name , null ) ;
112+ folders . Add ( name , node ) ;
128113 }
129114 }
130115 }
131116 }
132- foldersKeys = Folders . Keys . Cast < string > ( ) . ToList ( ) ;
133117 }
134118
135119 public Rect Render ( Rect rect , Vector2 scroll , Action < TreeNode > singleClick = null , Action < TreeNode > doubleClick = null )
0 commit comments