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]); }
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 _)); }
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]); }