public bool MoveNext() { _index = GetIndex(); var move = CanMove(); if (move) { _current = _poolData[_index]; } else { Reset(); } return(move); }
public static IPoolNode <T> GetNode() { IPoolNode <T> ret = null; lock (m_NodePool) { LinkedListNode <IPoolNode <T> > n = m_NodePool.First; if (n != null) { m_NodePool.Remove(n); ret = n.Value; } } if (ret != null) { return(ret); } ret = new T(); return(ret); }
internal static void _DestroyNode(IPoolNode <T> node) { if (node != null) { var n = node.PPoolNode; if (n.List != m_NodePool) { lock (m_NodePool) { var list = n.List; if (list != m_NodePool) { if (list != null) { list.Remove(n); } m_NodePool.AddLast(n); } } } } }
public void Add(IPoolNode <T> item) { _poolData.Add(item); }
protected PoolContainer() { _current = default; _index = 0; }