public void AddEvent(ushort id, EntityEvent entityEvent)
        {
            Entities[id].Events.Add(entityEvent);

            // Keep a maximum of 100 entries
            if (Entities[id].Events.Count > 100)
            {
                Entities[id].Events.RemoveAt(0);
            }
        }
        private void ReceivedEntityEvents(Message message)
        {
            if (GetEntityEventsCompleted != null)
            {
                //System.Diagnostics.Debug.WriteLine("");
                //System.Diagnostics.Debug.WriteLine(string.Format("[X] Client received events in message: {0}", messageHelper.BytesToString(message.Data)));

                var args = new ClientEventsEventArgs();

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

                // Get the number of entities in this message
                ushort entities = client.Reader.ReadUInt16();

                //System.Diagnostics.Debug.WriteLine(string.Format("[X] Number of entities: {0}", entities));

                for (ushort i = 0; i < entities; i++)
                {
                    // Get the id of the current entity
                    ushort entityId = client.Reader.ReadUInt16();

                    // Get the number of events for the current entity
                    byte events = client.Reader.ReadByte();

                    //System.Diagnostics.Debug.WriteLine(string.Format("[X] ClientId: {0}, Events: {1}", entityId, events));

                    for (byte j = 0; j < events; j++)
                    {
                        var entityEvent = new EntityEvent();
                        entityEvent.Id = entityId;
                        entityEvent.TimeStamp = client.Reader.ReadTimeStamp();
                        entityEvent.Type = (EntityEventType)client.Reader.ReadByte();

                        args.Events.Add(entityEvent);

                        System.Diagnostics.Debug.WriteLine(string.Format("[X] Client received event: ClientId: {0}, TimeStamp: {1}, Type: {2}", entityEvent.Id, entityEvent.TimeStamp, entityEvent.Type));
                    }
                }

                GetEntityEventsCompleted(this, args);
            }
        }
        private void ReceivedEntityEvents(Message message)
        {
            var clientId = connectionIds[message.ClientId];

            if (!entityHelper.Entities.ContainsKey(clientId))
            {
                return;
            }

            // Header
            server.Reader.ReadNewMessage(message);
            server.Reader.ReadByte();

            // Events
            int events = server.Reader.ReadByte() / 5;

            for (int i = 0; i < events; i++)
            {
                var entityEvent = new EntityEvent();
                entityEvent.TimeStamp = server.Reader.ReadTimeStamp();
                entityEvent.Type = (EntityEventType)server.Reader.ReadByte();

                entityHelper.AddEvent(clientId, entityEvent);
            }
        }