74 lines
1.7 KiB
C#
74 lines
1.7 KiB
C#
using UnityEngine;
|
|
|
|
namespace OctoberStudio.Pool
|
|
{
|
|
public class PoolObject : Pool<GameObject>
|
|
{
|
|
private GameObject prefab;
|
|
|
|
public PoolObject(string name, GameObject prefab, int startingSize) : base(name, startingSize)
|
|
{
|
|
this.prefab = prefab;
|
|
|
|
for (int i = 0; i <= startingSize; i++)
|
|
{
|
|
AddNewEntity();
|
|
}
|
|
}
|
|
|
|
public PoolObject(GameObject prefab, int startingSize) : base(prefab.name, startingSize)
|
|
{
|
|
this.prefab = prefab;
|
|
|
|
for (int i = 0; i <= startingSize; i++)
|
|
{
|
|
AddNewEntity();
|
|
}
|
|
}
|
|
|
|
protected override GameObject CreateEntity()
|
|
{
|
|
var entity = Object.Instantiate(prefab);
|
|
|
|
return entity;
|
|
}
|
|
|
|
protected override void InitEntity(GameObject entity)
|
|
{
|
|
entity.SetActive(false);
|
|
}
|
|
|
|
protected override bool ValidateEntity(GameObject entity)
|
|
{
|
|
return !entity.activeSelf;
|
|
}
|
|
|
|
public override GameObject GetEntity()
|
|
{
|
|
var entity = base.GetEntity();
|
|
|
|
entity.SetActive(true);
|
|
|
|
return entity;
|
|
}
|
|
|
|
public T GetEntity<T>() where T : Component
|
|
{
|
|
var entity = base.GetEntity();
|
|
|
|
entity.SetActive(true);
|
|
|
|
return entity.GetComponent<T>();
|
|
}
|
|
|
|
protected override void DisableEntity(GameObject entity)
|
|
{
|
|
entity.SetActive(false);
|
|
}
|
|
|
|
protected override void DestroyEntity(GameObject entity)
|
|
{
|
|
Object.Destroy(entity);
|
|
}
|
|
}
|
|
} |