Beispiel #1
0
        public T Load(Assembly assembly = null)
        {
            IImporter <T> importer = Importers.ImporterManager.Instance.GetImporter <T>();

            if (importer == null)
            {
                throw new Exception($"WTF Attend ta pas d'importer pour le type {typeof(T).Name}");
            }
            object o;

            switch (Source)
            {
            case AssetSource.None:
                return(Asset);

            case AssetSource.VanillaHard:
                return(importer.GetAssetHard(Name));

            case AssetSource.VanillaSoft:
                return(importer.GetAssetSoft(Name));

            case AssetSource.EmbeddedAssetBundle:
                if (assembly == null)
                {
                    throw new ArgumentNullException($"Assembly is null when LazyAsset is set as EmbeddedAssetBundle.");
                }
                return(importer.GetEmbeddedAssetBundle(Path, Name, assembly));

            case AssetSource.ExternalAssetBundle:
                return(importer.GetExternalAssetBundle(Path, Name));

            case AssetSource.EmbeddedNative:
                if (assembly == null)
                {
                    throw new ArgumentNullException($"Assembly is null when LazyAsset is set as EmbeddedNative.");
                }
                return(importer.GetEmbeddedNative(Path, Name, assembly));

            case AssetSource.ExternalNative:
                return(importer.GetExternalNative(Path, Name));

            case AssetSource.EmbeddedCustom:
                if (assembly == null)
                {
                    throw new ArgumentNullException($"Assembly is null when LazyAsset is set as EmbeddedCustom.");
                }
                if (CustomImporter == null)
                {
                    throw new ArgumentNullException($"CustomImporter is null when LazyAsset is set as EmbeddedCustom.");
                }
                o = CustomImporter.GetEmbedded(Path, Name, assembly);
                if (o is T)
                {
                    return((T)o);
                }
                break;

            case AssetSource.ExternalCustom:
                if (CustomImporter == null)
                {
                    throw new ArgumentNullException($"CustomImporter is null when LazyAsset is set as EmbeddedCustom.");
                }
                o = CustomImporter.GetExternal(Path, Name);
                if (o is T)
                {
                    return((T)o);
                }
                AssetFetcherPlugin.log.LogError($"Asset returned from CustomImporter isn't of type {typeof(T).Name}. LazyAsset: ");
                break;
            }
            return(null);
        }