Ejemplo n.º 1
0
        private void ReceivedClientSpatial(Message message)
        {
            if (GetEntitySpatialCompleted != null)
            {
                var args = new ClientSpatialEventArgs();

                // Read the message
                client.Reader.ReadNewMessage(message);
                client.Reader.ReadByte();

                // Find out how many clients that are included in the message
                byte clients = client.Reader.ReadByte();

                // Initialize and retrieve all client spatial data
                args.Entity = new EntitySpatial[clients];

                for (byte i = 0; i < clients; i++)
                {
                    var data = new EntitySpatial();
                    data.Id = client.Reader.ReadUInt16();
                    data.TimeStamp = client.Reader.ReadTimeStamp();
                    data.Position = messageHelper.ReadVector3(client.Reader);
                    data.Velocity = messageHelper.ReadVector3(client.Reader);
                    data.Angle = messageHelper.ReadVector3(client.Reader);

                    args.Entity[i] = data;
                }

                GetEntitySpatialCompleted(this, args);
            }
        }
Ejemplo n.º 2
0
        // Get data from server
        private void gameClient_GetClientSpatialCompleted(object sender, ClientSpatialEventArgs e)
        {
            if (spatialUpdateCounter++ < 100)
            {
                return;
            }

            for (int i = 0; i < e.ClientData.Length; i++)
            {
                var clientData = e.ClientData[i];

                var client = sender as GameClient;

                for (int j = 0; j < client.ServerEntities.Count; j++)
                {
                    if (client.ServerEntities[j].Id == clientData.ClientId)
                    {
                        ListViewItem lvi = new ListViewItem();
                        lvi.Text = DateTime.Now.ToString();

                        ListViewItem.ListViewSubItem lviSub1 = new ListViewItem.ListViewSubItem();
                        lviSub1.Text = String.Format("{0}, {1}, {2}",
                                                     clientData.Position.ToString(),
                                                     clientData.Velocity.ToString(),
                                                     clientData.Angle.ToString());

                        lvi.SubItems.Add(lviSub1);

                        if (listView1.InvokeRequired)
                        {
                            listView1.BeginInvoke(new MethodInvoker(
                                                    () => listView1.Items.Add(lvi)));
                        }
                        else
                        {
                            listView1.Items.Add(lvi);
                        }

                        break;
                    }
                }
            }

            spatialUpdateCounter = 0;
        }