Exemplo n.º 1
0
 public void RegisterImporter(IResourceImporter importer)
 {
     Importers.Insert(0, importer);
     if (ConfigState.Instance.UseVerboseLogging)
     {
         Debug.Log($"[ResourceLoader] registered resource importer \"{importer.GetType().Name}\"");
     }
 }
Exemplo n.º 2
0
        public T Load <T>(string assetName, bool lookInCache)
        {
            if (String.IsNullOrEmpty(assetName))
            {
                throw new ArgumentException("Asset name can't be null or empty.", "assetName");
            }

            Type requestedType = typeof(T);

            // Check cache for already loaded assets of given name and type
            if (lookInCache)
            {
                object cachedAsset = RequestAssetFromCache(assetName, requestedType);
                if (cachedAsset != null)
                {
                    return((T)cachedAsset);
                }
            }

            // Find file system and importer for asset
            FileSystem fileSystem = FindSuitableFileSystem(assetName);

            if (fileSystem == null)
            {
                throw new SuitableFileSystemNotFoundException(assetName);
            }
            IResourceImporter importer = FindAppropriateImporter(assetName, requestedType);

            if (importer == null)
            {
                throw new AppropriateImporterNotFoundException(assetName, requestedType);
            }

            // Load asset
            Stream assetStream = fileSystem.GetAssetStream(assetName);
            var    asset       = (T)importer.Load(assetStream, new AssetImportContext(this, Services, assetName, fileSystem));

            assetStream.Close();

            // Save asset in cache
            SaveAssetInCache(assetName, requestedType, asset);

            return(asset);
        }
Exemplo n.º 3
0
 public FileResourceHandle(T resource, string path, ResourcePriority priority, ResourceLoadContext initialLoadContext) : this(resource, path, priority)
 {
     Importer = initialLoadContext.ResourceImporter;
 }