Exemple #1
0
    private List <Asset> LoadDirectory(string path)
    {
        List <Asset> loadedAssets = new List <Asset>();

        string[] files = Directory.GetFiles(path);
        for (int i = 0; i < files.Length; i++)
        {
            string extension = Path.GetExtension(files[i]);
            if (Path.GetFileName(files[i]) == "addon.info" || extension == ".meta")
            {
                continue;
            }

            Asset asset;
            switch (extension)
            {
            case ".fbx":
                asset = new ModelAsset()
                {
                    files  = new string[] { files[i] },
                    source = this
                };

                if (asset.Load())
                {
                    loadedAssets.Add(asset);
                }
                else
                {
                    Debug.LogWarning($"Failed to load ModelAsset (does it need to be done in main thread?), Path: {files[i]}");
                }
                break;

            case ".png":
            case ".jpg":
            case ".jpeg":
                asset = new ImageAsset
                {
                    files  = new string[] { files[i] },
                    source = this
                };

                if (asset.Load())
                {
                    loadedAssets.Add(asset);
                }
                else
                {
                    Debug.LogWarning($"Failed to load ImageAsset (does it need to be done in main thread?), Path: {files[i]}");
                }
                break;

            case ".mp3":
            case ".ogg":
            case ".wav":
                asset = new SoundAsset
                {
                    files  = new string[] { files[i] },
                    source = this
                };

                if (asset.Load())
                {
                    loadedAssets.Add(asset);
                }
                else
                {
                    Debug.LogWarning($"Failed to load SoundAsset, Path: {files[i]}");
                }
                break;

            case ".txt":
            case ".cs":
            case ".scss":
            case ".html":
                asset = new TextAsset
                {
                    files  = new string[] { files[i] },
                    source = this
                };

                if (asset.Load())
                {
                    loadedAssets.Add(asset);
                }
                else
                {
                    Debug.LogWarning($"Failed to load TextAsset, Path: {files[i]}");
                }
                break;

            default:
                Debug.LogWarning($"Got unknown extension: {extension}");
                break;
            }
        }

        string[] directories = Directory.GetDirectories(path);
        for (int i = 0; i < directories.Length; i++)
        {
            loadedAssets.AddRange(LoadDirectory(directories[i]));
        }

        return(loadedAssets);
    }