using System; namespace TEngine { /// /// 对象池接口。 /// /// 对象类型。 public interface IObjectPool where T : ObjectBase { /// /// 获取对象池名称。 /// string Name { get; } /// /// 获取对象池完整名称。 /// string FullName { get; } /// /// 获取对象池对象类型。 /// Type ObjectType { get; } /// /// 获取对象池中对象的数量。 /// int Count { get; } /// /// 获取对象池中能被释放的对象的数量。 /// int CanReleaseCount { get; } /// /// 获取是否允许对象被多次获取。 /// bool AllowMultiSpawn { get; } /// /// 获取或设置对象池自动释放可释放对象的间隔秒数。 /// float AutoReleaseInterval { get; set; } /// /// 获取或设置对象池的容量。 /// int Capacity { get; set; } /// /// 获取或设置对象池对象过期秒数。 /// float ExpireTime { get; set; } /// /// 获取或设置对象池的优先级。 /// int Priority { get; set; } /// /// 创建对象。 /// /// 对象。 /// 对象是否已被获取。 void Register(T obj, bool spawned); /// /// 检查对象。 /// /// 要检查的对象是否存在。 bool CanSpawn(); /// /// 检查对象。 /// /// 对象名称。 /// 要检查的对象是否存在。 bool CanSpawn(string name); /// /// 获取对象。 /// /// 要获取的对象。 T Spawn(); /// /// 获取对象。 /// /// 对象名称。 /// 要获取的对象。 T Spawn(string name); /// /// 回收对象。 /// /// 要回收的对象。 void Unspawn(T obj); /// /// 回收对象。 /// /// 要回收的对象。 void Unspawn(object target); /// /// 设置对象是否被加锁。 /// /// 要设置被加锁的对象。 /// 是否被加锁。 void SetLocked(T obj, bool locked); /// /// 设置对象是否被加锁。 /// /// 要设置被加锁的对象。 /// 是否被加锁。 void SetLocked(object target, bool locked); /// /// 设置对象的优先级。 /// /// 要设置优先级的对象。 /// 优先级。 void SetPriority(T obj, int priority); /// /// 设置对象的优先级。 /// /// 要设置优先级的对象。 /// 优先级。 void SetPriority(object target, int priority); /// /// 释放对象。 /// /// 要释放的对象。 /// 释放对象是否成功。 bool ReleaseObject(T obj); /// /// 释放对象。 /// /// 要释放的对象。 /// 释放对象是否成功。 bool ReleaseObject(object target); /// /// 释放对象池中的可释放对象。 /// void Release(); /// /// 释放对象池中的可释放对象。 /// /// 尝试释放对象数量。 void Release(int toReleaseCount); /// /// 释放对象池中的可释放对象。 /// /// 释放对象筛选函数。 void Release(ReleaseObjectFilterCallback releaseObjectFilterCallback); /// /// 释放对象池中的可释放对象。 /// /// 尝试释放对象数量。 /// 释放对象筛选函数。 void Release(int toReleaseCount, ReleaseObjectFilterCallback releaseObjectFilterCallback); /// /// 释放对象池中的所有未使用对象。 /// void ReleaseAllUnused(); } }