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();
            }
        }
Esempio n. 3
0
 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();
     }
 }
Esempio n. 6
0
        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();
 }
Esempio n. 8
0
            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);
        }
Esempio n. 10
0
 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();
 }
Esempio n. 13
0
        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);
 }