示例#1
0
        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);
 }