public async Task TestPointLinearImpulse()
        {
            await _server.WaitIdleAsync();

            var entManager    = _server.ResolveDependency <IEntityManager>();
            var fixtureSystem = _server.ResolveDependency <IEntitySystemManager>()
                                .GetEntitySystem <FixtureSystem>();

            await _server.WaitAssertion(() =>
            {
                var boxEnt = entManager.SpawnEntity(null, new MapCoordinates(Vector2.Zero, new MapId(1)));
                var box    = IoCManager.Resolve <IEntityManager>().AddComponent <PhysicsComponent>(boxEnt);
                var poly   = new PolygonShape();
                poly.SetAsBox(0.5f, 0.5f);
                var fixture       = fixtureSystem.CreateFixture(box, poly);
                fixture.Mass      = 1f;
                box.FixedRotation = false;
                box.BodyType      = BodyType.Dynamic;
                Assert.That(box.InvI, Is.GreaterThan(0f));

                // Check regular impulse works
                box.ApplyLinearImpulse(new Vector2(0f, 1f));
                Assert.That(box.LinearVelocity.Length, Is.GreaterThan(0f));

                // Reset the box
                box.LinearVelocity = Vector2.Zero;
                Assert.That(box.LinearVelocity.Length, Is.EqualTo(0f));
                Assert.That(box.AngularVelocity, Is.EqualTo(0f));

                // Check the angular impulse is applied from the point
                box.ApplyLinearImpulse(new Vector2(0f, 1f), new Vector2(0.5f, 0f));
                Assert.That(box.LinearVelocity.Length, Is.GreaterThan(0f));
                Assert.That(box.AngularVelocity, Is.Not.EqualTo(0f));
            });
        }
        public async Task Setup()
        {
            _server = StartServer();
            await _server.WaitIdleAsync();

            var mapManager = _server.ResolveDependency <IMapManager>();

            mapManager.CreateMap();
        }
예제 #3
0
        private static async Task ConnectNetworking(ClientIntegrationInstance client, ServerIntegrationInstance server)
        {
            await Task.WhenAll(client.WaitIdleAsync(), server.WaitIdleAsync());

            // Connect.

            client.SetConnectTarget(server);

            client.Post(() => IoCManager.Resolve <IClientNetManager>().ClientConnect(null, 0, null));

            // Run some ticks for the handshake to complete and such.

            for (var i = 0; i < 10; i++)
            {
                server.RunTicks(1);
                await server.WaitIdleAsync();

                client.RunTicks(1);
                await client.WaitIdleAsync();
            }

            await Task.WhenAll(client.WaitIdleAsync(), server.WaitIdleAsync());
        }
예제 #4
0
        public async Task Setup()
        {
            var options = new ServerIntegrationOptions {
                ExtraPrototypes = Prototypes
            };

            _server = StartServerDummyTicker(options);

            await _server.WaitIdleAsync();

            _mapManager    = _server.ResolveDependency <IMapManager>();
            _entityManager = _server.ResolveDependency <IEntityManager>();
            _gameTiming    = _server.ResolveDependency <IGameTiming>();
        }
예제 #5
0
        public async Task Setup()
        {
            var options = new ServerIntegrationOptions {
                ExtraPrototypes = Prototypes
            };

            _server = StartServer(options);

            await _server.WaitIdleAsync();

            _mapManager           = _server.ResolveDependency <IMapManager>();
            _entityManager        = _server.ResolveDependency <IEntityManager>();
            _gameTiming           = _server.ResolveDependency <IGameTiming>();
            _extensionCableSystem = _entityManager.EntitySysManager.GetEntitySystem <ExtensionCableSystem>();
        }