public BaseActorState(Node2D node)
 {
     this.node        = node;
     tickHandler      = new TickHandler();
     statusHandler    = new StatusHandler(node as ISufferStatusEffects);
     elevationHandler = new ElevationHandler(node as IElevatable, (node as IHaveRuntime).runtime);
     (node as BaseActorNode).state = this;
 }
Esempio n. 2
0
        public void TestSaveLoadNetwork2WithElevation()
        {
            var routerDb = new RouterDb();

            routerDb.AddSupportedVehicle(Itinero.Osm.Vehicles.Vehicle.Car);
            routerDb.LoadTestNetwork(
                System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(
                    "Itinero.Test.test_data.networks.network2.geojson"));

            // add elevation.
            ElevationHandler.GetElevation = (lat, lon) =>
            {
                return((short)(((lat * lon) % 2000) - 100));
            };
            routerDb.AddElevation();

            using (var stream = new MemoryStream())
            {
                routerDb.Serialize(stream);
                stream.Seek(0, SeekOrigin.Begin);
                routerDb = RouterDb.Deserialize(stream, null);
            }

            Assert.AreEqual(4, routerDb.Network.VertexCount);
            Assert.AreEqual(3, routerDb.Network.EdgeCount);

            var vertex0 = routerDb.Network.GetVertex(0);

            Assert.AreEqual(4.460974931716918, vertex0.Longitude, 0.00001);
            Assert.AreEqual(51.2296492895387, vertex0.Latitude, 0.00001);
            Assert.AreEqual(ElevationHandler.GetElevation(vertex0.Latitude, vertex0.Longitude),
                            vertex0.Elevation);

            var vertex1 = routerDb.Network.GetVertex(1);

            Assert.AreEqual(4.463168978691101, vertex1.Longitude, 0.00001);
            Assert.AreEqual(51.2296224159235, vertex1.Latitude, 0.00001);
            Assert.AreEqual(ElevationHandler.GetElevation(vertex1.Latitude, vertex1.Longitude),
                            vertex1.Elevation);

            var vertex2 = routerDb.Network.GetVertex(2);

            Assert.AreEqual(4.465247690677643, vertex2.Longitude, 0.00001);
            Assert.AreEqual(51.22962073632204, vertex2.Latitude, 0.00001);
            Assert.AreEqual(ElevationHandler.GetElevation(vertex2.Latitude, vertex2.Longitude),
                            vertex2.Elevation);

            var vertex3 = routerDb.Network.GetVertex(3);

            Assert.AreEqual(4.46317434310913, vertex3.Longitude, 0.00001);
            Assert.AreEqual(51.23092072952097, vertex3.Latitude, 0.00001);
            Assert.AreEqual(ElevationHandler.GetElevation(vertex3.Latitude, vertex3.Longitude),
                            vertex3.Elevation);

            var edge1 = routerDb.Network.GetEdgeEnumerator(0).First(x => x.To == 1);

            Assert.AreEqual(Coordinate.DistanceEstimateInMeter(vertex0, vertex1), edge1.Data.Distance, 1);

            var edge2 = routerDb.Network.GetEdgeEnumerator(1).First(x => x.To == 2);

            Assert.AreEqual(Coordinate.DistanceEstimateInMeter(vertex1, vertex2), edge2.Data.Distance, 1);

            var edge3 = routerDb.Network.GetEdgeEnumerator(1).First(x => x.To == 3);

            Assert.AreEqual(Coordinate.DistanceEstimateInMeter(vertex1, vertex3), edge3.Data.Distance, 1);

            using (var stream = new MemoryStream())
            {
                routerDb.Serialize(stream);
                stream.Seek(0, SeekOrigin.Begin);
                routerDb = RouterDb.Deserialize(stream, RouterDbProfile.NoCache);

                Assert.AreEqual(4, routerDb.Network.VertexCount);
                Assert.AreEqual(3, routerDb.Network.EdgeCount);

                vertex0 = routerDb.Network.GetVertex(0);
                Assert.AreEqual(4.460974931716918, vertex0.Longitude, 0.00001);
                Assert.AreEqual(51.2296492895387, vertex0.Latitude, 0.00001);
                Assert.AreEqual(ElevationHandler.GetElevation(vertex0.Latitude, vertex0.Longitude),
                                vertex0.Elevation);

                vertex1 = routerDb.Network.GetVertex(1);
                Assert.AreEqual(4.463168978691101, vertex1.Longitude, 0.00001);
                Assert.AreEqual(51.2296224159235, vertex1.Latitude, 0.00001);
                Assert.AreEqual(ElevationHandler.GetElevation(vertex1.Latitude, vertex1.Longitude),
                                vertex1.Elevation);

                vertex2 = routerDb.Network.GetVertex(2);
                Assert.AreEqual(4.465247690677643, vertex2.Longitude, 0.00001);
                Assert.AreEqual(51.22962073632204, vertex2.Latitude, 0.00001);
                Assert.AreEqual(ElevationHandler.GetElevation(vertex2.Latitude, vertex2.Longitude),
                                vertex2.Elevation);

                vertex3 = routerDb.Network.GetVertex(3);
                Assert.AreEqual(4.46317434310913, vertex3.Longitude, 0.00001);
                Assert.AreEqual(51.23092072952097, vertex3.Latitude, 0.00001);
                Assert.AreEqual(ElevationHandler.GetElevation(vertex3.Latitude, vertex3.Longitude),
                                vertex3.Elevation);

                edge1 = routerDb.Network.GetEdgeEnumerator(0).First(x => x.To == 1);
                Assert.AreEqual(Coordinate.DistanceEstimateInMeter(vertex0, vertex1), edge1.Data.Distance, 1);

                edge2 = routerDb.Network.GetEdgeEnumerator(1).First(x => x.To == 2);
                Assert.AreEqual(Coordinate.DistanceEstimateInMeter(vertex1, vertex2), edge2.Data.Distance, 1);

                edge3 = routerDb.Network.GetEdgeEnumerator(1).First(x => x.To == 3);
                Assert.AreEqual(Coordinate.DistanceEstimateInMeter(vertex1, vertex3), edge3.Data.Distance, 1);
            }
        }