From d0d608865ad318b455d877940ebed19c12d332fc Mon Sep 17 00:00:00 2001 From: godzzz Date: Tue, 25 Jun 2024 21:52:16 +0400 Subject: [PATCH] [v0.2.8-pre.4] Asset bundles moved to separate repo --- Runtime/Files.Bundles.meta | 3 - .../Files.Bundles/Depra.Assets.Bundles.asmdef | 18 --- .../Depra.Assets.Bundles.asmdef.meta | 3 - Runtime/Files.Bundles/Exceptions.meta | 3 - .../Exceptions/AssetBundleFileNotLoaded.cs | 13 --- .../AssetBundleFileNotLoaded.cs.meta | 3 - .../Exceptions/AssetBundleNotLoaded.cs | 12 -- .../Exceptions/AssetBundleNotLoaded.cs.meta | 3 - .../Exceptions/UnityWebRequestFailed.cs | 31 ------ .../Exceptions/UnityWebRequestFailed.cs.meta | 3 - Runtime/Files.Bundles/Extensions.meta | 3 - .../AssetBundleCreateRequestExtensions.cs | 43 ------- ...AssetBundleCreateRequestExtensions.cs.meta | 3 - .../AssetBundleRequestExtensions.cs | 38 ------- .../AssetBundleRequestExtensions.cs.meta | 3 - ...UnityWebRequestAsyncOperationExtensions.cs | 49 -------- ...WebRequestAsyncOperationExtensions.cs.meta | 3 - .../Extensions/UnityWebRequestExtensions.cs | 26 ----- .../UnityWebRequestExtensions.cs.meta | 3 - Runtime/Files.Bundles/Files.meta | 3 - .../Files/AssetBundleAssetFile.cs | 88 --------------- .../Files/AssetBundleAssetFile.cs.meta | 3 - .../Files/AssetBundleDependenciesExtractor.cs | 31 ------ .../AssetBundleDependenciesExtractor.cs.meta | 3 - .../Files.Bundles/Files/AssetBundleFile.cs | 105 ------------------ .../Files/AssetBundleFile.cs.meta | 3 - Runtime/Files.Bundles/Files/AssetBundleUri.cs | 47 -------- .../Files/AssetBundleUri.cs.meta | 3 - Runtime/Files.Bundles/Sources.meta | 3 - .../Sources/AssetBundleFromFile.cs | 35 ------ .../Sources/AssetBundleFromFile.cs.meta | 3 - .../Sources/AssetBundleFromMemory.cs | 39 ------- .../Sources/AssetBundleFromMemory.cs.meta | 3 - .../Sources/AssetBundleFromStream.cs | 45 -------- .../Sources/AssetBundleFromStream.cs.meta | 3 - .../Sources/AssetBundleFromWeb.cs | 55 --------- .../Sources/AssetBundleFromWeb.cs.meta | 3 - .../Files.Bundles/Sources/AssetBundleSize.cs | 71 ------------ .../Sources/AssetBundleSize.cs.meta | 3 - .../Sources/IAssetBundleSource.cs | 20 ---- .../Sources/IAssetBundleSource.cs.meta | 3 - package.json | 5 +- 42 files changed, 2 insertions(+), 838 deletions(-) delete mode 100644 Runtime/Files.Bundles.meta delete mode 100644 Runtime/Files.Bundles/Depra.Assets.Bundles.asmdef delete mode 100644 Runtime/Files.Bundles/Depra.Assets.Bundles.asmdef.meta delete mode 100644 Runtime/Files.Bundles/Exceptions.meta delete mode 100644 Runtime/Files.Bundles/Exceptions/AssetBundleFileNotLoaded.cs delete mode 100644 Runtime/Files.Bundles/Exceptions/AssetBundleFileNotLoaded.cs.meta delete mode 100644 Runtime/Files.Bundles/Exceptions/AssetBundleNotLoaded.cs delete mode 100644 Runtime/Files.Bundles/Exceptions/AssetBundleNotLoaded.cs.meta delete mode 100644 Runtime/Files.Bundles/Exceptions/UnityWebRequestFailed.cs delete mode 100644 Runtime/Files.Bundles/Exceptions/UnityWebRequestFailed.cs.meta delete mode 100644 Runtime/Files.Bundles/Extensions.meta delete mode 100644 Runtime/Files.Bundles/Extensions/AssetBundleCreateRequestExtensions.cs delete mode 100644 Runtime/Files.Bundles/Extensions/AssetBundleCreateRequestExtensions.cs.meta delete mode 100644 Runtime/Files.Bundles/Extensions/AssetBundleRequestExtensions.cs delete mode 100644 Runtime/Files.Bundles/Extensions/AssetBundleRequestExtensions.cs.meta delete mode 100644 Runtime/Files.Bundles/Extensions/UnityWebRequestAsyncOperationExtensions.cs delete mode 100644 Runtime/Files.Bundles/Extensions/UnityWebRequestAsyncOperationExtensions.cs.meta delete mode 100644 Runtime/Files.Bundles/Extensions/UnityWebRequestExtensions.cs delete mode 100644 Runtime/Files.Bundles/Extensions/UnityWebRequestExtensions.cs.meta delete mode 100644 Runtime/Files.Bundles/Files.meta delete mode 100644 Runtime/Files.Bundles/Files/AssetBundleAssetFile.cs delete mode 100644 Runtime/Files.Bundles/Files/AssetBundleAssetFile.cs.meta delete mode 100644 Runtime/Files.Bundles/Files/AssetBundleDependenciesExtractor.cs delete mode 100644 Runtime/Files.Bundles/Files/AssetBundleDependenciesExtractor.cs.meta delete mode 100644 Runtime/Files.Bundles/Files/AssetBundleFile.cs delete mode 100644 Runtime/Files.Bundles/Files/AssetBundleFile.cs.meta delete mode 100644 Runtime/Files.Bundles/Files/AssetBundleUri.cs delete mode 100644 Runtime/Files.Bundles/Files/AssetBundleUri.cs.meta delete mode 100644 Runtime/Files.Bundles/Sources.meta delete mode 100644 Runtime/Files.Bundles/Sources/AssetBundleFromFile.cs delete mode 100644 Runtime/Files.Bundles/Sources/AssetBundleFromFile.cs.meta delete mode 100644 Runtime/Files.Bundles/Sources/AssetBundleFromMemory.cs delete mode 100644 Runtime/Files.Bundles/Sources/AssetBundleFromMemory.cs.meta delete mode 100644 Runtime/Files.Bundles/Sources/AssetBundleFromStream.cs delete mode 100644 Runtime/Files.Bundles/Sources/AssetBundleFromStream.cs.meta delete mode 100644 Runtime/Files.Bundles/Sources/AssetBundleFromWeb.cs delete mode 100644 Runtime/Files.Bundles/Sources/AssetBundleFromWeb.cs.meta delete mode 100644 Runtime/Files.Bundles/Sources/AssetBundleSize.cs delete mode 100644 Runtime/Files.Bundles/Sources/AssetBundleSize.cs.meta delete mode 100644 Runtime/Files.Bundles/Sources/IAssetBundleSource.cs delete mode 100644 Runtime/Files.Bundles/Sources/IAssetBundleSource.cs.meta diff --git a/Runtime/Files.Bundles.meta b/Runtime/Files.Bundles.meta deleted file mode 100644 index 22a3bad..0000000 --- a/Runtime/Files.Bundles.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 1b515f5fd5fb4947b51aca6c4d4add4b -timeCreated: 1678833399 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Depra.Assets.Bundles.asmdef b/Runtime/Files.Bundles/Depra.Assets.Bundles.asmdef deleted file mode 100644 index 54f7585..0000000 --- a/Runtime/Files.Bundles/Depra.Assets.Bundles.asmdef +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "Depra.Asset.Bundles", - "rootNamespace": "Depra.Asset.Bundles", - "references": [ - "GUID:ce2ab5ef472b35f498b9d47a89be9396" - ], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": true, - "precompiledReferences": [ - "Depra.Asset.dll" - ], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Depra.Assets.Bundles.asmdef.meta b/Runtime/Files.Bundles/Depra.Assets.Bundles.asmdef.meta deleted file mode 100644 index a6eca00..0000000 --- a/Runtime/Files.Bundles/Depra.Assets.Bundles.asmdef.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 007f974573e04f5cbfab7ed51f223fdc -timeCreated: 1719335572 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Exceptions.meta b/Runtime/Files.Bundles/Exceptions.meta deleted file mode 100644 index 7ecd06f..0000000 --- a/Runtime/Files.Bundles/Exceptions.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: a849a6e185684d4e9b7c31aa35363bb3 -timeCreated: 1675007048 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Exceptions/AssetBundleFileNotLoaded.cs b/Runtime/Files.Bundles/Exceptions/AssetBundleFileNotLoaded.cs deleted file mode 100644 index 8d18b53..0000000 --- a/Runtime/Files.Bundles/Exceptions/AssetBundleFileNotLoaded.cs +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System; - -namespace Depra.Asset.Files.Bundles.Exceptions -{ - internal sealed class AssetBundleFileNotLoaded : Exception - { - public AssetBundleFileNotLoaded(string name, string bundleName) : base( - $"File with name '{name}' form asset bundle '{bundleName}' was not loaded!") { } - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Exceptions/AssetBundleFileNotLoaded.cs.meta b/Runtime/Files.Bundles/Exceptions/AssetBundleFileNotLoaded.cs.meta deleted file mode 100644 index 48de1cf..0000000 --- a/Runtime/Files.Bundles/Exceptions/AssetBundleFileNotLoaded.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 0830601e1e2748408111e864be749369 -timeCreated: 1679184587 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Exceptions/AssetBundleNotLoaded.cs b/Runtime/Files.Bundles/Exceptions/AssetBundleNotLoaded.cs deleted file mode 100644 index 693720f..0000000 --- a/Runtime/Files.Bundles/Exceptions/AssetBundleNotLoaded.cs +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System; - -namespace Depra.Asset.Files.Bundles.Exceptions -{ - internal sealed class AssetBundleNotLoaded : Exception - { - public AssetBundleNotLoaded(string path) : base($"Asset bundle at path '{path}' was not loaded!") { } - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Exceptions/AssetBundleNotLoaded.cs.meta b/Runtime/Files.Bundles/Exceptions/AssetBundleNotLoaded.cs.meta deleted file mode 100644 index 1924a8c..0000000 --- a/Runtime/Files.Bundles/Exceptions/AssetBundleNotLoaded.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: f2cac11d17ff44eeb72d0d577d301d74 -timeCreated: 1678334306 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Exceptions/UnityWebRequestFailed.cs b/Runtime/Files.Bundles/Exceptions/UnityWebRequestFailed.cs deleted file mode 100644 index 544a748..0000000 --- a/Runtime/Files.Bundles/Exceptions/UnityWebRequestFailed.cs +++ /dev/null @@ -1,31 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System; -using UnityEngine.Networking; - -namespace Depra.Asset.Files.Bundles.Exceptions -{ - internal sealed class UnityWebRequestFailed : Exception - { - private readonly string _text; - private readonly string _error; - - private string _message; - - public UnityWebRequestFailed(UnityWebRequest webRequest) - { - _error = webRequest.error; - if (webRequest.downloadHandler is DownloadHandlerBuffer buffer) - { - _text = buffer.text; - } - - webRequest.GetResponseHeaders(); - } - - public override string Message => _message ??= string.IsNullOrWhiteSpace(_text) == false - ? _error + Environment.NewLine + _text - : _error; - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Exceptions/UnityWebRequestFailed.cs.meta b/Runtime/Files.Bundles/Exceptions/UnityWebRequestFailed.cs.meta deleted file mode 100644 index b36b933..0000000 --- a/Runtime/Files.Bundles/Exceptions/UnityWebRequestFailed.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 0136a5931ea44508a55463712109d3cb -timeCreated: 1693691555 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Extensions.meta b/Runtime/Files.Bundles/Extensions.meta deleted file mode 100644 index 0d8e0ed..0000000 --- a/Runtime/Files.Bundles/Extensions.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 377f0e77315e477e9f0d161a2816af1c -timeCreated: 1679185654 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Extensions/AssetBundleCreateRequestExtensions.cs b/Runtime/Files.Bundles/Extensions/AssetBundleCreateRequestExtensions.cs deleted file mode 100644 index 6e00262..0000000 --- a/Runtime/Files.Bundles/Extensions/AssetBundleCreateRequestExtensions.cs +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System; -using System.Threading; -using System.Threading.Tasks; -using UnityEngine; - -namespace Depra.Asset.Files.Bundles.Extensions -{ - internal static class AssetBundleCreateRequestExtensions - { - public static Task ToTask(this AssetBundleCreateRequest self, - Action onProgress = null, CancellationToken cancellationToken = default) - { - if (cancellationToken.IsCancellationRequested) - { - return Task.FromCanceled(cancellationToken); - } - - return self.isDone - ? Task.FromResult(self.assetBundle) - : AwaitWithProgress(self, onProgress, cancellationToken); - } - - private async static Task AwaitWithProgress(this AssetBundleCreateRequest self, - Action onProgress, CancellationToken cancellationToken = default) - { - while (self.isDone == false) - { - if (cancellationToken.IsCancellationRequested) - { - return await Task.FromCanceled(cancellationToken); - } - - onProgress?.Invoke(self.progress); - await Task.Yield(); - } - - return self.assetBundle; - } - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Extensions/AssetBundleCreateRequestExtensions.cs.meta b/Runtime/Files.Bundles/Extensions/AssetBundleCreateRequestExtensions.cs.meta deleted file mode 100644 index 145a2db..0000000 --- a/Runtime/Files.Bundles/Extensions/AssetBundleCreateRequestExtensions.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 0b729d14e0b8448e82a608f61f52207a -timeCreated: 1693689257 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Extensions/AssetBundleRequestExtensions.cs b/Runtime/Files.Bundles/Extensions/AssetBundleRequestExtensions.cs deleted file mode 100644 index a13daf9..0000000 --- a/Runtime/Files.Bundles/Extensions/AssetBundleRequestExtensions.cs +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System; -using System.Threading; -using System.Threading.Tasks; -using UnityEngine; -using Object = UnityEngine.Object; - -namespace Depra.Asset.Files.Bundles.Extensions -{ - internal static class AssetBundleRequestExtensions - { - public static Task ToTask(this AssetBundleRequest self, Action onProgress = null, - CancellationToken cancellationToken = default) => cancellationToken.IsCancellationRequested - ? Task.FromCanceled(cancellationToken) - : self.isDone - ? Task.FromResult(self.asset) - : AwaitWithProgress(self, onProgress, cancellationToken); - - private async static Task AwaitWithProgress(this AssetBundleRequest self, - Action onProgress, CancellationToken cancellationToken = default) - { - while (self.isDone == false) - { - if (cancellationToken.IsCancellationRequested) - { - return await Task.FromCanceled(cancellationToken); - } - - onProgress?.Invoke(self.progress); - await Task.Yield(); - } - - return self.asset; - } - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Extensions/AssetBundleRequestExtensions.cs.meta b/Runtime/Files.Bundles/Extensions/AssetBundleRequestExtensions.cs.meta deleted file mode 100644 index 4df0150..0000000 --- a/Runtime/Files.Bundles/Extensions/AssetBundleRequestExtensions.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 64a5b260684e4a9b9fe7f92c881568e6 -timeCreated: 1693691926 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Extensions/UnityWebRequestAsyncOperationExtensions.cs b/Runtime/Files.Bundles/Extensions/UnityWebRequestAsyncOperationExtensions.cs deleted file mode 100644 index 522ff66..0000000 --- a/Runtime/Files.Bundles/Extensions/UnityWebRequestAsyncOperationExtensions.cs +++ /dev/null @@ -1,49 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System; -using System.Threading; -using System.Threading.Tasks; -using Depra.Asset.Files.Bundles.Exceptions; -using UnityEngine.Networking; - -namespace Depra.Asset.Files.Bundles.Extensions -{ - internal static class UnityWebRequestAsyncOperationExtensions - { - public static Task ToTask(this UnityWebRequestAsyncOperation self, - Action onProgress = null, CancellationToken cancellationToken = default) - { - if (cancellationToken.IsCancellationRequested) - { - return Task.FromCanceled(cancellationToken); - } - - if (self.isDone) - { - return self.webRequest.CanGetResult() - ? Task.FromResult(self.webRequest) - : Task.FromException(new UnityWebRequestFailed(self.webRequest)); - } - - return AwaitWithProgress(self, onProgress, cancellationToken); - } - - private async static Task AwaitWithProgress(this UnityWebRequestAsyncOperation self, - Action onProgress, CancellationToken cancellationToken = default) - { - while (self.isDone == false) - { - if (cancellationToken.IsCancellationRequested) - { - return await Task.FromCanceled(cancellationToken); - } - - onProgress?.Invoke(self.progress); - await Task.Yield(); - } - - return self.webRequest; - } - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Extensions/UnityWebRequestAsyncOperationExtensions.cs.meta b/Runtime/Files.Bundles/Extensions/UnityWebRequestAsyncOperationExtensions.cs.meta deleted file mode 100644 index e9dbbf0..0000000 --- a/Runtime/Files.Bundles/Extensions/UnityWebRequestAsyncOperationExtensions.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 7558da688eae4dbfb151f39ce6d9eebc -timeCreated: 1693689731 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Extensions/UnityWebRequestExtensions.cs b/Runtime/Files.Bundles/Extensions/UnityWebRequestExtensions.cs deleted file mode 100644 index 40f8d56..0000000 --- a/Runtime/Files.Bundles/Extensions/UnityWebRequestExtensions.cs +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using UnityEngine.Networking; - -namespace Depra.Asset.Files.Bundles.Extensions -{ - internal static class UnityWebRequestExtensions - { - public static bool CanGetResult(this UnityWebRequest self) => - self.result is UnityWebRequest.Result.ConnectionError - or UnityWebRequest.Result.DataProcessingError - or UnityWebRequest.Result.ProtocolError; - - public static int ParseSize(this UnityWebRequest self) - { - var contentLength = self.GetResponseHeader("Content-Length"); - if (int.TryParse(contentLength, out var returnValue)) - { - return returnValue; - } - - return -1; - } - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Extensions/UnityWebRequestExtensions.cs.meta b/Runtime/Files.Bundles/Extensions/UnityWebRequestExtensions.cs.meta deleted file mode 100644 index 654ef2e..0000000 --- a/Runtime/Files.Bundles/Extensions/UnityWebRequestExtensions.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 0c36217f40ce46f4be8d17509c831456 -timeCreated: 1693691779 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Files.meta b/Runtime/Files.Bundles/Files.meta deleted file mode 100644 index 45b3ad5..0000000 --- a/Runtime/Files.Bundles/Files.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: fef7721586e24a30ae7f34efa92eba7f -timeCreated: 1678833171 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Files/AssetBundleAssetFile.cs b/Runtime/Files.Bundles/Files/AssetBundleAssetFile.cs deleted file mode 100644 index 35ec5c4..0000000 --- a/Runtime/Files.Bundles/Files/AssetBundleAssetFile.cs +++ /dev/null @@ -1,88 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System; -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; -using Depra.Asset.Delegates; -using Depra.Asset.Exceptions; -using Depra.Asset.Files.Bundles.Exceptions; -using Depra.Asset.Files.Bundles.Extensions; -using Depra.Asset.ValueObjects; -using UnityEngine; -using Object = UnityEngine.Object; - -namespace Depra.Asset.Files.Bundles -{ - public sealed class AssetBundleAssetFile : IAssetFile, IDisposable where TAsset : Object - { - private readonly AssetBundle _assetBundle; - private TAsset _loadedAsset; - - public AssetBundleAssetFile(AssetName name, AssetBundle assetBundle) - { - Guard.AgainstNull(name, nameof(name)); - Guard.AgainstNull(assetBundle, nameof(assetBundle)); - - _assetBundle = assetBundle; - Metadata = new AssetMetadata(name, FileSize.Unknown); - } - - public AssetMetadata Metadata { get; } - public bool IsLoaded => _loadedAsset != null; - private string Name => Metadata.Uri.Relative; - - public TAsset Load() - { - if (IsLoaded) - { - return _loadedAsset; - } - - var loadedAsset = _assetBundle.LoadAsset(Name); - Guard.AgainstNull(loadedAsset, () => new AssetBundleFileNotLoaded(Name, _assetBundle.name)); - - _loadedAsset = loadedAsset; - Metadata.Size = UnityFileSize.FromProfiler(_loadedAsset); - - return _loadedAsset; - } - - public void Unload() - { - if (IsLoaded) - { - _loadedAsset = null; - } - } - - public async Task LoadAsync(DownloadProgressDelegate onProgress = null, - CancellationToken cancellationToken = default) - { - if (IsLoaded) - { - onProgress?.Invoke(DownloadProgress.Full); - return _loadedAsset; - } - - var loadedAsset = await _assetBundle - .LoadAssetAsync(Name) - .ToTask(OnProgress, cancellationToken); - - Guard.AgainstNull(loadedAsset, () => new AssetBundleFileNotLoaded(Name, _assetBundle.name)); - - _loadedAsset = (TAsset) loadedAsset; - onProgress?.Invoke(DownloadProgress.Full); - Metadata.Size = UnityFileSize.FromProfiler(_loadedAsset); - - return _loadedAsset; - - void OnProgress(float progress) => onProgress?.Invoke(new DownloadProgress(progress)); - } - - public IEnumerable Dependencies() => AssetBundleDependenciesExtractor.Extract(_assetBundle); - - void IDisposable.Dispose() => Unload(); - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Files/AssetBundleAssetFile.cs.meta b/Runtime/Files.Bundles/Files/AssetBundleAssetFile.cs.meta deleted file mode 100644 index 8b5de77..0000000 --- a/Runtime/Files.Bundles/Files/AssetBundleAssetFile.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 57b8b1e701f2472ab311344d582e8e12 -timeCreated: 1677617200 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Files/AssetBundleDependenciesExtractor.cs b/Runtime/Files.Bundles/Files/AssetBundleDependenciesExtractor.cs deleted file mode 100644 index 11ea127..0000000 --- a/Runtime/Files.Bundles/Files/AssetBundleDependenciesExtractor.cs +++ /dev/null @@ -1,31 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System.Collections.Generic; -using System.Runtime.CompilerServices; -using Depra.Asset.Files.Bundles.Exceptions; -using Depra.Asset.ValueObjects; -using UnityEngine; - -namespace Depra.Asset.Files.Bundles -{ - internal static class AssetBundleDependenciesExtractor - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static IEnumerable Extract(AssetBundle assetBundle) - { - const string MANIFEST_NAME = "assetbundlemanifest"; - var manifest = assetBundle.LoadAsset(MANIFEST_NAME); - if (manifest == null) - { - throw new AssetBundleFileNotLoaded(MANIFEST_NAME, assetBundle.name); - } - - var dependencies = manifest.GetAllDependencies(assetBundle.name); - foreach (var dependencyPath in dependencies) - { - yield return new AssetBundleUri(dependencyPath); - } - } - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Files/AssetBundleDependenciesExtractor.cs.meta b/Runtime/Files.Bundles/Files/AssetBundleDependenciesExtractor.cs.meta deleted file mode 100644 index 1e08f55..0000000 --- a/Runtime/Files.Bundles/Files/AssetBundleDependenciesExtractor.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: aabb1d126b8e4408bdd8abf082852106 -timeCreated: 1703534281 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Files/AssetBundleFile.cs b/Runtime/Files.Bundles/Files/AssetBundleFile.cs deleted file mode 100644 index 1cfdd15..0000000 --- a/Runtime/Files.Bundles/Files/AssetBundleFile.cs +++ /dev/null @@ -1,105 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System; -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; -using Depra.Asset.Delegates; -using Depra.Asset.Exceptions; -using Depra.Asset.Files.Bundles.Exceptions; -using Depra.Asset.Files.Bundles.Sources; -using Depra.Asset.ValueObjects; -using UnityEngine; - -namespace Depra.Asset.Files.Bundles -{ - public sealed class AssetBundleFile : IAssetFile, IDisposable - { - private readonly AssetBundleUri _uri; - private readonly IAssetBundleSource _source; - - private AssetBundle _loadedAssetBundle; - - public AssetBundleFile(AssetBundleUri uri, IAssetBundleSource source) - { - Guard.AgainstNull(uri, nameof(uri)); - Guard.AgainstNull(source, nameof(source)); - - _source = source; - Metadata = new AssetMetadata(_uri = uri, FileSize.Unknown); - } - - public AssetMetadata Metadata { get; } - public bool IsLoaded => _loadedAssetBundle != null; - - public AssetBundle Load() - { - if (IsLoaded) - { - return _loadedAssetBundle; - } - - var loadedAssetBundle = _source.Load(by: _uri.AbsolutePathWithoutExtension); - Guard.AgainstNull(loadedAssetBundle, () => new AssetBundleNotLoaded(_uri.Absolute)); - - _loadedAssetBundle = loadedAssetBundle; - Metadata.Size = _source.Size(of: _loadedAssetBundle); - - return _loadedAssetBundle; - } - - public async Task LoadAsync(DownloadProgressDelegate onProgress = null, - CancellationToken cancellationToken = default) - { - if (IsLoaded) - { - onProgress?.Invoke(DownloadProgress.Full); - return _loadedAssetBundle; - } - - var loadedAssetBundle = await _source - .LoadAsync(_uri.AbsolutePathWithoutExtension, OnProgress, cancellationToken); - - Guard.AgainstNull(loadedAssetBundle, () => new AssetBundleNotLoaded(_uri.Absolute)); - - _loadedAssetBundle = loadedAssetBundle; - onProgress?.Invoke(DownloadProgress.Full); - Metadata.Size = _source.Size(of: _loadedAssetBundle); - - return _loadedAssetBundle; - - void OnProgress(float progress) => onProgress?.Invoke(new DownloadProgress(progress)); - } - - public void Unload() - { - if (IsLoaded == false) - { - return; - } - - _loadedAssetBundle.Unload(true); - _loadedAssetBundle = null; - } - - public void UnloadAsync() - { - if (IsLoaded == false) - { - return; - } - - _loadedAssetBundle.UnloadAsync(true); - _loadedAssetBundle = null; - } - - public IEnumerable Dependencies() - { - Guard.Against(IsLoaded == false, () => new AssetBundleNotLoaded(_uri.Absolute)); - return AssetBundleDependenciesExtractor.Extract(_loadedAssetBundle); - } - - void IDisposable.Dispose() => Unload(); - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Files/AssetBundleFile.cs.meta b/Runtime/Files.Bundles/Files/AssetBundleFile.cs.meta deleted file mode 100644 index e309064..0000000 --- a/Runtime/Files.Bundles/Files/AssetBundleFile.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 3f66e0126c084eefa784bafbcec2f613 -timeCreated: 1675002783 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Files/AssetBundleUri.cs b/Runtime/Files.Bundles/Files/AssetBundleUri.cs deleted file mode 100644 index 0d5c507..0000000 --- a/Runtime/Files.Bundles/Files/AssetBundleUri.cs +++ /dev/null @@ -1,47 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System.IO; -//using Depra.Assets.Extensions; -using Depra.Asset.ValueObjects; - -namespace Depra.Asset.Files.Bundles -{ - public sealed record AssetBundleUri : IAssetUri - { - private const string EXTENSION = ".assetbundle"; - - public static AssetBundleUri Empty => new(string.Empty); - public static AssetBundleUri Invalid => new(nameof(Invalid)); - public static implicit operator AssetBundleUri(string path) => new(path); - - private readonly FileInfo _fileInfo; - - public AssetBundleUri(string path) - { - _fileInfo = new FileInfo(path); - //_fileInfo.Directory.Require(); - - Name = string.IsNullOrEmpty(Extension) - ? _fileInfo.Name - : _fileInfo.Name.Replace(Extension, string.Empty); - - AbsolutePathWithoutExtension = Absolute.Replace(EXTENSION, string.Empty); - } - - public AssetBundleUri(string name, string directory = null) : this(name, directory, EXTENSION) { } - - public AssetBundleUri(string name, string directory, string extension = null) : this( - Path.Combine(directory, name + extension)) { } - - public string Name { get; } - public string Extension => EXTENSION; - public string NameWithExtension => Name + Extension; - - public string Absolute => _fileInfo.FullName; - public string AbsoluteDirectoryPath => _fileInfo.DirectoryName; - public string AbsolutePathWithoutExtension { get; } - - string IAssetUri.Relative => Name; - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Files/AssetBundleUri.cs.meta b/Runtime/Files.Bundles/Files/AssetBundleUri.cs.meta deleted file mode 100644 index a1800c5..0000000 --- a/Runtime/Files.Bundles/Files/AssetBundleUri.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 4e0039a268c44d8abef6239694f41351 -timeCreated: 1681075311 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Sources.meta b/Runtime/Files.Bundles/Sources.meta deleted file mode 100644 index 45d1147..0000000 --- a/Runtime/Files.Bundles/Sources.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: f0305bc0b379403f8ebdb210e9d4fc10 -timeCreated: 1689980205 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Sources/AssetBundleFromFile.cs b/Runtime/Files.Bundles/Sources/AssetBundleFromFile.cs deleted file mode 100644 index a5995dc..0000000 --- a/Runtime/Files.Bundles/Sources/AssetBundleFromFile.cs +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System; -using System.Threading; -using System.Threading.Tasks; -using Depra.Asset.Exceptions; -using Depra.Asset.Files.Bundles.Extensions; -using Depra.Asset.ValueObjects; -using UnityEngine; - -namespace Depra.Asset.Files.Bundles.Sources -{ - public readonly struct AssetBundleFromFile : IAssetBundleSource - { - FileSize IAssetBundleSource.Size(AssetBundle of) => AssetBundleSize.Evaluate(of); - - AssetBundle IAssetBundleSource.Load(string by) - { - Guard.AgainstFileNotFound(by); - - return AssetBundle.LoadFromFile(by); - } - - Task IAssetBundleSource.LoadAsync(string by, Action onProgress, - CancellationToken cancellationToken) - { - Guard.AgainstFileNotFound(by); - - return AssetBundle - .LoadFromFileAsync(by) - .ToTask(onProgress, cancellationToken); - } - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Sources/AssetBundleFromFile.cs.meta b/Runtime/Files.Bundles/Sources/AssetBundleFromFile.cs.meta deleted file mode 100644 index df1deac..0000000 --- a/Runtime/Files.Bundles/Sources/AssetBundleFromFile.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 7d63f73ae55546ea8984094fbed8aac9 -timeCreated: 1689980352 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Sources/AssetBundleFromMemory.cs b/Runtime/Files.Bundles/Sources/AssetBundleFromMemory.cs deleted file mode 100644 index f7ab253..0000000 --- a/Runtime/Files.Bundles/Sources/AssetBundleFromMemory.cs +++ /dev/null @@ -1,39 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System; -using System.IO; -using System.Runtime.CompilerServices; -using System.Threading; -using System.Threading.Tasks; -using Depra.Asset.Exceptions; -using Depra.Asset.Files.Bundles.Extensions; -using Depra.Asset.ValueObjects; -using UnityEngine; - -namespace Depra.Asset.Files.Bundles.Sources -{ - public readonly struct AssetBundleFromMemory : IAssetBundleSource - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static byte[] ReadBytes(string path) => File.ReadAllBytes(path); - - FileSize IAssetBundleSource.Size(AssetBundle of) => AssetBundleSize.Evaluate(of); - - AssetBundle IAssetBundleSource.Load(string by) - { - Guard.AgainstFileNotFound(by); - - return AssetBundle.LoadFromMemory(ReadBytes(by)); - } - - Task IAssetBundleSource.LoadAsync(string by, Action onProgress, CancellationToken cancellationToken) - { - Guard.AgainstFileNotFound(by); - - return AssetBundle - .LoadFromMemoryAsync(ReadBytes(by)) - .ToTask(onProgress, cancellationToken); - } - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Sources/AssetBundleFromMemory.cs.meta b/Runtime/Files.Bundles/Sources/AssetBundleFromMemory.cs.meta deleted file mode 100644 index c490a04..0000000 --- a/Runtime/Files.Bundles/Sources/AssetBundleFromMemory.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 9dda631cf3b9436b945ee7b1b50ad7fd -timeCreated: 1689980742 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Sources/AssetBundleFromStream.cs b/Runtime/Files.Bundles/Sources/AssetBundleFromStream.cs deleted file mode 100644 index 4769ec1..0000000 --- a/Runtime/Files.Bundles/Sources/AssetBundleFromStream.cs +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System; -using System.IO; -using System.Runtime.CompilerServices; -using System.Threading; -using System.Threading.Tasks; -using Depra.Asset.Exceptions; -using Depra.Asset.Files.Bundles.Extensions; -using Depra.Asset.ValueObjects; -using UnityEngine; - -namespace Depra.Asset.Files.Bundles.Sources -{ - public readonly struct AssetBundleFromStream : IAssetBundleSource - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static Stream OpenStream(string path) => - new FileStream(path, FileMode.Open, FileAccess.Read); - - FileSize IAssetBundleSource.Size(AssetBundle of) => AssetBundleSize.Evaluate(of); - - AssetBundle IAssetBundleSource.Load(string by) - { - Guard.AgainstFileNotFound(by); - - using var fileStream = OpenStream(by); - - return AssetBundle.LoadFromStream(fileStream); - } - - async Task IAssetBundleSource.LoadAsync(string by, Action onProgress, - CancellationToken cancellationToken) - { - Guard.AgainstFileNotFound(by); - - await using var stream = OpenStream(by); - - return await AssetBundle - .LoadFromStreamAsync(stream) - .ToTask(onProgress, cancellationToken); - } - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Sources/AssetBundleFromStream.cs.meta b/Runtime/Files.Bundles/Sources/AssetBundleFromStream.cs.meta deleted file mode 100644 index 666509c..0000000 --- a/Runtime/Files.Bundles/Sources/AssetBundleFromStream.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: cce5384652054419bd4304851fd288c3 -timeCreated: 1689980594 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Sources/AssetBundleFromWeb.cs b/Runtime/Files.Bundles/Sources/AssetBundleFromWeb.cs deleted file mode 100644 index 90e09e9..0000000 --- a/Runtime/Files.Bundles/Sources/AssetBundleFromWeb.cs +++ /dev/null @@ -1,55 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System; -using System.Threading; -using System.Threading.Tasks; -using Depra.Asset.Files.Bundles.Exceptions; -using Depra.Asset.Files.Bundles.Extensions; -using Depra.Asset.ValueObjects; -using UnityEngine; -using UnityEngine.Networking; - -namespace Depra.Asset.Files.Bundles.Sources -{ - public sealed class AssetBundleFromWeb : IAssetBundleSource - { - private long _contentSize; - - FileSize IAssetBundleSource.Size(AssetBundle of) => - _contentSize == -1 ? AssetBundleSize.Evaluate(of) : new FileSize(_contentSize); - - AssetBundle IAssetBundleSource.Load(string by) - { - using var unityWebRequest = UnityWebRequestAssetBundle.GetAssetBundle(by); - unityWebRequest.SendWebRequest(); - - while (unityWebRequest.isDone == false) - { - // Spinning for Synchronous Behavior (blocking). - } - - if (unityWebRequest.CanGetResult() == false) - { - throw new UnityWebRequestFailed(unityWebRequest); - } - - return DownloadHandlerAssetBundle.GetContent(unityWebRequest); - } - - async Task IAssetBundleSource.LoadAsync(string by, Action onProgress, - CancellationToken cancellationToken) - { - var webRequest = UnityWebRequestAssetBundle.GetAssetBundle(by); - await webRequest - .SendWebRequest() - .ToTask(onProgress, cancellationToken); - - var downloadedBundle = DownloadHandlerAssetBundle.GetContent(webRequest); - _contentSize = webRequest.ParseSize(); - webRequest.Dispose(); - - return downloadedBundle; - } - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Sources/AssetBundleFromWeb.cs.meta b/Runtime/Files.Bundles/Sources/AssetBundleFromWeb.cs.meta deleted file mode 100644 index 0f62301..0000000 --- a/Runtime/Files.Bundles/Sources/AssetBundleFromWeb.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 19827faf232f4eff8cb06200df0fcaa9 -timeCreated: 1689980932 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Sources/AssetBundleSize.cs b/Runtime/Files.Bundles/Sources/AssetBundleSize.cs deleted file mode 100644 index a80f25e..0000000 --- a/Runtime/Files.Bundles/Sources/AssetBundleSize.cs +++ /dev/null @@ -1,71 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using Depra.Asset.ValueObjects; -using UnityEngine; -using Object = UnityEngine.Object; - -namespace Depra.Asset.Files.Bundles.Sources -{ - public static class AssetBundleSize - { - public static FileSize Evaluate(AssetBundle assetBundle) - { - FileSize fileSize; -#if UNITY_EDITOR - fileSize = SizeInRAM(assetBundle); - if (fileSize.Bytes == 0) -#endif - { - fileSize = SizeOnDisk(assetBundle); - } - - return fileSize; - } - - private static FileSize SizeOnDisk(AssetBundle assetBundle) - { - var allScenePaths = assetBundle.GetAllScenePaths(); - var sizes = from scenePath in allScenePaths - select Path.Combine(Application.streamingAssetsPath, scenePath) - into absolutePath - select new FileInfo(absolutePath) - into fileInfo - where fileInfo.Exists - select fileInfo.Length; - - return new FileSize(sizes.Sum()); - } - -#if UNITY_EDITOR - /// - /// Returns size of in RAM. - /// - /// for calculating. - /// - /// Source - https://stackoverflow.com/questions/56822948/estimate-an-assetbundle-size-in-ram - private static FileSize SizeInRAM(Object assetBundle) - { - var sizes = new Dictionary(); - var serializedObject = new UnityEditor.SerializedObject(assetBundle); - var serializedProperty = serializedObject.FindProperty("m_PreloadTable"); - for (var index = 0; index < serializedProperty.arraySize; index++) - { - var objectReference = serializedProperty.GetArrayElementAtIndex(index).objectReferenceValue; - var type = objectReference.GetType(); - var size = UnityEngine.Profiling.Profiler.GetRuntimeMemorySizeLong(objectReference); - if (sizes.TryAdd(type, size) == false) - { - sizes[type] += size; - } - } - - return new FileSize(sizes.Sum(x => x.Value)); - } -#endif - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Sources/AssetBundleSize.cs.meta b/Runtime/Files.Bundles/Sources/AssetBundleSize.cs.meta deleted file mode 100644 index 908592a..0000000 --- a/Runtime/Files.Bundles/Sources/AssetBundleSize.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 60c170ca95ba4895ae0c6f706838c9b6 -timeCreated: 1679185663 \ No newline at end of file diff --git a/Runtime/Files.Bundles/Sources/IAssetBundleSource.cs b/Runtime/Files.Bundles/Sources/IAssetBundleSource.cs deleted file mode 100644 index 53f9faf..0000000 --- a/Runtime/Files.Bundles/Sources/IAssetBundleSource.cs +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// © 2023-2024 Nikolay Melnikov - -using System; -using System.Threading; -using System.Threading.Tasks; -using Depra.Asset.ValueObjects; -using UnityEngine; - -namespace Depra.Asset.Files.Bundles.Sources -{ - public interface IAssetBundleSource - { - FileSize Size(AssetBundle of); - - AssetBundle Load(string by); - - Task LoadAsync(string by, Action onProgress, CancellationToken cancellationToken = default); - } -} \ No newline at end of file diff --git a/Runtime/Files.Bundles/Sources/IAssetBundleSource.cs.meta b/Runtime/Files.Bundles/Sources/IAssetBundleSource.cs.meta deleted file mode 100644 index 42b4763..0000000 --- a/Runtime/Files.Bundles/Sources/IAssetBundleSource.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: b28d47aaf9854f45bd2712363bda15c3 -timeCreated: 1689980199 \ No newline at end of file diff --git a/package.json b/package.json index 80b68ff..f5472af 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.depra.asset.unity", - "version": "0.2.8-pre.2", + "version": "0.2.8-pre.3", "displayName": "Depra.Asset", "description": "Provides an API for loading Unity asset files in multiple ways through a single interface.", "unity": "2021.3", @@ -10,8 +10,7 @@ "asset", "editor", "runtime", - "resources", - "assetBundle" + "resources" ], "author": { "name": "Depra, Inc.",