// Copyright (c) 2023 Dominic Masters
// 
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT

#pragma once
#include "dawnlibs.hpp"

namespace Dawn {
  struct Ray2D {
    const glm::vec2 position;
    const glm::vec2 direction;

    /**
     * Constructs a new Ray 2D.
     * 
     * @param position Position of this ray in 2D space.
     * @param direction Direction from the origin in 2D space of this ray.
     */
    Ray2D(glm::vec2 position, glm::vec2 direction);

    /**
     * Checks whether one ray is intersecting with another ray.
     * 
     * @param ray The ray to check if this ray is intersecting.
     * @param out The point in space where the two rays intersect.
     * @return True if they intersect, otherwise false.
     */
    bool_t intersects(struct Ray2D ray, glm::vec2 *out);
  };
}