private void ClockCheck(SD_Thread Bit)//心跳检测线程 { while (Bit.isStart) { TimeOut = SS_TriggerMarker.Clock_System(LateTime, GetOutTime); //心跳超时检测 Thread.Sleep((int)ClockTimeDelay * 1000); //处理延时 } }
/// <summary> /// 计时器[游戏世界时间]:判断执行时间(被TimeScale影响) /// 循环触发:到达指定时间返回一帧true,并重置时间再次计时 /// 持续触发:到达指定时间后,一直返回true /// </summary> /// <param name="targetSeconds">定时</param> /// <param name="Switch">true/false(循环触发/持续触发)</param> /// <returns>return : 触发标记</returns> public bool IF_Clock_GameWorld(float targetSeconds, bool Switch) { bool bit = SS_TriggerMarker.Clock_GameWorld(StartTime_GameWorld, targetSeconds); if (bit && Switch) { Reset_Marker(); } return((Switch) ? MarkerEdge.isEdge(bit) : bit); }
/// <summary> /// 计数器:判断累加数值 /// 循环触发:到达指定值返回一帧true,并重置时间再次计时 /// 持续触发:到达指定值后,一直返回true /// </summary> /// <param name="targetCount">设定数</param> /// <param name="Cumulative">累加数</param> /// <param name="Switch">true/false(循环触发/持续触发)</param> /// <returns>return : 触发标记</returns> public bool IF_Count(float targetCount, float Cumulative, bool Switch) { bool bit = SS_TriggerMarker.Count(ref StartCount, targetCount, Cumulative); if (bit && Switch) { Reset_Marker(); } return((Switch) ? MarkerEdge.isEdge(bit) : bit); }
private void DataQueueProcessor(SD_Thread Bit)//数据队列处理器 { while (Bit.isStart) { if (SS_TriggerMarker.Clock_System(LateTime, ClockTimeDelay) && StartClock) //心跳时间判断 { SetQueue.Enqueue(new byte[] { 1 }); //心跳消息暂时为Byte 1 LateTime = DateTime.Now; //刷新心跳时间 } if (SetQueue.Count > 0)//发送数据 { byte[] data = (byte[])SetQueue.Dequeue(); udpSet.Send(data, data.Length, SetServerPoint); //针对发送数据 LateTime = DateTime.Now; //刷新心跳时间 } Thread.Sleep((int)SetTimeDelay * 1000);//处理延时 } }
/// <summary> /// T触发器:Switch间隔变成true,可改变触发标记状态(false/true) /// </summary> /// <param name="Switch">标记开关</param> /// <returns>return : 触发标记</returns> public bool isTrigger(bool Switch) { return(SS_TriggerMarker.Trigger(Switch, ref bit, ref trigger)); }
/// <summary> /// 计时器[游戏时间]:判断执行时间(一次性) /// 到达指定时间返回一帧true /// </summary> /// <param name="targetSeconds">定时</param> /// <returns>return : 触发标记</returns> public bool IF_Clock_Game(float targetSeconds) { return(MarkerEdge.isEdge(SS_TriggerMarker.Clock_Game(StartTime_Game, targetSeconds))); }
/// <summary> /// 边缘检测:检测Switch是否发生变化,触发标记变成true一次 ; 用!Switch[与]运算过滤上下边缘 /// </summary> /// <param name="Switch">标记开关</param> /// <returns>return : 触发标记</returns> public bool isEdge(bool Switch) { return(SS_TriggerMarker.Edge(Switch, ref bit)); }
/// <summary> /// 计数器:判断累加数值(一次性) /// 到达指定值返回一帧true /// </summary> /// <param name="targetCount">设定数</param> /// <param name="Cumulative">累加数</param> /// <returns>return : 触发标记</returns> public bool IF_Count(float targetCount, float Cumulative) { return(MarkerEdge.isEdge(SS_TriggerMarker.Count(ref StartCount, targetCount, Cumulative))); }