feat: update to bevy 13.2; rework input collection system
This commit is contained in:
Generated
+337
-121
@@ -337,20 +337,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1c3efee9165f9be9c6a180c6a9bbb4bd39ee0a98a594f4cb7127704e15415cdd"
|
||||
dependencies = [
|
||||
"bevy-inspector-egui-derive",
|
||||
"bevy_app",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_asset",
|
||||
"bevy_core",
|
||||
"bevy_core_pipeline",
|
||||
"bevy_ecs",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_egui",
|
||||
"bevy_hierarchy",
|
||||
"bevy_log",
|
||||
"bevy_math",
|
||||
"bevy_math 0.12.1",
|
||||
"bevy_pbr",
|
||||
"bevy_reflect",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_render",
|
||||
"bevy_time",
|
||||
"bevy_utils",
|
||||
"bevy_utils 0.12.1",
|
||||
"bevy_window",
|
||||
"egui",
|
||||
"image",
|
||||
@@ -377,9 +377,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "68080288c932634f6563d3a8299efe0ddc9ea6787539c4c771ba250d089a94f0"
|
||||
dependencies = [
|
||||
"accesskit",
|
||||
"bevy_app",
|
||||
"bevy_derive",
|
||||
"bevy_ecs",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_derive 0.12.1",
|
||||
"bevy_ecs 0.12.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -388,11 +388,27 @@ version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d41731817993f92e4363dd3335558e779e290bc71eefc0b5547052b85810907e"
|
||||
dependencies = [
|
||||
"bevy_derive",
|
||||
"bevy_ecs",
|
||||
"bevy_reflect",
|
||||
"bevy_tasks",
|
||||
"bevy_utils",
|
||||
"bevy_derive 0.12.1",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_tasks 0.12.1",
|
||||
"bevy_utils 0.12.1",
|
||||
"downcast-rs",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_app"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ab348a32e46d21c5d61794294a92d415a770d26c7ba8951830b127b40b53ccc4"
|
||||
dependencies = [
|
||||
"bevy_derive 0.13.2",
|
||||
"bevy_ecs 0.13.2",
|
||||
"bevy_reflect 0.13.2",
|
||||
"bevy_tasks 0.13.2",
|
||||
"bevy_utils 0.13.2",
|
||||
"downcast-rs",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
@@ -407,13 +423,13 @@ dependencies = [
|
||||
"async-broadcast",
|
||||
"async-fs",
|
||||
"async-lock 2.8.0",
|
||||
"bevy_app",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_asset_macros",
|
||||
"bevy_ecs",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_log",
|
||||
"bevy_reflect",
|
||||
"bevy_tasks",
|
||||
"bevy_utils",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_tasks 0.12.1",
|
||||
"bevy_utils 0.12.1",
|
||||
"bevy_winit",
|
||||
"blake3",
|
||||
"crossbeam-channel",
|
||||
@@ -436,7 +452,7 @@ version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3f48b9bbe4ec605e4910b5cd1e1a0acbfbe0b80af5f3bcc4489a9fdd1e80058c"
|
||||
dependencies = [
|
||||
"bevy_macro_utils",
|
||||
"bevy_macro_utils 0.12.1",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
@@ -447,13 +463,13 @@ name = "bevy_controls"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"bevy-inspector-egui",
|
||||
"bevy_app",
|
||||
"bevy_app 0.13.2",
|
||||
"bevy_controls_macros",
|
||||
"bevy_derive",
|
||||
"bevy_ecs",
|
||||
"bevy_input",
|
||||
"bevy_reflect",
|
||||
"bevy_utils",
|
||||
"bevy_derive 0.13.2",
|
||||
"bevy_ecs 0.13.2",
|
||||
"bevy_input 0.13.2",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_utils 0.12.1",
|
||||
"env_logger",
|
||||
"log",
|
||||
"serde",
|
||||
@@ -486,12 +502,12 @@ version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3daa24502a14839509f02407bc7e48299fe84d260877de23b60662de0f4f4b6c"
|
||||
dependencies = [
|
||||
"bevy_app",
|
||||
"bevy_ecs",
|
||||
"bevy_math",
|
||||
"bevy_reflect",
|
||||
"bevy_tasks",
|
||||
"bevy_utils",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_math 0.12.1",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_tasks 0.12.1",
|
||||
"bevy_utils 0.12.1",
|
||||
"bytemuck",
|
||||
]
|
||||
|
||||
@@ -501,17 +517,17 @@ version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b4b77c4fca6e90edbe2e72da7bc9aa7aed7dfdfded0920ae0a0c845f5e11084a"
|
||||
dependencies = [
|
||||
"bevy_app",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_asset",
|
||||
"bevy_core",
|
||||
"bevy_derive",
|
||||
"bevy_ecs",
|
||||
"bevy_derive 0.12.1",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_log",
|
||||
"bevy_math",
|
||||
"bevy_reflect",
|
||||
"bevy_math 0.12.1",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_render",
|
||||
"bevy_transform",
|
||||
"bevy_utils",
|
||||
"bevy_utils 0.12.1",
|
||||
"bitflags 2.4.1",
|
||||
"radsort",
|
||||
"serde",
|
||||
@@ -523,7 +539,18 @@ version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f484318350462c58ba3942a45a656c1fd6b6e484a6b6b7abc3a787ad1a51e500"
|
||||
dependencies = [
|
||||
"bevy_macro_utils",
|
||||
"bevy_macro_utils 0.12.1",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_derive"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f0e01f8343f391e2d6a63b368b82fb5b252ed43c8713fc87f9a8f2d59407dd00"
|
||||
dependencies = [
|
||||
"bevy_macro_utils 0.13.2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
@@ -534,12 +561,12 @@ version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fa38ca5967d335cc1006a0e0f1a86c350e2f15fd1878449f61d04cd57a7c4060"
|
||||
dependencies = [
|
||||
"bevy_app",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_core",
|
||||
"bevy_ecs",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_log",
|
||||
"bevy_time",
|
||||
"bevy_utils",
|
||||
"bevy_utils 0.12.1",
|
||||
"sysinfo",
|
||||
]
|
||||
|
||||
@@ -550,11 +577,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7709fbd22f81fb681534cd913c41e1cd18b17143368743281195d7f024b61aea"
|
||||
dependencies = [
|
||||
"async-channel 1.9.0",
|
||||
"bevy_ecs_macros",
|
||||
"bevy_ptr",
|
||||
"bevy_reflect",
|
||||
"bevy_tasks",
|
||||
"bevy_utils",
|
||||
"bevy_ecs_macros 0.12.1",
|
||||
"bevy_ptr 0.12.1",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_tasks 0.12.1",
|
||||
"bevy_utils 0.12.1",
|
||||
"downcast-rs",
|
||||
"event-listener 2.5.3",
|
||||
"fixedbitset",
|
||||
@@ -564,13 +591,45 @@ dependencies = [
|
||||
"thread_local",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_ecs"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "98e612a8e7962ead849e370f3a7e972b88df879ced05cd9dad6a0286d14650cf"
|
||||
dependencies = [
|
||||
"async-channel 2.1.1",
|
||||
"bevy_ecs_macros 0.13.2",
|
||||
"bevy_ptr 0.13.2",
|
||||
"bevy_reflect 0.13.2",
|
||||
"bevy_tasks 0.13.2",
|
||||
"bevy_utils 0.13.2",
|
||||
"downcast-rs",
|
||||
"fixedbitset",
|
||||
"rustc-hash",
|
||||
"serde",
|
||||
"thiserror",
|
||||
"thread_local",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_ecs_macros"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a8843aa489f159f25cdcd9fee75cd7d221a7098a71eaa72cb2d6b40ac4e3f1ba"
|
||||
dependencies = [
|
||||
"bevy_macro_utils",
|
||||
"bevy_macro_utils 0.12.1",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_ecs_macros"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "807b5106c3410e58f4f523b55ea3c071e2a09e31e9510f3c22021c6a04732b5b"
|
||||
dependencies = [
|
||||
"bevy_macro_utils 0.13.2",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
@@ -595,7 +654,7 @@ version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5328a3715e933ebbff07d0e99528dc423c4f7a53590ed1ac19a120348b028990"
|
||||
dependencies = [
|
||||
"bevy_macro_utils",
|
||||
"bevy_macro_utils 0.12.1",
|
||||
"encase_derive_impl",
|
||||
]
|
||||
|
||||
@@ -605,12 +664,12 @@ version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "06bd477152ce2ae1430f5e0a4f19216e5785c22fee1ab23788b5982dc59d1a55"
|
||||
dependencies = [
|
||||
"bevy_app",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_core",
|
||||
"bevy_ecs",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_log",
|
||||
"bevy_reflect",
|
||||
"bevy_utils",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_utils 0.12.1",
|
||||
"smallvec",
|
||||
]
|
||||
|
||||
@@ -620,12 +679,27 @@ version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cab9a599189b2a694c182d60cd52219dd9364f9892ff542d87799b8e45d9e6dc"
|
||||
dependencies = [
|
||||
"bevy_app",
|
||||
"bevy_ecs",
|
||||
"bevy_math",
|
||||
"bevy_reflect",
|
||||
"bevy_utils",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_math 0.12.1",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_utils 0.12.1",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_input"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "47f2b2b3df168c6ef661d25e09abf5bd4fecaacd400f27e5db650df1c3fa3a3b"
|
||||
dependencies = [
|
||||
"bevy_app 0.13.2",
|
||||
"bevy_ecs 0.13.2",
|
||||
"bevy_math 0.13.2",
|
||||
"bevy_reflect 0.13.2",
|
||||
"bevy_utils 0.13.2",
|
||||
"serde",
|
||||
"smol_str",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
@@ -636,24 +710,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f124bece9831afd80897815231072d51bfe3ac58c6bb58eca8880963b6d0487c"
|
||||
dependencies = [
|
||||
"bevy_a11y",
|
||||
"bevy_app",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_asset",
|
||||
"bevy_core",
|
||||
"bevy_derive",
|
||||
"bevy_derive 0.12.1",
|
||||
"bevy_diagnostic",
|
||||
"bevy_ecs",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_hierarchy",
|
||||
"bevy_input",
|
||||
"bevy_input 0.12.1",
|
||||
"bevy_log",
|
||||
"bevy_math",
|
||||
"bevy_ptr",
|
||||
"bevy_reflect",
|
||||
"bevy_math 0.12.1",
|
||||
"bevy_ptr 0.12.1",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_render",
|
||||
"bevy_scene",
|
||||
"bevy_tasks",
|
||||
"bevy_tasks 0.12.1",
|
||||
"bevy_time",
|
||||
"bevy_transform",
|
||||
"bevy_utils",
|
||||
"bevy_utils 0.12.1",
|
||||
"bevy_window",
|
||||
]
|
||||
|
||||
@@ -664,9 +738,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0dc10ba1d225a8477b9e80a1bf797d8a8b8274e83c9b24fb4d9351aec9229755"
|
||||
dependencies = [
|
||||
"android_log-sys",
|
||||
"bevy_app",
|
||||
"bevy_ecs",
|
||||
"bevy_utils",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_utils 0.12.1",
|
||||
"console_error_panic_hook",
|
||||
"tracing-log 0.1.4",
|
||||
"tracing-subscriber",
|
||||
@@ -686,23 +760,45 @@ dependencies = [
|
||||
"toml_edit 0.20.7",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_macro_utils"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eb270c98a96243b29465139ed10bda2f675d00a11904f6588a5f7fc4774119c7"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"rustc-hash",
|
||||
"syn 2.0.48",
|
||||
"toml_edit 0.21.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_math"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "58ddc2b76783939c530178f88e5711a1b01044d7b02db4033e2eb8b43b6cf4ec"
|
||||
dependencies = [
|
||||
"glam",
|
||||
"glam 0.24.2",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_math"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f06daa26ffb82d90ba772256c0ba286f6c305c392f6976c9822717974805837c"
|
||||
dependencies = [
|
||||
"glam 0.25.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_mikktspace"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ec4962977a746d870170532fc92759e04d3dbcae8b7b82e7ca3bb83b1d75277"
|
||||
dependencies = [
|
||||
"glam",
|
||||
"glam 0.24.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -711,16 +807,16 @@ version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "520bfd2a898c74f84ea52cfb8eb061f37373ad15e623489d5f75d27ebd6138fe"
|
||||
dependencies = [
|
||||
"bevy_app",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_asset",
|
||||
"bevy_core_pipeline",
|
||||
"bevy_derive",
|
||||
"bevy_ecs",
|
||||
"bevy_math",
|
||||
"bevy_reflect",
|
||||
"bevy_derive 0.12.1",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_math 0.12.1",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_render",
|
||||
"bevy_transform",
|
||||
"bevy_utils",
|
||||
"bevy_utils 0.12.1",
|
||||
"bevy_window",
|
||||
"bitflags 2.4.1",
|
||||
"bytemuck",
|
||||
@@ -737,32 +833,68 @@ version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c77ec20c8fafcdc196508ef5ccb4f0400a8d193cb61f7b14a36ed9a25ad423cf"
|
||||
|
||||
[[package]]
|
||||
name = "bevy_ptr"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8050e2869fe341db6874203b5a01ff12673807a2c7c80cb829f6c7bea6997268"
|
||||
|
||||
[[package]]
|
||||
name = "bevy_reflect"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d7921f15fc944c9c8ad01d7dbcea6505b8909c6655cd9382bab1407181556038"
|
||||
dependencies = [
|
||||
"bevy_math",
|
||||
"bevy_ptr",
|
||||
"bevy_reflect_derive",
|
||||
"bevy_utils",
|
||||
"bevy_math 0.12.1",
|
||||
"bevy_ptr 0.12.1",
|
||||
"bevy_reflect_derive 0.12.1",
|
||||
"bevy_utils 0.12.1",
|
||||
"downcast-rs",
|
||||
"erased-serde",
|
||||
"glam",
|
||||
"erased-serde 0.3.31",
|
||||
"glam 0.24.2",
|
||||
"serde",
|
||||
"smallvec",
|
||||
"smol_str",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_reflect"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ccbd7de21d586457a340a0962ad0747dc5098ff925eb6b27a918c4bdd8252f7b"
|
||||
dependencies = [
|
||||
"bevy_ptr 0.13.2",
|
||||
"bevy_reflect_derive 0.13.2",
|
||||
"bevy_utils 0.13.2",
|
||||
"downcast-rs",
|
||||
"erased-serde 0.4.4",
|
||||
"glam 0.25.0",
|
||||
"serde",
|
||||
"smol_str",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_reflect_derive"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b4a8c5475f216e751ef4452a1306b00711f33d2d04d9f149e4c845dfeb6753a0"
|
||||
dependencies = [
|
||||
"bevy_macro_utils",
|
||||
"bevy_macro_utils 0.12.1",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_reflect_derive"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3ce33051bd49036d4a5a62aa3f2068672ec55f3ebe92aa0d003a341f15cc37ac"
|
||||
dependencies = [
|
||||
"bevy_macro_utils 0.13.2",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
@@ -776,22 +908,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bdefdd3737125b0d94a6ff20bb70fa8cfe9d7d5dcd72ba4dfe6c5f1d30d9f6e4"
|
||||
dependencies = [
|
||||
"async-channel 1.9.0",
|
||||
"bevy_app",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_asset",
|
||||
"bevy_core",
|
||||
"bevy_derive",
|
||||
"bevy_ecs",
|
||||
"bevy_derive 0.12.1",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_encase_derive",
|
||||
"bevy_hierarchy",
|
||||
"bevy_log",
|
||||
"bevy_math",
|
||||
"bevy_math 0.12.1",
|
||||
"bevy_mikktspace",
|
||||
"bevy_reflect",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_render_macros",
|
||||
"bevy_tasks",
|
||||
"bevy_tasks 0.12.1",
|
||||
"bevy_time",
|
||||
"bevy_transform",
|
||||
"bevy_utils",
|
||||
"bevy_utils 0.12.1",
|
||||
"bevy_window",
|
||||
"bitflags 2.4.1",
|
||||
"bytemuck",
|
||||
@@ -819,7 +951,7 @@ version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "64d86bfc5a1e7fbeeaec0c4ceab18155530f5506624670965db3415f75826bea"
|
||||
dependencies = [
|
||||
"bevy_macro_utils",
|
||||
"bevy_macro_utils 0.12.1",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
@@ -831,15 +963,15 @@ version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7df078b5e406e37c8a1c6ba0d652bf105fde713ce3c3efda7263fe27467eee5"
|
||||
dependencies = [
|
||||
"bevy_app",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_asset",
|
||||
"bevy_derive",
|
||||
"bevy_ecs",
|
||||
"bevy_derive 0.12.1",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_hierarchy",
|
||||
"bevy_reflect",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_render",
|
||||
"bevy_transform",
|
||||
"bevy_utils",
|
||||
"bevy_utils 0.12.1",
|
||||
"ron",
|
||||
"serde",
|
||||
"thiserror",
|
||||
@@ -860,16 +992,30 @@ dependencies = [
|
||||
"wasm-bindgen-futures",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_tasks"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f07fcc4969b357de143509925b39c9a2c56eaa8750828d97f319ca9ed41897cb"
|
||||
dependencies = [
|
||||
"async-channel 2.1.1",
|
||||
"async-executor",
|
||||
"async-task",
|
||||
"concurrent-queue",
|
||||
"futures-lite 2.1.0",
|
||||
"wasm-bindgen-futures",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_time"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e6250d76eed3077128b6a3d004f9f198b01107800b9824051e32bb658054e837"
|
||||
dependencies = [
|
||||
"bevy_app",
|
||||
"bevy_ecs",
|
||||
"bevy_reflect",
|
||||
"bevy_utils",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_utils 0.12.1",
|
||||
"crossbeam-channel",
|
||||
"thiserror",
|
||||
]
|
||||
@@ -880,11 +1026,11 @@ version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d541e0c292edbd96afae816ee680e02247422423ccd5dc635c1e211a20ed64be"
|
||||
dependencies = [
|
||||
"bevy_app",
|
||||
"bevy_ecs",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_hierarchy",
|
||||
"bevy_math",
|
||||
"bevy_reflect",
|
||||
"bevy_math 0.12.1",
|
||||
"bevy_reflect 0.12.1",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
@@ -895,7 +1041,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7915222f4a08ccc782e08d10b751b42e5f9d786e697d0cb3fd09333cb7e8b6ea"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"bevy_utils_proc_macros",
|
||||
"bevy_utils_proc_macros 0.12.1",
|
||||
"getrandom",
|
||||
"hashbrown 0.14.3",
|
||||
"instant",
|
||||
@@ -906,6 +1052,25 @@ dependencies = [
|
||||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_utils"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5a9f845a985c00e0ee8dc2d8af3f417be925fb52aad4bda5b96e2e58a2b4d2eb"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"bevy_utils_proc_macros 0.13.2",
|
||||
"getrandom",
|
||||
"hashbrown 0.14.3",
|
||||
"nonmax",
|
||||
"petgraph",
|
||||
"smallvec",
|
||||
"thiserror",
|
||||
"tracing",
|
||||
"uuid",
|
||||
"web-time",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_utils_proc_macros"
|
||||
version = "0.12.1"
|
||||
@@ -917,6 +1082,17 @@ dependencies = [
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_utils_proc_macros"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bef158627f30503d5c18c20c60b444829f698d343516eeaf6eeee078c9a45163"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bevy_window"
|
||||
version = "0.12.1"
|
||||
@@ -924,12 +1100,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "41ee72bf7f974000e9b31bb971a89387f1432ba9413f35c4fef59fef49767260"
|
||||
dependencies = [
|
||||
"bevy_a11y",
|
||||
"bevy_app",
|
||||
"bevy_ecs",
|
||||
"bevy_input",
|
||||
"bevy_math",
|
||||
"bevy_reflect",
|
||||
"bevy_utils",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_input 0.12.1",
|
||||
"bevy_math 0.12.1",
|
||||
"bevy_reflect 0.12.1",
|
||||
"bevy_utils 0.12.1",
|
||||
"raw-window-handle",
|
||||
]
|
||||
|
||||
@@ -942,14 +1118,14 @@ dependencies = [
|
||||
"accesskit_winit",
|
||||
"approx",
|
||||
"bevy_a11y",
|
||||
"bevy_app",
|
||||
"bevy_derive",
|
||||
"bevy_ecs",
|
||||
"bevy_app 0.12.1",
|
||||
"bevy_derive 0.12.1",
|
||||
"bevy_ecs 0.12.1",
|
||||
"bevy_hierarchy",
|
||||
"bevy_input",
|
||||
"bevy_math",
|
||||
"bevy_tasks",
|
||||
"bevy_utils",
|
||||
"bevy_input 0.12.1",
|
||||
"bevy_math 0.12.1",
|
||||
"bevy_tasks 0.12.1",
|
||||
"bevy_utils 0.12.1",
|
||||
"bevy_window",
|
||||
"crossbeam-channel",
|
||||
"raw-window-handle",
|
||||
@@ -1331,7 +1507,7 @@ checksum = "8fce2eeef77fd4a293a54b62aa00ac9daebfbcda4bf8998c5a815635b004aa1c"
|
||||
dependencies = [
|
||||
"const_panic",
|
||||
"encase_derive",
|
||||
"glam",
|
||||
"glam 0.24.2",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
@@ -1398,6 +1574,15 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "erased-serde"
|
||||
version = "0.4.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2b73807008a3c7f171cc40312f37d95ef0396e048b5848d775f54b1a4dd4a0d3"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "errno"
|
||||
version = "0.3.8"
|
||||
@@ -1615,6 +1800,16 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "glam"
|
||||
version = "0.25.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3"
|
||||
dependencies = [
|
||||
"bytemuck",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "glow"
|
||||
version = "0.12.3"
|
||||
@@ -1730,7 +1925,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7cb3df16a7bcb1b5bc092abd55e14f77ca70aea14445026e264586fc62889a10"
|
||||
dependencies = [
|
||||
"constgebra",
|
||||
"glam",
|
||||
"glam 0.24.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2818,6 +3013,17 @@ dependencies = [
|
||||
"winnow",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml_edit"
|
||||
version = "0.21.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
|
||||
dependencies = [
|
||||
"indexmap 2.1.0",
|
||||
"toml_datetime",
|
||||
"winnow",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing"
|
||||
version = "0.1.40"
|
||||
@@ -3082,6 +3288,16 @@ dependencies = [
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "web-time"
|
||||
version = "0.2.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "webbrowser"
|
||||
version = "0.8.12"
|
||||
|
||||
@@ -11,10 +11,10 @@ inspector-egui = ["reflect", "dep:bevy-inspector-egui"]
|
||||
|
||||
[dependencies]
|
||||
bevy-inspector-egui = { version = "0.22.1", optional = true }
|
||||
bevy_app = "0.12.1"
|
||||
bevy_derive = "0.12.1"
|
||||
bevy_ecs = "0.12.1"
|
||||
bevy_input = "0.12.1"
|
||||
bevy_app = "0.13.2"
|
||||
bevy_derive = "0.13.2"
|
||||
bevy_ecs = "0.13.2"
|
||||
bevy_input = "0.13.2"
|
||||
bevy_reflect = { version = "0.12.1", optional = true }
|
||||
bevy_utils = "0.12.1"
|
||||
log = "0.4.20"
|
||||
|
||||
+801
-557
File diff suppressed because it is too large
Load Diff
@@ -12,7 +12,7 @@ wayland = ["bevy/wayland"]
|
||||
windows = ["bevy/bevy_winit"]
|
||||
|
||||
[dependencies]
|
||||
bevy = { version = "0.12.1", default-features = false, features = [
|
||||
bevy = { version = "0.13.2", default-features = false, features = [
|
||||
"bevy_asset",
|
||||
"bevy_text",
|
||||
"bevy_ui",
|
||||
|
||||
+9
-9
@@ -5,11 +5,11 @@
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1705309234,
|
||||
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -20,11 +20,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1707092692,
|
||||
"narHash": "sha256-ZbHsm+mGk/izkWtT4xwwqz38fdlwu7nUUKXTOmm4SyE=",
|
||||
"lastModified": 1712163089,
|
||||
"narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "faf912b086576fd1a15fca610166c98d47bc667e",
|
||||
"rev": "fd281bd6b7d3e32ddfa399853946f782553163b5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -51,11 +51,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1707358215,
|
||||
"narHash": "sha256-Nuhi8KEJ2e+2nTimSyEIPqN5eh7ECVWd+AnPXG6L+SY=",
|
||||
"lastModified": 1712196778,
|
||||
"narHash": "sha256-SOiwCr2HtmYpw8OvQQVRPtiCBWwndbIoPqtsamZK3J8=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "dd917bb1b67fc049fd56fe6de70266a9ab74a4aa",
|
||||
"rev": "20e7895d1873cc64c14a9f024a8e04f5824bed28",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
[toolchain]
|
||||
channel = '1.72.0'
|
||||
channel = '1.76.0'
|
||||
|
||||
@@ -11,7 +11,7 @@ use bevy_controls::{
|
||||
plugin::ControlsPlugin,
|
||||
resource::{
|
||||
ActivationMode, ActivationOptions, Binding, BindingCondition, BindingConfig, Bindings,
|
||||
ButtonCombination, Controls, InputType, InputValue, Keyboard, OptionsMode, PlayerInputs,
|
||||
ButtonCombination, Controls, InputType, InputValue, OptionsMode, PlayerActions,
|
||||
},
|
||||
};
|
||||
use bevy_controls_derive::{Action, GameState};
|
||||
@@ -37,19 +37,19 @@ enum MyGameState {
|
||||
#[derive(Resource, Default, Clone, Debug)]
|
||||
struct MyInputsContainer {
|
||||
// When the game does not provide multiplayer, one field is enough
|
||||
player_inputs: PlayerInputs<MyAction>,
|
||||
player_inputs: PlayerActions<MyAction>,
|
||||
}
|
||||
|
||||
impl InputsContainer<MyAction> for MyInputsContainer {
|
||||
fn iter_inputs<'a>(&'a self) -> Box<dyn Iterator<Item = &'a PlayerInputs<MyAction>> + 'a> {
|
||||
fn iter_inputs<'a>(&'a self) -> Box<dyn Iterator<Item = &'a PlayerActions<MyAction>> + 'a> {
|
||||
todo!()
|
||||
}
|
||||
|
||||
fn me<'a>(&'a self) -> Option<&'a PlayerInputs<MyAction>> {
|
||||
Some(&self.player_inputs)
|
||||
fn me<'a>(&'a self) -> Option<&'a PlayerActions<MyAction>> {
|
||||
Some(&self.player_inputs)
|
||||
}
|
||||
|
||||
fn me_mut<'a>(&'a mut self) -> Option<&'a mut PlayerInputs<MyAction>> {
|
||||
fn me_mut<'a>(&'a mut self) -> Option<&'a mut PlayerActions<MyAction>> {
|
||||
Some(&mut self.player_inputs)
|
||||
}
|
||||
}
|
||||
@@ -78,12 +78,7 @@ fn main() {
|
||||
BindingConfig::new(Bindings::new(vec![
|
||||
// this way input will work only on latin layout only on `A`, because it uses `Keyboard::KeyCode`
|
||||
Binding::new(ButtonCombination::Single(InputType::Keyboard(
|
||||
Keyboard::KeyCode(KeyCode::A),
|
||||
))),
|
||||
// this way input will work only on any layout on same button, 35 is `H` for `us` layout or
|
||||
// `О` for `ru` layout, because it uses `Keyboard::ScanCode`
|
||||
Binding::new(ButtonCombination::Single(InputType::Keyboard(
|
||||
Keyboard::ScanCode(ScanCode(35)),
|
||||
KeyCode::KeyA,
|
||||
)))
|
||||
.with_condition(BindingCondition::InGameState(MyGameState::InGame)),
|
||||
]))
|
||||
@@ -94,37 +89,32 @@ fn main() {
|
||||
// the rest will be simplified
|
||||
.with(
|
||||
MyAction::Back,
|
||||
BindingConfig::from_vec(vec![
|
||||
Binding::from_single(InputType::from_key_code(KeyCode::S)),
|
||||
Binding::from_single(InputType::from_scan_code(ScanCode(36))),
|
||||
]),
|
||||
BindingConfig::from_vec(vec![Binding::from_single(InputType::Keyboard(
|
||||
KeyCode::KeyS,
|
||||
))]),
|
||||
)
|
||||
.with(
|
||||
MyAction::Forward,
|
||||
BindingConfig::from_vec(vec![
|
||||
Binding::from_single(InputType::from_key_code(KeyCode::W)),
|
||||
Binding::from_single(InputType::from_scan_code(ScanCode(37))),
|
||||
]),
|
||||
BindingConfig::from_vec(vec![Binding::from_single(InputType::Keyboard(
|
||||
KeyCode::KeyW,
|
||||
))]),
|
||||
)
|
||||
.with(
|
||||
MyAction::Right,
|
||||
BindingConfig::from_vec(vec![
|
||||
Binding::from_single(InputType::from_key_code(KeyCode::D)),
|
||||
Binding::from_single(InputType::from_scan_code(ScanCode(38))),
|
||||
]),
|
||||
BindingConfig::from_vec(vec![Binding::from_single(InputType::Keyboard(
|
||||
KeyCode::KeyD,
|
||||
))]),
|
||||
)
|
||||
.with(
|
||||
MyAction::Up,
|
||||
BindingConfig::from_bind(Binding::from_single(InputType::from_key_code(
|
||||
KeyCode::Space,
|
||||
))),
|
||||
BindingConfig::from_bind(Binding::from_single(InputType::Keyboard(KeyCode::Space))),
|
||||
)
|
||||
.with(
|
||||
MyAction::Down,
|
||||
BindingConfig::from_bind(Binding::from_chord(vec![
|
||||
InputType::from_key_code(KeyCode::ShiftLeft),
|
||||
InputType::from_key_code(KeyCode::Space),
|
||||
])),
|
||||
BindingConfig::from_bind(Binding::from_single(
|
||||
InputType::Keyboard(KeyCode::ShiftLeft),
|
||||
//InputType::Keyboard(KeyCode::Space),
|
||||
)),
|
||||
)
|
||||
.build(),
|
||||
),
|
||||
|
||||
@@ -6,13 +6,13 @@ use bevy_inspector_egui::inspector_options::InspectorOptionsType;
|
||||
use strum::IntoEnumIterator;
|
||||
// #[cfg(all(feature = "reflect", feature = "serialize"))]
|
||||
// use bevy_reflect::{ReflectDeserialize, ReflectSerialize};
|
||||
use bevy_controls_macros::{cfg_feature_trait_bounds, supertraits};
|
||||
use bevy_controls_macros::supertraits;
|
||||
#[cfg(feature = "reflect")]
|
||||
use bevy_reflect::{FromReflect, Reflect, TypePath};
|
||||
#[cfg(feature = "serialize")]
|
||||
use serde::{de::DeserializeOwned, Serialize};
|
||||
|
||||
use crate::resource::PlayerInputs;
|
||||
use crate::resource::PlayerActions;
|
||||
|
||||
// ===== Action =====
|
||||
// SAFETY: inspector-egui includes reflect
|
||||
@@ -52,86 +52,9 @@ pub trait InputsContainer<A: Action>:
|
||||
{
|
||||
/// The method returning an iterator over references to the PlayerInputs.
|
||||
/// Note: the use of 'a for both the method's lifetime and the returned Iterator's lifetime.
|
||||
fn iter_inputs<'a>(&'a self) -> Box<dyn Iterator<Item = &'a PlayerInputs<A>> + 'a>;
|
||||
fn iter_inputs<'a>(&'a self) -> Box<dyn Iterator<Item = &'a PlayerActions<A>> + 'a>;
|
||||
/// The method returning an player inputs of this client.
|
||||
fn me<'a>(&'a self) -> Option<&'a PlayerInputs<A>>;
|
||||
fn me<'a>(&'a self) -> Option<&'a PlayerActions<A>>;
|
||||
/// The method returning an mutable player inputs of this client.
|
||||
fn me_mut<'a>(&'a mut self) -> Option<&'a mut PlayerInputs<A>>;
|
||||
fn me_mut<'a>(&'a mut self) -> Option<&'a mut PlayerActions<A>>;
|
||||
}
|
||||
|
||||
// #[cfg(test)]
|
||||
// mod test {
|
||||
// use bevy_ecs::{entity::Entity, schedule::States};
|
||||
// use bevy_utils::{HashMap, prelude::default};
|
||||
// use strum_macros::EnumIter;
|
||||
|
||||
// #[cfg(feature = "serialize")]
|
||||
// use serde::{Serialize, Deserialize};
|
||||
|
||||
// use crate::{hashmap, resource::PlayerInputs, common_traits_conditions};
|
||||
|
||||
// common_traits_conditions! {
|
||||
// #[derive(Debug, Clone, PartialEq)]
|
||||
// #[cfg_attr(feature = "reflect", reflect(Resource))]
|
||||
// pub struct Lobby {
|
||||
// pub me: PlayerId,
|
||||
// pub players: HashMap<PlayerId, Player>,
|
||||
// }
|
||||
// }
|
||||
|
||||
// impl Default for Lobby {
|
||||
// fn default() -> Self {
|
||||
// Self {
|
||||
// me: PlayerId::Host,
|
||||
// players: hashmap! {
|
||||
// PlayerId::Host => Player::default()
|
||||
// },
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// common_traits_conditions! {
|
||||
// #[derive(Debug, PartialEq, Eq, Hash, Clone, Copy)]
|
||||
// pub enum PlayerId {
|
||||
// /// Host or alone
|
||||
// Host,
|
||||
// /// Client
|
||||
// Client(()),
|
||||
// }
|
||||
|
||||
// #[derive(Default, Debug, PartialEq, Clone)]
|
||||
// pub struct Player {
|
||||
// /// Client do not need to know about other clients
|
||||
// #[cfg_attr(feature = "serialize", serde(skip))]
|
||||
// pub inputs: PlayerInputs<Action>,
|
||||
// #[cfg_attr(feature = "serialize", serde(skip))]
|
||||
// pub entity: Option<Entity>,
|
||||
// }
|
||||
// }
|
||||
|
||||
// #[derive(Debug, PartialEq, Clone, States, Default, Hash, Eq)]
|
||||
// pub enum GameState {
|
||||
// #[default]
|
||||
// LevelEditor,
|
||||
// InGame,
|
||||
// }
|
||||
|
||||
// impl super::GameState for GameState {}
|
||||
|
||||
// // TODO: it is just plug, it must be a trait
|
||||
// /// Actions that can be performed by player
|
||||
// #[derive(PartialEq, Eq, Hash, Clone, Copy, Debug, EnumIter)]
|
||||
// pub enum Action {
|
||||
// /// Move forward
|
||||
// LeverEditorForward,
|
||||
// /// Move backward
|
||||
// LevelEditorBackward,
|
||||
// /// Move left
|
||||
// LevelEditorLeft,
|
||||
// /// Move right
|
||||
// LevelEditorRight,
|
||||
// LevelEditorFly,
|
||||
// }
|
||||
|
||||
// impl super::Action for Action {}
|
||||
// }
|
||||
|
||||
@@ -1,13 +1,18 @@
|
||||
use bevy_app::{App, Plugin, PreUpdate, Update};
|
||||
use bevy_app::{App, Plugin, PreUpdate};
|
||||
use bevy_derive::{Deref, DerefMut};
|
||||
use bevy_ecs::schedule::IntoSystemConfigs;
|
||||
use bevy_ecs::system::{In, IntoSystem};
|
||||
use bevy_ecs::{
|
||||
event::EventReader,
|
||||
schedule::State,
|
||||
system::{Res, ResMut},
|
||||
system::{Res, ResMut, Resource},
|
||||
};
|
||||
use bevy_input::{
|
||||
keyboard::{KeyCode, ScanCode},
|
||||
mouse::MouseButton,
|
||||
Input,
|
||||
keyboard::KeyCode,
|
||||
mouse::{MouseButton, MouseMotion, MouseScrollUnit, MouseWheel},
|
||||
ButtonInput,
|
||||
};
|
||||
use bevy_utils::HashMap;
|
||||
|
||||
use crate::{
|
||||
contract::{Action, GameState, InputsContainer},
|
||||
@@ -43,13 +48,20 @@ impl<A: Action, Ic: InputsContainer<A>, Gs: GameState> ControlsPlugin<A, Ic, Gs>
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Resource, Default, Debug, Deref, DerefMut)]
|
||||
struct TrigeredInputs(HashMap<InputType, InputValue>);
|
||||
|
||||
impl<A: Action, Ic: InputsContainer<A>, Gs: GameState> Plugin for ControlsPlugin<A, Ic, Gs> {
|
||||
fn build(&self, app: &mut App) {
|
||||
app
|
||||
.insert_resource(self.controls.clone())
|
||||
.init_resource::<Ic>()
|
||||
.add_state::<Gs>()
|
||||
.add_systems(PreUpdate, Self::collect_inputs);
|
||||
.init_resource::<TrigeredInputs>()
|
||||
.insert_state::<Gs>(Gs::default())
|
||||
.add_systems(
|
||||
PreUpdate,
|
||||
Self::collect_inputs.pipe(Self::fill_players_inputs),
|
||||
);
|
||||
|
||||
#[cfg(feature = "reflect")]
|
||||
app.register_type::<Controls<A, Gs>>();
|
||||
@@ -57,83 +69,106 @@ impl<A: Action, Ic: InputsContainer<A>, Gs: GameState> Plugin for ControlsPlugin
|
||||
}
|
||||
|
||||
impl<A: Action, Ic: InputsContainer<A>, Gs: GameState> ControlsPlugin<A, Ic, Gs> {
|
||||
// Separate collecting and filling is necessary becouse order of complicate imputs in future
|
||||
fn collect_inputs(
|
||||
keyboard_input_keycode: Res<Input<KeyCode>>,
|
||||
keyboard_input_scancode: Res<Input<ScanCode>>,
|
||||
) {
|
||||
|
||||
let a: Vec<(InputType, InputValue)> = vec![];
|
||||
for key in keyboard_input_keycode.get_pressed() {
|
||||
|
||||
keyboard_button: Res<ButtonInput<KeyCode>>,
|
||||
mouse_buttons: Res<ButtonInput<MouseButton>>,
|
||||
mut scroll_evr: EventReader<MouseWheel>,
|
||||
mut motion_evr: EventReader<MouseMotion>,
|
||||
// mut collected_inputs: ResMut<TrigeredInputs>,
|
||||
) -> TrigeredInputs {
|
||||
let mut collected_inputs = TrigeredInputs(HashMap::new());
|
||||
for key in keyboard_button.get_pressed() {
|
||||
collected_inputs.insert(InputType::Keyboard(*key), InputValue::Boolean(true));
|
||||
}
|
||||
|
||||
// buttons.get_just_released()
|
||||
|
||||
for button in mouse_buttons.get_pressed() {
|
||||
collected_inputs.insert(
|
||||
InputType::Mouse(MouseInput::Button(*button)),
|
||||
InputValue::Boolean(true),
|
||||
);
|
||||
}
|
||||
|
||||
for ev in motion_evr.read() {
|
||||
collected_inputs.insert(
|
||||
InputType::Mouse(MouseInput::Axis(AxisName::Horizontal)),
|
||||
InputValue::Float(ev.delta.x),
|
||||
);
|
||||
collected_inputs.insert(
|
||||
InputType::Mouse(MouseInput::Axis(AxisName::Vertical)),
|
||||
InputValue::Float(ev.delta.y),
|
||||
);
|
||||
}
|
||||
|
||||
for ev in scroll_evr.read() {
|
||||
match ev.unit {
|
||||
MouseScrollUnit::Line => {
|
||||
collected_inputs.insert(
|
||||
InputType::Mouse(MouseInput::Wheel(AxisName::Horizontal)),
|
||||
InputValue::Float(ev.x),
|
||||
);
|
||||
collected_inputs.insert(
|
||||
InputType::Mouse(MouseInput::Wheel(AxisName::Vertical)),
|
||||
InputValue::Float(ev.y),
|
||||
);
|
||||
}
|
||||
MouseScrollUnit::Pixel => {
|
||||
panic!("I'm do not accept you to use touch pad in my game");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
collected_inputs
|
||||
}
|
||||
|
||||
fn fill_players_inputs() {}
|
||||
// TODO: ! Zero out values that did not arrive
|
||||
fn fill_players_inputs(
|
||||
In(collected_inputs): In<TrigeredInputs>,
|
||||
mut inputs_container: ResMut<Ic>,
|
||||
controls: Res<Controls<A, Gs>>,
|
||||
game_state: Res<State<Gs>>,
|
||||
) {
|
||||
if let Some(inputs) = inputs_container.me_mut() {
|
||||
// TODO: only on controls change
|
||||
let mut action_binding_pairs: Vec<(&A, &BindingConfig<Gs>, &Binding<Gs>)> = Vec::new();
|
||||
for (action, config) in controls.iter() {
|
||||
for binding in config.bindings.iter() {
|
||||
action_binding_pairs.push((action, config, binding));
|
||||
}
|
||||
}
|
||||
|
||||
// /// Process all hard inputs and bindings to update [`PlayerInputs`]
|
||||
// fn save_input(
|
||||
// keyboard_input_keycode: Res<Input<KeyCode>>,
|
||||
// keyboard_input_scancode: Res<Input<ScanCode>>,
|
||||
// mouse_input: Res<Input<MouseButton>>,
|
||||
// mut inputs_container: ResMut<Ic>,
|
||||
// controls: Res<Controls<A, Gs>>,
|
||||
// game_state: Res<State<Gs>>,
|
||||
// ) {
|
||||
// // get current client inputs
|
||||
// if let Some(inputs) = inputs_container.me_mut() {
|
||||
// for (action, config) in controls.iter() {
|
||||
// 'bindings_loop: for binding in config.bindings.iter() {
|
||||
// // check binding conditions
|
||||
// for condition in &binding.conditions {
|
||||
// match condition {
|
||||
// BindingCondition::InGameState(state) => {
|
||||
// if *state != *game_state.get() {
|
||||
// continue 'bindings_loop;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// log::trace!("action binding {:?} {:?} in condition", action, binding);
|
||||
//
|
||||
// // check inputs & mark actions
|
||||
// match &binding.input {
|
||||
// ButtonCombination::Single(button) => match button {
|
||||
// InputType::Keyboard(Keyboard::KeyCode(key)) => {
|
||||
// if keyboard_input_keycode.pressed(*key) {
|
||||
// inputs.forced_set(*action, true);
|
||||
// break; // when on binding trigered no sence check another
|
||||
// }
|
||||
// inputs.forced_set(*action, false); // FIXME: this is happening on every pass so maybe too frequently
|
||||
// }
|
||||
// InputType::Keyboard(Keyboard::ScanCode(code)) => {
|
||||
// log::trace!("presed?: {:?}", keyboard_input_scancode.pressed(*code));
|
||||
// log::trace!("active");
|
||||
// if keyboard_input_scancode.pressed(*code) {
|
||||
// inputs.forced_set(*action, true);
|
||||
// break; // when on binding trigered no sence check another
|
||||
// }
|
||||
// inputs.forced_set(*action, false); // FIXME: this is happening on every pass so maybe too frequently
|
||||
// }
|
||||
// InputType::Mouse(input) => match input {
|
||||
// MouseInput::Axis(_axis) => {
|
||||
// todo!();
|
||||
// }
|
||||
// MouseInput::Button(button) => {
|
||||
// if !mouse_input.get_pressed().any(|b| b == button) {
|
||||
// continue 'bindings_loop;
|
||||
// }
|
||||
// }
|
||||
// MouseInput::Wheel(_axis) => {
|
||||
// todo!();
|
||||
// }
|
||||
// },
|
||||
// },
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// log::error!("cannot find me in inputs container")
|
||||
// }
|
||||
// }
|
||||
action_binding_pairs.sort_by(|a, b| b.2.input.len().cmp(&a.2.input.len()));
|
||||
|
||||
'bindings_loop: for (action, config, binding) in action_binding_pairs.iter() {
|
||||
// check binding conditions
|
||||
for condition in &binding.conditions {
|
||||
match condition {
|
||||
BindingCondition::InGameState(state) => {
|
||||
if *state != *game_state.get() {
|
||||
continue 'bindings_loop;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//log::info!("{:#?}", collected_inputs);
|
||||
//log::info!("{:#?}", action_binding_pairs[0]);
|
||||
|
||||
match &binding.input {
|
||||
ButtonCombination::Single(input_type) => {
|
||||
if collected_inputs.contains_key(&*input_type) {
|
||||
inputs.forced_set(**action, true);
|
||||
} else {
|
||||
inputs.forced_set(**action, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// TODO: print onece
|
||||
log::warn!("cannot find me in inputs container");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ use std::error;
|
||||
use bevy_derive::{Deref, DerefMut};
|
||||
use bevy_ecs::system::Resource;
|
||||
use bevy_input::{
|
||||
keyboard::{KeyCode, ScanCode},
|
||||
keyboard::KeyCode,
|
||||
mouse::MouseButton,
|
||||
};
|
||||
#[cfg(feature = "inspector-egui")]
|
||||
@@ -200,42 +200,27 @@ impl<A: Action> PlayerActions<A> {
|
||||
}
|
||||
|
||||
common_traits_conditions! {
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, PartialEq, Clone, Eq, Hash)]
|
||||
pub enum InputType {
|
||||
Keyboard(Keyboard),
|
||||
Keyboard(KeyCode),
|
||||
Mouse(MouseInput),
|
||||
// TODO: Gamepad(GamepadButtonType),
|
||||
// TODO: Touch screen
|
||||
// TODO: TouchPad inputs
|
||||
}
|
||||
}
|
||||
|
||||
impl InputType {
|
||||
pub fn from_key_code(key_code: KeyCode) -> Self {
|
||||
InputType::Keyboard(Keyboard::KeyCode(key_code))
|
||||
}
|
||||
pub fn from_scan_code(scan_code: ScanCode) -> Self {
|
||||
InputType::Keyboard(Keyboard::ScanCode(scan_code))
|
||||
}
|
||||
}
|
||||
|
||||
common_traits_conditions! {
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
pub enum Keyboard {
|
||||
KeyCode(KeyCode),
|
||||
ScanCode(ScanCode),
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, PartialEq, Clone, Eq, Hash)]
|
||||
pub enum MouseInput {
|
||||
Button(MouseButton),
|
||||
Axis(AxisName),
|
||||
Wheel(AxisName)
|
||||
// TODO: CursorPosition
|
||||
// TODO: TouchPad inputs
|
||||
}
|
||||
|
||||
/// Name of axis
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, PartialEq, Clone, Eq, Hash)]
|
||||
pub enum AxisName {
|
||||
Horizontal,
|
||||
Vertical,
|
||||
@@ -311,7 +296,19 @@ common_traits_conditions! {
|
||||
// /// Chord is a combination of buttons that must be pressed at the same time
|
||||
// Chord(Vec<InputType>),
|
||||
}
|
||||
}
|
||||
|
||||
impl ButtonCombination {
|
||||
pub fn len(&self) -> usize {
|
||||
use crate::resource::ButtonCombination::*;
|
||||
match self {
|
||||
Single(_) => 1
|
||||
// TODO: Chord
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
common_traits_conditions! {
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
pub enum BindingCondition<Gs: GameState> {
|
||||
/// During specific game state
|
||||
@@ -572,7 +569,7 @@ impl<A: Action, Gs: GameState> ControlsBuilder<A, Gs> {
|
||||
// or make sure that you have only one Menufor<'a> Action<'a> with the same name in the Menufor<'a> Action<'a>s
|
||||
assert!(validate_hash_map(&**self));
|
||||
|
||||
std::mem::take(&mut self)
|
||||
std::mem::take(&mut self) // TODO
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Generated
+9
-9
@@ -5,11 +5,11 @@
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1705309234,
|
||||
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -20,11 +20,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1706191920,
|
||||
"narHash": "sha256-eLihrZAPZX0R6RyM5fYAWeKVNuQPYjAkCUBr+JNvtdE=",
|
||||
"lastModified": 1712163089,
|
||||
"narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ae5c332cbb5827f6b1f02572496b141021de335f",
|
||||
"rev": "fd281bd6b7d3e32ddfa399853946f782553163b5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -51,11 +51,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1706235145,
|
||||
"narHash": "sha256-3jh5nahTlcsX6QFcMPqxtLn9p9CgT9RSce5GLqjcpi4=",
|
||||
"lastModified": 1712196778,
|
||||
"narHash": "sha256-SOiwCr2HtmYpw8OvQQVRPtiCBWwndbIoPqtsamZK3J8=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "3a57c4e29cb2beb777b2e6ae7309a680585b8b2f",
|
||||
"rev": "20e7895d1873cc64c14a9f024a8e04f5824bed28",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
[toolchain]
|
||||
channel = '1.72.0'
|
||||
channel = '1.76.0'
|
||||
|
||||
Reference in New Issue
Block a user