Esempio n. 1
0
        internal static AssetBundleInfo FindBundle(AssetBundleNameInfo name)
        {
            AssetBundleInfo currNode = s_RootLevelBundles;

            foreach (var token in name.pathTokens)
            {
                if (currNode is AssetBundleFolderInfo)
                {
                    currNode = (currNode as AssetBundleFolderInfo).GetAssetBundleInfoByName(token);
                    if (currNode == null)
                    {
                        return(null);
                    }
                }
                else
                {
                    return(null);
                }
            }

            if (currNode is AssetBundleFolderInfo)
            {
                currNode = (currNode as AssetBundleFolderInfo).GetAssetBundleInfoByName(name.shortName);
                if (currNode is BundleVariantFolderInfo)
                {
                    currNode = (currNode as BundleVariantFolderInfo).GetAssetBundleInfoByName(name.variant);
                }
                return(currNode);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 2
0
        internal static bool HandleBundleRename(BundleTreeViewItem item, string newName)
        {
            var originalName = new AssetBundleNameInfo(item.assetBundleInfo.m_Name.fullNativeName);

            var findDot    = newName.LastIndexOf('.');
            var findSlash  = newName.LastIndexOf('/');
            var findBSlash = newName.LastIndexOf('\\');

            if (findDot == 0 || findSlash == 0 || findBSlash == 0)
            {
                return(false); //can't start a bundle with a / or .
            }
            bool result = item.assetBundleInfo.HandleRename(newName, 0);

            if (findDot > 0 || findSlash > 0 || findBSlash > 0)
            {
                item.assetBundleInfo.parent.HandleChildRename(newName, string.Empty);
            }

            ExecuteAssetMove();

            var node = FindBundle(originalName);

            if (node != null)
            {
                var message = "Failed to rename bundle named: ";
                message += originalName.fullNativeName;
                message += ".  Most likely this is due to the bundle being assigned to a folder in your Assets directory, AND that folder is either empty or only contains assets that are explicitly assigned elsewhere.";
                Debug.LogError(message);
            }

            return(result);
        }
Esempio n. 3
0
        internal static AssetBundleFolderInfo CreateEmptyBundleFolder(AssetBundleFolderInfoConcrete folder = null)
        {
            folder = (folder == null) ? s_RootLevelBundles : folder;
            string name = GetUniqueName(folder) + "/dummy";
            AssetBundleNameInfo nameData = new AssetBundleNameInfo(folder.m_Name.bundleName, name);

            return(AddFoldersToBundle(s_RootLevelBundles, nameData));
        }
Esempio n. 4
0
        internal static AssetBundleInfo CreateEmptyVariant(BundleVariantFolderInfo folder)
        {
            string name                  = GetUniqueName(folder, kNewVariantBaseName);
            string variantName           = folder.m_Name.bundleName + "." + name;
            AssetBundleNameInfo nameData = new AssetBundleNameInfo(variantName);

            return(AddBundleToFolder(folder.parent, nameData));
        }
Esempio n. 5
0
        private static AssetBundleInfo AddBundleToFolder(AssetBundleFolderInfo root, AssetBundleNameInfo nameData)
        {
            AssetBundleInfo currInfo = root.GetAssetBundleInfoByName(nameData.shortName);

            if (!System.String.IsNullOrEmpty(nameData.variant))
            {
                if (currInfo == null)
                {
                    currInfo = new BundleVariantFolderInfo(nameData.bundleName, root);
                    root.AddChild(currInfo);
                }
                var folder = currInfo as BundleVariantFolderInfo;
                if (folder == null)
                {
                    var message = "Bundle named " + nameData.shortName;
                    message += " exists both as a standard bundle, and a bundle with variants.  ";
                    message += "This message is not supported for display or actual bundle building.  ";
                    message += "You must manually fix bundle naming in the inspector.";

                    LogError(message);
                    return(null);
                }


                currInfo = folder.GetAssetBundleInfoByName(nameData.variant);
                if (currInfo == null)
                {
                    currInfo = new BundleVariantDataInfo(nameData.fullNativeName, folder);
                    folder.AddChild(currInfo);
                }
            }
            else
            {
                if (currInfo == null)
                {
                    currInfo = new BundleDataInfo(nameData.fullNativeName, root);
                    root.AddChild(currInfo);
                }
                else
                {
                    var dataInfo = currInfo as BundleDataInfo;
                    if (dataInfo == null)
                    {
                        s_InErrorState = true;
                        LogFolderAndBundleNameConflict(nameData.fullNativeName);
                    }
                }
            }
            return(currInfo);
        }
Esempio n. 6
0
        private static AssetBundleInfo AddAssetBundleByName(string name)
        {
            if (name == null)
            {
                return(null);
            }

            AssetBundleNameInfo assetBundleNameInfo = new AssetBundleNameInfo(name);

            AssetBundleFolderInfo assetBundleFolderInfo = AddFoldersToBundle(s_RootLevelBundles, assetBundleNameInfo);
            AssetBundleInfo       assetBundleInfo       = AddBundleToFolder(assetBundleFolderInfo, assetBundleNameInfo);

            return(assetBundleInfo);
        }
Esempio n. 7
0
        internal static AssetBundleInfo CreateEmptyBundle(AssetBundleFolderInfo folder = null, string newName = null)
        {
            if ((folder as BundleVariantFolderInfo) != null)
            {
                return(CreateEmptyVariant(folder as BundleVariantFolderInfo));
            }

            folder = (folder == null) ? s_RootLevelBundles : folder;
            string name = GetUniqueName(folder, newName);
            AssetBundleNameInfo nameData;

            nameData = new AssetBundleNameInfo(folder.m_Name.bundleName, name);
            return(AddBundleToFolder(folder, nameData));
        }
Esempio n. 8
0
        private static AssetBundleFolderInfoConcrete AddFoldersToBundle(AssetBundleFolderInfo root, AssetBundleNameInfo nameData)
        {
            AssetBundleInfo assetBundleInfo = root;
            var             folder          = assetBundleInfo as AssetBundleFolderInfoConcrete;
            var             size            = nameData.pathTokens.Count;

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

                    folder = assetBundleInfo as AssetBundleFolderInfoConcrete;
                    if (folder == null)
                    {
                        s_InErrorState = true;
                        LogFolderAndBundleNameConflict(assetBundleInfo.m_Name.fullNativeName);
                        break;
                    }
                }
            }
            return(assetBundleInfo as AssetBundleFolderInfoConcrete);
        }
Esempio n. 9
0
 internal AssetBundleFolderInfo(List <string> path, int depth, AssetBundleFolderInfo parent) : base("", parent)
 {
     m_AssetBundleInfos = new Dictionary <string, AssetBundleInfo>();
     m_Name             = new AssetBundleNameInfo("");
     m_Name.pathTokens  = path.GetRange(0, depth);
 }
Esempio n. 10
0
 internal AssetBundleInfo(string name, AssetBundleFolderInfo parent)
 {
     m_Name   = new AssetBundleNameInfo(name);
     m_Parent = parent;
 }