using System; using System.Collections.Generic; namespace TEngine { /// /// 对象池管理器。 /// public interface IObjectPoolModule { /// /// 获取对象池数量。 /// int Count { get; } /// /// 检查是否存在对象池。 /// /// 对象类型。 /// 是否存在对象池。 bool HasObjectPool() where T : ObjectBase; /// /// 检查是否存在对象池。 /// /// 对象类型。 /// 是否存在对象池。 bool HasObjectPool(Type objectType); /// /// 检查是否存在对象池。 /// /// 对象类型。 /// 对象池名称。 /// 是否存在对象池。 bool HasObjectPool(string name) where T : ObjectBase; /// /// 检查是否存在对象池。 /// /// 对象类型。 /// 对象池名称。 /// 是否存在对象池。 bool HasObjectPool(Type objectType, string name); /// /// 检查是否存在对象池。 /// /// 要检查的条件。 /// 是否存在对象池。 bool HasObjectPool(Predicate condition); /// /// 获取对象池。 /// /// 对象类型。 /// 要获取的对象池。 IObjectPool GetObjectPool() where T : ObjectBase; /// /// 获取对象池。 /// /// 对象类型。 /// 要获取的对象池。 ObjectPoolBase GetObjectPool(Type objectType); /// /// 获取对象池。 /// /// 对象类型。 /// 对象池名称。 /// 要获取的对象池。 IObjectPool GetObjectPool(string name) where T : ObjectBase; /// /// 获取对象池。 /// /// 对象类型。 /// 对象池名称。 /// 要获取的对象池。 ObjectPoolBase GetObjectPool(Type objectType, string name); /// /// 获取对象池。 /// /// 要检查的条件。 /// 要获取的对象池。 ObjectPoolBase GetObjectPool(Predicate condition); /// /// 获取对象池。 /// /// 要检查的条件。 /// 要获取的对象池。 ObjectPoolBase[] GetObjectPools(Predicate condition); /// /// 获取对象池。 /// /// 要检查的条件。 /// 要获取的对象池。 void GetObjectPools(Predicate condition, List results); /// /// 获取所有对象池。 /// /// 所有对象池。 ObjectPoolBase[] GetAllObjectPools(); /// /// 获取所有对象池。 /// /// 所有对象池。 void GetAllObjectPools(List results); /// /// 获取所有对象池。 /// /// 是否根据对象池的优先级排序。 /// 所有对象池。 ObjectPoolBase[] GetAllObjectPools(bool sort); /// /// 获取所有对象池。 /// /// 是否根据对象池的优先级排序。 /// 所有对象池。 void GetAllObjectPools(bool sort, List results); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool() where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool(string name) where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType, string name); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool(int capacity) where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType, int capacity); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池对象过期秒数。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool(float expireTime) where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池对象过期秒数。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType, float expireTime); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool(string name, int capacity) where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType, string name, int capacity); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池对象过期秒数。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool(string name, float expireTime) where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池对象过期秒数。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType, string name, float expireTime); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool(int capacity, float expireTime) where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType, int capacity, float expireTime); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 对象池的优先级。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool(int capacity, int priority) where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 对象池的优先级。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType, int capacity, int priority); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool(float expireTime, int priority) where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType, float expireTime, int priority); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool(string name, int capacity, float expireTime) where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType, string name, int capacity, float expireTime); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 对象池的优先级。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool(string name, int capacity, int priority) where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 对象池的优先级。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType, string name, int capacity, int priority); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool(string name, float expireTime, int priority) where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType, string name, float expireTime, int priority); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool(int capacity, float expireTime, int priority) where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType, int capacity, float expireTime, int priority); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool(string name, int capacity, float expireTime, int priority) where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType, string name, int capacity, float expireTime, int priority); /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池自动释放可释放对象的间隔秒数。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许单次获取的对象池。 IObjectPool CreateSingleSpawnObjectPool(string name, float autoReleaseInterval, int capacity, float expireTime, int priority) where T : ObjectBase; /// /// 创建允许单次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池自动释放可释放对象的间隔秒数。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许单次获取的对象池。 ObjectPoolBase CreateSingleSpawnObjectPool(Type objectType, string name, float autoReleaseInterval, int capacity, float expireTime, int priority); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool() where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool(string name) where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType, string name); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool(int capacity) where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType, int capacity); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池对象过期秒数。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool(float expireTime) where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池对象过期秒数。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType, float expireTime); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool(string name, int capacity) where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType, string name, int capacity); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池对象过期秒数。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool(string name, float expireTime) where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池对象过期秒数。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType, string name, float expireTime); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool(int capacity, float expireTime) where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType, int capacity, float expireTime); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 对象池的优先级。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool(int capacity, int priority) where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 对象池的优先级。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType, int capacity, int priority); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool(float expireTime, int priority) where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType, float expireTime, int priority); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool(string name, int capacity, float expireTime) where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType, string name, int capacity, float expireTime); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 对象池的优先级。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool(string name, int capacity, int priority) where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 对象池的优先级。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType, string name, int capacity, int priority); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool(string name, float expireTime, int priority) where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType, string name, float expireTime, int priority); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool(int capacity, float expireTime, int priority) where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType, int capacity, float expireTime, int priority); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool(string name, int capacity, float expireTime, int priority) where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType, string name, int capacity, float expireTime, int priority); /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池自动释放可释放对象的间隔秒数。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许多次获取的对象池。 IObjectPool CreateMultiSpawnObjectPool(string name, float autoReleaseInterval, int capacity, float expireTime, int priority) where T : ObjectBase; /// /// 创建允许多次获取的对象池。 /// /// 对象类型。 /// 对象池名称。 /// 对象池自动释放可释放对象的间隔秒数。 /// 对象池的容量。 /// 对象池对象过期秒数。 /// 对象池的优先级。 /// 要创建的允许多次获取的对象池。 ObjectPoolBase CreateMultiSpawnObjectPool(Type objectType, string name, float autoReleaseInterval, int capacity, float expireTime, int priority); /// /// 销毁对象池。 /// /// 对象类型。 /// 是否销毁对象池成功。 bool DestroyObjectPool() where T : ObjectBase; /// /// 销毁对象池。 /// /// 对象类型。 /// 是否销毁对象池成功。 bool DestroyObjectPool(Type objectType); /// /// 销毁对象池。 /// /// 对象类型。 /// 要销毁的对象池名称。 /// 是否销毁对象池成功。 bool DestroyObjectPool(string name) where T : ObjectBase; /// /// 销毁对象池。 /// /// 对象类型。 /// 要销毁的对象池名称。 /// 是否销毁对象池成功。 bool DestroyObjectPool(Type objectType, string name); /// /// 销毁对象池。 /// /// 对象类型。 /// 要销毁的对象池。 /// 是否销毁对象池成功。 bool DestroyObjectPool(IObjectPool objectPool) where T : ObjectBase; /// /// 销毁对象池。 /// /// 要销毁的对象池。 /// 是否销毁对象池成功。 bool DestroyObjectPool(ObjectPoolBase objectPool); /// /// 释放对象池中的可释放对象。 /// void Release(); /// /// 释放对象池中的所有未使用对象。 /// void ReleaseAllUnused(); } }