/// <summary> /// Determines if the obj passed is hitting the borders of the game world screen /// and re-sets the position of the obj and its bounding box. /// </summary> /// <param name="graphics"></param> /// <param name="obj"></param> public static void Check_Border_colision(GraphicsDeviceManager graphics , Sprite obj) { float MaxX = graphics.GraphicsDevice.Viewport.Width - obj.get_Texture().Width * obj.get_Scale().X; float MinX = 0; float MaxY = graphics.GraphicsDevice.Viewport.Height - obj.get_Texture().Height * obj.get_Scale().Y; float MinY = 0; //Check for bounce if (obj.Position.X > MaxX) // Right border check { obj.save_Position(); obj.Direction.X *= -1; obj.Position.X = MaxX; // back up to meet colision surface obj.set_box(); // allow boundingbox to follow sprite if (obj.Type == "Ball") // Only produce sound if the obj is a Ball Breakout.theSoundBank.PlayCue("BorderHit"); } else if (obj.Position.X < MinX) // Left border check { obj.save_Position(); obj.Direction.X *= -1; obj.Position.X = MinX; obj.set_box(); if (obj.Type == "Ball") // Only produce sound if the obj is a Ball Breakout.theSoundBank.PlayCue("BorderHit"); } if (obj.Position.Y > MaxY) // Bottom border check { obj.save_Position(); obj.Direction.Y *= -1; obj.Position.Y = MaxY; obj.set_box(); if (obj.Type == "Ball") // Only produce sound if the obj is a Ball Breakout.theSoundBank.PlayCue("BorderHit"); } else if (obj.Position.Y < MinY) // Top border check { obj.save_Position(); obj.Direction.Y *= -1; obj.Position.Y = MinY; obj.set_box(); if (obj.Type == "Ball") // Only produce sound if the obj is a Ball Breakout.theSoundBank.PlayCue("BorderHit"); } }