using System; using System.Threading.Tasks; using TinaX.VFSKit.Exceptions; using TinaX.VFSKitInternal; using UnityEngine; namespace TinaX.VFSKit { public interface IVFS { VFSCustomizable Customizable { get; } string DownloadWebAssetUrl { get; } XRuntimePlatform Platform { get; } string PlatformText { get; } int DownloadWebAssetTimeout { get; set; } #region About GC void Release(UnityEngine.Object asset); void UnloadUnusedAssets(); #endregion #region Groups IGroup[] GetAllGroups(); bool TryGetGroup(string groupName, out IGroup group); #endregion #region Extension Packages and Groups string[] GetExtensionPackagesInVirtualDisk(); Task AddExtensionPackage(string group_name, bool available_web_vfs = true); Task AddExtensionPackageByPath(string extension_package_path, bool available_web_vfs = true); void AddExtensionPackage(string group_name, Action callback); string[] GetActiveExtensionGroupNames(); #endregion #region Load IAsset Sync IAsset LoadAsset(string assetPath) where T : UnityEngine.Object; IAsset LoadAsset(string assetPath, Type type); #endregion #region Load Asset Sync T Load(string assetPath) where T : UnityEngine.Object; UnityEngine.Object Load(string assetPath, Type type); #endregion #region Load IAsset Async Task Task LoadAssetAsync(string assetPath) where T : UnityEngine.Object; Task LoadAssetAsync(string assetPath, Type type); #endregion #region Load Asset Async Task Task LoadAsync(string assetPath) where T : UnityEngine.Object; Task LoadAsync(string assetPath, Type type); #endregion #region Load IAsset Async Callback void LoadAssetAsync(string assetPath, Action callback) where T : UnityEngine.Object; void LoadAssetAsync(string assetPath, Action callback) where T : UnityEngine.Object; void LoadAssetAsync(string assetPath, Type type, Action callback); void LoadAssetAsync(string assetPath, Type type, Action callback); #endregion #region Load Asset Async Callback void LoadAsync(string assetPath, Action callback) where T : UnityEngine.Object; void LoadAsync(string assetPath, Action callback) where T : UnityEngine.Object; void LoadAsync(string assetPath, Type type, Action callback); void LoadAsync(string assetPath, Type type, Action callback); #endregion #region Load Files Task LoadFileFromStreamingAssetsAsync(string path); void LoadFileFromStreamingAssetsAsync(string path, Action callback); #endregion #region Patch void InstallPatch(string path); #endregion #region Load Scene Task LoadSceneAsync(string scenePath); void LoadSceneAsync(string scenePath, Action callback); ISceneAsset LoadScene(string scenePath); #endregion } }