Example #1
0
 private bool CollidesWithBlackHole(PhysicalObject po)
 {
     foreach (BlackHole bh in model.BlackHoleList)
     {
         if (Vector2.Distance(bh.Position, po.Position) <= bh.DisappearanceRadius)
         {
             return(true);
         }
     }
     return(false);
 }
Example #2
0
 private Planet CollidesWithPlanet(PhysicalObject po)
 {
     foreach (Planet planet in model.PlanetList)
     {
         if (Vector2.Distance(po.Position, planet.Position) < planet.Radius)
         {
             return(planet);
         }
     }
     return(null);
 }
Example #3
0
        /// <summary>
        /// Returns a Vector2 showing the gravitational pull of GravityPoint gp on PhysicalObject po
        /// </summary>
        /// <param name="po">The physical object being affected.</param>
        /// <param name="gp">The gravity point affecting the object.</param>
        /// <returns></returns>
        public static Vector2 CalculateGravity(PhysicalObject po, GravityPoint gp)
        {
            Vector2 delta    = gp.Position - po.Position;
            float   r        = delta.Length();
            float   gravPull = GravityConstant * gp.Mass / (r * r);
            float   theta    = (float)Math.Atan2(delta.Y, delta.X);
            Vector2 result   = new Vector2();

            result.X = gravPull * (float)Math.Cos(theta);
            result.Y = gravPull * (float)Math.Sin(theta);
            return(result);
        }
Example #4
0
 public static bool CollidesWithBottomBorder(PhysicalObject p, Terrain terrain)
 {
     if (GravityField.Y > 0 && GravityField.Y > GravityField.X) //gravity pointing down
     {
         return(p.BoundingBox.Bottom >= terrain.Height);
     }
     else if (GravityField.Y < 0 && GravityField.Y < GravityField.X) //Gravity pointing up
     {
         return(p.BoundingBox.Top < 0);
     }
     else if (GravityField.X > 0 && GravityField.X > GravityField.Y) //Gravity pointing right
     {
         return(p.BoundingBox.Right >= terrain.Width);
     }
     else if (GravityField.X < 0 && GravityField.X < GravityField.Y) //gravity pointing left
     {
         return(p.BoundingBox.Left < 0);
     }
     else
     {
         return(false);
     }
 }
Example #5
0
 private bool CollidesWithTerrain(PhysicalObject po)
 {
     return(IntersectPixels(po.WorldTransform, po.SourceRect.Width, po.SourceRect.Height, po.ColorData, model.Terrain));
 }
Example #6
0
 private bool CollidesWithBorders(PhysicalObject po)
 {
     return(!new Rectangle(0, 0, model.Terrain.Width, model.Terrain.Height).Contains(po.BoundingBox));
 }