/// <summary>
 /// Constructor de la clase.
 /// </summary>
 /// <param name="World">Referencia a la instancia del simulador al que se asociara el rayo.</param>
 /// <param name="Source">Punto de origen del rayo.</param>
 /// <param name="Radius">Radio maximo de alcance del rayo.</param>
 public RayTracer(World World, Vector2 Source, int Radius)
     : this(World, Source)
 {
     this.Radius = Radius;
 }
 /// <summary>
 /// Constructor de la clase.
 /// </summary>
 /// <param name="World">Referencia a la instancia del simulador al que se asociara el rayo.</param>
 /// <param name="Source">Punto de origen del rayo.</param>
 public RayTracer(World World)
 {
     this.World = World;
     this.Source = Vector2.Zero;
     this.Color = Color.Yellow;
 }
 /// <summary>
 /// Constructor de la clase.
 /// </summary>
 /// <param name="World">Referencia a la instancia del simulador al que se asociara el rayo.</param>
 /// <param name="Source">Punto de origen del rayo.</param>
 public RayTracer(World World, Vector2 Source)
     : this(World)
 {
     this.Source = Source;
 }
        /// <summary>
        /// LoadContent se llama una vez por juego y permite cargar
        /// todo el contenido.
        /// </summary>
        protected override void LoadContent()
        {
            // Crea un SpriteBatch nuevo para dibujar texturas.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: use this.Content para cargar aquí el contenido del juego
            this.IsMouseVisible = true;

            Helper.font = Content.Load<SpriteFont>("font");
            Helper.spriteBatch = spriteBatch;
            Helper.graphicDevice = GraphicsDevice;

            // Inicializamos el sistema de colisiones y añadimos objetos a la escena:
            world = new World();

            world.bodies.Add(new Body(new Rectangle(0, 0, 80, 80), Color.Green, true, true));
            world.bodies.Add(new Body(new Rectangle(0, 80, 80, 80), Color.Green, true, true));
            world.bodies.Add(new Body(new Rectangle(0, 80 * 2, 80, 80), Color.Green, true, true));
            world.bodies.Add(new Body(new Rectangle(0, 80 * 3, 80, 80), Color.Green, true, true));

            world.bodies.Add(new Body(new Rectangle(80, 80 * 3, 80, 80), Color.Green, true, true));
            world.bodies.Add(new Body(new Rectangle(80 * 2, 80 * 3, 80, 80), Color.Green, true, true));
            world.bodies.Add(new Body(new Rectangle(80 * 3, 80 * 3, 80, 80), Color.Green, true, true));

            world.bodies.Add(new Body(new Rectangle(80 * 3, 80, 80, 80), Color.Green, true, true));
            world.bodies.Add(new Body(new Rectangle(80 * 9, 80, 80, 80), Color.Green, true, true));

            world.bodies.Add(new Body(new Rectangle(0, 80 * 5, 80, 80), Color.Green, true, true));

            world.bodies.Add(new Body(new Rectangle(80 * 4, 80, 80, 20), Color.Green, true, true));

            world.bodies.Add(new Body(new Rectangle(80 * 2, 80, 80, 10), Color.Green, true, true));

            // Creamos un cuerpo no fijo que manejaremos como si fuera el jugador:
            body = new Body(new Rectangle(80 * 2, 80 * 2, 80, 80), Color.Red, false, true);
            body.Debug = true;
            world.bodies.Add(body);
            body.WorldInstance = world;
            body.PreUpdate += this.PreUpdate;
            body.PostUpdate += this.PostUpdate;
            body.PostDraw += this.PostDraw;

            // Creamos un cuerpo no solido que hara las veces de trigger (un lanzador de eventos):
            trigger = new Body(new Rectangle(80 * 6, 80 * 2, 80 * 2, 80 * 2), new Color(255, 0, 255, 128), true, false);
            world.bodies.Add(trigger);
            trigger.OnCollision += this.triggerOnCollision;

            // Definimos un rayo para trazar trayectorias con el entorno:
            ray = new RayTracer(world);
        }