protected override Task OnUnloadAsync(string id, object asset, IAssetUnloadParameters parameters, IContext context)
        {
            var provider = context.Get <IProvider <string, IAssetInfo> >();
            var info     = provider.Get <TInfo>(id);

            return(OnUnloadAsync(info, id, asset, (TUnloadParameters)parameters, context));
        }
예제 #2
0
 protected override void OnUnload(IAssetInfo info, string id, object asset, IAssetUnloadParameters parameters, IContext context)
 {
     if (EnableUnload)
     {
         InternalUnload(asset);
     }
 }
        protected override void OnUnload(string id, object asset, IAssetUnloadParameters parameters, IContext context)
        {
            var provider = context.Get <IProvider <string, IAssetInfo> >();
            var info     = provider.Get <TInfo>(id);

            OnUnload(info, id, asset, (TUnloadParameters)parameters, context);
        }
예제 #4
0
 protected virtual void OnUnload(string id, object asset, IAssetUnloadParameters parameters)
 {
     if (Tracker.UnTrack(id, asset, out _))
     {
         Tracker.Remove(id);
         UnloadAsset(id, asset, parameters);
     }
 }
예제 #5
0
        protected virtual Task UnloadAssetAsync(string id, object asset, IAssetUnloadParameters parameters)
        {
            IAssetLoader loader = this.GetLoaderByAsset(id);

            Task task = loader.UnloadAsync(id, asset, parameters, Context);

            return(task);
        }
        public static void UnloadForce(this IAssetModule assetModule, string id, IAssetUnloadParameters parameters = null)
        {
            parameters ??= GetDefaultUnloadParametersByAsset(assetModule, id);

            AssetTrack   track  = assetModule.Tracker.Get(id);
            IAssetLoader loader = GetLoaderByAsset(assetModule, id);

            assetModule.Tracker.Remove(id);

            loader.Unload(id, track.Asset, parameters, assetModule.Context);
        }
예제 #7
0
        protected virtual Task OnUnloadAsync(string id, object asset, IAssetUnloadParameters parameters)
        {
            if (Tracker.UnTrack(id, asset, out _))
            {
                Tracker.Remove(id);

                return(UnloadAssetAsync(id, asset, parameters));
            }

            return(Task.CompletedTask);
        }
        public Task UnloadAsync(string id, object asset, IAssetUnloadParameters parameters, IContext context)
        {
            if (string.IsNullOrEmpty(id))
            {
                throw new ArgumentException("Value cannot be null or empty.", nameof(id));
            }
            if (asset == null)
            {
                throw new ArgumentNullException(nameof(asset));
            }
            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            return(OnUnloadAsync(id, asset, parameters, context));
        }
예제 #9
0
        public async Task UnloadAsync(string id, object asset, IAssetUnloadParameters parameters)
        {
            if (string.IsNullOrEmpty(id))
            {
                throw new ArgumentException("Value cannot be null or empty.", nameof(id));
            }
            if (asset == null)
            {
                throw new ArgumentNullException(nameof(asset));
            }
            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }

            Type type = asset.GetType();

            Unloading?.Invoke(id, asset, parameters);

            await OnUnloadAsync(id, asset, parameters);

            Unloaded?.Invoke(id, type, parameters);
        }
예제 #10
0
        protected override Task OnUnloadAsync(IAssetInfo info, string id, object asset, IAssetUnloadParameters parameters, IContext context)
        {
            if (EnableUnload)
            {
                InternalUnload(asset);
            }

            return(Task.CompletedTask);
        }
 protected AssetLoaderBase(IAssetLoadParameters defaultLoadParameters, IAssetUnloadParameters defaultUnloadParameters)
 {
     DefaultLoadParameters   = defaultLoadParameters ?? throw new ArgumentNullException(nameof(defaultLoadParameters));
     DefaultUnloadParameters = defaultUnloadParameters ?? throw new ArgumentNullException(nameof(defaultUnloadParameters));
 }
예제 #12
0
        protected virtual void UnloadAsset(string id, object asset, IAssetUnloadParameters parameters)
        {
            IAssetLoader loader = this.GetLoaderByAsset(id);

            loader.Unload(id, asset, parameters, Context);
        }
 protected abstract void OnUnload(string id, object asset, IAssetUnloadParameters parameters, IContext context);
        public static bool TryGetDefaultUnloadParametersByAsset(this IAssetModule assetModule, string id, out IAssetUnloadParameters parameters)
        {
            if (TryGetLoaderByAsset(assetModule, id, out IAssetLoader loader))
            {
                parameters = loader.DefaultUnloadParameters;
                return(true);
            }

            parameters = null;
            return(false);
        }
        public static void Unload(this IAssetModule assetModule, string id, object asset)
        {
            IAssetUnloadParameters parameters = GetDefaultUnloadParametersByAsset(assetModule, id);

            assetModule.Unload(id, asset, parameters);
        }
 protected abstract Task OnUnloadAsync(string id, object asset, IAssetUnloadParameters parameters, IContext context);
        public static Task UnloadAsync(this IAssetModule assetModule, string id, object asset)
        {
            IAssetUnloadParameters parameters = GetDefaultUnloadParametersByAsset(assetModule, id);

            return(assetModule.UnloadAsync(id, asset, parameters));
        }
예제 #18
0
 protected AssetLoader(IAssetLoadParameters defaultLoadParameters, IAssetUnloadParameters defaultUnloadParameters) : base(defaultLoadParameters, defaultUnloadParameters)
 {
 }
 protected override Task OnUnloadAsync(ReferencedAssetInfo info, string id, object asset, IAssetUnloadParameters parameters, IContext context)
 {
     return(Task.CompletedTask);
 }
 protected override void OnUnload(ReferencedAssetInfo info, string id, object asset, IAssetUnloadParameters parameters, IContext context)
 {
 }