public override List <int> GetNewSelection(TreeViewItem clickedItem, TreeViewSelectState selectState) { var assetTreeClickedItem = clickedItem as IAssetTreeViewItem; var clickedEntry = new AssetReference() { instanceID = clickedItem.id }; if (clickedItem.id == 0 && assetTreeClickedItem != null) { clickedEntry.guid = assetTreeClickedItem.Guid; } // Get ids from items var visibleRows = GetRows(); var allIDs = new List <int>(visibleRows.Count); var allGuids = new List <string>(visibleRows.Count); for (int i = 0; i < visibleRows.Count; ++i) { int instanceID = visibleRows[i].id; string guid = null; if (instanceID == 0) { var assetTreeViewItem = visibleRows[i] as IAssetTreeViewItem; if (assetTreeViewItem != null) { guid = assetTreeViewItem.Guid; } } allGuids.Add(guid); allIDs.Add(instanceID); } List <int> selectedIDs = selectState.selectedIDs; int lastClickedID = selectState.lastClickedID; bool allowMultiselection = CanBeMultiSelected(clickedItem); var result = InternalEditorUtility.GetNewSelection(ref clickedEntry, allIDs, allGuids, selectedIDs, lastClickedID, selectState.keepMultiSelection, selectState.useShiftAsActionKey, allowMultiselection); clickedItem.id = clickedEntry.instanceID; for (int i = 0; i < allIDs.Count; ++i) { if (allGuids[i] != null && allIDs[i] != 0) { visibleRows[i].id = allIDs[i]; } } return(result); }
virtual public List <int> GetNewSelection(TreeViewItem clickedItem, TreeViewSelectState selectState) { // Get ids from items var visibleRows = GetRows(); List <int> allIDs = new List <int>(visibleRows.Count); for (int i = 0; i < visibleRows.Count; ++i) { allIDs.Add(visibleRows[i].id); } bool allowMultiselection = CanBeMultiSelected(clickedItem); return(InternalEditorUtility.GetNewSelection(clickedItem.id, allIDs, selectState.selectedIDs, selectState.lastClickedID, selectState.keepMultiSelection, selectState.useShiftAsActionKey, allowMultiselection)); }