private async Task Run() { var id = (await _createClient.GetResponse <CreateEntityResponse>(new { TypeId = 1 })).Message.EntityId; _logger.LogInformation($"Test ID: {id:D}"); var s = Stopwatch.StartNew(); while (true) { var first = (await _getMetadataClient.GetResponse <GetEntityMetadataResponse>(new { EntityId = id, Index = 0, Type = 0 })).Message; var old = (int)_serializer.Deserialize(first.Type, first.Data); var firstTransform = (await _getTransformClient.GetResponse <GetEntityTransformResponse>(new { EntityId = id })).Message; _logger.LogInformation($"Old Value: {old} | {firstTransform.Position} | {firstTransform.Velocity}"); if (old >= 10000) { break; } await _sendEndpointProvider.Send <UpdateEntityMetadata>(new { EntityId = id, Index = 0, Type = 0, Data = _serializer.Serialize(0, old + 1) }); await _sendEndpointProvider.Send <UpdateTransform>(new { EntityId = id, Position = firstTransform.Position + Vector3.UnitX, Velocity = firstTransform.Velocity + Vector3.UnitZ }); var second = (await _getMetadataClient.GetResponse <GetEntityMetadataResponse>(new { EntityId = id, Index = 0, Type = 0 })).Message; var secondTransform = (await _getTransformClient.GetResponse <GetEntityTransformResponse>(new { EntityId = id })).Message; var @new = (int)_serializer.Deserialize(second.Type, second.Data); _logger.LogInformation($"New Value: {@new} | {secondTransform.Position} | {secondTransform.Velocity}"); } s.Stop(); _logger.LogInformation($"Took {s.Elapsed}"); }
public void UpdateMetadata(Guid entityId, int index, int type, byte[] data) { var entity = _entities[entityId]; var value = _metadataSerializer.Deserialize(type, data); if (entity.Metadata[index].Type != type) { throw new ArgumentOutOfRangeException(nameof(type), "Mismatched Type"); } entity.Metadata[index].Value = value; }