示例#1
0
        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));
        }