From f65f29e6b0080af49e5da19a468cea4f477a2d0a Mon Sep 17 00:00:00 2001 From: Tobias Berger Date: Sun, 13 Nov 2022 21:22:42 +0100 Subject: [PATCH] Make world generation asynchronous; Update dependencies (Bevy 0.9, ayyy) --- .gitignore | 1 + Cargo.lock | 614 +++++++++++++++++----------------- Cargo.toml | 12 +- planet/Cargo.toml | 6 +- planet/src/world.rs | 22 +- planet/src/world_manager.rs | 39 ++- src/components/mod.rs | 3 +- src/components/panning/mod.rs | 12 - src/gui/widget.rs | 5 +- src/gui/widgets/toolbar.rs | 9 +- src/gui/window.rs | 5 +- src/main.rs | 152 +++++---- src/planet_renderer.rs | 8 +- src/plugins/mod.rs | 2 - src/plugins/panning_plugin.rs | 47 --- src/plugins/world_plugins.rs | 82 +++-- src/resources/mod.rs | 19 +- 17 files changed, 535 insertions(+), 503 deletions(-) delete mode 100644 src/components/panning/mod.rs delete mode 100644 src/plugins/panning_plugin.rs diff --git a/.gitignore b/.gitignore index ea8c4bf..5cc61eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /target +.fleet/run.json \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 5a3a88f..7aee2ce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -43,11 +43,11 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464b3811b747f8f7ebc8849c9c728c39f6ac98a055edad93baf9eb330e3f8f9d" +checksum = "bf6ccdb167abbf410dcb915cabd428929d7f6a04980b54a11f26a39f1c7f7107" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "getrandom", "once_cell", "version_check", @@ -70,14 +70,14 @@ checksum = "85965b6739a430150bdd138e2374a98af0c3ee0d030b3bb7fc3bddff58d0102e" [[package]] name = "android_logger" -version = "0.10.1" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9ed09b18365ed295d722d0b5ed59c01b79a826ff2d2a8f73d5ecca8e6fb2f66" +checksum = "b5e9dd62f37dea550caf48c77591dc50bd1a378ce08855be1a0c42a97b7550fb" dependencies = [ "android_log-sys", "env_logger", - "lazy_static", "log", + "once_cell", ] [[package]] @@ -111,13 +111,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc120354d1b5ec6d7aaf4876b602def75595937b5e15d356eb554ab5177e08bb" dependencies = [ "clipboard-win", - "core-graphics 0.22.3", + "core-graphics", "image 0.23.14", "log", "objc", "objc-foundation", "objc_id", - "parking_lot 0.12.1", + "parking_lot", "thiserror", "winapi", "x11rb", @@ -144,25 +144,35 @@ version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28" dependencies = [ - "concurrent-queue", + "concurrent-queue 1.2.4", "event-listener", "futures-core", ] [[package]] name = "async-executor" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" +checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" dependencies = [ + "async-lock", "async-task", - "concurrent-queue", + "concurrent-queue 2.0.0", "fastrand", "futures-lite", - "once_cell", "slab", ] +[[package]] +name = "async-lock" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8101efe8695a6c17e02911402145357e718ac92d3ff88ae8419e84b1707b685" +dependencies = [ + "event-listener", + "futures-lite", +] + [[package]] name = "async-task" version = "4.3.0" @@ -189,33 +199,33 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "bevy" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea147ef1ebb92d41294cfad804c40de151b174c711ce6e0a4a40eba23eae1a4" +checksum = "3654d60973fcde065efcfe0c9066c81a76987d28c45233998b2ccdc581dcd914" dependencies = [ "bevy_internal", ] [[package]] name = "bevy_app" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e4ae0a6ed2adf3b153511b4645241660a93f747c05ecd1e5a909dafc803cad4" +checksum = "e7240e455d6976b20d24bf8eda37cd9154116fe9cc2beef7bdc009b4c6fff139" dependencies = [ "bevy_derive", "bevy_ecs", "bevy_reflect", - "bevy_tasks", "bevy_utils", + "downcast-rs", "wasm-bindgen", "web-sys", ] [[package]] name = "bevy_asset" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ec773c861a7e9d9978771f59f385500ec6da3a1ab5487705cddb054393d3d19" +checksum = "86ca05c472cd4939aed5b2980ad9b416a250ae4674824e8c4b569ddf18ab5230" dependencies = [ "anyhow", "bevy_app", @@ -230,7 +240,7 @@ dependencies = [ "fastrand", "js-sys", "ndk-glue", - "parking_lot 0.12.1", + "parking_lot", "serde", "thiserror", "wasm-bindgen", @@ -240,9 +250,9 @@ dependencies = [ [[package]] name = "bevy_core" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c53172003d5cde7780870b5403c66c8ede3581faf3e510e916d8b4baa5b538d2" +checksum = "0d344ff340874fb3f1e458f03eca2b731cb8174495e9c0828f5e4569765489cb" dependencies = [ "bevy_app", "bevy_ecs", @@ -255,27 +265,29 @@ dependencies = [ [[package]] name = "bevy_core_pipeline" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e60efd10d593f6d122f2687f74c09ad55835a8f999c35bed6380ddd8e6ff7f2" +checksum = "13523e290f9aad62987e04836d66819fb97afeaf794847b6f64121c62a4db916" dependencies = [ "bevy_app", "bevy_asset", "bevy_derive", "bevy_ecs", + "bevy_math", "bevy_reflect", "bevy_render", "bevy_transform", "bevy_utils", + "bitflags", "radsort", "serde", ] [[package]] name = "bevy_derive" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e6345431bbe6d7b6c165cd860ecd0b35da929779571259c5df970ac256d45f9" +checksum = "a12e50d2ff8423438e971c44a90baefc9e351edd45b50b8d077f9ad4f7a0a2a5" dependencies = [ "bevy_macro_utils", "quote", @@ -284,11 +296,12 @@ dependencies = [ [[package]] name = "bevy_diagnostic" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ac9f4c2815f412be4b6e21e4b299cdafa710f651d064f6d40b2a8377a0d17c" +checksum = "d3415f3a220d8706daac84986d744374fd18883add3a22e894af8cddf2cf1c29" dependencies = [ "bevy_app", + "bevy_core", "bevy_ecs", "bevy_log", "bevy_time", @@ -297,9 +310,9 @@ dependencies = [ [[package]] name = "bevy_ecs" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c174066a24ed8a14d15ea58b0aea1c1f5c763f4bb36ebdc2b1dc78026007d0f5" +checksum = "43b29e39772df5e8939f7f540ee152569eebeb3c2cc35a68670688ae008ba2cf" dependencies = [ "async-channel", "bevy_ecs_macros", @@ -308,6 +321,7 @@ dependencies = [ "bevy_tasks", "bevy_utils", "downcast-rs", + "event-listener", "fixedbitset", "fxhash", "serde", @@ -316,9 +330,9 @@ dependencies = [ [[package]] name = "bevy_ecs_macros" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc50c39e49e8febccc74e8e731680adb0cb4aef1f53275740cbaa95c6da71f4f" +checksum = "10b8e7e7fb3ab9554c77e0f8a2531abd05d40ddb0145a8dfa72434cefa52ee5c" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -328,9 +342,9 @@ dependencies = [ [[package]] name = "bevy_egui" -version = "0.16.1" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d365761fd6a5c227b1f88f38b560287334accb69cfe938443e27615464edc897" +checksum = "33bf9a0085909f3dc3d5ca7be6a6e6792b8b30b98bba9cca13baa49e2f3e3206" dependencies = [ "arboard", "bevy", @@ -340,9 +354,9 @@ dependencies = [ [[package]] name = "bevy_encase_derive" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68bc194009c5e9b97da64a08142dd183c264885d99c985cf849868103018adf1" +checksum = "3a0773119830d63dde225338c0c556f84cd68e8e69de5b62a1b172fdddc5b915" dependencies = [ "bevy_macro_utils", "encase_derive_impl", @@ -350,9 +364,9 @@ dependencies = [ [[package]] name = "bevy_gltf" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79db7d7e71b47a69953fbe8407ded5c6308eaeecf9a05efd5dfb42992f400a16" +checksum = "fd77158983e09cbbb8115a2c629bdf3249cfff58e8e19f1c62861b1e5495eaf1" dependencies = [ "anyhow", "base64", @@ -378,12 +392,14 @@ dependencies = [ [[package]] name = "bevy_hierarchy" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb1ec76099ea5a716de08ea42ff41f036ebe2502df1d569168b58f16458a85e" +checksum = "23b5181dc3d621c3d18a1209791e82199409d6ddf5376ee19f2e26ad7bfd9b06" dependencies = [ "bevy_app", + "bevy_core", "bevy_ecs", + "bevy_log", "bevy_reflect", "bevy_utils", "smallvec", @@ -391,21 +407,23 @@ dependencies = [ [[package]] name = "bevy_input" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1821c4b760ba6ddb4fe61806e9cc33f40b09a884557aca4553a29b8c7d73c6b4" +checksum = "10f72c3037535eb41b863a22c2e58d3845a096401f9b92204b6a240e36a5151b" dependencies = [ "bevy_app", "bevy_ecs", "bevy_math", + "bevy_reflect", "bevy_utils", + "thiserror", ] [[package]] name = "bevy_internal" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee63ad1e3f95a26ff2c227fadb1534a7bfe3a098e0e45c347f2f2575a573d9bc" +checksum = "0ff89c2c2644c588d72cf505f15ad515479705c82ad7aa359ad2249646995a76" dependencies = [ "bevy_app", "bevy_asset", @@ -437,12 +455,13 @@ dependencies = [ [[package]] name = "bevy_log" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "092daf498887814a064331dfcd1cf487a5ddab01fd38629b84a35b8b664462a1" +checksum = "66c1d5f2cbcf5c3ce87d42afb6ba98177f8f758278364cbc79a2b3bf38415f0e" dependencies = [ "android_log-sys", "bevy_app", + "bevy_ecs", "bevy_utils", "console_error_panic_hook", "tracing-log", @@ -452,9 +471,9 @@ dependencies = [ [[package]] name = "bevy_macro_utils" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43fb5137e5198302d7c6c33d1e454cf48a586e7c6fd12f4860f12863951e16b9" +checksum = "656fa7b3434ac5d5c2883dde3c075f834ff51178f2f48ef2454b6f2ada75cb15" dependencies = [ "quote", "syn", @@ -463,31 +482,33 @@ dependencies = [ [[package]] name = "bevy_math" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531f2b90c7e861a96f418b3d560131b3354c5e67a67eba3953a45a56ea0114d2" +checksum = "b26459575a5f9695788e3487aa0a5f9252562e0fc57065e6f35f370dbfac7d4a" dependencies = [ "glam", + "serde", ] [[package]] name = "bevy_mikktspace" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "941e7d3d4e1dbb735f040e4cdc1558be1d3c38d43f1d9fdbb039c39a7849a00b" +checksum = "1e67d9caff1be480eb097e1a5ee7332762e19a2ea3d07496017fc8221ea6bc46" dependencies = [ "glam", ] [[package]] name = "bevy_pbr" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "176073021a4caeb8b448f24ce790fb57fde74b114f345064a8b102d2f7bed905" +checksum = "5a2e5069b351743e5660f837671135a7aac585cd2c1d7d0b90d92a2d84c2a1fd" dependencies = [ "bevy_app", "bevy_asset", "bevy_core_pipeline", + "bevy_derive", "bevy_ecs", "bevy_math", "bevy_reflect", @@ -502,16 +523,17 @@ dependencies = [ [[package]] name = "bevy_ptr" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9960c19e582b43cebe1894b6679520a4f50802d1cc5b6fa432f8d685ed232f09" +checksum = "c36f4d3af0cda50c07e2010d0351ab79594681116edd280592ca394db73ef32b" [[package]] name = "bevy_reflect" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fc689dd7a7df3b3768884a4754711d406aa302ea48da483c03b52715fa95045" +checksum = "c39f74d7786a0016c74b6bfb57f44928d536bef8bf6db7505d4cbe9435aeda7b" dependencies = [ + "bevy_math", "bevy_ptr", "bevy_reflect_derive", "bevy_utils", @@ -519,7 +541,7 @@ dependencies = [ "erased-serde", "glam", "once_cell", - "parking_lot 0.12.1", + "parking_lot", "serde", "smallvec", "thiserror", @@ -527,11 +549,12 @@ dependencies = [ [[package]] name = "bevy_reflect_derive" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c36fa5100832c787c10558d31632ddc454c221e8dfacbbef836938f59614754" +checksum = "5b2c0aab36b060e88cd93c56710d9ce8ab6107596dc4cbb8a9d84ba98f39c63b" dependencies = [ "bevy_macro_utils", + "bit-set", "proc-macro2", "quote", "syn", @@ -540,9 +563,9 @@ dependencies = [ [[package]] name = "bevy_render" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "600bcef85c7efac6e38ed725707f0e5b7c59b510430034ba2f743f472493f845" +checksum = "14033813fdd9587663ffa6b6d84327f30bd0398b40386677704bd4d608625420" dependencies = [ "anyhow", "bevy_app", @@ -563,16 +586,15 @@ dependencies = [ "bevy_window", "bitflags", "codespan-reporting", - "copyless", "downcast-rs", "encase", "futures-lite", "hex", "hexasphere", - "image 0.24.4", + "image 0.24.5", "naga", "once_cell", - "parking_lot 0.12.1", + "parking_lot", "regex", "serde", "smallvec", @@ -583,9 +605,9 @@ dependencies = [ [[package]] name = "bevy_render_macros" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1be90adc9e5d5808833e363670818da5fe68ccafd7ca983a457f90957d2a430b" +checksum = "e29db44fb38743a08e71bed324a19b8ce2e9f2853abcb4640e03625dd55cc186" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -595,9 +617,9 @@ dependencies = [ [[package]] name = "bevy_scene" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a045d575d2c8f776d8ea965363c81660243fefbfc3712ead938b00dfd6797216" +checksum = "b5b98c58cba6417961856a57ba1116d78db3364b8e791ac517175f04b9abdb6b" dependencies = [ "anyhow", "bevy_app", @@ -617,13 +639,14 @@ dependencies = [ [[package]] name = "bevy_sprite" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69c419f3db09d7ac1f4d45e0874d349d5d6f47f48bc10d55cd0da36413e2331e" +checksum = "b135b2ccf7c5eaf9b3e20e39ef80081842f122081c8ce988cb2054afd1af270e" dependencies = [ "bevy_app", "bevy_asset", "bevy_core_pipeline", + "bevy_derive", "bevy_ecs", "bevy_log", "bevy_math", @@ -633,34 +656,32 @@ dependencies = [ "bevy_utils", "bitflags", "bytemuck", - "copyless", "fixedbitset", "guillotiere", "rectangle-pack", - "serde", "thiserror", ] [[package]] name = "bevy_tasks" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b753acb3d5b9dbfd77038560fe1893c17d4ee0a4242c2ee70da9d59430537" +checksum = "a5d91d94d2db1476d7452509c1967fe83d66da5f683f5d49ba31e0f455adfcdc" dependencies = [ "async-channel", "async-executor", - "event-listener", + "async-task", + "concurrent-queue 1.2.4", "futures-lite", - "num_cpus", "once_cell", "wasm-bindgen-futures", ] [[package]] name = "bevy_text" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c265b7515faf55a3b92fd6ce0ab65dd246f247e11d737d6f5cdaf49c2be42c63" +checksum = "fe4282d77fb5dd38bb2a7736a770f5e499782b8c546b9f7d73f6893ab04c8041" dependencies = [ "ab_glyph", "anyhow", @@ -681,9 +702,9 @@ dependencies = [ [[package]] name = "bevy_time" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22830665b8476292b861216383fd79922aef2b540f9fd09d49144e3e5e94550e" +checksum = "a259a4b04f5ae2d02998247a69e5a711b0754eb22971320bf727c6f4d7bf38fa" dependencies = [ "bevy_app", "bevy_ecs", @@ -694,9 +715,9 @@ dependencies = [ [[package]] name = "bevy_transform" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4bb8760f03e9667e7499a5ceec1f7630fc3e45702781ac0df56cb969e8ae668" +checksum = "b7b4cdac87f8a58c3ec166b5673dd35565c61eb0ec648e3b0cc30083170c0fb3" dependencies = [ "bevy_app", "bevy_ecs", @@ -707,9 +728,9 @@ dependencies = [ [[package]] name = "bevy_ui" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "062ce086de1a4a470e5df48cb5c16a1dc97ab610e635cafabdef26c4a1ef5756" +checksum = "da6d85fcefe5a2bf259c2ff58a7a29b6102070242dc385b42a2656f4e8918883" dependencies = [ "bevy_app", "bevy_asset", @@ -731,13 +752,14 @@ dependencies = [ "serde", "smallvec", "taffy", + "thiserror", ] [[package]] name = "bevy_utils" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e9aa1866c1cf7ee000f281ce9e90d02d701f5c7380a107252017e58e2f5246" +checksum = "1d7473635355a99fcf7181091a2ac11df03561706b1696cb0cc72e4ddd010571" dependencies = [ "ahash 0.7.6", "getrandom", @@ -749,24 +771,24 @@ dependencies = [ [[package]] name = "bevy_window" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707dbbebfac72b1e63e874e7a11a345feab8c440355c0bd71e6dff26709fba9a" +checksum = "07a0d03022a6d1ec0d05c01a77f5592a9602bbc1cfc11ba457788b69f9ca175d" dependencies = [ "bevy_app", "bevy_ecs", "bevy_input", "bevy_math", + "bevy_reflect", "bevy_utils", - "raw-window-handle", - "web-sys", + "raw-window-handle 0.5.0", ] [[package]] name = "bevy_winit" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98b15fee4b75472e3441b0c7221467303e4ce59b342a94a328e447e7cdb5a43c" +checksum = "ebc7b4e4f83e268dcbd6f9c4e1c18f7382e457f5f1b160da4c85d9a3f489771a" dependencies = [ "approx", "bevy_app", @@ -776,7 +798,7 @@ dependencies = [ "bevy_utils", "bevy_window", "crossbeam-channel", - "raw-window-handle", + "raw-window-handle 0.5.0", "wasm-bindgen", "web-sys", "winit", @@ -817,18 +839,18 @@ checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" [[package]] name = "bytemuck" -version = "1.12.2" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aec14f5d4e6e3f927cd0c81f72e5710d95ee9019fbeb4b3021193867491bfd8" +checksum = "aaa3a8d9a1ca92e282c96a32d6511b695d7d994d1d102ba85d279f9b2756947f" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9e1f5fa78f69496407a27ae9ed989e3c3b072310286f5ef385525e4cbc24a9" +checksum = "5fe233b960f12f8007e3db2d136e3cb1c291bfd7396e384ee76025fc1a3932b4" dependencies = [ "proc-macro2", "quote", @@ -849,25 +871,22 @@ checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" [[package]] name = "calloop" -version = "0.9.3" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf2eec61efe56aa1e813f5126959296933cf0700030e4314786c48779a66ab82" +checksum = "595eb0438b3c6d262395fe30e6de9a61beb57ea56290b00a07f227fe6e20cbf2" dependencies = [ "log", - "nix 0.22.3", + "nix 0.24.2", + "slotmap", + "thiserror", + "vec_map", ] [[package]] name = "cc" -version = "1.0.74" +version = "1.0.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +checksum = "76a284da2e6fe2092f2353e51713435363112dfd60030e22add80be333fb928f" [[package]] name = "cfg-if" @@ -901,8 +920,8 @@ dependencies = [ "bitflags", "block", "cocoa-foundation", - "core-foundation 0.9.3", - "core-graphics 0.22.3", + "core-foundation", + "core-graphics", "foreign-types", "libc", "objc", @@ -916,7 +935,7 @@ checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" dependencies = [ "bitflags", "block", - "core-foundation 0.9.3", + "core-foundation", "core-graphics-types", "foreign-types", "libc", @@ -948,13 +967,22 @@ dependencies = [ "cache-padded", ] +[[package]] +name = "concurrent-queue" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd7bef69dc86e3c610e4e7aed41035e2a7ed12e72dd7530f61327a6579a4390b" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "console_error_panic_hook" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "wasm-bindgen", ] @@ -964,56 +992,22 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed2b28323eee4fb66bb824401daa3e46bd445b9a9298a3d382b320710ba69dd" -[[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.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" -dependencies = [ - "core-foundation-sys 0.7.0", - "libc", -] - [[package]] name = "core-foundation" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" dependencies = [ - "core-foundation-sys 0.8.3", + "core-foundation-sys", "libc", ] -[[package]] -name = "core-foundation-sys" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" - [[package]] name = "core-foundation-sys" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" -[[package]] -name = "core-graphics" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" -dependencies = [ - "bitflags", - "core-foundation 0.7.0", - "foreign-types", - "libc", -] - [[package]] name = "core-graphics" version = "0.22.3" @@ -1021,7 +1015,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" dependencies = [ "bitflags", - "core-foundation 0.9.3", + "core-foundation", "core-graphics-types", "foreign-types", "libc", @@ -1034,31 +1028,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" dependencies = [ "bitflags", - "core-foundation 0.9.3", + "core-foundation", "foreign-types", "libc", ] -[[package]] -name = "core-video-sys" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" -dependencies = [ - "cfg-if 0.1.10", - "core-foundation-sys 0.7.0", - "core-graphics 0.19.2", - "libc", - "objc", -] - [[package]] name = "crc32fast" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -1067,7 +1048,7 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "crossbeam-utils", ] @@ -1077,7 +1058,7 @@ version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -1169,7 +1150,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc9fcd393c3daaaf5909008a1d948319d538b79c51871e4df0993260260a94e4" dependencies = [ - "ahash 0.8.1", + "ahash 0.8.2", "epaint", "nohash-hasher", ] @@ -1185,9 +1166,9 @@ dependencies = [ [[package]] name = "encase" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a516181e9a36e8982cb37933c5e7dba638c42938cacde46ee4e5b4156f881b9" +checksum = "c6bdd416eb91cd6fb73a22fbc9fa1ea013641cce1a58905c31623ff9c562e811" dependencies = [ "const_panic", "encase_derive", @@ -1197,18 +1178,18 @@ dependencies = [ [[package]] name = "encase_derive" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5b802412eea315f29f2bb2da3a5963cd6121f56eaa06aebcdc0c54eea578f22" +checksum = "df06cd7ea02426c2a0a164656bf116813584b461b8a7bb059b7941ab981105d3" dependencies = [ "encase_derive_impl", ] [[package]] name = "encase_derive_impl" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f2f4de457d974f548d2c2a16f709ebd81013579e543bd1a9b19ced88132c2cf" +checksum = "b299aab48b9a897ddd730dde2b5550af7c90ec6779c78e3c70f4c28d9337663f" dependencies = [ "proc-macro2", "quote", @@ -1217,9 +1198,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.8.4" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" dependencies = [ "log", "regex", @@ -1232,12 +1213,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ba04741be7f6602b1a1b28f1082cce45948a7032961c52814f8946b28493300" dependencies = [ "ab_glyph", - "ahash 0.8.1", + "ahash 0.8.2", "atomic_refcell", "bytemuck", "emath", "nohash-hasher", - "parking_lot 0.12.1", + "parking_lot", ] [[package]] @@ -1362,7 +1343,7 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "libc", "wasi", @@ -1371,9 +1352,9 @@ dependencies = [ [[package]] name = "glam" -version = "0.21.3" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518faa5064866338b013ff9b2350dc318e14cc4fcd6cb8206d7e7c9886c98815" +checksum = "12f597d56c1bd55a811a1be189459e8fad2bbc272616375602443bdfb37fa774" dependencies = [ "bytemuck", "serde", @@ -1516,15 +1497,6 @@ dependencies = [ "serde", ] -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - [[package]] name = "hex" version = "0.4.3" @@ -1533,9 +1505,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hexasphere" -version = "7.2.1" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaadafd1beb6ad34cff5521987017ece5848f9ad5401fdb039bff896a643add4" +checksum = "619ce654558681d7d0a7809e1b20249c7032ff13ee6baa7bb7ff64f7f28a906a" dependencies = [ "glam", "once_cell", @@ -1571,9 +1543,9 @@ dependencies = [ [[package]] name = "image" -version = "0.24.4" +version = "0.24.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd8e4fb07cf672b1642304e731ef8a6a4c7891d67bb4fd4f5ce58cd6ed86803c" +checksum = "69b7ea949b537b0fd0af141fff8c77690f2ce96f4f41f042ccb6c69c6c965945" dependencies = [ "bytemuck", "byteorder", @@ -1598,19 +1570,13 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" -[[package]] -name = "inplace_it" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e567468c50f3d4bc7397702e09b380139f9b9288b4e909b070571007f8b5bf78" - [[package]] name = "instant" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -1668,11 +1634,11 @@ checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" [[package]] name = "libloading" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "winapi", ] @@ -1692,7 +1658,7 @@ version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -1721,9 +1687,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memmap2" -version = "0.3.1" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b6c2ebff6180198788f5db08d7ce3bc1d0b617176678831a7510825973e357" +checksum = "4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dc" dependencies = [ "libc", ] @@ -1785,14 +1751,14 @@ dependencies = [ "libc", "log", "wasi", - "windows-sys", + "windows-sys 0.42.0", ] [[package]] name = "naga" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f50357e1167a3ab92d6b3c7f4bf5f7fd13fde3f4b28bf0d5ea07b5100fdb6c0" +checksum = "262d2840e72dbe250e8cf2f522d080988dfca624c4112c096238a4845f591707" dependencies = [ "bit-set", "bitflags", @@ -1812,14 +1778,15 @@ dependencies = [ [[package]] name = "ndk" -version = "0.5.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d868f654c72e75f8687572699cdabe755f03effbb62542768e995d5b8d699d" +checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" dependencies = [ "bitflags", "jni-sys", "ndk-sys", "num_enum", + "raw-window-handle 0.5.0", "thiserror", ] @@ -1831,18 +1798,19 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-glue" -version = "0.5.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71bee8ea72d685477e28bd004cfe1bf99c754d688cd78cad139eae4089484d4" +checksum = "0434fabdd2c15e0aab768ca31d5b7b333717f03cf02037d5a0a3ff3c278ed67f" dependencies = [ "android_logger", - "lazy_static", "libc", "log", "ndk", "ndk-context", "ndk-macro", "ndk-sys", + "once_cell", + "parking_lot", ] [[package]] @@ -1860,9 +1828,12 @@ dependencies = [ [[package]] name = "ndk-sys" -version = "0.2.2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" +checksum = "21d83ec9c63ec5bf950200a8e508bdad6659972187b625469f58ef8c08e29046" +dependencies = [ + "jni-sys", +] [[package]] name = "nix" @@ -1872,7 +1843,7 @@ checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" dependencies = [ "bitflags", "cc", - "cfg-if 1.0.0", + "cfg-if", "libc", "memoffset", ] @@ -1884,7 +1855,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" dependencies = [ "bitflags", - "cfg-if 1.0.0", + "cfg-if", "libc", "memoffset", ] @@ -1967,16 +1938,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "num_enum" version = "0.5.7" @@ -2051,9 +2012,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "owned_ttf_parser" -version = "0.17.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4665508572151759e8d60404e20dc096ef93a99801a05ac2ac6e43bf5b4ca187" +checksum = "18904d3c65493a9f0d7542293d1a7f69bfdc309a6b9ef4f46dc3e58b0577edc5" dependencies = [ "ttf-parser", ] @@ -2064,17 +2025,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.5", -] - [[package]] name = "parking_lot" version = "0.12.1" @@ -2082,21 +2032,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.4", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" -dependencies = [ - "cfg-if 1.0.0", - "instant", - "libc", - "redox_syscall", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -2105,11 +2041,11 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-sys", + "windows-sys 0.42.0", ] [[package]] @@ -2142,7 +2078,7 @@ checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" [[package]] name = "planet" -version = "0.2.1" +version = "0.3.0" dependencies = [ "bevy", "rand", @@ -2173,9 +2109,9 @@ dependencies = [ [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro-crate" @@ -2263,6 +2199,15 @@ dependencies = [ "cty", ] +[[package]] +name = "raw-window-handle" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" +dependencies = [ + "cty", +] + [[package]] name = "rectangle-pack" version = "0.4.2" @@ -2280,9 +2225,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" dependencies = [ "aho-corasick", "memchr", @@ -2300,9 +2245,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.27" +version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "renderdoc-sys" @@ -2312,9 +2257,9 @@ checksum = "f1382d1f0a252c4bf97dc20d979a2fdd05b024acd7c2ed0f7595d7817666a157" [[package]] name = "ron" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a" +checksum = "300a51053b1cb55c80b7a9fde4120726ddf25ca241a1cbb926626f62fb136bff" dependencies = [ "base64", "bitflags", @@ -2414,9 +2359,9 @@ dependencies = [ [[package]] name = "smithay-client-toolkit" -version = "0.15.4" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a28f16a97fa0e8ce563b2774d1e732dd5d4025d2772c5dba0a41a0f90a29da3" +checksum = "f307c47d32d2715eb2e0ece5589057820e0e5e70d07c247d1063e844e107f454" dependencies = [ "bitflags", "calloop", @@ -2424,7 +2369,7 @@ dependencies = [ "lazy_static", "log", "memmap2", - "nix 0.22.3", + "nix 0.24.2", "pkg-config", "wayland-client", "wayland-cursor", @@ -2441,6 +2386,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "str-buf" version = "1.0.6" @@ -2557,7 +2508,7 @@ version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -2670,6 +2621,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + [[package]] name = "version_check" version = "0.9.4" @@ -2694,7 +2651,7 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "wasm-bindgen-macro", ] @@ -2719,7 +2676,7 @@ version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -2844,17 +2801,18 @@ checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" [[package]] name = "wgpu" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "277e967bf8b7820a76852645a6bce8bbd31c32fda2042e82d8e3ea75fda8892d" +checksum = "c2272b17bffc8a0c7d53897435da7c1db587c87d3a14e8dae9cdb8d1d210fc0f" dependencies = [ "arrayvec", "js-sys", "log", "naga", - "parking_lot 0.12.1", - "raw-window-handle", + "parking_lot", + "raw-window-handle 0.5.0", "smallvec", + "static_assertions", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -2865,22 +2823,21 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b92788dec9d0c1bed849a1b83f01b2ee12819bf04a79c90f68e4173f7b5ba2" +checksum = "73d14cad393054caf992ee02b7da6a372245d39a484f7461c1f44f6f6359bd28" dependencies = [ "arrayvec", "bit-vec", "bitflags", "cfg_aliases", "codespan-reporting", - "copyless", "fxhash", "log", "naga", - "parking_lot 0.12.1", + "parking_lot", "profiling", - "raw-window-handle", + "raw-window-handle 0.5.0", "smallvec", "thiserror", "web-sys", @@ -2890,9 +2847,9 @@ dependencies = [ [[package]] name = "wgpu-hal" -version = "0.13.2" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cbdfc3d0637dba3d5536b93adef3d26023a0b96f0e1ee5ee9560a401d9f646" +checksum = "3cc320a61acb26be4f549c9b1b53405c10a223fbfea363ec39474c32c348d12f" dependencies = [ "android_system_properties", "arrayvec", @@ -2907,7 +2864,6 @@ dependencies = [ "glow", "gpu-alloc", "gpu-descriptor", - "inplace_it", "js-sys", "khronos-egl", "libloading", @@ -2915,11 +2871,12 @@ dependencies = [ "metal", "naga", "objc", - "parking_lot 0.12.1", + "parking_lot", "profiling", "range-alloc", - "raw-window-handle", + "raw-window-handle 0.5.0", "renderdoc-sys", + "smallvec", "thiserror", "wasm-bindgen", "web-sys", @@ -2929,9 +2886,9 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "0.13.2" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f762cbc08e1a51389859cf9c199c7aef544789cf3510889aab12c607f701604" +checksum = "fb6b28ef22cac17b9109b25b3bf8c9a103eeb293d7c5f78653979b09140375f6" dependencies = [ "bitflags", ] @@ -2976,6 +2933,19 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", +] + [[package]] name = "windows-sys" version = "0.42.0" @@ -2983,12 +2953,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", + "windows_aarch64_msvc 0.42.0", + "windows_i686_gnu 0.42.0", + "windows_i686_msvc 0.42.0", + "windows_x86_64_gnu 0.42.0", "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_x86_64_msvc 0.42.0", ] [[package]] @@ -2997,24 +2967,48 @@ version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + [[package]] name = "windows_aarch64_msvc" version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + [[package]] name = "windows_i686_gnu" version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + [[package]] name = "windows_i686_msvc" version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + [[package]] name = "windows_x86_64_gnu" version = "0.42.0" @@ -3027,6 +3021,12 @@ version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + [[package]] name = "windows_x86_64_msvc" version = "0.42.0" @@ -3035,43 +3035,43 @@ checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" [[package]] name = "winit" -version = "0.26.1" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b43cc931d58b99461188607efd7acb2a093e65fc621f54cad78517a6063e73a" +checksum = "bb796d6fbd86b2fd896c9471e6f04d39d750076ebe5680a3958f00f5ab97657c" dependencies = [ "bitflags", "cocoa", - "core-foundation 0.9.3", - "core-graphics 0.22.3", - "core-video-sys", + "core-foundation", + "core-graphics", "dispatch", "instant", - "lazy_static", "libc", "log", "mio", "ndk", "ndk-glue", - "ndk-sys", "objc", - "parking_lot 0.11.2", + "once_cell", + "parking_lot", "percent-encoding", - "raw-window-handle", + "raw-window-handle 0.4.3", + "raw-window-handle 0.5.0", "smithay-client-toolkit", "wasm-bindgen", "wayland-client", "wayland-protocols", "web-sys", - "winapi", + "windows-sys 0.36.1", "x11-dl", ] [[package]] name = "worlds-history-sim-rs" -version = "0.2.1" +version = "0.3.0" dependencies = [ "bevy", "bevy_egui", + "futures-lite", "fxhash", "planet", "tinyfiledialogs", diff --git a/Cargo.toml b/Cargo.toml index 2b97c89..14d550f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "worlds-history-sim-rs" -version = "0.2.1" +version = "0.3.0" edition = "2021" resolver = "2" @@ -35,7 +35,7 @@ path = "planet" default-features = false [dependencies.bevy] -version = "0.8.1" +version = "0.9.0" default-features = false [dependencies.fxhash] @@ -43,11 +43,15 @@ version = "0.2.1" optional = true [dependencies.bevy_egui] -version = "0.16.1" +version = "0.17" optional = true default-features = false features = ["manage_clipboard"] [dependencies.tinyfiledialogs] version = "3.9.1" -optional = true \ No newline at end of file +optional = true + +[dependencies.futures-lite] +version = "1.12.0" +default-features = false \ No newline at end of file diff --git a/planet/Cargo.toml b/planet/Cargo.toml index 805e781..24f2cf6 100644 --- a/planet/Cargo.toml +++ b/planet/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "planet" -version = "0.2.1" +version = "0.3.0" edition = "2021" [profile] @@ -15,7 +15,7 @@ default = ["logging", "render"] version = "0.8.5" [dependencies.bevy] -version = "0.8" +version = "0.9.0" default-features = false [dependencies.serde] @@ -24,4 +24,4 @@ default-features = false features = ["derive"] [dependencies.ron] -version = "0.7.1" \ No newline at end of file +version = "0.8.0" \ No newline at end of file diff --git a/planet/src/world.rs b/planet/src/world.rs index a71bc9e..9b0f093 100644 --- a/planet/src/world.rs +++ b/planet/src/world.rs @@ -1,4 +1,3 @@ -// TODO: Logging doesn't seem to work here? Figure out why and fix use { crate::{ math_util::{ @@ -149,6 +148,27 @@ impl World { } } + pub fn async_new(width: u32, height: u32, seed: u32) -> World { + World { + width, + height, + seed, + terrain: vec![ + vec![TerrainCell::default(); width.try_into().unwrap()]; + height.try_into().unwrap() + ], + continent_offsets: [default(); World::NUM_CONTINENTS as usize], + continent_sizes: [default(); World::NUM_CONTINENTS as usize], + max_altitude: World::MIN_ALTITUDE, + min_altitude: World::MAX_ALTITUDE, + max_rainfall: World::MIN_RAINFALL, + min_rainfall: World::MAX_RAINFALL, + max_temperature: World::MIN_TEMPERATURE, + min_temperature: World::MAX_TEMPERATURE, + rng: StdRng::seed_from_u64(seed as u64), + } + } + pub fn generate(&mut self) -> Result<(), WorldGenError> { if let Err(err) = self.generate_altitude() { return Err(WorldGenError::CartesianError(err)); diff --git a/planet/src/world_manager.rs b/planet/src/world_manager.rs index 4d8440b..3ab09e3 100644 --- a/planet/src/world_manager.rs +++ b/planet/src/world_manager.rs @@ -1,6 +1,11 @@ use { crate::{World, WorldGenError}, - bevy::{log::warn, utils::default}, + bevy::{ + log::warn, + prelude::Resource, + tasks::{AsyncComputeTaskPool, Task}, + utils::default, + }, rand::random, std::{ error::Error, @@ -14,7 +19,7 @@ use { #[derive(Debug)] pub enum LoadError { MissingSave(io::Error), - InvalidSave(ron::Error), + InvalidSave(ron::error::SpannedError), } impl Error for LoadError { fn source(&self) -> Option<&(dyn Error + 'static)> { @@ -74,12 +79,15 @@ impl Display for SaveError { } } -#[derive(Debug, Default)] +#[derive(Debug, Default, Resource)] pub struct WorldManager { world: Option, } impl WorldManager { + const NEW_WORLD_HEIGHT: u32 = 200; + const NEW_WORLD_WIDTH: u32 = 400; + #[must_use] pub fn new() -> WorldManager { default() @@ -160,11 +168,34 @@ impl WorldManager { self.get_world().unwrap() } + pub fn set_world(&mut self, world: World) { + self.world = Some(world); + } + pub fn new_world(&mut self, seed: Option) -> Result<&World, WorldGenError> { let seed = seed.unwrap_or_else(random); - let mut new_world = World::new(400, 200, seed); + let mut new_world = World::new( + WorldManager::NEW_WORLD_WIDTH, + WorldManager::NEW_WORLD_HEIGHT, + seed, + ); new_world.generate()?; self.world = Some(new_world); Ok(self.get_world().unwrap()) } + + pub fn new_world_async(&mut self, seed: Option) -> Task> { + AsyncComputeTaskPool::get().spawn(async move { + let seed = seed.unwrap_or_else(random); + let mut new_world = World::async_new( + WorldManager::NEW_WORLD_WIDTH, + WorldManager::NEW_WORLD_HEIGHT, + seed, + ); + match new_world.generate() { + Ok(()) => Ok(new_world), + Err(err) => Err(err), + } + }) + } } diff --git a/src/components/mod.rs b/src/components/mod.rs index 80818b0..8b13789 100644 --- a/src/components/mod.rs +++ b/src/components/mod.rs @@ -1,2 +1 @@ -#[cfg(feature = "render")] -pub(crate) mod panning; + diff --git a/src/components/panning/mod.rs b/src/components/panning/mod.rs deleted file mode 100644 index 128c1b9..0000000 --- a/src/components/panning/mod.rs +++ /dev/null @@ -1,12 +0,0 @@ -use bevy::ecs::component::Component; - -#[derive(Component)] -pub(crate) struct Pan2d { - pub(crate) enabled: bool, -} -impl Pan2d { - #[must_use] - pub(crate) const fn new() -> Pan2d { - Pan2d { enabled: true } - } -} diff --git a/src/gui/widget.rs b/src/gui/widget.rs index aa11a4e..7fee643 100644 --- a/src/gui/widget.rs +++ b/src/gui/widget.rs @@ -6,6 +6,7 @@ use { world::World, }, log::debug, + prelude::*, utils::HashMap, }, bevy_egui::egui::Ui, @@ -44,8 +45,8 @@ pub(crate) fn widget(world: &mut World, ui: &mut Ui, /// A UI widget may have multiple instances. We need to ensure the local state /// of these instances is not shared. This hashmap allows us to dynamically /// store instance states. -#[derive(Default)] -struct StateInstances { +#[derive(Default, Resource)] +struct StateInstances { instances: HashMap>, } diff --git a/src/gui/widgets/toolbar.rs b/src/gui/widgets/toolbar.rs index 7a2c4f4..07f3ea7 100644 --- a/src/gui/widgets/toolbar.rs +++ b/src/gui/widgets/toolbar.rs @@ -7,7 +7,7 @@ use { WidgetSystem, }, macros::iterable_enum, - resources::{OpenedWindows, ShouldRedraw}, + resources::{GenerateWorldTask, OpenedWindows}, }, bevy::{ ecs::{ @@ -34,10 +34,11 @@ impl ToolbarButton { world.resource_scope(|world, mut world_manager: Mut<'_, WorldManager>| { match self { ToolbarButton::GenerateWorld => { - if let Err(err) = world_manager.new_world(None) { - eprintln!("Failed to generate world: {}", err); + let generate_world_task = &mut world.resource_mut::(); + if generate_world_task.0.is_some() { + debug!("Already generating new world") } else { - world.resource_mut::().0 = true; + generate_world_task.0 = Some(world_manager.new_world_async(None)) } }, ToolbarButton::SaveLoad => { diff --git a/src/gui/window.rs b/src/gui/window.rs index 8118c40..486f3f4 100644 --- a/src/gui/window.rs +++ b/src/gui/window.rs @@ -8,6 +8,7 @@ use { world::World, }, log::debug, + prelude::Resource, utils::HashMap, }, bevy_egui::egui::{Context, Ui, Window}, @@ -80,8 +81,8 @@ fn window(world: &mut World, ctx: &Context) { }); } -#[derive(Default)] -struct StateInstances { +#[derive(Default, Resource)] +struct StateInstances { instances: HashMap>, } diff --git a/src/main.rs b/src/main.rs index aa9db4d..ff8c76d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,10 @@ #![cfg_attr(not(feature = "logging"), windows_subsystem = "windows")] +use { + crate::resources::GenerateWorldTask, + futures_lite::future::{block_on, poll_once}, +}; + pub(crate) mod components; #[cfg(feature = "render")] pub(crate) mod gui; @@ -7,52 +12,16 @@ pub(crate) mod macros; #[cfg(feature = "render")] pub(crate) mod planet_renderer; pub(crate) mod plugins; -#[cfg(feature = "render")] pub(crate) mod resources; -use { - bevy::{ - app::App, - log::LogSettings, - utils::{default, tracing::Level}, - }, - planet::WorldManager, - plugins::WorldPlugins, -}; +use {bevy::prelude::*, planet::WorldManager, plugins::WorldPlugins}; #[cfg(feature = "render")] use { - bevy::{ - asset::Assets, - core_pipeline::core_2d::{Camera2d, Camera2dBundle}, - ecs::{ - change_detection::{Mut, ResMut}, - query::With, - system::{Commands, IntoExclusiveSystem, Query, Res}, - world::World, - }, - input::{keyboard::KeyCode, Input}, - prelude::Vec2, - render::{ - camera::{Camera, RenderTarget}, - render_resource::{ - Extent3d, - TextureDescriptor, - TextureDimension, - TextureFormat, - TextureUsages, - }, - texture::{Image, ImageSettings}, - }, - sprite::{Sprite, SpriteBundle}, - transform::components::GlobalTransform, - window::{WindowDescriptor, Windows}, - winit::WinitSettings, - }, + bevy::render::camera::RenderTarget, bevy_egui::{ egui::{FontData, FontDefinitions, FontFamily}, EguiContext, }, - components::panning::Pan2d, gui::{render_windows, widget, widgets::ToolbarWidget, window::open_window, windows::TileInfo}, planet_renderer::{WorldRenderSettings, WorldRenderer}, resources::{CursorMapPosition, OpenedWindows, ShouldRedraw}, @@ -98,16 +67,45 @@ fn update_cursor_map_position( } } +fn handle_generate_world_task( + mut generate_world_task: ResMut<'_, GenerateWorldTask>, + mut world_manager: ResMut<'_, WorldManager>, + #[cfg(feature = "render")] mut should_redraw: ResMut<'_, ShouldRedraw>, +) { + if let Some(task) = &mut generate_world_task.0 { + if task.is_finished() { + debug!("Done"); + if let Some(result) = block_on(poll_once(task)) { + match result { + Ok(world) => { + world_manager.set_world(world); + #[cfg(feature = "render")] + { + should_redraw.0 = true; + } + }, + Err(err) => error!("{err:#?}"), + } + } + generate_world_task.0 = None; + } else { + debug!("Working") + } + } +} + #[cfg(feature = "render")] fn generate_graphics( mut commands: Commands<'_, '_>, world_manager: ResMut<'_, WorldManager>, - mut images: ResMut<'_, Assets>, - mut egui_context: ResMut<'_, EguiContext>, - mut render_settings: ResMut<'_, WorldRenderSettings>, + images: ResMut<'_, Assets>, + egui_context: ResMut<'_, EguiContext>, + render_settings: ResMut<'_, WorldRenderSettings>, ) { // Add Julia-Mono font to egui + { + let egui_context = egui_context.into_inner(); let ctx = egui_context.ctx_mut(); let mut fonts = FontDefinitions::default(); const FONT_NAME: &str = "Julia-Mono"; @@ -143,6 +141,14 @@ fn generate_graphics( }; // Set up 2D map mode { + use bevy::render::render_resource::{ + TextureDescriptor, + TextureDimension, + TextureFormat, + TextureUsages, + }; + let images = images.into_inner(); + let mut render_settings = render_settings.into_inner(); let map_image_handle = images.add(Image { data: vec![], texture_descriptor: TextureDescriptor { @@ -156,14 +162,13 @@ fn generate_graphics( }, ..default() }); - render_settings.map_image_handle_id = Some(map_image_handle.id); - _ = commands - .spawn_bundle(Camera2dBundle::default()) - .insert(Pan2d::new()); + render_settings.map_image_handle_id = Some(map_image_handle.id()); + _ = commands.spawn(Camera2dBundle::default()); // TODO: Switch to egui - _ = commands.spawn_bundle(SpriteBundle { - texture: images.get_handle(map_image_handle.id), + _ = commands.spawn(SpriteBundle { + texture: images + .get_handle(unsafe { render_settings.map_image_handle_id.unwrap_unchecked() }), sprite: Sprite { custom_size: Some(custom_sprite_size), ..default() @@ -234,7 +239,7 @@ fn redraw_map( let map_image = images .get_mut(&map_image_handle) .expect("Map image handle pointing to non-existing image"); - map_image.resize(Extent3d { + map_image.resize(bevy::render::render_resource::Extent3d { width: world_manager.world().width, height: world_manager.world().height, depth_or_array_layers: 1, @@ -246,48 +251,49 @@ fn redraw_map( } #[cfg(feature = "render")] -const WORLD_SCALE: i32 = 4; +const WORLD_SCALE: i32 = 2; fn main() -> Result<(), Box> { let mut app = App::new(); let mut manager = WorldManager::new(); #[cfg(feature = "render")] { - let world = manager.new_world(None)?; + use bevy::winit::WinitSettings; + + let world = manager.new_world(Some(0))?; _ = app .insert_resource(WinitSettings::game()) - // Use nearest-neighbor rendering for cripsier pixels - .insert_resource(ImageSettings::default_nearest()) - .insert_resource(WindowDescriptor { + .insert_resource(CursorMapPosition::default()) + .insert_resource(OpenedWindows::default()) + .insert_resource(WorldRenderSettings::default()) + .insert_resource(ShouldRedraw::default()) + .insert_resource(GenerateWorldTask::default()) + .add_startup_system(generate_graphics) + .add_system(update_gui) + .add_system(update_cursor_map_position) + .add_system(open_tile_info) + .add_system(redraw_map); + + app.add_plugins(WorldPlugins.set(WindowPlugin { + window: WindowDescriptor { width: (WORLD_SCALE * world.width as i32) as f32, height: (WORLD_SCALE * world.height as i32) as f32, title: String::from("World-RS"), resizable: true, ..default() - }) - .insert_resource(CursorMapPosition::default()) - .insert_resource(OpenedWindows::default()) - .insert_resource(WorldRenderSettings::default()) - .insert_resource(ShouldRedraw::default()) - .add_startup_system(generate_graphics) - .add_system(update_gui.exclusive_system()) - .add_system(update_cursor_map_position) - .add_system(open_tile_info) - .add_system(redraw_map); + }, + ..default() + })); } #[cfg(not(feature = "render"))] { - _ = manager.new_world()? + _ = manager.new_world(Some(0))?; + + app.add_plugins(WorldPlugins); } - _ = app.insert_resource(LogSettings { - #[cfg(feature = "logging")] - level: Level::DEBUG, - #[cfg(not(feature = "logging"))] - level: Level::WARN, - ..default() - }); - - app.add_plugins(WorldPlugins).insert_resource(manager).run(); + app.add_system(handle_generate_world_task) + .insert_resource(manager) + .run(); Ok(()) } diff --git a/src/planet_renderer.rs b/src/planet_renderer.rs index acf546f..fb0ba86 100644 --- a/src/planet_renderer.rs +++ b/src/planet_renderer.rs @@ -1,6 +1,10 @@ use { crate::macros::iterable_enum_stringify, - bevy::{asset::HandleId, prelude::Color, utils::HashSet}, + bevy::{ + asset::HandleId, + prelude::{Color, Resource}, + utils::HashSet, + }, planet::{BiomeStats, TerrainCell, World, WorldManager}, }; @@ -15,7 +19,7 @@ iterable_enum_stringify!(WorldOverlay { }); #[cfg(feature = "render")] -#[derive(Debug, Default)] +#[derive(Debug, Default, Resource)] pub struct WorldRenderSettings { pub map_image_handle_id: Option, diff --git a/src/plugins/mod.rs b/src/plugins/mod.rs index 99aa3ce..6895c63 100644 --- a/src/plugins/mod.rs +++ b/src/plugins/mod.rs @@ -1,4 +1,2 @@ -#[cfg(feature = "render")] -pub(crate) mod panning_plugin; pub(crate) mod world_plugins; pub(crate) use world_plugins::WorldPlugins; diff --git a/src/plugins/panning_plugin.rs b/src/plugins/panning_plugin.rs deleted file mode 100644 index 5f447bc..0000000 --- a/src/plugins/panning_plugin.rs +++ /dev/null @@ -1,47 +0,0 @@ -use { - crate::components::panning::Pan2d, - bevy::{ - app::{App, Plugin}, - ecs::{ - event::EventReader, - query::With, - system::{Query, Res}, - }, - input::{ - mouse::{MouseButton, MouseMotion}, - Input, - }, - sprite::Sprite, - transform::components::Transform, - }, -}; - -#[derive(Default)] -pub(crate) struct PanningPlugin; - -impl Plugin for PanningPlugin { - fn build(&self, app: &mut App) { - _ = app.add_system(panning_system_2d); - } -} - -fn panning_system_2d( - mut query: Query<'_, '_, (&mut Transform, &Pan2d), With>, - mut mouse_motion_events: EventReader<'_, '_, MouseMotion>, - input_mouse: Res<'_, Input>, -) { - if !input_mouse.pressed(MouseButton::Left) { - return; - } - - let mut horizontal = 0.0; - for movement in mouse_motion_events.iter() { - horizontal += movement.delta.x; - } - - query.for_each_mut(|(mut transform, pan)| { - if pan.enabled { - transform.translation.x += horizontal; - } - }); -} diff --git a/src/plugins/world_plugins.rs b/src/plugins/world_plugins.rs index 9a9b36e..b29180c 100644 --- a/src/plugins/world_plugins.rs +++ b/src/plugins/world_plugins.rs @@ -1,65 +1,75 @@ pub(crate) struct WorldPlugins; +#[cfg(not(feature = "render"))] +use bevy::app::ScheduleRunnerPlugin; +#[cfg(all(feature = "logging"))] +use bevy::diagnostic::{DiagnosticsPlugin, FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin}; use bevy::{ app::{PluginGroup, PluginGroupBuilder}, core::CorePlugin, - diagnostic::{DiagnosticsPlugin, LogDiagnosticsPlugin}, - log::LogPlugin, + log::{Level, LogPlugin}, + prelude::*, time::TimePlugin, }; +#[cfg(feature = "render")] +use { + bevy::{ + asset::AssetPlugin, + core_pipeline::CorePipelinePlugin, + input::InputPlugin, + render::RenderPlugin, + sprite::SpritePlugin, + text::TextPlugin, + transform::TransformPlugin, + ui::UiPlugin, + window::WindowPlugin, + winit::WinitPlugin, + }, + bevy_egui::EguiPlugin, +}; impl PluginGroup for WorldPlugins { - fn build(&mut self, group: &mut PluginGroupBuilder) { - _ = group.add(LogPlugin).add(CorePlugin).add(TimePlugin); + fn build(self) -> PluginGroupBuilder { + let mut group_builder = PluginGroupBuilder::start::() + .add(LogPlugin { + #[cfg(feature = "logging")] + level: Level::DEBUG, + #[cfg(not(feature = "logging"))] + level: Level::WARN, + ..default() + }) + .add(CorePlugin::default()) // sets compute pool config + .add(TimePlugin); #[cfg(feature = "render")] { - use { - crate::plugins::panning_plugin::PanningPlugin, - bevy::{ - asset::AssetPlugin, - core_pipeline::CorePipelinePlugin, - hierarchy::HierarchyPlugin, - input::InputPlugin, - render::RenderPlugin, - sprite::SpritePlugin, - text::TextPlugin, - transform::TransformPlugin, - ui::UiPlugin, - window::WindowPlugin, - winit::WinitPlugin, - }, - bevy_egui::EguiPlugin, - }; - - _ = group + group_builder = group_builder .add(TransformPlugin) - // hierarchy .add(InputPlugin) - .add(WindowPlugin) - .add(AssetPlugin) - .add(HierarchyPlugin) - .add(WinitPlugin) + .add(WindowPlugin::default()) + .add(AssetPlugin::default()) .add(RenderPlugin) + .add(ImagePlugin::default_nearest()) + .add(WinitPlugin) .add(CorePipelinePlugin) .add(SpritePlugin) .add(TextPlugin) .add(UiPlugin) - .add(PanningPlugin) .add(EguiPlugin); } #[cfg(not(feature = "render"))] { - use bevy::app::ScheduleRunnerPlugin; - _ = group.add(ScheduleRunnerPlugin); + group_builder = group_builder.add(ScheduleRunnerPlugin); } - _ = group.add(DiagnosticsPlugin); - #[cfg(all(feature = "logging"))] + #[cfg(feature = "logging")] { - use bevy::diagnostic::FrameTimeDiagnosticsPlugin; - _ = group.add(FrameTimeDiagnosticsPlugin); + group_builder = group_builder + .add(DiagnosticsPlugin) + .add(FrameTimeDiagnosticsPlugin) + .add(LogDiagnosticsPlugin::default()); } - _ = group.add(LogDiagnosticsPlugin::default()); + + group_builder } } diff --git a/src/resources/mod.rs b/src/resources/mod.rs index aa214a7..2e54c1b 100644 --- a/src/resources/mod.rs +++ b/src/resources/mod.rs @@ -1,26 +1,38 @@ +#[cfg(feature = "render")] use {crate::gui::WindowId, bevy::utils::HashSet, std::fmt::Display}; +use { + bevy::{prelude::Resource, tasks::Task}, + planet::{World, WorldGenError}, +}; -#[derive(Default, Debug)] +#[cfg(feature = "render")] +#[derive(Default, Debug, Resource)] pub(crate) struct CursorMapPosition { pub(crate) x: i32, pub(crate) y: i32, } +#[cfg(feature = "render")] impl Display for CursorMapPosition { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.write_fmt(format_args!("x: {}, y: {}", self.x, self.y)) } } +#[cfg(feature = "render")] +#[derive(Resource)] pub(crate) struct ShouldRedraw(pub(crate) bool); +#[cfg(feature = "render")] impl Default for ShouldRedraw { fn default() -> Self { Self(true) } } -#[derive(Default)] +#[cfg(feature = "render")] +#[derive(Default, Resource)] pub(crate) struct OpenedWindows(HashSet); +#[cfg(feature = "render")] impl OpenedWindows { pub(crate) fn open(&mut self, id: WindowId) { // Ignore opening already opened windows @@ -36,3 +48,6 @@ impl OpenedWindows { self.0.contains(id) } } + +#[derive(Default, Resource)] +pub struct GenerateWorldTask(pub Option>>);