//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2021 loyalsoft. All rights reserved.
// Homepage: http://www.game7000.com/
// Feedback: http://www.game7000.com/
//------------------------------------------------------------
using System;
namespace GameFramework.ObjectPool
{
internal sealed partial class ObjectPoolManager : GameFrameworkModule, IObjectPoolManager
{
///
/// 内部对象。
///
/// 对象类型。
private sealed class Object : IReference where T : ObjectBase
{
private T m_Object;
private int m_SpawnCount;
///
/// 初始化内部对象的新实例。
///
public Object()
{
m_Object = null;
m_SpawnCount = 0;
}
///
/// 获取对象名称。
///
public string Name
{
get
{
return m_Object.Name;
}
}
///
/// 获取对象是否被加锁。
///
public bool Locked
{
get
{
return m_Object.Locked;
}
internal set
{
m_Object.Locked = value;
}
}
///
/// 获取对象的优先级。
///
public int Priority
{
get
{
return m_Object.Priority;
}
internal set
{
m_Object.Priority = value;
}
}
///
/// 获取自定义释放检查标记。
///
public bool CustomCanReleaseFlag
{
get
{
return m_Object.CustomCanReleaseFlag;
}
}
///
/// 获取对象上次使用时间。
///
public DateTime LastUseTime
{
get
{
return m_Object.LastUseTime;
}
}
///
/// 获取对象是否正在使用。
///
public bool IsInUse
{
get
{
return m_SpawnCount > 0;
}
}
///
/// 获取对象的获取计数。
///
public int SpawnCount
{
get
{
return m_SpawnCount;
}
}
///
/// 创建内部对象。
///
/// 对象。
/// 对象是否已被获取。
/// 创建的内部对象。
public static Object Create(T obj, bool spawned)
{
if (obj == null)
{
throw new GameFrameworkException("Object is invalid.");
}
Object internalObject = ReferencePool.Acquire