public void Notify() { CollisionObservers pNode = pHead; while (pNode != null) { pNode.Notify(); pNode = (CollisionObservers)pNode.pNext; } }
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); } }
private void PrivDetach(CollisionObservers node, ref CollisionObservers head) { Debug.Assert(node != null); if (node.pPrev != null) { node.pPrev.pNext = node.pNext; } else { head = (CollisionObservers)node.pNext; } if (node.pNext != null) { node.pNext.pPrev = node.pPrev; } }
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; } }
public void AttachObserver(CollisionObservers observer) { Debug.Assert(observer != null); observer.pSubject = this; // Attach Observer to the front in Collision Pair if (this.pHead == null) { observer.pNext = null; observer.pPrev = null; this.pHead = observer; } else { observer.pNext = this.pHead; observer.pPrev = null; this.pHead.pPrev = observer; this.pHead = observer; } }
public void AttachObserver(CollisionObservers observer) { Debug.Assert(observer != null); Debug.Assert(this.poColSubject != null); this.poColSubject.AttachObserver(observer); }