public bool Dequeue(UnityEngine.MonoBehaviour script, ulong playhead, out InterpTimedEvent node, ref Iterator iter_) { if (this.count <= 0) { node = null; return(false); } for (InterpTimedEvent.Dir dir = !iter_.started ? this.first : iter_.d; dir.has; dir = dir.node.next) { if (playhead < dir.node.info.timestamp) { break; } if (dir.node.component == script) { node = dir.node; iter_.d = node.next; iter_.started = true; this.Remove(node); return(true); } } iter_.d = new InterpTimedEvent.Dir(); iter_.started = true; node = null; return(false); }
public bool Dequeue(UnityEngine.MonoBehaviour script, ulong playhead, out InterpTimedEvent node, ref InterpTimedEvent.LList.Iterator iter_) { if (this.count <= 0) { node = null; return(false); } InterpTimedEvent.Dir dir = (!iter_.started ? this.first : iter_.d); while (dir.has) { if ((double)((float)playhead) >= dir.node.info.timestamp) { if (dir.node.component == script) { node = dir.node; iter_.d = node.next; iter_.started = true; this.Remove(node); return(true); } dir = dir.node.next; } else { break; } } iter_.d = new InterpTimedEvent.Dir(); iter_.started = true; node = null; return(false); }
public bool Dequeue(ulong playhead, out InterpTimedEvent node, ref Iterator iter_) { if (this.count <= 0) { node = null; return(false); } InterpTimedEvent.Dir dir = !iter_.started ? this.first : iter_.d; while (dir.has) { if (playhead < dir.node.info.timestamp) { break; } node = dir.node; iter_.d = node.next; iter_.started = true; this.Remove(node); return(true); } iter_.d = new InterpTimedEvent.Dir(); iter_.started = true; node = null; return(false); }
public bool Insert(InterpTimedEvent node) { InterpTimedEvent.Dir dir = new InterpTimedEvent.Dir(); dir.node = node; dir.has = true; return(this.Insert(ref dir)); }
public static void EMERGENCY_DUMP(bool TRY_TO_EXECUTE) { Debug.LogWarning(string.Concat("RUNNING EMERGENCY DUMP: TRY TO EXECUTE=", TRY_TO_EXECUTE)); try { try { if (!TRY_TO_EXECUTE) { InterpTimedEvent.queue.EmergencyDump(false); } else { try { foreach (InterpTimedEvent interpTimedEvent in InterpTimedEvent.queue.EmergencyDump(true)) { try { try { InterpTimedEvent.InvokeDirect(interpTimedEvent); } catch (Exception exception) { Debug.LogException(exception); } } finally { try { interpTimedEvent.Dispose(); } catch (Exception exception1) { Debug.LogException(exception1); } } } } catch (Exception exception2) { Debug.LogException(exception2); } } } catch (Exception exception3) { Debug.LogException(exception3); } } finally { InterpTimedEvent.queue = new InterpTimedEvent.LList(); InterpTimedEvent.dump = new InterpTimedEvent.Dir(); InterpTimedEvent.dumpCount = 0; } Debug.LogWarning(string.Concat("END OF EMERGENCY DUMP: TRY TO EXECUTE=", TRY_TO_EXECUTE)); }
public List <InterpTimedEvent> EmergencyDump(bool botherSorting) { bool flag; HashSet <InterpTimedEvent> collection = new HashSet <InterpTimedEvent>(); Iterator iterator = new Iterator(); do { InterpTimedEvent event2; try { flag = this.Dequeue(ulong.MaxValue, out event2, ref iterator); } catch (Exception exception) { Debug.LogException(exception); break; } if (flag) { collection.Add(event2); } }while (flag); this.first = this.last = new InterpTimedEvent.Dir(); this.count = 0; HashSet <InterpTimedEvent> other = this.FAIL_SAFE_SET; this.FAIL_SAFE_SET = null; if (other != null) { collection.UnionWith(other); } List <InterpTimedEvent> list = new List <InterpTimedEvent>(collection); if (botherSorting) { try { if (< > f__am$cache4 == null) { < > f__am$cache4 = delegate(InterpTimedEvent x, InterpTimedEvent y) { if (x == null) { if (y == null) { return(0); } int num = 0; return(num.CompareTo(1)); } if (y == null) { int num2 = 1; return(num2.CompareTo(0)); } return(x.info.timestampInMillis.CompareTo(y.info.timestampInMillis)); }; } list.Sort(< > f__am$cache4); }
private bool RemoveUnsafe(InterpTimedEvent node) { if (((this.count > 0) && (node != null)) && node.inlist) { if (node.prev.has) { if (node.next.has) { node.next.node.prev = node.prev; node.prev.node.next = node.next; this.count--; node.prev = node.next = new InterpTimedEvent.Dir(); node.inlist = false; return(true); } this.last = node.prev; this.last.node.next = new InterpTimedEvent.Dir(); this.count--; node.prev = node.next = new InterpTimedEvent.Dir(); node.inlist = false; return(true); } if (node.next.has) { this.first = node.next; this.first.node.prev = new InterpTimedEvent.Dir(); this.count--; node.prev = node.next = new InterpTimedEvent.Dir(); node.inlist = false; return(true); } if (this.first.node == node) { this.first = this.last = new InterpTimedEvent.Dir(); this.count = 0; node.prev = node.next = new InterpTimedEvent.Dir(); node.inlist = false; return(true); } } return(false); }
public void Dispose() { if (this.inlist) { InterpTimedEvent.queue.Remove(this); } if (!this.disposed) { this.prev = new InterpTimedEvent.Dir(); this.next = InterpTimedEvent.dump; InterpTimedEvent.dump.has = true; InterpTimedEvent.dump.node = this; this.component = null; this.args.Dispose(); this.args = null; this.info = null; this.tag = null; InterpTimedEvent.dumpCount = InterpTimedEvent.dumpCount + 1; this.disposed = true; } }
internal static InterpTimedEvent New(UnityEngine.MonoBehaviour receiver, string tag, ref uLink.NetworkMessageInfo info, object[] args, bool immediate) { InterpTimedEvent interpTimedEvent; if (!receiver) { Debug.LogError("receiver is null or has been destroyed", receiver); return(null); } if (!(receiver is IInterpTimedEventReceiver)) { Debug.LogError(string.Concat("receiver of type ", receiver.GetType(), " does not implement IInterpTimedEventReceiver"), receiver); return(null); } if (!InterpTimedEvent.dump.has) { interpTimedEvent = new InterpTimedEvent(); } else { InterpTimedEvent.dumpCount = InterpTimedEvent.dumpCount - 1; interpTimedEvent = InterpTimedEvent.dump.node; InterpTimedEvent.dump = interpTimedEvent.next; interpTimedEvent.next = new InterpTimedEvent.Dir(); interpTimedEvent.prev = new InterpTimedEvent.Dir(); interpTimedEvent.disposed = false; } interpTimedEvent.args = InterpTimedEvent.ArgList.New(args); interpTimedEvent.tag = tag; interpTimedEvent.component = receiver; interpTimedEvent.info = info; if (!immediate) { InterpTimedEvent.queue.Insert(interpTimedEvent); } return(interpTimedEvent); }
public bool Dequeue(ulong playhead, out InterpTimedEvent node, ref InterpTimedEvent.LList.Iterator iter_) { if (this.count <= 0) { node = null; return(false); } InterpTimedEvent.Dir dir = (!iter_.started ? this.first : iter_.d); if (dir.has) { if ((double)((float)playhead) >= dir.node.info.timestamp) { node = dir.node; iter_.d = node.next; iter_.started = true; this.Remove(node); return(true); } } iter_.d = new InterpTimedEvent.Dir(); iter_.started = true; node = null; return(false); }
private bool Insert(ref InterpTimedEvent.Dir ent) { if (ent.node == null) { return(false); } if (ent.node.inlist) { return(false); } if (this.count == 0) { this.first = this.last = ent; } else if (this.last.node.info.timestampInMillis <= ent.node.info.timestampInMillis) { if (this.count == 1) { this.first = this.last; this.last = ent; ent.node.prev = this.first; this.first.node.next = this.last; } else { ent.node.prev = this.last; this.last.node.next = ent; this.last = ent; } } else if (this.count == 1) { this.first = ent; this.first.node.next = this.last; this.last.node.prev = this.first; } else if (this.first.node.info.timestampInMillis > ent.node.info.timestampInMillis) { ent.node.next = this.first; this.first.node.prev = ent; this.first = ent; } else { InterpTimedEvent.Dir last; if (this.first.node.info.timestampInMillis == ent.node.info.timestampInMillis) { for (last = this.first; last.node.next.has; last = last.node.next) { if (last.node.next.node.info.timestampInMillis > ent.node.info.timestampInMillis) { break; } } } else { last = this.last; while (last.node.prev.has) { last = last.node.prev; if (last.node.info.timestampInMillis <= ent.node.info.timestampInMillis) { break; } } } ent.node.next = last.node.next; ent.node.prev = last; } this.count++; ent.node.inlist = true; if (this.FAIL_SAFE_SET == null) { this.FAIL_SAFE_SET = new HashSet <InterpTimedEvent>(); } this.FAIL_SAFE_SET.Add(ent.node); return(true); }
private bool RemoveUnsafe(InterpTimedEvent node) { InterpTimedEvent.Dir dir; InterpTimedEvent.Dir dir1; InterpTimedEvent.Dir dir2; if (this.count > 0 && node != null && node.inlist) { if (node.prev.has) { if (!node.next.has) { this.last = node.prev; InterpTimedEvent interpTimedEvent = this.last.node; dir = new InterpTimedEvent.Dir(); interpTimedEvent.next = dir; InterpTimedEvent.LList lList = this; lList.count = lList.count - 1; InterpTimedEvent.Dir dir3 = new InterpTimedEvent.Dir(); dir1 = dir3; node.next = dir3; node.prev = dir1; node.inlist = false; return(true); } node.next.node.prev = node.prev; node.prev.node.next = node.next; InterpTimedEvent.LList lList1 = this; lList1.count = lList1.count - 1; InterpTimedEvent.Dir dir4 = new InterpTimedEvent.Dir(); dir = dir4; node.next = dir4; node.prev = dir; node.inlist = false; return(true); } if (node.next.has) { this.first = node.next; InterpTimedEvent interpTimedEvent1 = this.first.node; dir1 = new InterpTimedEvent.Dir(); interpTimedEvent1.prev = dir1; InterpTimedEvent.LList lList2 = this; lList2.count = lList2.count - 1; InterpTimedEvent.Dir dir5 = new InterpTimedEvent.Dir(); dir2 = dir5; node.next = dir5; node.prev = dir2; node.inlist = false; return(true); } if (this.first.node == node) { dir2 = new InterpTimedEvent.Dir(); InterpTimedEvent.Dir dir6 = dir2; InterpTimedEvent.Dir dir7 = dir6; this.last = dir6; this.first = dir7; this.count = 0; dir7 = new InterpTimedEvent.Dir(); InterpTimedEvent.Dir dir8 = dir7; InterpTimedEvent.Dir dir9 = dir8; node.next = dir8; node.prev = dir9; node.inlist = false; return(true); } } return(false); }
private bool Insert(ref InterpTimedEvent.Dir ent) { InterpTimedEvent.Dir dir; if (ent.node == null) { return(false); } if (ent.node.inlist) { return(false); } if (this.count == 0) { InterpTimedEvent.Dir dir1 = ent; InterpTimedEvent.Dir dir2 = dir1; this.last = dir1; this.first = dir2; } else if (this.last.node.info.timestampInMillis <= ent.node.info.timestampInMillis) { if (this.count != 1) { ent.node.prev = this.last; this.last.node.next = ent; this.last = ent; } else { this.first = this.last; this.last = ent; ent.node.prev = this.first; this.first.node.next = this.last; } } else if (this.count == 1) { this.first = ent; this.first.node.next = this.last; this.last.node.prev = this.first; } else if (this.first.node.info.timestampInMillis <= ent.node.info.timestampInMillis) { if (this.first.node.info.timestampInMillis != ent.node.info.timestampInMillis) { dir = this.last; do { if (!dir.node.prev.has) { goto Label0; } dir = dir.node.prev; }while (dir.node.info.timestampInMillis > ent.node.info.timestampInMillis); } else { dir = this.first; while (dir.node.next.has) { if (dir.node.next.node.info.timestampInMillis <= ent.node.info.timestampInMillis) { dir = dir.node.next; } else { break; } } } Label0: ent.node.next = dir.node.next; ent.node.prev = dir; } else { ent.node.next = this.first; this.first.node.prev = ent; this.first = ent; } InterpTimedEvent.LList lList = this; lList.count = lList.count + 1; ent.node.inlist = true; if (this.FAIL_SAFE_SET == null) { this.FAIL_SAFE_SET = new HashSet <InterpTimedEvent>(); } this.FAIL_SAFE_SET.Add(ent.node); return(true); }
public List <InterpTimedEvent> EmergencyDump(bool botherSorting) { InterpTimedEvent interpTimedEvent; bool flag; HashSet <InterpTimedEvent> interpTimedEvents = new HashSet <InterpTimedEvent>(); InterpTimedEvent.LList.Iterator iterator = new InterpTimedEvent.LList.Iterator(); do { try { flag = this.Dequeue((ulong)-1, out interpTimedEvent, ref iterator); } catch (Exception exception) { Debug.LogException(exception); break; } if (!flag) { continue; } interpTimedEvents.Add(interpTimedEvent); }while (flag); InterpTimedEvent.Dir dir = new InterpTimedEvent.Dir(); InterpTimedEvent.Dir dir1 = dir; this.last = dir; this.first = dir1; this.count = 0; HashSet <InterpTimedEvent> fAILSAFESET = this.FAIL_SAFE_SET; this.FAIL_SAFE_SET = null; if (fAILSAFESET != null) { interpTimedEvents.UnionWith(fAILSAFESET); } List <InterpTimedEvent> interpTimedEvents1 = new List <InterpTimedEvent>(interpTimedEvents); if (botherSorting) { try { interpTimedEvents1.Sort((InterpTimedEvent x, InterpTimedEvent y) => { if (x == null) { if (y == null) { return(0); } return(0.CompareTo(1)); } if (y == null) { return(1.CompareTo(0)); } return(x.info.timestampInMillis.CompareTo(y.info.timestampInMillis)); }); } catch (Exception exception1) { Debug.LogException(exception1); } } return(interpTimedEvents1); }