Skip to content

Commit

Permalink
reorganize code in camera module
Browse files Browse the repository at this point in the history
  • Loading branch information
eztaah committed Sep 28, 2024
1 parent f0c6784 commit e94aac2
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 38 deletions.
39 changes: 1 addition & 38 deletions src/camera/controller.rs
Original file line number Diff line number Diff line change
@@ -1,46 +1,9 @@
use crate::camera::CameraController;
use crate::ui::UIMode;
use crate::{player, Player};
use bevy::input::mouse::MouseMotion;
use bevy::prelude::*;
use bevy::window::PrimaryWindow;
use bevy_mod_raycast::prelude::*;

#[derive(TypePath)]
pub struct BlockRaycastSet;

#[derive(Component)]
pub struct CameraController {
distance: f32,
angle_x: f32,
angle_y: f32,
mouse_sensitivity: f32,
}

impl Default for CameraController {
fn default() -> Self {
Self {
distance: 10.0,
angle_x: 0.0,
angle_y: 20.0f32.to_radians(),
mouse_sensitivity: 0.003,
}
}
}

pub fn spawn_camera(mut commands: Commands) {
commands
.spawn(Camera3dBundle {
transform: Transform::from_translation(Vec3::new(0.0, 5.0, 10.0))
.looking_at(Vec3::new(0.0, 0.5, 0.0), Vec3::Y),
..Default::default()
})
.insert(CameraController::default()) // Ajoute le CameraController
.insert({
let mut raycast_source = RaycastSource::<BlockRaycastSet>::default(); // Initialisation par défaut
raycast_source.cast_method = RaycastMethod::Transform; // Utilise la transformation de la caméra pour lancer le rayon
raycast_source // Retourne l'objet
});
}

// System to control the camera based on mouse movement
pub fn camera_control_system(
Expand Down
2 changes: 2 additions & 0 deletions src/camera/mod.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
mod controller;
mod spawn;

pub use controller::*;
pub use spawn::*;
39 changes: 39 additions & 0 deletions src/camera/spawn.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
use bevy::prelude::*;
use bevy_mod_raycast::prelude::*;

#[derive(TypePath)]
pub struct BlockRaycastSet;

#[derive(Component)]
pub struct CameraController {
pub distance: f32,
pub angle_x: f32,
pub angle_y: f32,
pub mouse_sensitivity: f32,
}

impl Default for CameraController {
fn default() -> Self {
Self {
distance: 10.0,
angle_x: 0.0,
angle_y: 20.0f32.to_radians(),
mouse_sensitivity: 0.003,
}
}
}

pub fn spawn_camera(mut commands: Commands) {
commands
.spawn(Camera3dBundle {
transform: Transform::from_translation(Vec3::new(0.0, 5.0, 10.0))
.looking_at(Vec3::new(0.0, 0.5, 0.0), Vec3::Y),
..Default::default()
})
.insert(CameraController::default()) // Ajoute le CameraController
.insert({
let mut raycast_source = RaycastSource::<BlockRaycastSet>::default(); // Initialisation par défaut
raycast_source.cast_method = RaycastMethod::Transform; // Utilise la transformation de la caméra pour lancer le rayon
raycast_source // Retourne l'objet
});
}

0 comments on commit e94aac2

Please sign in to comment.