protected override DragAndDropVisualMode HandleDragAndDrop(DragAndDropArgs args) { if (args.dragAndDropPosition == DragAndDropPosition.UponItem) { if (args.performDrop) { var targetBundle = (args.parentItem as AssetBundleState.BundleInfo.TreeItem).bundle; if (targetBundle != null) { AssetBundleState.MoveAssetsToBundle(DragAndDrop.paths.Select(a => AssetBundleState.GetAsset(a)), targetBundle.m_name); SelectionChanged(GetSelection()); } } return(DragAndDropVisualMode.Move); } else { if (args.performDrop) { AssetBundleState.StartABMoveBatch(); foreach (var a in DragAndDrop.paths) { if (AssetDatabase.GetMainAssetTypeAtPath(a) == typeof(SceneAsset)) { var bundle = AssetBundleState.GetBundle(System.IO.Path.GetFileNameWithoutExtension(a).ToLower()); AssetBundleState.MoveAssetsToBundle(new AssetBundleState.AssetInfo[] { AssetBundleState.GetAsset(a) }, bundle.m_name); } } AssetBundleState.EndABMoveBatch(); return(DragAndDropVisualMode.Move); } } return(DragAndDropVisualMode.Move); }
void DeleteBundles(object b) { var selectedNodes = b as List <AssetBundleState.BundleInfo.TreeItem>; List <AssetBundleState.BundleInfo> bundles = new List <AssetBundleState.BundleInfo>(); foreach (var n in selectedNodes) { GatherAllBundlesFromNode(n, bundles); } var sb = new System.Text.StringBuilder(); foreach (var r in bundles) { sb.AppendLine(r.m_name); } if (EditorUtility.DisplayDialog("Bundle delete confirmation", "Do you want to delete these bundles:" + Environment.NewLine + sb.ToString(), "Yes", "No")) { AssetBundleState.StartABMoveBatch(); foreach (var r in bundles) { AssetBundleState.RenameBundle(r, string.Empty); } AssetBundleState.EndABMoveBatch(); } }
protected override void ContextClickedItem(int id) { if (VeryifyItemsAreAssets(GetSelection())) { AssetBundleState.ShowAssetContextMenu(GetAssets(GetSelection())); } }
protected override DragAndDropVisualMode HandleDragAndDrop(DragAndDropArgs args) { if (args.dragAndDropPosition == DragAndDropPosition.UponItem) { if (args.performDrop) { var targetNode = args.parentItem as AssetBundleState.BundleInfo.TreeItem; var targetBundle = targetNode.bundle; var draggedNodes = DragAndDrop.GetGenericData("AssetBundleState.BundleInfo.TreeItem") as List <AssetBundleState.BundleInfo.TreeItem>; if (draggedNodes != null) { foreach (var draggedNode in draggedNodes) { var res = new List <AssetBundleState.BundleInfo>(); GatherAllBundlesFromNode(draggedNode, res); AssetBundleState.StartABMoveBatch(); foreach (var b in res) { var dstBundle = targetNode.GetPath() + "/" + b.m_name.Substring(b.m_name.IndexOf(draggedNode.displayName)); AssetBundleState.MoveAssetsToBundle(b.m_assets.Values, dstBundle); } AssetBundleState.EndABMoveBatch(); foreach (var b in res) { AssetBundleState.RemoveBundle(b.m_name); } AssetBundleState.RemoveBundle(draggedNode.GetPath()); } Reload(); } else if (DragAndDrop.paths != null) { AssetBundleState.StartABMoveBatch(); AssetBundleState.MoveAssetsToBundle(DragAndDrop.paths.Select(a => AssetBundleState.GetAsset(a)), targetNode.GetPath()); AssetBundleState.EndABMoveBatch(); } } return(DragAndDropVisualMode.Move); } else { if (args.performDrop) { AssetBundleState.StartABMoveBatch(); foreach (var a in DragAndDrop.paths) { if (AssetDatabase.GetMainAssetTypeAtPath(a) == typeof(SceneAsset)) { var bundle = AssetBundleState.GetBundle(System.IO.Path.GetFileNameWithoutExtension(a).ToLower()); AssetBundleState.MoveAssetsToBundle(new AssetBundleState.AssetInfo[] { AssetBundleState.GetAsset(a) }, bundle.m_name); } } AssetBundleState.EndABMoveBatch(); return(DragAndDropVisualMode.Move); } } return(DragAndDropVisualMode.Move); }
protected override void KeyEvent() { if (m_data != null && Event.current.keyCode == KeyCode.Delete && GetSelection().Count > 0) { AssetBundleState.MoveAssetsToBundle(GetSelectedAssets(), string.Empty); SetSelectedBundle(m_data.m_bundle); Event.current.Use(); } }
void OnGUI() { if (m_bundleTree == null) { if (m_selectionTreeState == null) { m_selectionTreeState = new TreeViewState(); } m_selectionList = new SelectionListTree(m_selectionTreeState); m_selectionList.Reload(); if (m_assetListState == null) { m_assetListState = new TreeViewState(); m_assetListMCHState = new MultiColumnHeaderState(AssetListTree.GetColumns()); } m_assetList = new AssetListTree(m_assetListState, m_assetListMCHState, m_selectionList); m_assetList.Reload(); if (m_bundleTreeState == null) { m_bundleTreeState = new TreeViewState(); } m_bundleTree = new AssetBundleTree(m_bundleTreeState, m_assetList); m_bundleTree.Refresh(); Repaint(); } HandleHorizontalResize(); HandleVerticalResize(); if (GUI.Button(new Rect(0, kToolbarHeight, m_horizontalSplitterRect.x / 2, 25), new GUIContent("New Bundle"))) { AssetBundleState.GetBundle(null); } // if (GUI.Button(new Rect(m_horizontalSplitterRect.x / 2, kToolbarHeight, m_horizontalSplitterRect.x / 2, 25), new GUIContent("New Folder"))) // ;// m_bundleTree.Add // if (GUI.Button(new Rect(m_horizontalSplitterRect.x / 2, kToolbarHeight, m_horizontalSplitterRect.x/2, 25), new GUIContent("RESET"))) // AssetBundleState.Rebuild(); m_bundleTree.OnGUI(new Rect(0, kToolbarHeight + 25 + kSplitterWidth, m_horizontalSplitterRect.x, position.height - (kToolbarHeight * 2 + kSplitterWidth * 2 + 25))); float panelLeft = m_horizontalSplitterRect.x + kSplitterWidth; float panelWidth = (position.width - m_horizontalSplitterRect.x) - kSplitterWidth * 2; float panelHeight = m_verticalSplitterRect.y - kToolbarHeight; m_assetList.OnGUI(new Rect(panelLeft, kToolbarHeight, panelWidth, panelHeight)); m_selectionList.OnGUI(new Rect(panelLeft, m_verticalSplitterRect.y + kSplitterWidth, panelWidth, (position.height - m_verticalSplitterRect.y) - kSplitterWidth * 2)); if (m_resizingHorizontalSplitter || m_resizingVerticalSplitter) { Repaint(); } }
protected override void RenameEnded(RenameEndedArgs args) { if (args.newName.Length > 0 && args.newName != args.originalName && !AssetBundleState.m_bundles.ContainsKey(args.newName)) { args.acceptedRename = true; AssetBundleState.RenameBundle(Utilities.FindItem <AssetBundleState.BundleInfo.TreeItem>(rootItem, args.itemID).bundle, args.newName); } else { args.acceptedRename = false; } Reload(); }
public AssetDependencyData() { //find all bundles string[] bundleNames = AssetDatabase.GetAllAssetBundleNames(); bundles = new BundleInfo[bundleNames.Length]; for (int i = 0; i < bundleNames.Length; i++) { bundles[i].name = bundleNames[i]; } //find all assets string[] assetPaths = AssetDatabase.GetAllAssetPaths(); assets = new AssetInfo[assetPaths.Length]; for (int i = 0; i < assetPaths.Length; i++) { assets[i].name = assetPaths[i]; assets[i].bundle = -1; assetIndex[assets[i].name] = i; } //link assets to bundles for (int i = 0; i < bundles.Length; i++) { string[] assetPathsInBundle = AssetDatabase.GetAssetPathsFromAssetBundle(bundles[i].name); bundles[i].assets = new int[assetPathsInBundle.Length]; for (int a = 0; a < assetPathsInBundle.Length; a++) { assets[bundles[i].assets[a] = FindAssetIndex(assetPathsInBundle[a])].bundle = i; } } //find asset dependencies for (int i = 0; i < assets.Length; i++) { var ai = AssetBundleState.GetAsset(assets[i].name); if (ai == null) { assets[i].dependencies = new int[0]; continue; } //var filtered = ai.dependencies;// AssetBundleState.GetDependencies(assets[i].name);//AssetDatabase.GetDependencies(assets[i].name, false).Where(a => a != assets[i].name && AssetBundleState.ValidateAssetPath(assets[i].name)); assets[i].dependencies = new int[ai.dependencies.Count()]; int di = 0; foreach (var d in ai.dependencies) { assets[i].dependencies[di++] = FindAssetIndex(d.m_name); } } }
protected override DragAndDropVisualMode HandleDragAndDrop(DragAndDropArgs args) { if (m_data == null) { return(DragAndDropVisualMode.Rejected); } if (args.performDrop) { AssetBundleState.MoveAssetsToBundle(DragAndDrop.paths.Select(a => AssetBundleState.GetAsset(a)), m_data.m_bundle.m_name); SetSelectedBundle(m_data.m_bundle); } return(DragAndDropVisualMode.Move); }
private void Update() { AssetBundleState.Update(); if (m_assetList != null) { m_assetList.Update(); } if (AssetBundleState.CheckAndClearDirtyFlag()) { if (m_bundleTree != null) { m_bundleTree.Refresh(); Repaint(); } } }
protected override DragAndDropVisualMode HandleDragAndDrop(DragAndDropArgs args) { if (m_data == null) { return(DragAndDropVisualMode.Rejected); } if (args.performDrop) { AssetBundleState.StartABMoveBatch(); foreach (var b in m_data.m_bundles) { AssetBundleState.MoveAssetsToBundle(DragAndDrop.paths.Select(a => AssetBundleState.GetAsset(a)), b.m_name); } AssetBundleState.EndABMoveBatch(); SetSelectedBundles(m_data.m_bundles); } return(DragAndDropVisualMode.Move); }
protected override void RenameEnded(RenameEndedArgs args) { if (args.newName.Length > 0 && args.newName != args.originalName && !AssetBundleState.m_bundles.ContainsKey(args.newName)) { args.acceptedRename = true; var node = Utilities.FindItem <AssetBundleState.BundleInfo.TreeItem>(rootItem, args.itemID); List <AssetBundleState.BundleInfo> bundles = new List <AssetBundleState.BundleInfo>(); GatherAllBundlesFromNode(node, bundles); AssetBundleState.StartABMoveBatch(); foreach (var b in bundles) { AssetBundleState.RenameBundle(b, b.m_name.Replace(args.originalName, args.newName)); } AssetBundleState.EndABMoveBatch(); } else { args.acceptedRename = false; } Reload(); }
static void ResetAllBundles() { if (EditorUtility.DisplayDialog("Asset Bundle Reset Confirmation", "Do you want to reset ALL AssetBundle data for this project?", "Yes", "No")) { foreach (var a in AssetDatabase.GetAllAssetPaths()) { var i = AssetImporter.GetAtPath(a); if (i != null && !string.IsNullOrEmpty(i.assetBundleName)) { i.SetAssetBundleNameAndVariant(string.Empty, string.Empty); } } foreach (var b in AssetDatabase.GetAllAssetBundleNames()) { AssetDatabase.RemoveAssetBundleName(b, true); } AssetDatabase.RemoveUnusedAssetBundleNames(); AssetBundleState.Rebuild(); } }
void DedupeBundles(object context) { var selectedNodes = context as List <AssetBundleState.BundleInfo.TreeItem>; List <AssetBundleState.BundleInfo> bundles = new List <AssetBundleState.BundleInfo>(); foreach (var n in selectedNodes) { GatherAllBundlesFromNode(n, bundles); } var allAssets = new HashSet <string>(); var duplicatedAssets = new List <AssetBundleState.AssetInfo>(); foreach (var b in bundles) { var deps = new List <AssetBundleState.AssetInfo>(); b.GatherImplicitDependencies(deps); foreach (var d in deps) { if (allAssets.Contains(d.m_name)) { duplicatedAssets.Add(d); } else { allAssets.Add(d.m_name); } } } if (duplicatedAssets.Count > 0) { AssetBundleState.StartABMoveBatch(); AssetBundleState.MoveAssetsToBundle(duplicatedAssets, null); AssetBundleState.EndABMoveBatch(); } }
protected override void ContextClickedItem(int id) { AssetBundleState.ShowAssetContextMenu(GetSelectedAssets()); }
public AssetBundleTree(TreeViewState state, AssetListTree alt) : base(state) { AssetBundleState.Rebuild(); m_assetList = alt; showBorder = true; }
void DeleteBundle(object b) { AssetBundleState.RenameBundle(b as AssetBundleState.BundleInfo, string.Empty); }