private void StartCounting(float time, DelayCallback delayCallback) { mTimeAccum = 0; mTimeToDelay = time; isAccuming = true; callback = delayCallback; }
public TimeDelayData(float timeToDelay, DelayCallback delayCallback, bool loop, bool unTimeScale, System.Object newObj) { mLoop = loop; mUnTimeScale = unTimeScale; obj = newObj; StartCounting(timeToDelay, delayCallback); }
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); }
/// <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; }
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; }
/* 更新延时消息 */ 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; } } }