text: #pragma once
  
  #include<glm/glm.hpp>
  
  namespace mr {
  
  class Ray
  {
  public:
      Ray();
      Ray(const glm::vec3& origin, const glm::vec3& direction);
      
      // Getters
      inline const glm::vec3& GetOrigin() const { return mOrigin; }
      inline const glm::vec3& GetDirection() const {return mDirection; }
  
      // Setters
      inline void SetOrigin(const glm::vec3& origin) { mOrigin = origin; }
      inline void SetDirection(const glm::vec3& direction) { mDirection = glm::normalize(direction); }
  
      // Functions
      glm::vec3 at(float t) const;
  
  private:
      glm::vec3 mOrigin;      // Ray origin
      glm::vec3 mDirection;   // Ray **UNIT** direction
  
  };
  
  }