static public void RemoveAll() { DelayRemoveManager pMan = DelayRemoveManager.PrivGetInstance(); CollisionObservers pNode = pMan.head; CollisionObservers pTmp = null; while (pNode != null) { pTmp = pNode; pNode = (CollisionObservers)pNode.pNext; pMan.PrivDetach(pTmp, ref pMan.head); } }
static public void Attach(CollisionObservers pObs) { Debug.Assert(pObs != null); DelayRemoveManager pMan = DelayRemoveManager.PrivGetInstance(); if (pMan.head == null) { pMan.head = pObs; pObs.pNext = null; pObs.pPrev = null; } else { pObs.pNext = pMan.head; pObs.pPrev = null; pMan.head.pPrev = pObs; pMan.head = pObs; } }