public static void Attach(Observer pObserver) { // protection Debug.Assert(pObserver != null); DelayedObjectManager pDelayMan = DelayedObjectManager.privGetInstance(); DLink.AddToFront(ref pDelayMan.pHead, pObserver); }
public static void PurgeAll() { DelayedObjectManager pDelayMan = DelayedObjectManager.privGetInstance(); // remove all from list while (pDelayMan.pHead != null) { DLink.RemoveFront(ref pDelayMan.pHead); } }
static public void Process() { DelayedObjectManager pDelayMan = DelayedObjectManager.privGetInstance(); Observer pObserver = (Observer)pDelayMan.pHead; while (pObserver != null) { // Fire off remove method pObserver.Execute(); pObserver = (Observer)pObserver.GetNext(); } // remove all from list while (pDelayMan.pHead != null) { DLink.RemoveFront(ref pDelayMan.pHead); } }
static public void Attach(ColObserver observer) { // protection Debug.Assert(observer != null); DelayedObjectManager pDelayMan = DelayedObjectManager.privGetInstance(); // add to front if (pDelayMan.pHeadColObserver == null) { pDelayMan.pHeadColObserver = observer; observer.pMNext = null; observer.pMPrev = null; } else { observer.pMNext = pDelayMan.pHeadColObserver; observer.pMPrev = null; pDelayMan.pHeadColObserver.pMPrev = observer; pDelayMan.pHeadColObserver = observer; } }
//process any observers in the update loop of main game static public void Process() { //get the manager instance DelayedObjectManager pDelayMan = DelayedObjectManager.privGetInstance(); //First - Fire off all the observers currently on the list //get the head observer ColObserver pNode = pDelayMan.pHeadColObserver; //iterate through the observer list while (pNode != null) { // Fire off listener pNode.Execute(); //get the next observer pNode = (ColObserver)pNode.pMNext; } //done executing all observers - now remove them pNode = pDelayMan.pHeadColObserver; ColObserver pTmp = null; //iterate through the observer list while (pNode != null) { //hold current observer in pTmp for reference after removal pTmp = pNode; pNode = (ColObserver)pNode.pMNext; // remove observer pDelayMan.privDetach(pTmp, ref pDelayMan.pHeadColObserver); } }