@@ 10,7 10,7 @@
#![allow(clippy::derivable_impls)]
use api::user::User;
-use bevy::prelude::*;
+use bevy::{prelude::*, input::mouse::{MouseWheel, MouseScrollUnit}};
use bevy_assets_bundler::*;
use bevy_editor_pls::EditorPlugin;
use bevy_egui::EguiPlugin;
@@ 102,7 102,7 @@ fn main() {
app.add_plugin(plugins::MenuPlugin);
app.add_plugin(plugins::GamePlugin);
- app.add_startup_system(setup);
+ app.add_startup_system(setup).add_system(move_camera);
app.run();
info!("goodbye");
@@ 117,7 117,7 @@ fn setup(mut commands: Commands) {
Camera3dBundle {
transform: Transform {
translation: Vec3::new(0., 5.5, 5.8),
- rotation: Quat::from_rotation_x(-1.0),
+ rotation: Quat::from_rotation_x(-1.2),
..Default::default()
},
..Default::default()
@@ 127,6 127,41 @@ fn setup(mut commands: Commands) {
.insert(PlayerCamera);
}
+fn move_camera(
+ time: Res<Time>,
+ input: Res<Input<KeyCode>>,
+ mut mouse_wheel_ev_r: EventReader<MouseWheel>,
+ mut camera_query: Query<(&PlayerCamera, &mut Transform)>,
+) {
+ for (_camera, mut transform) in &mut camera_query {
+ let mut direction = Vec3::ZERO;
+
+ let y_modifier = 3.;
+ for ev in mouse_wheel_ev_r.iter() {
+ match ev.unit {
+ MouseScrollUnit::Line => direction.y -= 20.0 * ev.y.signum() * y_modifier * time.delta_seconds(),
+ MouseScrollUnit::Pixel => direction.y -= ev.y * y_modifier * time.delta_seconds(),
+ }
+ }
+
+ if input.pressed(KeyCode::A) {
+ direction.x -= 1.;
+ }
+ if input.pressed(KeyCode::D) {
+ direction.x += 1.;
+ }
+ if input.pressed(KeyCode::W) {
+ direction.z -= 1.;
+ }
+ if input.pressed(KeyCode::S) {
+ direction.z += 1.;
+ }
+
+ let cam_speed = 4.;
+ transform.translation += direction * cam_speed * time.delta_seconds();
+ }
+}
+
fn editor_controls() -> bevy_editor_pls::controls::EditorControls {
use bevy_editor_pls::controls;