diff --git a/Cargo.lock b/Cargo.lock index 1d7d912..b3e3dba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -101,9 +101,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.51" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b26702f315f53b6071259e15dd9d64528213b44d61de1ec926eca7715d62203" +checksum = "84450d0b4a8bd1ba4144ce8ce718fbc5d071358b1e5384bace6536b3d1f2d5b3" [[package]] name = "approx" @@ -185,6 +185,16 @@ dependencies = [ "bevy_internal", ] +[[package]] +name = "bevy-crevice-derive" +version = "0.5.0" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "bevy_app" version = "0.5.0" @@ -262,6 +272,16 @@ dependencies = [ "bevy_render", ] +[[package]] +name = "bevy_crevice" +version = "0.5.0" +dependencies = [ + "bevy-crevice-derive", + "bytemuck", + "glam", + "mint", +] + [[package]] name = "bevy_derive" version = "0.5.0" @@ -341,7 +361,6 @@ dependencies = [ "gltf", "percent-encoding", "thiserror", - "wgpu", ] [[package]] @@ -433,7 +452,6 @@ dependencies = [ "bevy_window", "bitflags", "bytemuck", - "crevice", "wgpu", ] @@ -471,6 +489,7 @@ dependencies = [ "bevy_app", "bevy_asset", "bevy_core", + "bevy_crevice", "bevy_derive", "bevy_ecs", "bevy_math", @@ -479,7 +498,7 @@ dependencies = [ "bevy_utils", "bevy_window", "bitflags", - "crevice", + "codespan-reporting", "downcast-rs", "futures-lite", "hex", @@ -528,12 +547,10 @@ dependencies = [ "bevy_transform", "bevy_utils", "bytemuck", - "crevice", "guillotiere", "rectangle-pack", "serde", "thiserror", - "wgpu", ] [[package]] @@ -603,11 +620,9 @@ dependencies = [ "bevy_utils", "bevy_window", "bytemuck", - "crevice", "serde", "smallvec", "stretch", - "wgpu", ] [[package]] @@ -1038,25 +1053,6 @@ dependencies = [ "cfg-if 1.0.0", ] -[[package]] -name = "crevice" -version = "0.8.0" -dependencies = [ - "bytemuck", - "crevice-derive", - "glam", - "mint", -] - -[[package]] -name = "crevice-derive" -version = "0.8.0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "crossbeam-channel" version = "0.5.1" @@ -1371,6 +1367,7 @@ checksum = "9a5e5bb97bf9a0d9519a28cf38839cf1d6d9bb572b48e3c67202271fec2ed5e7" dependencies = [ "core-foundation 0.6.4", "io-kit-sys", + "js-sys", "libc", "libudev-sys", "log", @@ -1379,6 +1376,7 @@ dependencies = [ "stdweb 0.4.20", "uuid", "vec_map", + "web-sys", "winapi", ] @@ -1718,6 +1716,17 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +[[package]] +name = "lewton" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030" +dependencies = [ + "byteorder", + "ogg", + "tinyvec", +] + [[package]] name = "libc" version = "0.2.112" @@ -1824,26 +1833,6 @@ dependencies = [ "objc", ] -[[package]] -name = "minimp3" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "985438f75febf74c392071a975a29641b420dd84431135a6e6db721de4b74372" -dependencies = [ - "minimp3-sys", - "slice-deque", - "thiserror", -] - -[[package]] -name = "minimp3-sys" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e21c73734c69dc95696c9ed8926a2b393171d98b3f5f5935686a26a487ab9b90" -dependencies = [ - "cc", -] - [[package]] name = "miniz_oxide" version = "0.3.7" @@ -2130,9 +2119,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" dependencies = [ "hermit-abi", "libc", @@ -2202,6 +2191,15 @@ dependencies = [ "cc", ] +[[package]] +name = "ogg" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e" +dependencies = [ + "byteorder", +] + [[package]] name = "once_cell" version = "1.9.0" @@ -2461,7 +2459,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d98f5e557b61525057e2bc142c8cd7f0e70d75dc32852309bec440e6e046bf9" dependencies = [ "cpal", - "minimp3", + "lewton", ] [[package]] @@ -2601,17 +2599,6 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" -[[package]] -name = "slice-deque" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31ef6ee280cdefba6d2d0b4b78a84a1c1a3f3a4cec98c2d4231c8bc225de0f25" -dependencies = [ - "libc", - "mach 0.3.2", - "winapi", -] - [[package]] name = "slotmap" version = "1.0.6" @@ -2727,9 +2714,9 @@ checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" [[package]] name = "syn" -version = "1.0.82" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8daf5dd0bb60cbd4137b1b587d2fc0ae729bc07cf01cd70b36a1ed5ade3b9d59" +checksum = "23a1dfb999630e338648c83e91c59a4e9fb7620f520c3194b6b89e276f2f1959" dependencies = [ "proc-macro2", "quote", @@ -2774,6 +2761,21 @@ dependencies = [ "once_cell", ] +[[package]] +name = "tinyvec" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + [[package]] name = "toml" version = "0.5.8" @@ -2829,9 +2831,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245da694cc7fc4729f3f418b304cb57789f1bed2a78c575407ab8a23f53cb4d3" +checksum = "d5e6136799e1079699e0d9784c883e03af55cf6a1bee48fe1d79ca552c1bc36f" dependencies = [ "ansi_term", "lazy_static", diff --git a/src/flycam.rs b/src/flycam.rs index 5b87a09..5c82a62 100644 --- a/src/flycam.rs +++ b/src/flycam.rs @@ -1,6 +1,9 @@ use bevy::{ app::{Events, ManualEventReader}, - input::{mouse::MouseMotion, Input}, + input::{ + gamepad::{GamepadAxisType, GamepadEvent, GamepadEventType}, + Input, + }, prelude::*, }; @@ -8,25 +11,41 @@ use bevy::{ // git@github.com:sburris0/bevy_flycam.git, b90f6fc, which is copyright 2020 // Spencer Burris -/// Keeps track of mouse motion events, pitch, and yaw +struct PlayerState { + velocity: Vec3, +} + +impl Default for PlayerState { + fn default() -> Self { + PlayerState { + velocity: Vec3::ZERO, + } + } +} + #[derive(Default)] struct InputState { - reader_motion: ManualEventReader, + event_reader: ManualEventReader, pitch: f32, yaw: f32, + throttle: f32, } /// Mouse sensitivity and movement speed pub struct MovementSettings { pub sensitivity: f32, - pub speed: f32, + pub accel: f32, + pub drag: f32, + pub gravity: f32, } impl Default for MovementSettings { fn default() -> Self { Self { - sensitivity: 0.00012, - speed: 40., + sensitivity: 1.0, + accel: 40., + drag: 0.05, + gravity: 10.0, } } } @@ -47,34 +66,17 @@ fn setup_player(mut commands: Commands) { /// Handles keyboard input and movement fn player_move( - keys: Res>, time: Res