Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
ObjectPool< T > Class Template Reference
Inheritance diagram for ObjectPool< T >:

Classes

interface  IItem
 
class  Item
 

Public Member Functions

 ObjectPool (UnityAction< T > actionOnGet, UnityAction< T > actionOnRelease)
 
Get ()
 
void Release (T element)
 

Static Public Member Functions

static Item< T > Create< T > (int max=100, int addsPerUpdate=10, Action< T > _onCreate=null)
 

Public Attributes

List< IItemitems = new List<IItem>()
 

Static Public Attributes

static ObjectPool Instance
 

Properties

int countAll [get, private set]
 
int countActive [get]
 
int countInactive [get]
 

Private Member Functions

void Awake ()
 
void Update ()
 

Private Attributes

readonly Stack< T > m_Stack = new Stack<T>()
 
readonly UnityAction< T > m_ActionOnGet
 
readonly UnityAction< T > m_ActionOnRelease
 

Detailed Description

Type Constraints
T :new() 

Definition at line 5 of file ObjectPool.cs.

Constructor & Destructor Documentation

◆ ObjectPool()

ObjectPool< T >.ObjectPool ( UnityAction< T >  actionOnGet,
UnityAction< T >  actionOnRelease 
)
inline

Definition at line 19 of file ObjectPool.cs.

20 {
21 m_ActionOnGet = actionOnGet;
22 m_ActionOnRelease = actionOnRelease;
23 }
readonly UnityAction< T > m_ActionOnGet
Definition: ObjectPool.cs:9
readonly UnityAction< T > m_ActionOnRelease
Definition: ObjectPool.cs:11

References ObjectPool< T >.m_ActionOnGet, and ObjectPool< T >.m_ActionOnRelease.

Member Function Documentation

◆ Awake()

void ObjectPool< T >.Awake ( )
inlineprivate

Definition at line 100 of file ObjectPool.cs.

101 {
102 Instance = this;
103 }
static ObjectPool Instance
Definition: ObjectPool.cs:96

References ObjectPool< T >.Instance.

◆ Create< T >()

static Item< T > ObjectPool< T >.Create< T > ( int  max = 100,
int  addsPerUpdate = 10,
Action< T >  _onCreate = null 
)
inlinestatic
Type Constraints
T :new() 

Definition at line 113 of file ObjectPool.cs.

113 : new()
114 {
115 Item<T> item = new Item<T>();
116 item.Create(max, addsPerUpdate);
117 item.onCreate = _onCreate;
118 Instance.items.Add(item);
119 return item;
120 }
List< IItem > items
Definition: ObjectPool.cs:98

References ObjectPool< T >.Instance, item, and ObjectPool< T >.items.

◆ Get()

T ObjectPool< T >.Get ( )
inline

Definition at line 25 of file ObjectPool.cs.

26 {
27 T val;
28 if (m_Stack.Count == 0)
29 {
30 val = new T();
31 countAll++;
32 }
33 else
34 {
35 val = m_Stack.Pop();
36 }
37 if (m_ActionOnGet != null)
38 {
39 m_ActionOnGet(val);
40 }
41 return val;
42 }
readonly Stack< T > m_Stack
Definition: ObjectPool.cs:7
int countAll
Definition: ObjectPool.cs:13

References ObjectPool< T >.countAll, ObjectPool< T >.m_ActionOnGet, and ObjectPool< T >.m_Stack.

Referenced by ListPool< T >.Get().

◆ Release()

void ObjectPool< T >.Release ( element)
inline

Definition at line 44 of file ObjectPool.cs.

45 {
46 if (m_Stack.Count > 0 && (object)m_Stack.Peek() == (object)element)
47 {
48 Debug.LogError("Internal error. Trying to destroy object that is already released to pool.");
49 }
50 if (m_ActionOnRelease != null)
51 {
52 m_ActionOnRelease(element);
53 }
54 m_Stack.Push(element);
55 }

References Debug, ObjectPool< T >.m_ActionOnRelease, and ObjectPool< T >.m_Stack.

Referenced by ListPool< T >.Release().

◆ Update()

void ObjectPool< T >.Update ( )
inlineprivate

Definition at line 105 of file ObjectPool.cs.

106 {
107 foreach (IItem item in items)
108 {
109 item.Update();
110 }
111 }

References item, and ObjectPool< T >.items.

Member Data Documentation

◆ Instance

◆ items

List<IItem> ObjectPool< T >.items = new List<IItem>()

Definition at line 98 of file ObjectPool.cs.

Referenced by ObjectPool< T >.Create< T >(), and ObjectPool< T >.Update().

◆ m_ActionOnGet

readonly UnityAction<T> ObjectPool< T >.m_ActionOnGet
private

Definition at line 9 of file ObjectPool.cs.

Referenced by ObjectPool< T >.Get(), and ObjectPool< T >.ObjectPool().

◆ m_ActionOnRelease

readonly UnityAction<T> ObjectPool< T >.m_ActionOnRelease
private

Definition at line 11 of file ObjectPool.cs.

Referenced by ObjectPool< T >.ObjectPool(), and ObjectPool< T >.Release().

◆ m_Stack

readonly Stack<T> ObjectPool< T >.m_Stack = new Stack<T>()
private

Definition at line 7 of file ObjectPool.cs.

Referenced by ObjectPool< T >.Get(), and ObjectPool< T >.Release().

Property Documentation

◆ countActive

int ObjectPool< T >.countActive
get

Definition at line 15 of file ObjectPool.cs.

◆ countAll

int ObjectPool< T >.countAll
getprivate set

Definition at line 13 of file ObjectPool.cs.

13{ get; private set; }

Referenced by ObjectPool< T >.Get().

◆ countInactive

int ObjectPool< T >.countInactive
get

Definition at line 17 of file ObjectPool.cs.


The documentation for this class was generated from the following files: