private static void SendMsg(NetBuff buffer, FrameData curFrameData) { NetSCSynchronizateMsg msg = new NetSCSynchronizateMsg(); for (int i = 0; i < playerList.Count; i++) { var info = playerList[i]; if (!info.IsDisconnected) { msg.FrameDatas.Clear(); //补上差的帧 for (int k = info.CurFrame + 1; k < curFrame; k++) { var f = historyFrameDatas.Find(o => o.Frame == k); if (f != null) { msg.FrameDatas.Add(f); } } msg.FrameDatas.Add(curFrameData); buffer.Reset(); msg.Write(buffer); try { info.Socket.Send(buffer.DataBuffer); } catch (Exception e) { info.IsDisconnected = true; throw; } } } }
public void OnReceiveSyncData(NetSCSynchronizateMsg msg) { SynchronizationManager.Instance.AddFrameData(msg.FrameDatas); }