private void AppendInfoPair(BulletInfoPair pair)
 {
     _stringBuilder.Append("Seq : ");
     _stringBuilder.Append(pair.Seq);
     _stringBuilder.AppendLine();
     _stringBuilder.Append("Server :");
     if (null != pair.Server)
     {
         _stringBuilder.AppendLine(pair.Server.ToString());
     }
     else
     {
         _stringBuilder.AppendLine("No Server Data");
     }
     _stringBuilder.Append("Client :");
     if (null != pair.Client)
     {
         _stringBuilder.AppendLine(pair.Client.ToString());
     }
     else
     {
         _stringBuilder.AppendLine("No Client Data");
     }
     _stringBuilder.AppendLine();
 }
        public void AddClientBulletData(int seq,
                                        Vector3 startPoint,
                                        Vector3 emitPoint,
                                        Vector3 startDir,
                                        Vector3 hitPoint,
                                        int hitType,
                                        INetworkChannel networkChannel)
        {
            if (!_infos.ContainsKey(seq))
            {
                _infos[seq] = new BulletInfoPair
                {
                    Seq = seq,
                };
            }
            var pair = _infos[seq];

            pair.Client = new BulletInfo
            {
                CmdSeq     = seq,
                StartPoint = startPoint,
                EmitPoint  = emitPoint,
                StartDir   = startDir,
                HitPoint   = hitPoint,
                HitType    = (EHitType)hitType,
            };
            SendMismatch(seq, _infos[seq], networkChannel);
        }
 private void SendMismatch(int cmdSeq, BulletInfoPair pair, INetworkChannel networkChannel)
 {
     if (!pair.Matched.HasValue)
     {
         if (null != pair.Client && null != pair.Server)
         {
             pair.Matched = pair.Client.IsMatched(pair.Server);
             if (!pair.Matched.Value)
             {
                 var msg = FireInfoAckMessage.Allocate();
                 msg.Seq = cmdSeq;
                 networkChannel.SendReliable((int)EServer2ClientMessage.FireInfoAck, msg);
                 msg.ReleaseReference();
             }
         }
     }
 }