From 1da4c5b47347faf1ce7a015fec2ca8f9d1643ae1 Mon Sep 17 00:00:00 2001 From: RustyStriker Date: Mon, 1 Aug 2022 18:33:21 +0300 Subject: [PATCH] dragging! and some other things, also bevy 0.8 now(which is annoying me currently due to a weird bug in exit --- Cargo.lock | 765 ++++++++++++++++++++++++------------------------- Cargo.toml | 6 +- README.md | 12 +- src/helpers.rs | 2 +- src/lib.rs | 4 +- src/main.rs | 91 +++++- src/modify.rs | 15 +- src/rotate.rs | 44 --- src/ui.rs | 48 +++- 9 files changed, 509 insertions(+), 478 deletions(-) delete mode 100644 src/rotate.rs diff --git a/Cargo.lock b/Cargo.lock index ed8da7b..5d10b06 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -90,6 +90,15 @@ dependencies = [ "log", ] +[[package]] +name = "android_system_properties" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7ed72e1635e121ca3e79420540282af22da58be50de153d36f81ddc6b83aa9e" +dependencies = [ + "libc", +] + [[package]] name = "ansi_term" version = "0.12.1" @@ -122,7 +131,7 @@ checksum = "dc120354d1b5ec6d7aaf4876b602def75595937b5e15d356eb554ab5177e08bb" dependencies = [ "clipboard-win", "core-graphics 0.22.3", - "image", + "image 0.23.14", "log", "objc", "objc-foundation", @@ -147,9 +156,9 @@ checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] name = "ash" -version = "0.34.0+1.2.203" +version = "0.37.0+1.3.209" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0f780da53d0063880d45554306489f09dd8d1bda47688b4a57bc579119356df" +checksum = "006ca68e0f2b03f22d6fa9f2860f85aed430d257fec20f8879b2145e7c7ae1a6" dependencies = [ "libloading", ] @@ -197,12 +206,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "base-x" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" - [[package]] name = "base64" version = "0.13.0" @@ -211,30 +214,18 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "bevy" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fce306d40a111309ee61d4626efbafccdd46bb80657122c38061fa7264c08e4" +checksum = "55f08528a4e59d607460513a823b40f602d013c1a00f57b824f1075d5d48c3cd" dependencies = [ "bevy_internal", ] -[[package]] -name = "bevy-crevice-derive" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "191a752a01c3402deb24320acf42288bf822e5d22f19ae1d903797f02e9b0c33" -dependencies = [ - "bevy_macro_utils", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "bevy_animation" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c087569c34b168dd988e8b3409ce273661b4a58c3c534d0e381950589f59f68e" +checksum = "e243169af495ad616ff701247c0d3e40078a26ed8de231cf9e54bde6b3c4bb45" dependencies = [ "bevy_app", "bevy_asset", @@ -243,19 +234,21 @@ dependencies = [ "bevy_hierarchy", "bevy_math", "bevy_reflect", + "bevy_time", "bevy_transform", "bevy_utils", ] [[package]] name = "bevy_app" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32660ae99fa3498ca379de28b7e2f447e6531b0e432bf200901efeec075553c1" +checksum = "53d26d6ffdf493609d2fedc1018a2ef0cb4d8e48f6d3bcea56fa2df81867e464" dependencies = [ "bevy_derive", "bevy_ecs", "bevy_reflect", + "bevy_tasks", "bevy_utils", "wasm-bindgen", "web-sys", @@ -263,9 +256,9 @@ dependencies = [ [[package]] name = "bevy_asset" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2afd395240087924ba49c8cae2b00d007aeb1db53ee726a543b1e90dce2d3ab" +checksum = "3d8fb95306d5f18fa70df40632cd984993aeb71e91ce059ae99699098a4f9ce9" dependencies = [ "anyhow", "bevy_app", @@ -277,11 +270,11 @@ dependencies = [ "bevy_utils", "crossbeam-channel", "downcast-rs", + "fastrand", "js-sys", "ndk-glue 0.5.2", "notify", - "parking_lot 0.11.2", - "rand", + "parking_lot 0.12.1", "serde", "thiserror", "wasm-bindgen", @@ -291,9 +284,9 @@ dependencies = [ [[package]] name = "bevy_audio" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73a1c827ae837b62868539040176fb6d4daecf24983b98a0284d158e52cd21d5" +checksum = "eee08ac575397ce17477dd291862bafa15226334bdfb82c02bbc3d10bad7bdb8" dependencies = [ "anyhow", "bevy_app", @@ -301,18 +294,17 @@ dependencies = [ "bevy_ecs", "bevy_reflect", "bevy_utils", - "parking_lot 0.11.2", + "parking_lot 0.12.1", "rodio", ] [[package]] name = "bevy_core" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12c0f8614b6014671ab60bacb8bf681373d08b0bb15633b8ef72b895cf966d29" +checksum = "c6712146d54fff9e1865362e9f39a7b63c7b037ddb72a3d7bb05b959213fb61e" dependencies = [ "bevy_app", - "bevy_derive", "bevy_ecs", "bevy_math", "bevy_reflect", @@ -323,35 +315,27 @@ dependencies = [ [[package]] name = "bevy_core_pipeline" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d570bc9310196190910a5b1ffd8c8c35bd6b73f918d0651ae3c3d4e57be9a7" +checksum = "080bb00399b6d7697e505f871d67c6de8b52eb06b47b0cda2be80c2396805983" dependencies = [ "bevy_app", "bevy_asset", - "bevy_core", + "bevy_derive", "bevy_ecs", + "bevy_reflect", "bevy_render", + "bevy_transform", "bevy_utils", -] - -[[package]] -name = "bevy_crevice" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da0a284fb26c02cb96ef4d5bbf4de5fad7e1a901730035a61813bf64e28482e" -dependencies = [ - "bevy-crevice-derive", - "bytemuck", - "glam 0.20.5", - "mint", + "radsort", + "serde", ] [[package]] name = "bevy_derive" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6abddf2ed415f31d28a9bf9ab3c0bc857e98a722858d38dba65bdda481f8d714" +checksum = "a4b8f0786d1fc7e0d35297917be463db3d0886f7bd8d4221ca3d565502579ffb" dependencies = [ "bevy_macro_utils", "quote", @@ -360,25 +344,26 @@ dependencies = [ [[package]] name = "bevy_diagnostic" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ebf72ea058cfc379756e9da7de6861174e1860504f41e3e5a46d5b1c35d6644" +checksum = "adab74ee5375fbf5d2b1d3da41de8d1491a8a706d17441b5e31214b65349d692" dependencies = [ "bevy_app", - "bevy_core", "bevy_ecs", "bevy_log", + "bevy_time", "bevy_utils", ] [[package]] name = "bevy_ecs" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e67dd06b14e787d2026fe6e2b63f67482afcc62284f20ea2784d8b0662e95f" +checksum = "a5643dc27b7d6778e3a66c8e0f6ad1fd33309aa2fa61d935f360ccc85b7be6a2" dependencies = [ "async-channel", "bevy_ecs_macros", + "bevy_ptr", "bevy_reflect", "bevy_tasks", "bevy_utils", @@ -386,14 +371,14 @@ dependencies = [ "fixedbitset", "fxhash", "serde", - "thiserror", + "thread_local", ] [[package]] name = "bevy_ecs_macros" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718923a491490bd81074492d61fc08134f9c62a29ba8666818cd7a6630421246" +checksum = "a5f2f12677f8725d40930d0a19652f007fe0ef5ac38e23817cfc4930c61f5680" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -403,9 +388,9 @@ dependencies = [ [[package]] name = "bevy_egui" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27dc596053c0aa4b5ec698d8d7ef524f6cc457db7ac7d42c330f32d80720bff6" +checksum = "b4ab46f07c3f360507fae9bc3b9c000c583e0d67661f0dd6dd5a24a709775b1e" dependencies = [ "arboard", "bevy", @@ -415,10 +400,20 @@ dependencies = [ ] [[package]] -name = "bevy_gilrs" -version = "0.7.0" +name = "bevy_encase_derive" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b164983e8057a1a730412a7c26ccc540d9ce76d2c6ab68edd258a0baeb1762" +checksum = "76a767adc36ce1fc917a736843b026d4de7069d90ed5e669c852481ef69fd5aa" +dependencies = [ + "bevy_macro_utils", + "encase_derive_impl", +] + +[[package]] +name = "bevy_gilrs" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "963940426127533164af2a556971a03c493143c0afb95afadb4a070b6ab8c3df" dependencies = [ "bevy_app", "bevy_ecs", @@ -429,9 +424,9 @@ dependencies = [ [[package]] name = "bevy_gltf" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e07bda7721091c1a683343d466132dc69dec65aa83d8c9e328a2fb3431f03be" +checksum = "150cc6782c4472600c2ade5d78c6ce481c992690f0499e63765aba752d7e0f04" dependencies = [ "anyhow", "base64", @@ -439,6 +434,7 @@ dependencies = [ "bevy_app", "bevy_asset", "bevy_core", + "bevy_core_pipeline", "bevy_ecs", "bevy_hierarchy", "bevy_log", @@ -447,6 +443,7 @@ dependencies = [ "bevy_reflect", "bevy_render", "bevy_scene", + "bevy_tasks", "bevy_transform", "bevy_utils", "gltf", @@ -456,9 +453,9 @@ dependencies = [ [[package]] name = "bevy_hierarchy" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f407f152f35541a099484200afe3b0ca09ce625469e8233dcdc264d6f88e01a" +checksum = "8e2e4c20d7c843cd26ef3c5d7b4c20e3e32c275943e2437ecaca1cfd6cfe3b30" dependencies = [ "bevy_app", "bevy_ecs", @@ -469,9 +466,9 @@ dependencies = [ [[package]] name = "bevy_input" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4ec4f6e38ef1b41ff68ec7badd6afc5c9699191e61e511c4abee91a5888afc" +checksum = "a11c70573fb4d4c056ba32cfa553daa7e6e1245cb876ccfbe322640928b7ee1c" dependencies = [ "bevy_app", "bevy_ecs", @@ -481,9 +478,9 @@ dependencies = [ [[package]] name = "bevy_internal" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d518a8e5f526a9537fc8408a284caec7af22b23c3b23c0dee08bacc0930e2f1a" +checksum = "0d603b597772130782eab6e604706cbb764fb037f9cf0a1904b6f342845b6f44" dependencies = [ "bevy_animation", "bevy_app", @@ -501,12 +498,14 @@ dependencies = [ "bevy_log", "bevy_math", "bevy_pbr", + "bevy_ptr", "bevy_reflect", "bevy_render", "bevy_scene", "bevy_sprite", "bevy_tasks", "bevy_text", + "bevy_time", "bevy_transform", "bevy_ui", "bevy_utils", @@ -517,9 +516,9 @@ dependencies = [ [[package]] name = "bevy_log" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943ec496720ded2ff62b292d8e5fc845817a504915f41b7c5fd12b1380300f75" +checksum = "8cafb12fc84734236e36f407ab62c72d5d4279fa4777e40a95d7cc973cbabcd1" dependencies = [ "android_log-sys", "bevy_app", @@ -532,34 +531,41 @@ dependencies = [ [[package]] name = "bevy_macro_utils" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7ddfc33a99547e36718e56e414541e461c74ec318ff987a1e9f4ff46d0dacbb" +checksum = "4d081af83b701e16cad209255ba6b383744dfa49efa99eb6505989f293305ab3" dependencies = [ - "cargo-manifest", "quote", "syn", + "toml", ] [[package]] name = "bevy_math" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20288df0f70ff258bbaffaf55209f1271a7436438591bbffc3d81e4d84b423f2" +checksum = "db5394e86c5708d3aa506c6e98ec4ed2a4083a7a018c6693d9ac0e77ebfabfc2" dependencies = [ - "bevy_reflect", - "glam 0.20.5", + "glam", +] + +[[package]] +name = "bevy_mikktspace" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b299a61175a6f7e7398f83cd5b50920fd8bad4df674e614ad94f25f8426509" +dependencies = [ + "glam", ] [[package]] name = "bevy_pbr" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06adee54840f18cfeda7af4cdc57608644fa840be076a562353f896bfdb9c694" +checksum = "ed9a81bbd02f5e0a57899a41aec37d9cb14965e1e4d510547f3f680323d05c0f" dependencies = [ "bevy_app", "bevy_asset", - "bevy_core", "bevy_core_pipeline", "bevy_ecs", "bevy_math", @@ -570,13 +576,14 @@ dependencies = [ "bevy_window", "bitflags", "bytemuck", + "radsort", ] [[package]] name = "bevy_prototype_lyon" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0a902a6ba040d8874fc8798443ccc2f920077ab8d2a869e301b5900bfdbcd66" +checksum = "f9e44f5ffcbac7114ed9377e6bc875e845c76e5ebb3a5a018169dc37ba5b78d0" dependencies = [ "bevy", "lyon_tessellation", @@ -584,17 +591,25 @@ dependencies = [ ] [[package]] -name = "bevy_reflect" -version = "0.7.0" +name = "bevy_ptr" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0793107bc4b7c6bd04232d739fc8d70aa5fb313bfad6e850f91f79b2557eed" +checksum = "d92d5679e89602a18682a37846573dcd1979410179e14204280460ba9fb8713a" + +[[package]] +name = "bevy_reflect" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08798e67f2d4e6898ef117d8c99cf3b50a8eebc8da4159e6dad2657a0fbe9a4e" dependencies = [ + "bevy_ptr", "bevy_reflect_derive", "bevy_utils", "downcast-rs", "erased-serde", - "glam 0.20.5", - "parking_lot 0.11.2", + "glam", + "once_cell", + "parking_lot 0.12.1", "serde", "smallvec", "thiserror", @@ -602,9 +617,9 @@ dependencies = [ [[package]] name = "bevy_reflect_derive" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81c88de8067d19dfde31662ee78e3ee6971e2df27715799f91b515b37a636677" +checksum = "19209a7f0238053802b7de04e6724bd90d4ed7d90e87101dbd1b64cca64ff694" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -615,19 +630,24 @@ dependencies = [ [[package]] name = "bevy_render" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a358da8255b704153913c3499b3693fa5cfe13a48725ac6e76b043fa5633bc8" +checksum = "bb49530388ef17cff3fb8bd5e47372fb3cfeb4befc73e3036f6462ac20f049ef" dependencies = [ "anyhow", "bevy_app", "bevy_asset", "bevy_core", - "bevy_crevice", "bevy_derive", "bevy_ecs", + "bevy_encase_derive", + "bevy_hierarchy", + "bevy_log", "bevy_math", + "bevy_mikktspace", "bevy_reflect", + "bevy_render_macros", + "bevy_time", "bevy_transform", "bevy_utils", "bevy_window", @@ -635,32 +655,49 @@ dependencies = [ "codespan-reporting", "copyless", "downcast-rs", + "encase", "futures-lite", "hex", "hexasphere", - "image", + "image 0.24.3", "naga", "once_cell", - "parking_lot 0.11.2", + "parking_lot 0.12.1", "regex", "serde", "smallvec", "thiserror", + "thread_local", "wgpu", ] [[package]] -name = "bevy_scene" -version = "0.7.0" +name = "bevy_render_macros" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ea240f2ffce9f58a5601cc5ead24111f577dc4c656452839eb1fdf4b7a28529" +checksum = "e7d0b7a51fa819c20c64f43856c5aaea40f853050bbb09b9ba3672e5ff2688a5" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_scene" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0064d73ebb0de39901478b493604a1a6d448fd337b66803004c60f41f1fa6c37" dependencies = [ "anyhow", "bevy_app", "bevy_asset", + "bevy_derive", "bevy_ecs", "bevy_hierarchy", "bevy_reflect", + "bevy_render", + "bevy_transform", "bevy_utils", "ron", "serde", @@ -670,13 +707,12 @@ dependencies = [ [[package]] name = "bevy_sprite" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fcecfbc623410137d85a71a295ff7c16604b7be24529c9ea4b9a9881d7a142b" +checksum = "1f83dfe8897d6c0d9d5ce3818d49a13e58ae2b9b9ecf4f4bb85aa31bb0678f68" dependencies = [ "bevy_app", "bevy_asset", - "bevy_core", "bevy_core_pipeline", "bevy_ecs", "bevy_log", @@ -688,6 +724,7 @@ dependencies = [ "bitflags", "bytemuck", "copyless", + "fixedbitset", "guillotiere", "rectangle-pack", "serde", @@ -696,29 +733,29 @@ dependencies = [ [[package]] name = "bevy_tasks" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2b0f0b86c8f78c53a2d4c669522f45e725ed9d9c3d734f54ec30876494e04e" +checksum = "ff874c91a36eaac3ef957c6f3b590fb71332d9d136671cc858847d56fe9f80a3" dependencies = [ "async-channel", "async-executor", "event-listener", "futures-lite", "num_cpus", + "once_cell", "wasm-bindgen-futures", ] [[package]] name = "bevy_text" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a206112de011fd6baebaf476af69d87f4e38a1314b65e3c872060830d7c0b9fa" +checksum = "ef05a788c2c04aaa5db95b22a8f0fff0d3a0b08a7bcd1a71f050a628b38eec6e" dependencies = [ "ab_glyph", "anyhow", "bevy_app", "bevy_asset", - "bevy_core", "bevy_ecs", "bevy_math", "bevy_reflect", @@ -733,10 +770,23 @@ dependencies = [ ] [[package]] -name = "bevy_transform" -version = "0.7.0" +name = "bevy_time" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2f7a77900fb23f24ca312c1f8df3eb47a45161326f41e9b4ef05b039793503" +checksum = "74ec681d641371df81d7bfbcb0eea725ed873f38a094f34b5f7b436f0889e77c" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_reflect", + "bevy_utils", + "crossbeam-channel", +] + +[[package]] +name = "bevy_transform" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e1528e35f30bede46a50ee4134f150efc01f5c1002c340b3b2e6a0bfcb8aa5" dependencies = [ "bevy_app", "bevy_ecs", @@ -747,13 +797,12 @@ dependencies = [ [[package]] name = "bevy_ui" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c65e79658d8a3d4da087a6fb8b229cfe1455cda2c4e8e6305b3b44fb46fb1d30" +checksum = "ac181a7b637da61fad72981ff9d2e5b899283ca7d54b2b7ea49c431121331c53" dependencies = [ "bevy_app", "bevy_asset", - "bevy_core", "bevy_core_pipeline", "bevy_derive", "bevy_ecs", @@ -771,19 +820,18 @@ dependencies = [ "bytemuck", "serde", "smallvec", - "stretch", + "taffy", ] [[package]] name = "bevy_utils" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f354c584812996febd48cc885f36b23004b49d6680e73fc95a69a2bb17a48e5" +checksum = "8bda6dada53e546845887ae7357eec57b8d547ef71627b716b33839b4a98b687" dependencies = [ "ahash", - "bevy_derive", "getrandom", - "hashbrown 0.11.2", + "hashbrown 0.12.3", "instant", "tracing", "uuid", @@ -791,12 +839,13 @@ dependencies = [ [[package]] name = "bevy_window" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04fe33d177e10b2984fa90c1d19496fc6f6e7b36d4442699d359e2b4b507873d" +checksum = "a3bdc3a220a9bb2fad9bd30d5f44c6645725398fe1bc588fc87abf09f092696e" dependencies = [ "bevy_app", "bevy_ecs", + "bevy_input", "bevy_math", "bevy_utils", "raw-window-handle", @@ -805,9 +854,9 @@ dependencies = [ [[package]] name = "bevy_winit" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c0e3b94cc73907f8a9f82945ca006a39ed2ab401aca0974b47a007a468509f" +checksum = "57537a56ac4f4e1ffcad95227bcab37cd17b51770dacff82374a2d88be376322" dependencies = [ "approx", "bevy_app", @@ -816,6 +865,7 @@ dependencies = [ "bevy_math", "bevy_utils", "bevy_window", + "crossbeam-channel", "raw-window-handle", "wasm-bindgen", "web-sys", @@ -912,17 +962,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" -[[package]] -name = "cargo-manifest" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5d1388481e60167ccfd7d2ffe6bdfd3640c1f69a9033db57892e36acbd8501" -dependencies = [ - "serde", - "serde_derive", - "toml", -] - [[package]] name = "cc" version = "1.0.73" @@ -1063,22 +1102,18 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "const_panic" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c0358e41e90e443c69b2b2811f6ec9892c228b93620634cf4344fe89967fa9f" + [[package]] name = "copyless" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2df960f5d869b2dd8532793fde43eb5427cceb126c929747a26823ab0eeb536" -[[package]] -name = "core-foundation" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" -dependencies = [ - "core-foundation-sys 0.6.2", - "libc", -] - [[package]] name = "core-foundation" version = "0.7.0" @@ -1099,12 +1134,6 @@ dependencies = [ "libc", ] -[[package]] -name = "core-foundation-sys" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" - [[package]] name = "core-foundation-sys" version = "0.7.0" @@ -1199,13 +1228,13 @@ dependencies = [ "js-sys", "lazy_static", "libc", - "mach 0.3.2", + "mach", "ndk 0.6.0", "ndk-glue 0.6.2", "nix 0.23.1", "oboe", "parking_lot 0.11.2", - "stdweb 0.1.3", + "stdweb", "thiserror", "wasm-bindgen", "web-sys", @@ -1249,9 +1278,9 @@ checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" [[package]] name = "d3d12" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2daefd788d1e96e0a9d66dee4b828b883509bc3ea9ce30665f04c3246372690c" +checksum = "827914e1f53b1e0e025ecd3d967a7836b7bcb54520f90e21ef8df7b4d88a2759" dependencies = [ "bitflags", "libloading", @@ -1304,10 +1333,13 @@ dependencies = [ ] [[package]] -name = "discard" -version = "1.0.4" +name = "deflate" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" +checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f" +dependencies = [ + "adler32", +] [[package]] name = "dispatch" @@ -1341,6 +1373,38 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "encase" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a516181e9a36e8982cb37933c5e7dba638c42938cacde46ee4e5b4156f881b9" +dependencies = [ + "const_panic", + "encase_derive", + "glam", + "thiserror", +] + +[[package]] +name = "encase_derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5b802412eea315f29f2bb2da3a5963cd6121f56eaa06aebcdc0c54eea578f22" +dependencies = [ + "encase_derive_impl", +] + +[[package]] +name = "encase_derive_impl" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f2f4de457d974f548d2c2a16f709ebd81013579e543bd1a9b19ced88132c2cf" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "env_logger" version = "0.8.4" @@ -1543,9 +1607,9 @@ dependencies = [ [[package]] name = "gilrs" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1550c8bdebc993576e343d600a954654708a9a1182396ee1e805d6fe60c72909" +checksum = "1d6ba7c37bf8ea7ba0c3e3795dfa1a7771b1e47c4bb417c4d27c7b338d79685f" dependencies = [ "fnv", "gilrs-core", @@ -1556,41 +1620,34 @@ dependencies = [ [[package]] name = "gilrs-core" -version = "0.3.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c7262ce1e88429c9b1d847820c9d2ba00adafc955218393d9c0861d5aaab88" +checksum = "96a8d94a7fc5afd27e894e08a4cfe5a49237f85bcc7140e90721bad3399c7d02" dependencies = [ - "core-foundation 0.6.4", + "core-foundation 0.9.3", "io-kit-sys", "js-sys", "libc", "libudev-sys", "log", - "nix 0.23.1", + "nix 0.24.2", "rusty-xinput", - "stdweb 0.4.20", "uuid", "vec_map", + "wasm-bindgen", "web-sys", "winapi", ] -[[package]] -name = "glam" -version = "0.20.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43e957e744be03f5801a55472f593d43fabdebf25a4585db250f04d86b1675f" -dependencies = [ - "bytemuck", - "mint", - "serde", -] - [[package]] name = "glam" version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "781aa11be58ef14b0cd7326618afcbd9cdb5ba686bdab7193d87cdc322cd7033" +dependencies = [ + "bytemuck", + "serde", +] [[package]] name = "glob" @@ -1705,6 +1762,26 @@ dependencies = [ "svg_fmt", ] +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hash32-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59d2aba832b60be25c1b169146b27c64115470981b128ed84c8db18c1b03c6ff" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "hashbrown" version = "0.11.2" @@ -1712,7 +1789,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ "ahash", - "serde", ] [[package]] @@ -1720,6 +1796,10 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", + "serde", +] [[package]] name = "hermit-abi" @@ -1742,7 +1822,7 @@ version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9652f2ed7ee9c6374a061039f60fc6e25d7adac7fa10f83365669af3b24b0bf0" dependencies = [ - "glam 0.21.2", + "glam", "once_cell", ] @@ -1779,13 +1859,27 @@ dependencies = [ "byteorder", "color_quant", "num-iter", - "num-rational", + "num-rational 0.3.2", "num-traits", - "png", - "scoped_threadpool", + "png 0.16.8", "tiff", ] +[[package]] +name = "image" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e30ca2ecf7666107ff827a8e481de6a132a9b687ed3bb20bb1c144a36c00964" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-rational 0.4.1", + "num-traits", + "png 0.17.5", + "scoped_threadpool", +] + [[package]] name = "indexmap" version = "1.9.1" @@ -1842,12 +1936,12 @@ dependencies = [ [[package]] name = "io-kit-sys" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21dcc74995dd4cd090b147e79789f8d65959cbfb5f0b118002db869ea3bd0a0" +checksum = "7789f7f3c9686f96164f5109d69152de759e76e284f736bd57661c6df5091919" dependencies = [ - "core-foundation-sys 0.6.2", - "mach 0.2.3", + "core-foundation-sys 0.8.3", + "mach", ] [[package]] @@ -1908,6 +2002,7 @@ checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" dependencies = [ "libc", "libloading", + "pkg-config", ] [[package]] @@ -1969,12 +2064,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "libm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" - [[package]] name = "libudev-sys" version = "0.1.4" @@ -2034,15 +2123,6 @@ dependencies = [ "lyon_path", ] -[[package]] -name = "mach" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86dd2487cdfea56def77b88438a2c915fb45113c5319bfe7e14306ca4cd0b0e1" -dependencies = [ - "libc", -] - [[package]] name = "mach" version = "0.3.2" @@ -2093,9 +2173,9 @@ dependencies = [ [[package]] name = "metal" -version = "0.23.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0514f491f4cc03632ab399ee01e2c1c1b12d3e1cf2d667c1ff5f87d6dcd2084" +checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060" dependencies = [ "bitflags", "block", @@ -2131,22 +2211,12 @@ dependencies = [ ] [[package]] -name = "mint" -version = "0.5.9" +name = "miniz_oxide" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff" - -[[package]] -name = "mio" -version = "0.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" +checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" dependencies = [ - "libc", - "log", - "miow", - "ntapi", - "winapi", + "adler", ] [[package]] @@ -2161,20 +2231,11 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi", -] - [[package]] name = "naga" -version = "0.8.5" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3012f2dbcc79e8e0b5825a4836a7106a75dd9b2fe42c528163be0f572538c705" +checksum = "5f50357e1167a3ab92d6b3c7f4bf5f7fd13fde3f4b28bf0d5ea07b5100fdb6c0" dependencies = [ "bit-set", "bitflags", @@ -2187,7 +2248,9 @@ dependencies = [ "pp-rs", "rustc-hash", "spirv", + "termcolor", "thiserror", + "unicode-xid", ] [[package]] @@ -2307,6 +2370,17 @@ dependencies = [ "memoffset", ] +[[package]] +name = "nix" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" +dependencies = [ + "bitflags", + "cfg-if 1.0.0", + "libc", +] + [[package]] name = "nohash-hasher" version = "0.2.0" @@ -2325,9 +2399,9 @@ dependencies = [ [[package]] name = "notify" -version = "5.0.0-pre.11" +version = "5.0.0-pre.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c614e7ed2b1cf82ec99aeffd8cf6225ef5021b9951148eb161393c394855032c" +checksum = "553f9844ad0b0824605c20fb55a661679782680410abfb1a8144c2e7e437e7a7" dependencies = [ "bitflags", "crossbeam-channel", @@ -2336,20 +2410,11 @@ dependencies = [ "inotify", "kqueue", "libc", - "mio 0.7.14", + "mio", "walkdir", "winapi", ] -[[package]] -name = "ntapi" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" -dependencies = [ - "winapi", -] - [[package]] name = "num-derive" version = "0.3.3" @@ -2393,6 +2458,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.15" @@ -2615,10 +2691,22 @@ checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" dependencies = [ "bitflags", "crc32fast", - "deflate", + "deflate 0.8.6", "miniz_oxide 0.3.7", ] +[[package]] +name = "png" +version = "0.17.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc38c0ad57efb786dd57b9864e5b18bae478c00c824dc55a38bbc9da95dde3ba" +dependencies = [ + "bitflags", + "crc32fast", + "deflate 1.0.0", + "miniz_oxide 0.5.3", +] + [[package]] name = "pp-rs" version = "0.2.1" @@ -2628,12 +2716,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "ppv-lite86" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" - [[package]] name = "proc-macro-crate" version = "1.1.3" @@ -2669,34 +2751,10 @@ dependencies = [ ] [[package]] -name = "rand" -version = "0.8.5" +name = "radsort" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" -dependencies = [ - "getrandom", -] +checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b" [[package]] name = "range-alloc" @@ -2787,15 +2845,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver", -] - [[package]] name = "rusty-xinput" version = "1.2.0" @@ -2834,21 +2883,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - [[package]] name = "serde" version = "1.0.140" @@ -2880,21 +2914,6 @@ dependencies = [ "serde", ] -[[package]] -name = "sha1" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" -dependencies = [ - "sha1_smol", -] - -[[package]] -name = "sha1_smol" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" - [[package]] name = "shape_maker" version = "0.1.0" @@ -2968,73 +2987,12 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e" -[[package]] -name = "stdweb" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" -dependencies = [ - "discard", - "rustc_version", - "serde", - "serde_json", - "stdweb-derive", - "stdweb-internal-macros", - "stdweb-internal-runtime", - "wasm-bindgen", -] - -[[package]] -name = "stdweb-derive" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "serde_derive", - "syn", -] - -[[package]] -name = "stdweb-internal-macros" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" -dependencies = [ - "base-x", - "proc-macro2", - "quote", - "serde", - "serde_derive", - "serde_json", - "sha1", - "syn", -] - -[[package]] -name = "stdweb-internal-runtime" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" - [[package]] name = "str-buf" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" -[[package]] -name = "stretch" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0dc6d20ce137f302edf90f9cd3d278866fd7fb139efca6f246161222ad6d87" -dependencies = [ - "lazy_static", - "libm", -] - [[package]] name = "strsim" version = "0.10.0" @@ -3068,6 +3026,19 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "taffy" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec27dea659b100d489dffa57cf0efc6d7bfefb119af817b92cc14006c0b214e3" +dependencies = [ + "arrayvec 0.7.2", + "hash32", + "hash32-derive", + "num-traits", + "typenum", +] + [[package]] name = "termcolor" version = "1.1.3" @@ -3138,7 +3109,6 @@ version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" dependencies = [ - "indexmap", "serde", ] @@ -3221,6 +3191,12 @@ version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b3e06c9b9d80ed6b745c7159c40b311ad2916abb34a49e9be2653b90db0d8dd" +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + [[package]] name = "unicode-bidi" version = "0.3.8" @@ -3268,9 +3244,9 @@ dependencies = [ [[package]] name = "uuid" -version = "0.8.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f" dependencies = [ "getrandom", "serde", @@ -3385,9 +3361,9 @@ checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" [[package]] name = "web-sys" -version = "0.3.57" +version = "0.3.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" +checksum = "ed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -3415,15 +3391,15 @@ checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" [[package]] name = "wgpu" -version = "0.12.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97cd781ff044d6d697b632a2e212032c2e957d1afaa21dbf58069cbb8f78567" +checksum = "277e967bf8b7820a76852645a6bce8bbd31c32fda2042e82d8e3ea75fda8892d" dependencies = [ "arrayvec 0.7.2", "js-sys", "log", "naga", - "parking_lot 0.11.2", + "parking_lot 0.12.1", "raw-window-handle", "smallvec", "wasm-bindgen", @@ -3436,11 +3412,12 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "0.12.2" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4688c000eb841ca55f7b35db659b78d6e1cd77d7caf8fb929f4e181f754047d" +checksum = "89b92788dec9d0c1bed849a1b83f01b2ee12819bf04a79c90f68e4173f7b5ba2" dependencies = [ "arrayvec 0.7.2", + "bit-vec", "bitflags", "cfg_aliases", "codespan-reporting", @@ -3448,21 +3425,23 @@ dependencies = [ "fxhash", "log", "naga", - "parking_lot 0.11.2", + "parking_lot 0.12.1", "profiling", "raw-window-handle", "smallvec", "thiserror", + "web-sys", "wgpu-hal", "wgpu-types", ] [[package]] name = "wgpu-hal" -version = "0.12.5" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d684ea6a34974a2fc19f1dfd183d11a62e22d75c4f187a574bb1224df8e056c2" +checksum = "20cbdfc3d0637dba3d5536b93adef3d26023a0b96f0e1ee5ee9560a401d9f646" dependencies = [ + "android_system_properties", "arrayvec 0.7.2", "ash", "bit-set", @@ -3483,7 +3462,7 @@ dependencies = [ "metal", "naga", "objc", - "parking_lot 0.11.2", + "parking_lot 0.12.1", "profiling", "range-alloc", "raw-window-handle", @@ -3497,9 +3476,9 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "0.12.0" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "549533d9e1cdd4b4cda7718d33ff500fc4c34b5467b71d76b547ae0324f3b2a2" +checksum = "1f762cbc08e1a51389859cf9c199c7aef544789cf3510889aab12c607f701604" dependencies = [ "bitflags", ] @@ -3609,7 +3588,7 @@ dependencies = [ "lazy_static", "libc", "log", - "mio 0.8.4", + "mio", "ndk 0.5.0", "ndk-glue 0.5.2", "ndk-sys 0.2.2", diff --git a/Cargo.toml b/Cargo.toml index 81a2c65..c144639 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,6 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -bevy = "0.7.0" -bevy_egui = { version = "0.14.0", features = ["manage_clipboard"] } -bevy_prototype_lyon = "0.5.0" +bevy = "0.8.0" +bevy_egui = { version = "0.15.0", features = ["manage_clipboard"] } +bevy_prototype_lyon = "0.6.0" diff --git a/README.md b/README.md index bd28e90..b6799db 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,14 @@ Eventually, this will be a level editor... But until then, I guess it's just fun - [x] Items tree view showing all shapes with their child nodes and purposes(maybe location and such as well?) - [x] Change shape name in tree view - [x] Delete shapes in tree view - I should probably make it ask for confirmation... -- [ ] Highlight opened shapes in the tree(maybe allow only 1 opened shape?) +- [x] Highlight opened shapes in the tree(maybe allow only 1 opened shape? - I dont think egui allows me to do that) +- [x] Drag camera around +- [x] Zome in/out - [ ] Import images -- [ ] Drag camera around -- [ ] Zome in/out +- [ ] Snap to grid +- [ ] Change grid size +- [ ] Show/Hide grid(also make a visible grid in the first place) +- [ ] Grab shapes instead of center points +- [ ] Save? (maybe just import and export directly?) - [ ] Export - [ ] Import -- [ ] Save? (maybe just import and export directly?) diff --git a/src/helpers.rs b/src/helpers.rs index 53763c7..7c2102b 100644 --- a/src/helpers.rs +++ b/src/helpers.rs @@ -7,7 +7,7 @@ pub fn get_mouse_pos(q_cam: &Query<(&Camera, &GlobalTransform), With if let Some(screen_pos) = wnd.cursor_position() { let w_size = Vec2::new(wnd.width() as f32, wnd.height() as f32); let ndc = (screen_pos / w_size) * 2.0 - Vec2::ONE; - let ndc_to_world = cam_pos.compute_matrix() * cam.projection_matrix.inverse(); + let ndc_to_world = cam_pos.compute_matrix() * cam.projection_matrix().inverse(); let world_pos = ndc_to_world.project_point3(ndc.extend(-1.0)); let world_pos: Vec2 = world_pos.truncate(); diff --git a/src/lib.rs b/src/lib.rs index 139b2a1..3265d0f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,12 +6,10 @@ use bevy_egui::egui; pub mod create; pub mod helpers; pub mod modify; -pub mod rotate; pub mod ui; pub use ui::{action_bar_sys, shape_tree_sys}; pub use modify::modify_sys; pub use create::create_sys; -pub use rotate::rotate_sys; pub use helpers::*; @@ -36,7 +34,7 @@ pub enum CreateShape { #[derive(Debug, PartialEq, Eq, Clone, Copy)] pub enum Action { - Create, Modify, Rotate + Create, Modify } pub struct UiState { pub current_action: Action, diff --git a/src/main.rs b/src/main.rs index 2ef89e7..cc880fa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,5 @@ use bevy::ecs::schedule::ShouldRun; +use bevy::input::mouse::{MouseMotion, MouseWheel}; use bevy::math::Vec3Swizzles; use bevy::{prelude::*, window::PresentMode, winit::WinitSettings}; use bevy_egui::{egui, EguiContext, EguiPlugin}; @@ -15,7 +16,7 @@ fn main() { // Optimal power saving and present mode settings for desktop apps. .insert_resource(WinitSettings::desktop_app()) .insert_resource(WindowDescriptor { - present_mode: PresentMode::Mailbox, + present_mode: PresentMode::Fifo, title: "Shape Maker".to_string(), ..Default::default() }) @@ -39,13 +40,13 @@ fn main() { .add_system(modify_sys.with_run_criteria(|state: Res, mut ec: ResMut| if !ec.ctx_mut().is_pointer_over_area() && state.current_action == Action::Modify { ShouldRun::Yes } else { ShouldRun::No } )) - .add_system(rotate_sys.with_run_criteria(|state: Res, mut ec: ResMut| - if !ec.ctx_mut().is_pointer_over_area() && state.current_action == Action::Rotate { ShouldRun::Yes } else { ShouldRun::No } - )) .add_system(action_bar_sys) .add_system(shape_tree_sys) .add_system(show_hide_points) .add_system(color_points) + .add_system(drag_camera_sys) + .add_system(zoom_camera_sys) + .add_system(scale_points) ; app.run(); @@ -54,7 +55,7 @@ fn main() { fn basic_setup_sys( mut coms: Commands, ) { - coms.spawn_bundle(OrthographicCameraBundle::new_2d()) + coms.spawn_bundle(Camera2dBundle::default()) .insert(MainCamera); } @@ -65,6 +66,70 @@ fn configure_visuals(mut egui_ctx: ResMut) { }); } +fn zoom_camera_sys( + mut mouse_scroll: EventReader, + mut cam: Query<&mut OrthographicProjection, With>, +) { + let mut scroll = 0.0; + + for m in mouse_scroll.iter() { + scroll += m.y * 0.1; + } + + for mut op in cam.iter_mut() { + op.scale += scroll ; + if op.scale <= 0.0 { + op.scale = 0.1; + } + } +} + +fn scale_points( + scale: Query<&OrthographicProjection, (With, Changed)>, + shapes: Query<&ShapeData>, + p_size: Res, + mut paths: Query<&mut Path, With>, +) { + if let Ok(scale) = scale.get_single() { + let scale = scale.scale; + + for sd in shapes.iter() { + if let Ok(mut p) = paths.get_mut(sd.center.unwrap()) { + let shape = shapes::Circle { + radius: p_size.0 * scale, + center: Vec2::ZERO, + }; + *p = ShapePath::build_as(&shape); + } + for &edge in sd.edges.iter() { + if let Ok(mut p) = paths.get_mut(edge) { + let shape = shapes::Circle { + radius: p_size.0 * scale, + center: Vec2::ZERO, + }; + *p = ShapePath::build_as(&shape); + } + + } + } + } +} + +fn drag_camera_sys( + mut mouse_move: EventReader, + mouse_input: Res>, + mut cam: Query<(&mut Transform, &OrthographicProjection), With>, +) { + if mouse_input.pressed(MouseButton::Middle) { + let mut delta = Vec2::ZERO; + for m in mouse_move.iter() { + delta -= Vec2::new(m.delta.x, -m.delta.y) * 2.0; + } + for (mut t, op) in cam.iter_mut() { + t.translation += delta.extend(0.0) * op.scale; + } + } +} fn show_hide_points( state: Res, @@ -74,7 +139,6 @@ fn show_hide_points( let (center, edge) = match state.current_action { Action::Create => (false, false), Action::Modify => (true, true), - Action::Rotate => (true, true), }; for sd in shapes.iter() { @@ -96,6 +160,7 @@ fn show_hide_points( fn color_points( mut current: Local>, + scale: Query<&OrthographicProjection, With>, wnds: Res, p_size: Res, q_cam: Query<(&Camera, &GlobalTransform), With>, @@ -103,16 +168,18 @@ fn color_points( global_transforms: Query<&GlobalTransform, With>, mut dots: Query<&mut DrawMode, With>, ) { - let normal = DrawMode::Outlined { fill_mode: FillMode::color(Color::RED), outline_mode: StrokeMode::new(Color::rgb(0.9,0.0,0.0), 1.0) }; - let hover = DrawMode::Outlined { fill_mode: FillMode::color(Color::RED), outline_mode: StrokeMode::new(Color::ORANGE, 3.0) }; + let scale = scale.get_single().map(|s| s.scale).unwrap_or(1.0); + + let normal = DrawMode::Outlined { fill_mode: FillMode::color(Color::RED), outline_mode: StrokeMode::new(Color::rgb(0.9,0.0,0.0), 0.0) }; + let hover = DrawMode::Outlined { fill_mode: FillMode::color(Color::RED), outline_mode: StrokeMode::new(Color::ORANGE, 3.0 * scale) }; let mouse_pos = get_mouse_pos(&q_cam, &wnds); if let Some(mpos) = mouse_pos { let mut hovering = false; 'shapes: for sd in shapes.iter() { let e = sd.center.unwrap(); - let p = global_transforms.get(e).unwrap().translation.xy(); - if (mpos - p).length_squared() < p_size.0.powi(2) { + let p = global_transforms.get(e).unwrap().translation().xy(); + if (mpos - p).length_squared() < (p_size.0 * scale).powi(2) { if Some(e) != *current { if let Some(c) = &*current { if let Ok(mut md) = dots.get_mut(*c) { @@ -128,8 +195,8 @@ fn color_points( break; } for edge in sd.edges.iter() { - let p = global_transforms.get(*edge).unwrap().translation.xy(); - if (mpos - p).length_squared() < p_size.0.powi(2) { + let p = global_transforms.get(*edge).unwrap().translation().xy(); + if (mpos - p).length_squared() < (p_size.0 * scale).powi(2) { if Some(*edge) != *current { if let Some(c) = &*current { if let Ok(mut md) = dots.get_mut(*c) { diff --git a/src/modify.rs b/src/modify.rs index 8173719..800e69d 100644 --- a/src/modify.rs +++ b/src/modify.rs @@ -8,6 +8,7 @@ pub fn modify_sys( mut holding: Local>, mouse: Res>, wnds: Res, + scale: Query<&OrthographicProjection, With>, p_size: Res, mut paths: Query<&mut Path>, mut transforms: Query<&mut Transform>, @@ -15,6 +16,7 @@ pub fn modify_sys( q_cam: Query<(&Camera, &GlobalTransform), With>, shapes: Query<(Entity, &ShapeData)>, ) { + let scale = scale.get_single().map(|s| s.scale).unwrap_or(1.0); let mouse_pos = get_mouse_pos(&q_cam, &wnds); if let Some(mouse_pos) = mouse_pos { @@ -22,18 +24,18 @@ pub fn modify_sys( // Grab attempt - search if we are holding a shape or something for (e, sd) in shapes.iter() { if let Ok(t) = gtransforms.get(sd.center.unwrap()) { - let t = t.translation.xy(); + let t = t.translation().xy(); - if (mouse_pos - t).length_squared() < p_size.0.powi(2) { + if (mouse_pos - t).length_squared() < (p_size.0 * scale).powi(2) { *holding = Some((e, sd.center.unwrap())); break; } } for edge in sd.edges.iter() { if let Ok(t) = gtransforms.get(*edge) { - let t = t.translation.xy(); + let t = t.translation().xy(); - if (mouse_pos - t).length_squared() < p_size.0.powi(2) { + if (mouse_pos - t).length_squared() < (p_size.0 * scale).powi(2) { *holding = Some((e, *edge)); break; } @@ -55,8 +57,9 @@ pub fn modify_sys( else if let Ok(mut t) = transforms.get_mut(pe) { // Update the dot position let gt = gtransforms.get(pe).unwrap(); - let ang = gt.rotation.to_euler(EulerRot::XYZ).2; - let delta = Mat2::from_angle(-ang) * (mouse_pos - gt.translation.xy()); + let rot = gt.to_scale_rotation_translation().1; + let ang = rot.to_euler(EulerRot::XYZ).2; + let delta = Mat2::from_angle(-ang) * (mouse_pos - gt.translation().xy()); t.translation += delta.extend(0.0); // We need to recalculate the center, and update the points to be the new relevant point from the center let center_offset = calc_shape_center_offset(&transforms, sd); diff --git a/src/rotate.rs b/src/rotate.rs deleted file mode 100644 index e6d2125..0000000 --- a/src/rotate.rs +++ /dev/null @@ -1,44 +0,0 @@ -use bevy::prelude::*; -use bevy::math::Vec3Swizzles; -use crate::*; - -pub fn rotate_sys( - mut holding: Local>, // main_shape we hold and the angle offset - mouse: Res>, - wnds: Res, - q_cam: Query<(&Camera, &GlobalTransform), With>, - p_size: Res, - mut transforms: Query<&mut Transform>, - gtransforms: Query<&GlobalTransform>, - shapes: Query<&ShapeData>, -) { - if let Some(mouse_pos) = get_mouse_pos(&q_cam, &wnds) { - if mouse.just_pressed(MouseButton::Left) && holding.is_none() { - for sd in shapes.iter().filter(|x| x.shape != CreateShape::Circle /* no reason to rotate circles ;) */) { - for edge in sd.edges.iter() { - if let Ok(gt) = gtransforms.get(*edge) { - if (mouse_pos - gt.translation.xy()).length_squared() < p_size.0.powi(2) { - // We grabbed an entity, we now need an angle offset - let center = gtransforms.get(sd.main_shape).unwrap().translation.xy(); - let angle_offset = (mouse_pos - center).angle_between(Vec2::X); - let angle_offset = transforms.get(sd.main_shape).unwrap().rotation.to_euler(EulerRot::XYZ).2 + angle_offset; - - *holding = Some((sd.main_shape, angle_offset)); - } - } - } - } - } - else if mouse.just_released(MouseButton::Left) { - *holding = None; - } - else if let Some((en, ang_offset)) = *holding { - let center = gtransforms.get(en).unwrap().translation.xy(); - let ang_curr = (mouse_pos - center).angle_between(Vec2::X); - - if let Ok(mut t) = transforms.get_mut(en) { - t.rotation = Quat::from_rotation_z(ang_offset - ang_curr); - } - } - } -} \ No newline at end of file diff --git a/src/ui.rs b/src/ui.rs index f95de45..2e8a5f1 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -1,7 +1,7 @@ use bevy::math::{Vec3Swizzles, Mat2}; use bevy::prelude::*; use bevy_egui::{egui, EguiContext}; -use bevy_prototype_lyon::prelude::Path; +use bevy_prototype_lyon::prelude::{Path, DrawMode, FillMode, StrokeMode}; use crate::*; pub fn action_bar_sys( @@ -20,11 +20,6 @@ pub fn action_bar_sys( if m.clicked() { state.current_action = Action::Modify; } - let r = hui.button(egui::RichText::new("R").color(state.current_action_color(&colors, Action::Rotate))) - .on_hover_text("Rotate"); - if r.clicked() { - state.current_action = Action::Rotate; - } let c = hui.button(egui::RichText::new("C").color(state.current_action_color(&colors, Action::Create))) .on_hover_text("Create"); if c.clicked() { @@ -74,6 +69,7 @@ pub fn shape_tree_sys( mut transforms: Query<&mut Transform>, global_transforms: Query<&GlobalTransform>, mut paths: Query<&mut Path>, + mut draw_modes: Query<&mut DrawMode, With>, ) { if !shapes.is_empty() { egui::Window::new("Shape Tree") @@ -83,7 +79,7 @@ pub fn shape_tree_sys( .show(egui_ctx.ctx_mut(), |ui| { for (e, mut sd) in shapes.iter_mut () { ui.push_id(e.id(), |ui| { - let ui_func = |ui: &mut egui::Ui| { + let mut ui_func = |ui: &mut egui::Ui| { if let Ok(mut t) = transforms.get_mut(sd.main_shape) { ui.horizontal(|hui| { hui.label("Translation:"); @@ -102,14 +98,15 @@ pub fn shape_tree_sys( ui.horizontal(|hui| { hui.label(format!("Edge {}", i)); let gt = global_transforms.get(*edge).unwrap(); - let mut gt_x = gt.translation.x; - let mut gt_y = gt.translation.y; + let mut gt_x = gt.translation().x; + let mut gt_y = gt.translation().y; let c1 = hui.add(egui::DragValue::new(&mut gt_x)).changed(); let c2 = hui.add(egui::DragValue::new(&mut gt_y)).changed(); if c1 || c2 { - let ang = gt.rotation.to_euler(EulerRot::XYZ).2; - let delta = Mat2::from_angle(-ang) * (Vec2::new(gt_x, gt_y) - gt.translation.xy()); + let rot = gt.to_scale_rotation_translation().1; + let ang = rot.to_euler(EulerRot::XYZ).2; + let delta = Mat2::from_angle(-ang) * (Vec2::new(gt_x, gt_y) - gt.translation().xy()); if let Ok(mut t) = transforms.get_mut(*edge) { t.translation += delta.extend(0.0); } @@ -143,7 +140,19 @@ pub fn shape_tree_sys( else { let default_name = format!("{:?}", sd.shape); ui.horizontal(|hui| { - let closed = hui.collapsing(sd.name.as_ref().unwrap_or(&default_name), ui_func).fully_closed(); + let collapse = hui.collapsing(sd.name.as_ref().unwrap_or(&default_name), |ui| { + ui.horizontal(|hui| { + if hui.button("E").clicked() { + *name_change = Some((e, format!("{:?}", sd.shape))); + } + if hui.button("D").clicked() { + coms.entity(sd.main_shape).despawn_recursive(); + coms.entity(e).despawn(); + } + }); + ui_func(ui); + }); + let closed = collapse.fully_closed(); if closed && hui.button("E").clicked() { *name_change = Some((e, default_name)); } @@ -151,6 +160,21 @@ pub fn shape_tree_sys( coms.entity(sd.main_shape).despawn_recursive(); coms.entity(e).despawn(); } + let d_normal = DrawMode::Outlined { + fill_mode: FillMode::color(Color::rgba(0.0, 0.5, 0.5, 0.4)), + outline_mode: StrokeMode::new(Color::rgba(0.0, 0.5, 0.5, 0.6), 3.0), + }; + let d_open = DrawMode::Outlined { + fill_mode: FillMode::color(Color::rgba(0.0, 0.5, 0.5, 0.4)), + outline_mode: StrokeMode::new(Color::GOLD, 3.0), + }; + + let wanted_dm = if collapse.fully_open() { d_open } else { d_normal }; + if let Ok(mut dm) = draw_modes.get_mut(sd.main_shape) { + if *dm != wanted_dm { + *dm = wanted_dm + } + } }); } });