@@ -30,6 +30,7 @@ public abstract class Tree: ITree
3030 [ SerializeField ] private List < TreeNode > nodes = new List < TreeNode > ( ) ;
3131 [ SerializeField ] private TreeNode selectedNode = null ;
3232 [ SerializeField ] private TreeNodeDictionary folders = new TreeNodeDictionary ( ) ;
33+ [ SerializeField ] private TreeNodeDictionary checkedFileNodes = new TreeNodeDictionary ( ) ;
3334
3435 [ NonSerialized ] private Stack < bool > indents = new Stack < bool > ( ) ;
3536 [ NonSerialized ] private Action < TreeNode > rightClickNextRender ;
@@ -112,14 +113,19 @@ public void AddNode(string path, string label, int level, bool isFolder, bool is
112113 public void Clear ( )
113114 {
114115 folders . Clear ( ) ;
116+ checkedFileNodes . Clear ( ) ;
115117 nodes . Clear ( ) ;
116118 SelectedNode = null ;
117119 }
118120
119- public HashSet < string > GetCollapsedFolders ( )
121+ public IEnumerable < string > GetCollapsedFolders ( )
120122 {
121- var collapsedFoldersEnumerable = folders . Where ( pair => pair . Value . IsCollapsed ) . Select ( pair => pair . Key ) ;
122- return new HashSet < string > ( collapsedFoldersEnumerable ) ;
123+ return folders . Where ( pair => pair . Value . IsCollapsed ) . Select ( pair => pair . Key ) ;
124+ }
125+
126+ public IEnumerable < string > GetCheckedFiles ( )
127+ {
128+ return checkedFileNodes . Where ( pair => pair . Value . CheckState == CheckState . Checked ) . Select ( pair => pair . Key ) ;
123129 }
124130
125131 public Rect Render ( Rect containingRect , Rect rect , Vector2 scroll , Action < TreeNode > singleClick = null , Action < TreeNode > doubleClick = null , Action < TreeNode > rightClick = null )
@@ -270,6 +276,13 @@ private void ToggleNodeChecked(int idx, TreeNode node)
270276 {
271277 ToggleChildrenChecked ( idx , node , isChecked ) ;
272278 }
279+ else
280+ {
281+ if ( isChecked )
282+ {
283+ checkedFileNodes . Add ( node . Path , node ) ;
284+ }
285+ }
273286
274287 ToggleParentFoldersChecked ( idx , node , isChecked ) ;
275288 }
@@ -290,6 +303,13 @@ private void ToggleChildrenChecked(int idx, TreeNode node, bool isChecked)
290303 {
291304 ToggleChildrenChecked ( i , childNode , isChecked ) ;
292305 }
306+ else
307+ {
308+ if ( isChecked )
309+ {
310+ checkedFileNodes . Add ( node . Path , node ) ;
311+ }
312+ }
293313 }
294314 }
295315
0 commit comments