private static BundleFolderConcreteInfo AddFoldersToBundle(BundleFolderInfo root, BundleNameData nameData)
        {
            BundleInfo currInfo = root;
            var        folder   = currInfo as BundleFolderConcreteInfo;
            var        size     = nameData.pathTokens.Count;

            for (var index = 0; index < size; index++)
            {
                if (folder != null)
                {
                    currInfo = folder.GetChild(nameData.pathTokens[index]);
                    if (currInfo == null)
                    {
                        currInfo = new BundleFolderConcreteInfo(nameData.pathTokens, index + 1, folder);
                        folder.AddChild(currInfo);
                    }

                    folder = currInfo as BundleFolderConcreteInfo;
                    if (folder == null)
                    {
                        s_InErrorState = true;
                        LogFolderAndBundleNameConflict(currInfo.m_Name.fullNativeName);
                        break;
                    }
                }
            }
            return(currInfo as BundleFolderConcreteInfo);
        }
        internal static void Refresh()
        {
            s_EmptyMessageString = k_ProblemEmptyMessage;
            if (s_InErrorState)
            {
                return;
            }

            var bundleList = ValidateBundleList();

            if (bundleList != null)
            {
                s_EmptyMessageString = k_DefaultEmptyMessage;
                foreach (var bundleName in bundleList)
                {
                    AddBundleToModel(bundleName);
                }
                AddBundlesToUpdate(s_RootLevelBundles.GetChildList());
            }

            if (s_InErrorState)
            {
                s_RootLevelBundles   = new BundleFolderConcreteInfo("", null);
                s_EmptyMessageString = k_ProblemEmptyMessage;
            }
        }
        internal static BundleFolderInfo CreateEmptyBundleFolder(BundleFolderConcreteInfo folder = null)
        {
            folder = (folder == null) ? s_RootLevelBundles : folder;
            string         name     = GetUniqueName(folder) + "/dummy";
            BundleNameData nameData = new BundleNameData(folder.m_Name.bundleName, name);

            return(AddFoldersToBundle(s_RootLevelBundles, nameData));
        }
 /// <summary>
 /// Clears and rebuilds model data.
 /// </summary>
 public static void Rebuild()
 {
     s_RootLevelBundles = new BundleFolderConcreteInfo("", null);
     s_MoveData         = new List <ABMoveData>();
     s_BundlesToUpdate  = new List <BundleInfo>();
     s_GlobalAssetList  = new Dictionary <string, AssetInfo>();
     Refresh();
 }
        void CreateNewSiblingFolder(object context)
        {
            var selectedNodes = context as List <AssetBundleModel.BundleTreeItem>;

            if (selectedNodes != null && selectedNodes.Count > 0)
            {
                AssetBundleModel.BundleFolderConcreteInfo folder = null;
                folder = selectedNodes[0].bundle.parent as AssetBundleModel.BundleFolderConcreteInfo;
                CreateFolderUnderParent(folder);
            }
            else
            {
                Debug.LogError("could not add 'sibling' with no bundles selected");
            }
        }
        private void CreateFolderUnderParent(AssetBundleModel.BundleFolderConcreteInfo folder)
        {
            var newBundle = AssetBundleModel.Model.CreateEmptyBundleFolder(folder);

            ReloadAndSelect(newBundle.nameHashCode, true);
        }