internal void GatherAllAssetReferenceDrawableEntries(List <IReferenceEntryData> refEntries, AddressableAssetSettings settings) { var path = AssetPath; if (string.IsNullOrEmpty(path)) { return; } if (guid == EditorSceneListName) { //We don't add Built in scenes to the list of assignable AssetReferences so no need to check this. return; } if (guid == ResourcesName) { //We don't add Resources assets to the list of assignable AssetReferences so no need to check this. return; } if (AssetDatabase.IsValidFolder(path)) { foreach (var fi in AddressablesFileEnumeration.EnumerateAddressableFolder(path, settings, true)) { string relativeAddress = address + GetRelativePath(fi, path); var reference = new ImplicitAssetEntry() { address = relativeAddress, AssetPath = fi, IsInResources = IsInResources, labels = new HashSet <string>(m_Labels) }; refEntries.Add(reference); } } #pragma warning disable 0618 else if (MainAssetType == typeof_AddressableAssetEntryCollection) { var col = AssetDatabase.LoadAssetAtPath <AddressableAssetEntryCollection>(AssetPath); if (col != null) { foreach (var e in col.Entries) { refEntries.Add(new ImplicitAssetEntry() { address = e.address, AssetPath = e.AssetPath, IsInResources = e.IsInResources, labels = new HashSet <string>(e.labels.Union(this.labels)) }); } } } #pragma warning restore 0618 else { refEntries.Add(this); } }
#pragma warning restore 0618 internal void GatherFolderEntries(List <AddressableAssetEntry> assets, bool recurseAll, bool includeSubObjects, Func <AddressableAssetEntry, bool> entryFilter) { var path = AssetPath; var settings = parentGroup.Settings; foreach (var file in AddressablesFileEnumeration.EnumerateAddressableFolder(path, settings, recurseAll)) { var subGuid = AssetDatabase.AssetPathToGUID(file); var entry = settings.CreateSubEntryIfUnique(subGuid, address + GetRelativePath(file, path), this); if (entry != null) { entry.IsInResources = IsInResources; //if this is a sub-folder of Resources, copy it on down entry.m_Labels = m_Labels; if (entryFilter == null || entryFilter(entry)) { assets.Add(entry); } if (includeSubObjects) { var mainType = AssetDatabase.GetMainAssetTypeAtPath(entry.AssetPath); if (mainType == typeof(SpriteAtlas)) { entry.GatherSpriteAtlasEntries(assets); } else { entry.GatherSubObjectEntries(assets); } } } } if (!recurseAll) { foreach (var fo in Directory.EnumerateDirectories(path, "*.*", SearchOption.TopDirectoryOnly)) { var folder = fo.Replace('\\', '/'); if (AssetDatabase.IsValidFolder(folder)) { var entry = settings.CreateSubEntryIfUnique(AssetDatabase.AssetPathToGUID(folder), address + GetRelativePath(folder, path), this); if (entry != null) { entry.IsInResources = IsInResources; //if this is a sub-folder of Resources, copy it on down entry.m_Labels = m_Labels; entry.IsFolder = true; if (entryFilter == null || entryFilter(entry)) { assets.Add(entry); } } } } } }