private void DragDropType(Rect dropArea) { var evt = Event.current; if (evt.type == EventType.DragUpdated) { if (dropArea.Contains(evt.mousePosition)) { DragAndDrop.visualMode = DragAndDropVisualMode.Copy; } } if (evt.type == EventType.DragPerform) { if (dropArea.Contains(evt.mousePosition)) { DragAndDrop.AcceptDrag(); m_Initialized = false; UnityEngine.Object[] draggedObjects = DragAndDrop.objectReferences as UnityEngine.Object[]; for (int i = 0; i < draggedObjects.Length; i++) { if (draggedObjects[i]) { System.Type sType = draggedObjects[i].GetType(); UAI.AddType(sType); } } UAI.ForceSave(); } } }
private void DragDropAdd(Rect dropArea) { var evt = Event.current; if (evt.type == EventType.DragUpdated) { if (dropArea.Contains(evt.mousePosition)) { DragAndDrop.visualMode = DragAndDropVisualMode.Copy; } } if (evt.type == EventType.DragPerform) { if (dropArea.Contains(evt.mousePosition)) { DragAndDrop.AcceptDrag(); UnityEngine.Object[] draggedObjects = DragAndDrop.objectReferences as UnityEngine.Object[]; for (int i = 0; i < draggedObjects.Length; i++) { if (draggedObjects[i]) { m_Initialized = false; // need to reload when we're done. UAI.AddIfIndexed(draggedObjects[i]); var path = AssetDatabase.GetAssetPath(draggedObjects[i]); if (System.IO.Directory.Exists(path)) { UAI.RecursiveScanFoldersForAssets(path); } } } UAI.ForceSave(); } } }
IList <AssetTreeElement> GetData() { LoadedLabels = new HashSet <string>(); eLoaded itemstoload = (eLoaded)LoadedItems; eShowTypes typesToShow = (eShowTypes)ShowIndex; int totalitems = 0; var treeElements = new List <AssetTreeElement>(); var root = new AssetTreeElement("Root", -1, totalitems); treeElements.Add(root); System.Type[] Types = UAI.GetTypes(); // Preprocess to get labels (we need to filter on them later). foreach (System.Type t in Types) { if (t != typeof(AnimatorController) && t != typeof(AnimatorOverrideController)) // Somewhere, a kitten died because I typed that. { Dictionary <string, AssetItem> TypeDic = UAI.GetAssetDictionary(t); AssetItem[] items = new AssetItem[TypeDic.Values.Count]; TypeDic.Values.CopyTo(items, 0); List <AssetTreeElement> ElementsToLoad = new List <AssetTreeElement>(); for (int i = 0; i < TypeDic.Values.Count; i++) { AssetItem ai = items[i]; AddLabels(ai); } } } foreach (System.Type t in Types) { if (t != typeof(AnimatorController) && t != typeof(AnimatorOverrideController)) // Somewhere, a kitten died because I typed that. { Dictionary <string, AssetItem> TypeDic = UAI.GetAssetDictionary(t); AssetTreeElement ate = new AssetTreeElement(t.Name, 0, ++totalitems); ate.type = t; AssetItem[] items = new AssetItem[TypeDic.Values.Count]; TypeDic.Values.CopyTo(items, 0); List <AssetTreeElement> ElementsToLoad = new List <AssetTreeElement>(); for (int i = 0; i < TypeDic.Values.Count; i++) { AssetItem ai = items[i]; if (ShouldLoad(itemstoload, ai)) { AssetTreeElement atai = new AssetTreeElement(ai._Name, 1, ++totalitems); atai.ai = ai; atai.index = i; atai.type = t; ElementsToLoad.Add(atai); if (ai.IsResource) { ate.IsResourceCount++; } if (ai.IsAlwaysLoaded) { ate.Keepcount++; } if (ai.IsAddressable) { ate.IsAddrCount++; } } } if (ElementsToLoad.Count < 1) { if (typesToShow == eShowTypes.WithItems || itemstoload == eLoaded.SelectedOnly) { continue; } } treeElements.Add(ate); treeElements.AddRange(ElementsToLoad); } } LoadOnly.Clear(); return(treeElements); // generate some test data //return MyTreeElementGenerator.GenerateRandomTree(130); }