public virtual void RemoveItem(T item) { CAssert.Greater(m_size, 0); CAssert.AreSame(this, item.m_list); CFastListNode prev = item.m_listPrev; CFastListNode next = item.m_listNext; if (prev != null) { prev.m_listNext = next; } else { m_listFirst = next; } if (next != null) { next.m_listPrev = prev; } else { m_listLast = prev; } item.m_listNext = item.m_listPrev = null; item.m_list = null; --m_size; }
public virtual void Recycle(CObjectsPoolEntry e) { CAssert.IsInstanceOfType <T>(e); CAssert.AreSame(this, e.pool); AddLastItem(e); }
private void AddTimer(CTimer timer) { CAssert.AreSame(this, timer.manager); ++timersCount; if (rootTimer != null) { // if timer has the least remaining time - it goes first if (timer.fireTime < rootTimer.fireTime) { timer.next = rootTimer; rootTimer.prev = timer; rootTimer = timer; return; } // try to insert in a sorted order CTimer tail = rootTimer; for (CTimer t = rootTimer.next; t != null; tail = t, t = t.next) { if (timer.fireTime < t.fireTime) { CTimer prev = t.prev; CTimer next = t; timer.prev = prev; timer.next = next; next.prev = timer; prev.next = timer; return; } } // add timer at the end of the list tail.next = timer; timer.prev = tail; } else { rootTimer = timer; // timer is root now } }
private void RemoveTimer(CTimer timer) { CAssert.AreSame(this, timer.manager); CAssert.Greater(timersCount, 0); --timersCount; CTimer prev = timer.prev; CTimer next = timer.next; if (prev != null) { prev.next = next; } else { rootTimer = next; } if (next != null) { next.prev = prev; } }