Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        private void AddComponentOp(EntityId entityId, Position.Data data)
        {
            var addComponentOp = new AddComponentOp <Position>
            {
                EntityId = entityId,
                Data     = data
            };

            _addComponentCallback(addComponentOp);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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());
        }
Пример #7
0
        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());
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }