/// <summary> /// Constructs an asset loader /// </summary> /// <param name="onAssetSuccessfullyLoaded">Gets invoked when asset loading was successful</param> /// <param name="onAssetLoadingFailed">Gets invoked when asset loading has failed</param> public AssetLoader(AssetSuccessfullyLoadedDelegate <TData, TResult> onAssetSuccessfullyLoaded, AssetLoadingFailedDelegate <TResult> onAssetLoadingFailed) { this.onAssetSuccessfullyLoaded = onAssetSuccessfullyLoaded ?? throw new ArgumentNullException(nameof(onAssetSuccessfullyLoaded)); this.onAssetLoadingFailed = onAssetLoadingFailed ?? throw new ArgumentNullException(nameof(onAssetLoadingFailed)); OnAssetSuccessfullyLoaded += onAssetSuccessfullyLoaded; OnAssetLoadingFailed += onAssetLoadingFailed; }
/// <summary> /// Adds a new asset loader /// </summary> /// <typeparam name="TData">Data type</typeparam> /// <typeparam name="TResult">Result type</typeparam> /// <param name="onAssetSuccessfullyLoaded">Gets invoked when asset loading was successful</param> /// <param name="onAssetLoadingFailed">Gets invoked when asset loading has failed</param> /// <returns>Asset loader</returns> public IAssetLoader <TData, TResult> AddAssetLoader <TData, TResult>(AssetSuccessfullyLoadedDelegate <TData, TResult> onAssetSuccessfullyLoaded, AssetLoadingFailedDelegate <TResult> onAssetLoadingFailed) { IAssetLoader <TData, TResult> ret = new AssetLoader <TData, TResult>(onAssetSuccessfullyLoaded ?? throw new ArgumentNullException(nameof(onAssetSuccessfullyLoaded)), onAssetLoadingFailed ?? throw new ArgumentNullException(nameof(onAssetLoadingFailed))); string key = GetAssetLoaderKey <TData, TResult>(); if (assetLoaders.ContainsKey(key)) { assetLoaders[key] = ret; } else { assetLoaders.Add(key, ret); } return(ret); }