diff --git a/src/camera.rs b/src/camera.rs index 1aed8f6..acf8ff5 100644 --- a/src/camera.rs +++ b/src/camera.rs @@ -1,7 +1,7 @@ use macroquad::prelude::*; const MOVE_SPEED: f32 = 1.0; -const LOOK_SPEED: f32 = 0.1; +const LOOK_SPEED: f32 = 0.01; pub struct FirstPersonCamera { pub position: Vec3, diff --git a/src/drone.rs b/src/drone.rs index 8780f42..5430c73 100644 --- a/src/drone.rs +++ b/src/drone.rs @@ -4,6 +4,7 @@ use rapier3d::prelude as rp; use crate::engine::{ColliderExtraData, World}; pub mod controller; +pub mod fpvcontroller; use controller::*; pub struct MotorCharacteristics { @@ -17,6 +18,9 @@ impl Default for MotorCharacteristics { Self { /* * Motor position indices + * ^ - Front + * | + * | * 1 --- 0 * | | * | | @@ -125,6 +129,8 @@ impl Drone { rp::vector![0.0, -torque, 0.0] }; drone_rb.add_torque(torque, true); + println!("Torque: \n{:?}", torque); + println!("Thrust: \n{:?}", thrust); } } diff --git a/src/main.rs b/src/main.rs index 92c1e0e..c6e5581 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,7 +10,7 @@ mod rendering; mod graphics_util; -use crate::rendering::Renderer; +use crate::{drone::fpvcontroller::JoystickInput, rendering::Renderer}; fn window_conf() -> mq::Conf { mq::Conf { @@ -18,7 +18,7 @@ fn window_conf() -> mq::Conf { window_resizable: true, // fullscreen: true, platform: mq::miniquad::conf::Platform { - linux_backend: mq::miniquad::conf::LinuxBackend::WaylandOnly, + // linux_backend: mq::miniquad::conf::LinuxBackend::WaylandOnly, ..Default::default() }, ..Default::default() @@ -44,11 +44,19 @@ async fn main() { None, ); + let mut controller = drone::fpvcontroller::FPVController::default(); + controller.set_input(JoystickInput { + throttle_input: 0.25, + yaw_input: 0.0, + roll_input: 0.0, + pitch_input: 0.05, + }); let mut drone = drone::Drone::new( &mut world, - Box::new(drone::controller::DefaultController::new(1.0)), + Box::new(controller), drone::MotorCharacteristics { - max_thrust: 2.0 * 3.5 * 0.25, + max_thrust: 20.0, + max_torque: 2.0, ..Default::default() }, 0.350, @@ -76,13 +84,16 @@ async fn main() { // Physics world.step(); - drone.process_tick(&mut world); let _ = clearscreen::clear(); + drone.process_tick(&mut world); println!( "{:}", world.bodies.get(drone.rb_handle).unwrap().translation() ); - println!("{:?}", drone.controller.get_motor_throttles()); + println!( + "Motor Throttles: {:?}", + drone.controller.get_motor_throttles() + ); // Rendering renderer.draw(&mut world);