Пример #1
0
        public void TestExplosionWorldSlopeWithMovementCollisionSuccess()
        {
            float RotationAngle = MathHelper.ToRadians(45);

            Vector2[] LocalPoints = CreateCube(Vector2.Zero, 16);
            for (int P = 0; P < LocalPoints.Length; ++P)
            {
                double cosTheta = Math.Cos(RotationAngle);
                double sinTheta = Math.Sin(RotationAngle);
                double RotatedX = cosTheta * LocalPoints[P].X - sinTheta * LocalPoints[P].Y;
                double RotatedY = sinTheta * LocalPoints[P].X + cosTheta * LocalPoints[P].Y;

                LocalPoints[P] = new Vector2((float)RotatedX, (float)RotatedY);
            }

            Map.Add(new WorldObject(LocalPoints, 5, 5));
            ComplexLinearExplosion NewExplosion = new ComplexLinearExplosion(Map, new Vector2(0, 60), new Vector2(0, -25));

            HashSet <WorldObject> CollidingPlayers = Map.GetCollidingWorldObjects(NewExplosion);

            Assert.AreEqual(1, CollidingPlayers.Count);
            Assert.IsFalse(CollidingPlayers.First().Collision.CollideWith(NewExplosion.Collision, Vector2.Zero, out _, out _, out _));
            //NewExplosion.Update(new GameTime());
            //Collision box extended to hit the wall but didn't progress further.
            Assert.AreEqual(new Vector2(-32, 28), NewExplosion.Collision.ListCollisionPolygon[0].ArrayVertex[0]);
            Assert.AreEqual(new Vector2(32, 28), NewExplosion.Collision.ListCollisionPolygon[0].ArrayVertex[3]);
        }
Пример #2
0
        public void TestExplosionWorldCollisionSuccess()
        {
            Vector2[] LocalPoints1 = CreateCube(Vector2.Zero, 16);

            Map.Add(new WorldObject(LocalPoints1, 5, 5));
            ComplexLinearExplosion NewExplosion = new ComplexLinearExplosion(Map, new Vector2(0, 0), new Vector2(0, -5));

            HashSet <WorldObject> CollidingPlayers = Map.GetCollidingWorldObjects(NewExplosion);

            Assert.AreEqual(1, CollidingPlayers.Count);
            Assert.IsTrue(CollidingPlayers.First().Collision.CollideWith(NewExplosion.Collision, Vector2.Zero, out _, out _, out _));
        }
Пример #3
0
        public void TestExplosionWorldWithMovementCollisionSuccess()
        {
            Vector2[] LocalPoints = CreateCube(Vector2.Zero, 16);

            Map.Add(new WorldObject(LocalPoints, 5, 5));
            ComplexLinearExplosion NewExplosion = new ComplexLinearExplosion(Map, new Vector2(0, 50), new Vector2(0, -5));

            HashSet <WorldObject> CollidingPlayers = Map.GetCollidingWorldObjects(NewExplosion);

            Assert.AreEqual(1, CollidingPlayers.Count);
            Assert.IsFalse(CollidingPlayers.First().Collision.CollideWith(NewExplosion.Collision, Vector2.Zero, out _, out _, out _));
            //NewExplosion.Update(new GameTime());
            //Collision box extended to hit the wall but didn't progress further.
            Assert.AreEqual(new Vector2(-32, 18), NewExplosion.Collision.ListCollisionPolygon[0].ArrayVertex[0]);
            Assert.AreEqual(new Vector2(32, 18), NewExplosion.Collision.ListCollisionPolygon[0].ArrayVertex[3]);
        }