using System;
using System.Collections.Generic;
namespace YooAsset
{
///
/// 默认的构建管线
///
public enum EDefaultBuildPipeline
{
///
/// 内置构建管线
///
BuiltinBuildPipeline,
///
/// 可编程构建管线
///
ScriptableBuildPipeline,
///
/// 原生文件构建管线
///
RawFileBuildPipeline,
}
///
/// 运行模式
///
public enum EPlayMode
{
///
/// 编辑器下的模拟模式
///
EditorSimulateMode,
///
/// 离线运行模式
///
OfflinePlayMode,
///
/// 联机运行模式
///
HostPlayMode,
///
/// WebGL运行模式
///
WebPlayMode,
}
///
/// 文件系统参数
///
public class FileSystemParameters
{
internal Dictionary CreateParameters = new Dictionary();
///
/// 文件系统类
/// 格式: "namespace.class,assembly"
/// 格式: "命名空间.类型名,程序集"
///
public string FileSystemClass { private set; get; }
///
/// 文件系统的根目录
///
public string RootDirectory { private set; get; }
public FileSystemParameters(string fileSystemClass, string rootDirectory)
{
FileSystemClass = fileSystemClass;
RootDirectory = rootDirectory;
}
///
/// 添加自定义参数
///
public void AddParameter(string name, object value)
{
CreateParameters.Add(name, value);
}
///
/// 创建默认的编辑器文件系统参数
/// 模拟构建结果
///
public static FileSystemParameters CreateDefaultEditorFileSystemParameters(SimulateBuildResult simulateBuildResult)
{
string fileSystemClass = typeof(DefaultEditorFileSystem).FullName;
var fileSystemParams = new FileSystemParameters(fileSystemClass, simulateBuildResult.PackageRootDirectory);
return fileSystemParams;
}
///
/// 创建默认的内置文件系统参数
///
/// 加密文件解密服务类
/// 缓存文件的校验等级
/// 内置文件的根路径
public static FileSystemParameters CreateDefaultBuildinFileSystemParameters(IDecryptionServices decryptionServices = null, EFileVerifyLevel verifyLevel = EFileVerifyLevel.Middle, string rootDirectory = null)
{
string fileSystemClass = typeof(DefaultBuildinFileSystem).FullName;
var fileSystemParams = new FileSystemParameters(fileSystemClass, rootDirectory);
fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices);
fileSystemParams.AddParameter(FileSystemParametersDefine.FILE_VERIFY_LEVEL, verifyLevel);
return fileSystemParams;
}
///
/// 创建默认的内置文件系统参数(原生文件)
///
/// 加密文件解密服务类
/// 缓存文件的校验等级
/// 内置文件的根路径
public static FileSystemParameters CreateDefaultBuildinRawFileSystemParameters(IDecryptionServices decryptionServices = null, EFileVerifyLevel verifyLevel = EFileVerifyLevel.Middle, string rootDirectory = null)
{
string fileSystemClass = typeof(DefaultBuildinFileSystem).FullName;
var fileSystemParams = new FileSystemParameters(fileSystemClass, rootDirectory);
fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices);
fileSystemParams.AddParameter(FileSystemParametersDefine.FILE_VERIFY_LEVEL, verifyLevel);
fileSystemParams.AddParameter(FileSystemParametersDefine.APPEND_FILE_EXTENSION, true);
fileSystemParams.AddParameter(FileSystemParametersDefine.RAW_FILE_BUILD_PIPELINE, true);
return fileSystemParams;
}
///
/// 创建默认的缓存文件系统参数
///
/// 远端资源地址查询服务类
/// 加密文件解密服务类
/// 缓存文件的校验等级
/// 文件系统的根目录
public static FileSystemParameters CreateDefaultCacheFileSystemParameters(IRemoteServices remoteServices, IDecryptionServices decryptionServices = null, EFileVerifyLevel verifyLevel = EFileVerifyLevel.Middle, string rootDirectory = null)
{
string fileSystemClass = typeof(DefaultCacheFileSystem).FullName;
var fileSystemParams = new FileSystemParameters(fileSystemClass, rootDirectory);
fileSystemParams.AddParameter(FileSystemParametersDefine.REMOTE_SERVICES, remoteServices);
fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices);
fileSystemParams.AddParameter(FileSystemParametersDefine.FILE_VERIFY_LEVEL, verifyLevel);
return fileSystemParams;
}
///
/// 创建默认的缓存文件系统参数(原生文件)
///
/// 远端资源地址查询服务类
/// 加密文件解密服务类
/// 缓存文件的校验等级
/// 文件系统的根目录
public static FileSystemParameters CreateDefaultCacheRawFileSystemParameters(IRemoteServices remoteServices, IDecryptionServices decryptionServices = null, EFileVerifyLevel verifyLevel = EFileVerifyLevel.Middle, string rootDirectory = null)
{
string fileSystemClass = typeof(DefaultCacheFileSystem).FullName;
var fileSystemParams = new FileSystemParameters(fileSystemClass, rootDirectory);
fileSystemParams.AddParameter(FileSystemParametersDefine.REMOTE_SERVICES, remoteServices);
fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices);
fileSystemParams.AddParameter(FileSystemParametersDefine.FILE_VERIFY_LEVEL, verifyLevel);
fileSystemParams.AddParameter(FileSystemParametersDefine.APPEND_FILE_EXTENSION, true);
fileSystemParams.AddParameter(FileSystemParametersDefine.RAW_FILE_BUILD_PIPELINE, true);
return fileSystemParams;
}
///
/// 创建默认的Web文件系统参数
///
/// 禁用Unity的网络缓存
public static FileSystemParameters CreateDefaultWebFileSystemParameters(bool disableUnityWebCache = false)
{
string fileSystemClass = typeof(DefaultWebFileSystem).FullName;
var fileSystemParams = new FileSystemParameters(fileSystemClass, null);
fileSystemParams.AddParameter(FileSystemParametersDefine.DISABLE_UNITY_WEB_CACHE, disableUnityWebCache);
return fileSystemParams;
}
}
///
/// 初始化参数
///
public abstract class InitializeParameters
{
}
///
/// 编辑器下模拟运行模式的初始化参数
///
public class EditorSimulateModeParameters : InitializeParameters
{
public FileSystemParameters EditorFileSystemParameters;
}
///
/// 离线运行模式的初始化参数
///
public class OfflinePlayModeParameters : InitializeParameters
{
public FileSystemParameters BuildinFileSystemParameters;
}
///
/// 联机运行模式的初始化参数
///
public class HostPlayModeParameters : InitializeParameters
{
public FileSystemParameters BuildinFileSystemParameters;
public FileSystemParameters DeliveryFileSystemParameters;
public FileSystemParameters CacheFileSystemParameters;
}
///
/// WebGL运行模式的初始化参数
///
public class WebPlayModeParameters : InitializeParameters
{
public FileSystemParameters WebFileSystemParameters;
}
}