public bool ScheduleCallback(float secondsToWait, bool realTime, ScheduledCallback cb, object userData = null) { if (!GeneralUtils.IsCallbackValid(cb)) { return(false); } if (this.m_schedulerContexts == null) { this.m_schedulerContexts = new LinkedList <SchedulerContext>(); } else { foreach (SchedulerContext context in this.m_schedulerContexts) { if ((context.m_callback == cb) && (context.m_userData == userData)) { return(false); } } } SchedulerContext context2 = new SchedulerContext { m_startTime = UnityEngine.Time.realtimeSinceStartup, m_secondsToWait = secondsToWait, m_realTime = realTime, m_callback = cb, m_userData = userData }; float num = context2.EstimateTargetTime(); bool flag = false; for (LinkedListNode <SchedulerContext> node = this.m_schedulerContexts.Last; node != null; node = node.Previous) { if (node.Value.EstimateTargetTime() <= num) { flag = true; this.m_schedulerContexts.AddAfter(node, context2); break; } } if (!flag) { this.m_schedulerContexts.AddFirst(context2); } return(true); }