示例#1
0
 private void StartCounting(float time, DelayCallback delayCallback)
 {
     mTimeAccum   = 0;
     mTimeToDelay = time;
     isAccuming   = true;
     callback     = delayCallback;
 }
示例#2
0
 public TimeDelayData(float timeToDelay, DelayCallback delayCallback, bool loop, bool unTimeScale, System.Object newObj)
 {
     mLoop        = loop;
     mUnTimeScale = unTimeScale;
     obj          = newObj;
     StartCounting(timeToDelay, delayCallback);
 }
示例#3
0
    public void PostCallback(float delay, object msgArg, MsgCallback callback)
    {
        DelayCallback delayCallback = new DelayCallback();

        delayCallback.callback    = callback;
        delayCallback.msgArg      = msgArg;
        delayCallback.delayTime   = delay;
        delayCallback.currentTime = 0;
        delayCallbackList.Add(delayCallback);
    }
示例#4
0
    /// <summary>
    /// 添加一个计时
    /// </summary>
    /// <param name="timeToDelay">多久的时间</param>
    /// <param name="delayCallback">回调</param>
    /// <param name="unTimeScale">是否忽略TimeScale</param>
    /// <param name="obj">对象</param>
    /// <returns></returns>
    public static TimeDelayData Delay(float timeToDelay, DelayCallback delayCallback, bool loop = false, bool unTimeScale = false, System.Object obj = null)
    {
        TimeDelayData timeData = null;

        if (delayCallback != null)
        {
            timeData = new TimeDelayData(timeToDelay, delayCallback, loop, unTimeScale, obj);
            Instance.AttachTimeDelay(timeData);
        }
        return(timeData);
    }
 /// <summary>
 /// Initializes a new instance of the <see cref="PamTransaction"/> class.
 /// </summary>
 /// <param name="interop">The object implementing the PAM functions.</param>
 /// <param name="handle">The handle of the PAM transaction.</param>
 /// <param name="conversation">The conversation handler information.</param>
 /// <param name="logger">The logger.</param>
 public PamTransaction(
     IPamInterop interop,
     IntPtr handle,
     PamConv conversation,
     ILogger <PamService>?logger = null)
 {
     _conversation  = _defaultConversation = conversation;
     _delayCallback = DelayCallback;
     _interop       = interop;
     _logger        = logger;
     _handle        = handle;
 }
示例#6
0
        public static bool AddEvent(DelayCallback cb, long time = 0, object[] param = null)
        {
            if (time <= 0)
            {
                cb(param);
                return true;
            }
            long lnNow = DelayEvent.GetCurUtcMSTime();

            SDCallbackInfo TimeCB = new SDCallbackInfo();
            TimeCB.nExecTime = lnNow + time;
            TimeCB.pCB = cb;
            TimeCB.Param = param;
            InsertAndSort(ref _delayEventList, TimeCB);
            //             _delayEventList.Add(TimeCB);
            //             _delayEventList.Sort(CompareTo);
            return true;
        }
示例#7
0
    /* 更新延时消息 */
    public void Update()
    {
        // 延时发送消息
        for (int i = 0; i < delayHandlerList.Count; i++)
        {
            DelayMsgHandler msgObject = delayHandlerList[i];
            if (null == msgObject)
            {
                delayHandlerList.RemoveAt(i);
                i -= 1;
            }
            else
            {
                msgObject.currentTime += Time.deltaTime;
                if (msgObject.currentTime >= msgObject.delayTime)
                {
                    SendMessage(msgObject.message, msgObject.msgArg);
                    delayHandlerList.RemoveAt(i);
                    i -= 1;
                }
            }
        }

        // 调度延时回调
        for (int i = 0; i < delayCallbackList.Count; i++)
        {
            DelayCallback delayCallback = delayCallbackList[i];
            delayCallback.currentTime += Time.deltaTime;
            if (delayCallback.currentTime >= delayCallback.delayTime)
            {
                delayCallback.callback(delayCallback.msgArg);
                delayCallbackList.RemoveAt(i);
                i -= 1;
            }
        }
    }