| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 | 
							- using UnityEngine;
 
- using UnityEditor.IMGUI.Controls;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- namespace AssetBundleBrowser
 
- {
 
- 	internal class InspectTreeItem : TreeViewItem
 
- 	{
 
-         internal string bundlePath { get; private set; }
 
-             
 
- 		internal InspectTreeItem(string path, int depth) : base(path.GetHashCode(), depth, path)
 
- 		{
 
-             bundlePath = path;
 
-         }
 
-         internal InspectTreeItem(string path, int depth, string prettyName) : base(path.GetHashCode(), depth, prettyName)
 
-         {
 
-             bundlePath = path;
 
-         }
 
-     }
 
- 	class InspectBundleTree : TreeView
 
- 	{
 
- 		AssetBundleInspectTab m_InspectTab;
 
- 		internal InspectBundleTree(TreeViewState s, AssetBundleInspectTab parent) : base(s)
 
- 		{
 
- 			m_InspectTab = parent;
 
- 			showBorder = true;
 
- 		}
 
- 		protected override TreeViewItem BuildRoot()
 
- 		{
 
- 			var root = new TreeViewItem(-1, -1);
 
- 			root.children = new List<TreeViewItem>();
 
- 			if (m_InspectTab == null)
 
- 				Debug.Log("Unknown problem in AssetBundle Browser Inspect tab.  Restart Browser and try again, or file ticket on github.");
 
- 			else
 
- 			{
 
- 				foreach (var folder in m_InspectTab.BundleList)
 
- 				{
 
-                     if (System.String.IsNullOrEmpty(folder.Key))
 
-                     {
 
-                         foreach(var path in folder.Value)
 
-                             root.AddChild(new InspectTreeItem(path, 0));
 
-                     }
 
-                     else
 
-                     {
 
-                         var folderItem = new TreeViewItem(folder.Key.GetHashCode(), 0, folder.Key);
 
-                         foreach (var path in folder.Value)
 
-                         {
 
-                             var prettyName = path;
 
-                             if (path.StartsWith(folder.Key)) //how could it not?
 
-                                 prettyName = path.Remove(0, folder.Key.Length + 1);
 
-                             folderItem.AddChild(new InspectTreeItem(path, 1, prettyName));
 
-                         }
 
-                         root.AddChild(folderItem);
 
-                     }
 
- 				}
 
- 			}
 
- 			return root;
 
- 		}
 
- 		public override void OnGUI(Rect rect)
 
- 		{
 
- 			base.OnGUI(rect);
 
- 			if (Event.current.type == EventType.MouseDown && Event.current.button == 0 && rect.Contains(Event.current.mousePosition))
 
- 			{
 
- 				SetSelection(new int[0], TreeViewSelectionOptions.FireSelectionChanged);
 
- 			}
 
- 		}
 
-         protected override void RowGUI(RowGUIArgs args)
 
-         {
 
-             base.RowGUI(args);
 
-             if (args.item.depth == 0)
 
-             {
 
-                 var width = 16;
 
-                 var edgeRect = new Rect(args.rowRect.xMax - width, args.rowRect.y, width, args.rowRect.height);
 
-                 if (GUI.Button(edgeRect, "-"))
 
-                 {
 
-                     if (GetSelection().Contains(args.item.id))
 
-                     {
 
-                         var selection = GetSelection();
 
-                         foreach (var id in selection)
 
-                         {
 
-                             var item = FindItem(id, rootItem);
 
-                             if(item.depth == 0)
 
-                                 RemoveItem(item);
 
-                         }
 
-                     }
 
-                     else
 
-                     {
 
-                         RemoveItem(args.item);
 
-                     }
 
-                     m_InspectTab.RefreshBundles();
 
-                 }
 
-             }
 
-         }
 
-         private void RemoveItem(TreeViewItem item)
 
-         {
 
-             var inspectItem = item as InspectTreeItem;
 
-             if (inspectItem != null)
 
-                 m_InspectTab.RemoveBundlePath(inspectItem.bundlePath);
 
-             else
 
-                 m_InspectTab.RemoveBundleFolder(item.displayName);
 
-         }
 
-         protected override void SelectionChanged(IList<int> selectedIds)
 
- 		{
 
- 			base.SelectionChanged(selectedIds);
 
-             if (selectedIds == null)
 
-                 return;
 
- 			if (selectedIds.Count > 0)
 
- 			{
 
-                 m_InspectTab.SetBundleItem(FindRows(selectedIds).Select(tvi => tvi as InspectTreeItem).ToList());
 
- 				//m_InspectTab.SetBundleItem(FindItem(selectedIds[0], rootItem) as InspectTreeItem);
 
- 			}
 
- 			else
 
-             {
 
- 				m_InspectTab.SetBundleItem(null);
 
-             }
 
- 		}
 
- 		protected override bool CanMultiSelect(TreeViewItem item)
 
- 		{
 
- 			return true;
 
- 		}
 
- 	}
 
- }
 
 
  |