Exemplo n.º 1
0
        public void XWTMN()
        {
            // Arrange
            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                DeusaldPhysics2D.DeusaldPhysics2D.InitPhysics(InitSystemType.WindowsNative);
            }
            else
            {
                DeusaldPhysics2D.DeusaldPhysics2D.InitPhysics(InitSystemType.MacNative);
            }

            IPhysics2DControl physics2D = DeusaldPhysics2D.DeusaldPhysics2D.CreateNewPhysics(20, Vector2.Down);

            int     collisionObjectAId = -1;
            int     collisionObjectBId = -1;
            Vector2 collisionNormal    = Vector2.Zero;

            physics2D.OnCollisionEnter += data =>
            {
                collisionObjectAId = data.PhysicsObjectA.PhysicsObjectId;
                collisionObjectBId = data.PhysicsObjectB.PhysicsObjectId;
                collisionNormal    = data.Normal;
            };

            IPhysicsObject objOne = physics2D.CreatePhysicsObject(BodyType.Dynamic, Vector2.Zero, 0f);

            objOne.AddBoxCollider(1, 1);

            IPhysicsObject objTwo = physics2D.CreatePhysicsObject(BodyType.Static, new Vector2(0, -25f), 0f);

            objTwo.AddBoxCollider(1, 1);

            // Act
            for (int i = 0; i < 1000; ++i)
            {
                physics2D.Step();
            }

            // Assert
            Assert.Multiple(() =>
            {
                Assert.AreEqual(1, collisionObjectAId);
                Assert.AreEqual(2, collisionObjectBId);
                Assert.AreEqual(new Vector2(0, -1), collisionNormal);
            });
        }