raylib-cpp
C++ object-oriented wrapper library for raylib.
Ray.hpp
1 #ifndef RAYLIB_CPP_INCLUDE_RAY_HPP_
2 #define RAYLIB_CPP_INCLUDE_RAY_HPP_
3 
4 #include "./raylib.hpp"
5 #include "./raylib-cpp-utils.hpp"
6 #include "./RayCollision.hpp"
7 
8 namespace raylib {
12 class Ray : public ::Ray {
13  public:
14  Ray(const ::Ray& ray) {
15  set(ray);
16  }
17 
18  Ray(::Vector3 position, ::Vector3 direction = {0.0f, 0.0f, 0.0f}) : ::Ray{position, direction} {
19  // Nothing.
20  }
21 
22  Ray(::Vector2 mousePosition, ::Camera camera) {
23  set(::GetMouseRay(mousePosition, camera));
24  }
25 
26  Ray& operator=(const ::Ray& ray) {
27  set(ray);
28  return *this;
29  }
30 
31  GETTERSETTER(::Vector3, Position, position)
32  GETTERSETTER(::Vector3, Direction, direction)
33 
37  inline Ray& Draw(::Color color) {
38  DrawRay(*this, color);
39  return *this;
40  }
41 
45  inline bool CheckCollisionSphere(::Vector3 center, float radius) const {
46  return GetRayCollisionSphere(*this, center, radius).hit;
47  }
48 
52  inline RayCollision GetCollision(::Vector3 center, float radius) const {
53  return GetRayCollisionSphere(*this, center, radius);
54  }
55 
59  inline bool CheckCollision(const ::BoundingBox& box) const {
60  return GetRayCollisionBox(*this, box).hit;
61  }
62 
66  inline RayCollision GetCollision(const ::Model& model) const {
67  return GetRayCollisionModel(*this, model);
68  }
69 
73  inline RayCollision GetCollision(const ::Mesh& mesh, const ::Matrix& transform) const {
74  return GetRayCollisionMesh(*this, mesh, transform);
75  }
76 
80  inline RayCollision GetCollision(::Vector3 p1, ::Vector3 p2, ::Vector3 p3) const {
81  return GetRayCollisionTriangle(*this, p1, p2, p3);
82  }
83 
87  inline RayCollision GetCollision(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4) const {
88  return GetRayCollisionQuad(*this, p1, p2, p3, p4);
89  }
90 
91  private:
92  inline void set(const ::Ray& ray) {
93  position = ray.position;
94  direction = ray.direction;
95  }
96 };
97 } // namespace raylib
98 
99 #endif // RAYLIB_CPP_INCLUDE_RAY_HPP_
raylib::Ray::Draw
Ray & Draw(::Color color)
Draw a ray line.
Definition: Ray.hpp:37
raylib
All raylib-cpp classes and functions appear in the raylib namespace.
Definition: AudioDevice.hpp:8
raylib::Ray::CheckCollision
bool CheckCollision(const ::BoundingBox &box) const
Detect collision between ray and box.
Definition: Ray.hpp:59
raylib::Ray
Ray type (useful for raycast)
Definition: Ray.hpp:12
raylib::Ray::CheckCollisionSphere
bool CheckCollisionSphere(::Vector3 center, float radius) const
Detect collision between ray and sphere.
Definition: Ray.hpp:45
raylib::Ray::GetCollision
RayCollision GetCollision(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4) const
Get collision info between ray and quad.
Definition: Ray.hpp:87
raylib::RayCollision
Raycast hit information.
Definition: RayCollision.hpp:11
raylib::Ray::GetCollision
RayCollision GetCollision(::Vector3 p1, ::Vector3 p2, ::Vector3 p3) const
Get collision info between ray and triangle.
Definition: Ray.hpp:80
raylib::Ray::GetCollision
RayCollision GetCollision(const ::Mesh &mesh, const ::Matrix &transform) const
Get collision information between ray and mesh.
Definition: Ray.hpp:73
raylib::Vector3
Vector3 type.
Definition: Vector3.hpp:16
raylib::Ray::GetCollision
RayCollision GetCollision(::Vector3 center, float radius) const
Get collision information between ray and sphere.
Definition: Ray.hpp:52
raylib::Camera3D
Camera type, defines a camera position/orientation in 3d space.
Definition: Camera3D.hpp:12
raylib::Vector2
Vector2 type.
Definition: Vector2.hpp:16
raylib::Ray::GetCollision
RayCollision GetCollision(const ::Model &model) const
Get collision info between ray and model.
Definition: Ray.hpp:66
raylib::Color
Color type, RGBA (32bit)
Definition: Color.hpp:14