rscenes_raylib_connector/
rcamera.rs

1use raylib_ffi::{enums::CameraMode, *};
2use std::fmt::Debug;
3
4#[derive(Clone, Copy, Debug, Default)]
5pub(crate) struct RcameraImpl;
6
7/// Crate only methods
8impl RcameraImpl {
9    pub fn __update_camera(camera: &mut Camera3D, mode: impl Into<usize>) {
10        unsafe { UpdateCamera(camera, mode.into() as i32) }
11    }
12
13    pub fn __update_camera_pro(
14        camera: &mut Camera3D,
15        movement: Vector3,
16        rotation: Vector3,
17        zoom: f32,
18    ) {
19        unsafe { UpdateCameraPro(camera, movement, rotation, zoom) }
20    }
21}
22
23/// Exported methods
24pub trait Rcamera: Debug {
25    /// Update camera position for selected mode
26    fn update_camera(&self, camera: &mut Camera3D, mode: CameraMode) {
27        RcameraImpl::__update_camera(camera, mode as usize)
28    }
29
30    /// Update camera movement/rotation
31    fn update_camera_pro(
32        &self,
33        camera: &mut Camera3D,
34        movement: Vector3,
35        rotation: Vector3,
36        zoom: f32,
37    ) {
38        RcameraImpl::__update_camera_pro(camera, movement, rotation, zoom)
39    }
40}