예제 #1
0
        public static BundleFolderInfo CreateEmptyBundleFolder(BundleFolderConcreteInfo folder = null)
        {
            folder = (folder == null) ? m_rootLevelBundles : folder;
            string         name     = GetUniqueName(folder) + "/dummy";
            BundleNameData nameData = new BundleNameData(folder.m_name.BundleName, name);

            return(AddFoldersToBundle(m_rootLevelBundles, nameData));
        }
예제 #2
0
        public static BundleInfo CreateEmptyVariant(BundleVariantFolderInfo folder)
        {
            string         name        = GetUniqueName(folder, kNewVariantBaseName);
            string         variantName = folder.m_name.BundleName + "." + name;
            BundleNameData nameData    = new BundleNameData(variantName);

            return(AddBundleToFolder(folder.Parent, nameData));
        }
예제 #3
0
        public static BundleInfo CreateEmptyBundle(BundleFolderInfo folder = null, string newName = null)
        {
            folder = (folder == null) ? m_rootLevelBundles : folder;
            string         name     = GetUniqueName(folder, newName);
            BundleNameData nameData = new BundleNameData(folder.m_name.BundleName, name);

            return(AddBundleToFolder(folder, nameData));
        }
예제 #4
0
        private static BundleInfo AddBundleToFolder(BundleFolderInfo root, BundleNameData nameData)
        {
            BundleInfo currInfo = root.GetChild(nameData.ShortName);

            if (nameData.Variant != string.Empty)
            {
                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.GetChild(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)
                    {
                        m_inErrorState = true;
                        LogError("Bundle " + nameData.FullNativeName + " has a name conflict with a bundle-folder.  Display of bundle data and building of bundles will not work.");
                    }
                }
            }
            return(currInfo);
        }
예제 #5
0
        private static BundleInfo AddBundleToModel(string name)
        {
            if (name == null)
            {
                return(null);
            }

            BundleNameData nameData = new BundleNameData(name);

            BundleFolderInfo folder   = AddFoldersToBundle(m_rootLevelBundles, nameData);
            BundleInfo       currInfo = AddBundleToFolder(folder, nameData);

            return(currInfo);
        }
예제 #6
0
 public BundleFolderInfo(List <string> path, int depth, BundleFolderInfo parent) : base("", parent)
 {
     m_children        = new Dictionary <string, BundleInfo>();
     m_name            = new BundleNameData("");
     m_name.PathTokens = path.GetRange(0, depth);
 }
예제 #7
0
 public BundleInfo(string name, BundleFolderInfo parent)
 {
     m_name   = new BundleNameData(name);
     m_parent = parent;
 }
예제 #8
0
        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)
                    {
                        m_inErrorState = true;
                        LogError("Bundle " + currInfo.m_name.FullNativeName + " has a name conflict with a bundle-folder.  Display of bundle data and building of bundles will not work.");
                        break;
                    }
                }
            }
            return(currInfo as BundleFolderConcreteInfo);
        }