public void TestUpdateExistingComponent() { var entityId = new EntityId(1); var data = new Position.Data(new Coordinates(1, 2, 3)); AddComponentOp(entityId, data); // A worker should only receive updates for components it is not authoritative over SetAuthority(entityId, Authority.NotAuthoritative); var positionUpdate = new Position.Update { coords = new Coordinates(4, 5, 6) }; UpdateComponent(entityId, positionUpdate); var expectedCoords = new Coordinates( positionUpdate.coords.Value.x, positionUpdate.coords.Value.y, positionUpdate.coords.Value.z); var actualCoords = new Coordinates( _componentMap.Get(entityId).Get().Value.coords.x, _componentMap.Get(entityId).Get().Value.coords.y, _componentMap.Get(entityId).Get().Value.coords.z); Assert.AreEqual(expectedCoords, actualCoords); }
public void TestGetComponent() { var entityId = new EntityId(1); var data = new Position.Data(new Coordinates(1, 2, 3)); AddComponentOp(entityId, data); Assert.AreEqual(data, _componentMap.Get(entityId)); }
private void AddComponentOp(EntityId entityId, Position.Data data) { var addComponentOp = new AddComponentOp <Position> { EntityId = entityId, Data = data }; _addComponentCallback(addComponentOp); }
public void TestTryGetValueIsTrue() { var entityId = new EntityId(1); var data = new Position.Data(new Coordinates(1, 2, 3)); AddComponentOp(entityId, data); Assert.True(_componentMap.TryGetValue(new EntityId(1), out var component)); Assert.AreEqual(data.Value, component.Get().Value); }
public void TestAddComponentWithExistingEntityId() { var entityId = new EntityId(1); var existingData = new Position.Data(new Coordinates(1, 2, 3)); var newData = new Position.Data(new Coordinates(4, 5, 6)); AddComponentOp(entityId, existingData); AddComponentOp(entityId, newData); Assert.AreEqual(newData, _componentMap.Get(entityId)); Assert.AreEqual(1, _componentMap.Keys.Count); }
public void TestHasUpdatedOnRemove() { var entityId = new EntityId(1); var data = new Position.Data(new Coordinates(1, 2, 3)); AddComponentOp(entityId, data); _componentMap.AckUpdated(); RemoveEntity(entityId); Assert.True(_componentMap.HasUpdated()); }
public void TestHasUpdatedOnComponentUpdate() { var entityId = new EntityId(1); var data = new Position.Data(new Coordinates(1, 2, 3)); AddComponentOp(entityId, data); // A worker should only receive updates for components it is not authoritative over SetAuthority(entityId, Authority.NotAuthoritative); var positionUpdate = new Position.Update { coords = new Coordinates(4, 5, 6) }; _componentMap.AckUpdated(); UpdateComponent(entityId, positionUpdate); Assert.True(_componentMap.HasUpdated()); }
public void TestUpdateComponentWithoutAuthority() { var entityId = new EntityId(1); var data = new Position.Data(new Coordinates(1, 2, 3)); AddComponentOp(entityId, data); var positionUpdate = new Position.Update { coords = new Coordinates(4, 5, 6) }; UpdateComponent(entityId, positionUpdate); var expectedCoords = new Coordinates(data.Value.coords.x, data.Value.coords.y, data.Value.coords.z); var actualCoords = new Coordinates( _componentMap.Get(entityId).Get().Value.coords.x, _componentMap.Get(entityId).Get().Value.coords.y, _componentMap.Get(entityId).Get().Value.coords.z); Assert.AreEqual(expectedCoords, actualCoords); }
private static int Main(string[] args) { var vec = new Position.Data(new PositionData(new Coordinates(1, 2, 3))); var output = JsonConvert.SerializeObject(vec); var data = JsonConvert.DeserializeObject <Position.Data>(output); foreach (var pair in Newtonsoft.Json.Linq.JObject.Parse(output)) { System.Console.WriteLine(pair.Key); if (pair.Value is JObject) { var obj = pair.Value as JObject; foreach (var pair2 in obj) { System.Console.WriteLine(pair2.Key); if (pair2.Value is JObject) { var obj2 = pair2.Value as JObject; foreach (var pair3 in obj2) { System.Console.WriteLine(pair3.Key); } } } } } System.Console.WriteLine(output); System.Console.WriteLine(vec.Value == data.Value); System.Console.ReadKey(); return(0); if (args.Length != 4) { PrintUsage(); return(ErrorExitStatus); } // Avoid missing component errors because no components are directly used in this project // and the GeneratedCode assembly is not loaded but it should be Assembly.Load("GeneratedCode"); var connectionParameters = new ConnectionParameters { WorkerType = WorkerType, Network = { ConnectionType = NetworkConnectionType.Tcp } }; using (var connection = ConnectWithReceptionist(args[1], Convert.ToUInt16(args[2]), args[3], connectionParameters)) using (var dispatcher = new Dispatcher()) { var isConnected = true; dispatcher.OnDisconnect(op => { Console.Error.WriteLine("[disconnect] " + op.Reason); isConnected = false; }); var view = new View(); foreach (var entity in view.Entities) { var d = entity.Value; var type = Type.GetType("improbable.Position"); } dispatcher.OnLogMessage(op => { connection.SendLogMessage(op.Level, LoggerName, op.Message); if (op.Level == LogLevel.Fatal) { Console.Error.WriteLine("Fatal error: " + op.Message); Environment.Exit(ErrorExitStatus); } }); while (isConnected) { using (var opList = connection.GetOpList(GetOpListTimeoutInMilliseconds)) { dispatcher.Process(opList); } } } // This means we forcefully disconnected return(ErrorExitStatus); }