/// <summary> /// Refresh the properties table from the given message. /// </summary> /// <param name="message">The received message</param> internal void ReadFromMessage(IncomingMessage message) { var changedKeysCount = message.ReadByte(); for (int i = 0; i < changedKeysCount; i++) { var key = message.ReadByte(); var newValue = new NetBuffer(); newValue.Write(message.ReadBytes()); var isNewProperty = !this.internalDictionary.ContainsKey(key); this.internalDictionary[key] = newValue; if (isNewProperty) { this.PropertyAdded?.Invoke(this, key); } else { this.PropertyChanged?.Invoke(this, key); } } var removedKeysCount = message.ReadByte(); for (int i = 0; i < removedKeysCount; i++) { var key = message.ReadByte(); NetBuffer value; this.internalDictionary.TryRemove(key, out value); this.PropertyRemoved?.Invoke(this, key); } }
/// <summary> /// Reads the entity. /// </summary> /// <param name="message">The message.</param> /// <returns>Return the serialized entity from message</returns> private Entity ReadEntity(IncomingMessage message) { var data = message.ReadBytes(); using (var stream = new MemoryStream()) { stream.Write(data, 0, data.Length); stream.Seek(0, SeekOrigin.Begin); var entity = this.serializer.Deserialize(stream); return((Entity)entity); } }