1#ifndef RAYLIB_CPP_INCLUDE_RAY_HPP_
2#define RAYLIB_CPP_INCLUDE_RAY_HPP_
5#include "./raylib-cpp-utils.hpp"
6#include "./RayCollision.hpp"
12class Ray :
public ::Ray {
14 Ray(const ::Ray& ray) {
18 Ray(::Vector3 position = {0.0f, 0.0f, 0.0f}, ::Vector3 direction = {0.0f, 0.0f, 0.0f}) :
19 ::Ray{position, direction} {
23 Ray(::Vector2 mousePosition, const ::Camera& camera) {
24 set(::GetMouseRay(mousePosition, camera));
27 Ray& operator=(const ::Ray& ray) {
32 GETTERSETTER(::Vector3, Position, position)
33 GETTERSETTER(::
Vector3, Direction, direction)
39 DrawRay(*
this, color);
46 return ::GetRayCollisionSphere(*
this, center, radius);
53 return ::GetRayCollisionBox(*
this, box);
60 return ::GetRayCollisionMesh(*
this, mesh, transform);
67 return ::GetRayCollisionTriangle(*
this, p1, p2, p3);
74 return ::GetRayCollisionQuad(*
this, p1, p2, p3, p4);
80 static Ray GetMouse(::Vector2 mousePosition, const ::Camera& camera) {
81 return ::GetMouseRay(mousePosition, camera);
88 return ::GetMouseRay(::GetMousePosition(), camera);
92 void set(const ::Ray& ray) {
93 position = ray.position;
94 direction = ray.direction;
Ray type (useful for raycast)
RayCollision GetCollision(::Vector3 p1, ::Vector3 p2, ::Vector3 p3, ::Vector3 p4) const
Get collision info between ray and quad.
static Ray GetMouse(::Vector2 mousePosition, const ::Camera &camera)
Get a ray trace from mouse position.
RayCollision GetCollision(::Vector3 center, float radius) const
Get collision information between ray and sphere.
RayCollision GetCollision(::Vector3 p1, ::Vector3 p2, ::Vector3 p3) const
Get collision info between ray and triangle.
void Draw(::Color color) const
Draw a ray line.
static Ray GetMouse(const ::Camera &camera)
Get a ray trace from mouse position.
RayCollision GetCollision(const ::Mesh &mesh, const ::Matrix &transform) const
Get collision information between ray and mesh.
RayCollision GetCollision(const ::BoundingBox &box) const
Detect collision between ray and box.