//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2021 loyalsoft. All rights reserved.
// Homepage: http://www.game7000.com/
// Feedback: http://www.game7000.com/
//------------------------------------------------------------
using System;
namespace GameFramework.ObjectPool
{
///
/// 对象池基类。
///
public abstract class ObjectPoolBase
{
private readonly string m_Name;
///
/// 初始化对象池基类的新实例。
///
public ObjectPoolBase()
: this(null)
{
}
///
/// 初始化对象池基类的新实例。
///
/// 对象池名称。
public ObjectPoolBase(string name)
{
m_Name = name ?? string.Empty;
}
///
/// 获取对象池名称。
///
public string Name
{
get
{
return m_Name;
}
}
///
/// 获取对象池完整名称。
///
public string FullName
{
get
{
return new TypeNamePair(ObjectType, m_Name).ToString();
}
}
///
/// 获取对象池对象类型。
///
public abstract Type ObjectType
{
get;
}
///
/// 获取对象池中对象的数量。
///
public abstract int Count
{
get;
}
///
/// 获取对象池中能被释放的对象的数量。
///
public abstract int CanReleaseCount
{
get;
}
///
/// 获取是否允许对象被多次获取。
///
public abstract bool AllowMultiSpawn
{
get;
}
///
/// 获取或设置对象池自动释放可释放对象的间隔秒数。
///
public abstract float AutoReleaseInterval
{
get;
set;
}
///
/// 获取或设置对象池的容量。
///
public abstract int Capacity
{
get;
set;
}
///
/// 获取或设置对象池对象过期秒数。
///
public abstract float ExpireTime
{
get;
set;
}
///
/// 获取或设置对象池的优先级。
///
public abstract int Priority
{
get;
set;
}
///
/// 释放对象池中的可释放对象。
///
public abstract void Release();
///
/// 释放对象池中的可释放对象。
///
/// 尝试释放对象数量。
public abstract void Release(int toReleaseCount);
///
/// 释放对象池中的所有未使用对象。
///
public abstract void ReleaseAllUnused();
///
/// 获取所有对象信息。
///
/// 所有对象信息。
public abstract ObjectInfo[] GetAllObjectInfos();
internal abstract void Update(float elapseSeconds, float realElapseSeconds);
internal abstract void Shutdown();
}
}