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();
}
}