54 lines
1.4 KiB
C#
54 lines
1.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace AlicizaX.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 => m_Name;
|
|
|
|
public string FullName => new TypeNamePair(ObjectType, m_Name).ToString();
|
|
|
|
public abstract Type ObjectType { get; }
|
|
public abstract int Count { 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 virtual int ReleasePerFrameBudget
|
|
{
|
|
get => 8;
|
|
set { }
|
|
}
|
|
|
|
public abstract void Release();
|
|
public abstract void Release(int toReleaseCount);
|
|
public abstract void ReleaseAllUnused();
|
|
|
|
public abstract ObjectInfo[] GetAllObjectInfos();
|
|
public abstract void GetAllObjectInfos(List<ObjectInfo> results);
|
|
|
|
internal abstract void Update(float elapseSeconds, float realElapseSeconds);
|
|
internal abstract void Shutdown();
|
|
|
|
internal virtual void OnLowMemory()
|
|
{
|
|
ReleaseAllUnused();
|
|
}
|
|
}
|
|
}
|