void appendIn(utList<tListEntry> list, System.Object target, bool paused){ tListEntry listEntry = new tListEntry (); listEntry.target = target; listEntry.paused = paused; listEntry.markedForDeletion = false; MethodInfo method = target.GetType ().GetMethod (updateSelector); listEntry.impMethod = (TICK_IMP) Delegate.CreateDelegate(typeof(TICK_IMP), target, method); utNode<tListEntry> listElement = new utNode<tListEntry> (); listElement.next = listElement.prev = null; listElement.obj = listEntry; list.DL_APPEND(listElement); tHashUpdateEntry hashElement = new tHashUpdateEntry (); hashElement.target = target; hashElement.list = list; hashElement.entry = listElement; hashForUpdates.HASH_ADD_INT (target.GetHashCode(), hashElement); }
void priorityIn(utList<tListEntry> list, System.Object target, int priority, bool paused){ tListEntry listEntry = new tListEntry (); listEntry.target = target; listEntry.priority = priority; listEntry.paused = paused; MethodInfo method = target.GetType ().GetMethod (updateSelector); listEntry.impMethod = (TICK_IMP) Delegate.CreateDelegate(typeof(TICK_IMP), target, method); listEntry.markedForDeletion = false; utNode<tListEntry> listElement = new utNode<tListEntry> (); listElement.next = listElement.prev = null; listElement.obj = listEntry; if (list.head == null) { list.DL_APPEND(listElement); } else { bool added = false; for( utNode<tListEntry> elem = list.head; elem != null ; elem = elem.next ) { if(priority < elem.obj.priority){ if( elem == list.head ) list.DL_PREPEND(listElement); else { listElement.next = elem; listElement.prev = elem.prev; elem.prev.next = listElement; elem.prev = listElement; } added = true; break; } } if(!added) list.DL_APPEND(listElement); } tHashUpdateEntry hashElement = new tHashUpdateEntry (); hashElement.target = target; hashElement.list = list; hashElement.entry = listElement; hashForUpdates.HASH_ADD_INT (target.GetHashCode(), hashElement); }