Пример #1
0
    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);
    }