rscenes_raylib_connector/ext/
ray.rs1use crate::rcore::RcoreImpl;
2use crate::rmodels_collisions::RmodelsCollisionsImpl;
3use raylib_ffi::*;
4
5pub trait RayExt: Sized {
6    fn get_mouse_ray(mouse_position: Vector2, camera: Camera3D) -> Self;
8
9    fn get_collision_sphere(self, center: Vector3, radius: f32) -> RayCollision;
11    fn get_collision_box(self, box_: BoundingBox) -> RayCollision;
13    fn get_collision_mesh(self, mesh: Mesh, transform: Matrix) -> RayCollision;
15    fn get_collision_triangle(self, p1: Vector3, p2: Vector3, p3: Vector3) -> RayCollision;
17    fn get_collision_quad(self, p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3)
19        -> RayCollision;
20}
21
22impl RayExt for Ray {
23    fn get_mouse_ray(mouse_position: Vector2, camera: Camera3D) -> Self {
24        RcoreImpl::__get_mouse_ray(mouse_position, camera)
25    }
26
27    fn get_collision_sphere(self, center: Vector3, radius: f32) -> RayCollision {
28        RmodelsCollisionsImpl::__get_raycollision_sphere(self, center, radius)
29    }
30
31    fn get_collision_box(self, box_: BoundingBox) -> RayCollision {
32        RmodelsCollisionsImpl::__get_raycollision_box(self, box_)
33    }
34
35    fn get_collision_mesh(self, mesh: Mesh, transform: Matrix) -> RayCollision {
36        RmodelsCollisionsImpl::__get_raycollision_mesh(self, mesh, transform)
37    }
38
39    fn get_collision_triangle(self, p1: Vector3, p2: Vector3, p3: Vector3) -> RayCollision {
40        RmodelsCollisionsImpl::__get_raycollision_triangle(self, p1, p2, p3)
41    }
42
43    fn get_collision_quad(
44        self,
45        p1: Vector3,
46        p2: Vector3,
47        p3: Vector3,
48        p4: Vector3,
49    ) -> RayCollision {
50        RmodelsCollisionsImpl::__get_raycollision_quad(self, p1, p2, p3, p4)
51    }
52}