public static ReturnCode Run(IAddressableAssetsBuildContext aaBuildContext, IBundleWriteData writeData)
        {
            var task = new GenerateLocationListsTask();

            task.m_AaBuildContext = aaBuildContext;
            task.m_WriteData      = writeData;
            return(task.Run());
        }
    internal static ReturnCode Run(IAddressableAssetsBuildContext aaBuildContext, ContentUpdateContext updateContext)
    {
        var aaContext = aaBuildContext as AddressableAssetsBuildContext;
        var groups    = aaContext.settings.groups.Where(group => group != null && group.HasSchema <BundledAssetGroupSchema>());

        foreach (var assetGroup in groups)
        {
            List <AssetEntryRevertOperation> operations = DetermineRequiredAssetEntryUpdates(assetGroup, updateContext);
            ApplyAssetEntryUpdates(operations, GenerateLocationListsTask.GetBundleProviderName(assetGroup), aaContext.locations, updateContext);
        }

        return(ReturnCode.Success);
    }
    internal static ReturnCode Run(IAddressableAssetsBuildContext aaBuildContext, ContentUpdateContext updateContext)
    {
        var aaContext = aaBuildContext as AddressableAssetsBuildContext;
        var groups    = aaContext.Settings.groups.Where(group => group != null && group.HasSchema <BundledAssetGroupSchema>());

        if (updateContext.ContentState.cachedBundles == null)
        {
            UnityEngine.Debug.LogWarning($"ContentUpdateContext does not contain previous asset bundle info, remote static bundles that are updated will not be cacheable.  If this is needed, rebuild the shipped application state with the current version of addressables to update the addressables_content_state.bin file.  The updated addressables_content_state.bin file can be used to create the content update.");
        }

        foreach (var assetGroup in groups)
        {
            List <AssetEntryRevertOperation> operations = DetermineRequiredAssetEntryUpdates(assetGroup, updateContext);
            ApplyAssetEntryUpdates(operations, GenerateLocationListsTask.GetBundleProviderName(assetGroup), aaContext.locations, updateContext);
        }

        return(ReturnCode.Success);
    }
        internal static ReturnCode RunInternal(IAddressableAssetsBuildContext aaBuildContext, IBundleWriteData writeData, IDependencyData dependencyData)
        {
            var aaContext = aaBuildContext as AddressableAssetsBuildContext;

            if (aaContext == null)
            {
                return(ReturnCode.Error);
            }
            AddressableAssetSettings       aaSettings         = aaContext.Settings;
            List <ContentCatalogDataEntry> locations          = aaContext.locations;
            Dictionary <string, string>    bundleToAssetGroup = aaContext.bundleToAssetGroup;
            var bundleToAssets         = new Dictionary <string, List <GUID> >();
            var dependencySetForBundle = new Dictionary <string, HashSet <string> >();

            foreach (KeyValuePair <GUID, List <string> > k in writeData.AssetToFiles)
            {
                List <GUID> assetList;
                string      bundle = writeData.FileToBundle[k.Value[0]];
                if (!bundleToAssets.TryGetValue(bundle, out assetList))
                {
                    bundleToAssets.Add(bundle, assetList = new List <GUID>());
                }
                HashSet <string> bundleDeps;
                if (!dependencySetForBundle.TryGetValue(bundle, out bundleDeps))
                {
                    dependencySetForBundle.Add(bundle, bundleDeps = new HashSet <string>());
                }
                for (int i = 0; i < k.Value.Count; i++)
                {
                    bundleDeps.Add(writeData.FileToBundle[k.Value[i]]);
                }
                foreach (string file in k.Value)
                {
                    string fileBundle = writeData.FileToBundle[file];
                    if (!bundleToAssets.ContainsKey(fileBundle))
                    {
                        bundleToAssets.Add(fileBundle, new List <GUID>());
                    }
                }

                assetList.Add(k.Key);
            }
            var assetGroupToBundle = (aaContext.assetGroupToBundles = new Dictionary <AddressableAssetGroup, List <string> >());

            foreach (KeyValuePair <string, List <GUID> > kvp in bundleToAssets)
            {
                AddressableAssetGroup assetGroup = aaSettings.DefaultGroup;
                string groupGuid;
                if (bundleToAssetGroup.TryGetValue(kvp.Key, out groupGuid))
                {
                    assetGroup = aaSettings.FindGroup(g => g != null && g.Guid == groupGuid);
                }

                List <string> bundles;
                if (!assetGroupToBundle.TryGetValue(assetGroup, out bundles))
                {
                    assetGroupToBundle.Add(assetGroup, bundles = new List <string>());
                }
                bundles.Add(kvp.Key);
                HashSet <string> bundleDeps = null;
                dependencySetForBundle.TryGetValue(kvp.Key, out bundleDeps);
                CreateResourceLocationData(assetGroup, kvp.Key, GetLoadPath(assetGroup, kvp.Key), GetBundleProviderName(assetGroup), GetAssetProviderName(assetGroup), kvp.Value, bundleDeps, locations, aaContext.providerTypes, dependencyData);
            }

            return(ReturnCode.Success);
        }
 public static ReturnCode Run(IAddressableAssetsBuildContext aaBuildContext, IBundleWriteData writeData)
 {
     return(RunInternal(aaBuildContext, writeData, null));
 }
Exemplo n.º 6
0
        public static ReturnCode Run(IAddressableAssetsBuildContext aaBuildContext, IBundleWriteData writeData)
        {
            var aaContext = aaBuildContext as AddressableAssetsBuildContext;

            if (aaContext == null)
            {
                return(ReturnCode.Error);
            }
            var aaSettings         = aaContext.settings;
            var locations          = aaContext.locations;
            var bundleToAssetGroup = aaContext.bundleToAssetGroup;
            var bundleToAssets     = new Dictionary <string, List <GUID> >();
            var assetsToBundles    = new Dictionary <GUID, List <string> >();

            foreach (var k in writeData.AssetToFiles)
            {
                List <string> bundleList = new List <string>();
                assetsToBundles.Add(k.Key, bundleList);
                List <GUID> assetList;
                var         bundle = writeData.FileToBundle[k.Value[0]];
                if (!bundleToAssets.TryGetValue(bundle, out assetList))
                {
                    bundleToAssets.Add(bundle, assetList = new List <GUID>());
                }
                if (!bundleList.Contains(bundle))
                {
                    bundleList.Add(bundle);
                }
                foreach (var file in k.Value)
                {
                    var fileBundle = writeData.FileToBundle[file];
                    if (!bundleList.Contains(fileBundle))
                    {
                        bundleList.Add(fileBundle);
                    }
                    if (!bundleToAssets.ContainsKey(fileBundle))
                    {
                        bundleToAssets.Add(fileBundle, new List <GUID>());
                    }
                }

                assetList.Add(k.Key);
            }
            var assetGroupToBundle = (aaContext.assetGroupToBundles = new Dictionary <AddressableAssetGroup, List <string> >());

            foreach (var kvp in bundleToAssets)
            {
                AddressableAssetGroup assetGroup = aaSettings.DefaultGroup;
                string groupGuid;
                if (bundleToAssetGroup.TryGetValue(kvp.Key, out groupGuid))
                {
                    assetGroup = aaSettings.FindGroup(g => g.Guid == groupGuid);
                }

                List <string> bundles;
                if (!assetGroupToBundle.TryGetValue(assetGroup, out bundles))
                {
                    assetGroupToBundle.Add(assetGroup, bundles = new List <string>());
                }
                bundles.Add(kvp.Key);
                CreateResourceLocationData(assetGroup, kvp.Key, GetLoadPath(assetGroup, kvp.Key), GetBundleProviderName(assetGroup), GetAssetProviderName(assetGroup), kvp.Value, assetsToBundles, locations);
            }

            return(ReturnCode.Success);
        }