From ebec2b8711a3216debc1a554c9b499389d8fe15c Mon Sep 17 00:00:00 2001 From: Viv Lim Date: Tue, 20 Dec 2022 17:47:27 -0800 Subject: [PATCH] initial commit --- .gitignore | 4 + Cargo.lock | 4195 +++++++++++++++++ Cargo.toml | 8 + app/.gitignore | 1 + app/.vscode/launch.json | 24 + app/Cargo.lock | 3418 ++++++++++++++ app/Cargo.toml | 20 + app/res/sample_level_1.vox | Bin 0 -> 2844 bytes app/res/sample_level_2.vox | Bin 0 -> 6452 bytes app/res/sample_level_3.vox | Bin 0 -> 372 bytes app/src/components/cursor_layer.rs | 15 + app/src/components/fn_layer.rs | 17 + app/src/components/mod.rs | 5 + app/src/components/mutable_mesh.rs | 7 + app/src/components/named.rs | 6 + app/src/components/property_pane.rs | 18 + app/src/main.rs | 166 + app/src/systems/generic_command_queue.rs | 44 + app/src/systems/layer_spawner.rs | 128 + app/src/systems/mod.rs | 4 + app/src/systems/mutable_mesh_refresher.rs | 39 + app/src/systems/ui/layers.rs | 161 + app/src/systems/ui/mod.rs | 5 + app/src/systems/ui/properties.rs | 168 + app/src/systems/ui/syntax_highlighting.rs | 508 ++ app/src/systems/ui/ui_spawner.rs | 141 + app/src/systems/ui/util.rs | 20 + app/src/voxels/bool_voxel.rs | 23 + app/src/voxels/layers/mod.rs | 39 + app/src/voxels/layers/traits.rs | 89 + app/src/voxels/mesh.rs | 10 + app/src/voxels/mod.rs | 3 + app/wasm-build.sh | 4 + common/Cargo.toml | 28 + common/src/lib.rs | 29 + common/src/space/level_gba.rs | 12 + common/src/space/level_serde.rs | 43 + common/src/space/level_tile.rs | 77 + common/src/space/mod.rs | 10 + .../three_dimensional/hash_map_container.rs | 66 + common/src/space/three_dimensional/mod.rs | 4 + .../space/three_dimensional/project_to_2d.rs | 139 + common/src/space/three_dimensional/traits.rs | 19 + .../space/three_dimensional/vec3generic.rs | 41 + .../src/space/two_dimensional/depth_tiles.rs | 57 + common/src/space/two_dimensional/mod.rs | 1 + flake.lock | 93 + flake.nix | 99 + rust-toolchain.toml | 3 + shell.nix | 7 + 50 files changed, 10018 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 app/.gitignore create mode 100644 app/.vscode/launch.json create mode 100644 app/Cargo.lock create mode 100644 app/Cargo.toml create mode 100644 app/res/sample_level_1.vox create mode 100644 app/res/sample_level_2.vox create mode 100644 app/res/sample_level_3.vox create mode 100644 app/src/components/cursor_layer.rs create mode 100644 app/src/components/fn_layer.rs create mode 100644 app/src/components/mod.rs create mode 100644 app/src/components/mutable_mesh.rs create mode 100644 app/src/components/named.rs create mode 100644 app/src/components/property_pane.rs create mode 100644 app/src/main.rs create mode 100644 app/src/systems/generic_command_queue.rs create mode 100644 app/src/systems/layer_spawner.rs create mode 100644 app/src/systems/mod.rs create mode 100644 app/src/systems/mutable_mesh_refresher.rs create mode 100644 app/src/systems/ui/layers.rs create mode 100644 app/src/systems/ui/mod.rs create mode 100644 app/src/systems/ui/properties.rs create mode 100644 app/src/systems/ui/syntax_highlighting.rs create mode 100644 app/src/systems/ui/ui_spawner.rs create mode 100644 app/src/systems/ui/util.rs create mode 100644 app/src/voxels/bool_voxel.rs create mode 100644 app/src/voxels/layers/mod.rs create mode 100644 app/src/voxels/layers/traits.rs create mode 100644 app/src/voxels/mesh.rs create mode 100644 app/src/voxels/mod.rs create mode 100755 app/wasm-build.sh create mode 100644 common/Cargo.toml create mode 100644 common/src/lib.rs create mode 100644 common/src/space/level_gba.rs create mode 100644 common/src/space/level_serde.rs create mode 100644 common/src/space/level_tile.rs create mode 100644 common/src/space/mod.rs create mode 100644 common/src/space/three_dimensional/hash_map_container.rs create mode 100644 common/src/space/three_dimensional/mod.rs create mode 100644 common/src/space/three_dimensional/project_to_2d.rs create mode 100644 common/src/space/three_dimensional/traits.rs create mode 100644 common/src/space/three_dimensional/vec3generic.rs create mode 100644 common/src/space/two_dimensional/depth_tiles.rs create mode 100644 common/src/space/two_dimensional/mod.rs create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 rust-toolchain.toml create mode 100644 shell.nix diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5444c26 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +target +.idea/* +!/.idea/runConfigurations +.DS_Store diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..d869f1f --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,4195 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ab_glyph" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcdbc68024b653943864d436fe8a24b028095bc1cf91a8926f8241e4aaffe59" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330223a1aecc308757b9926e9391c9b47f8ef2dbd8aea9df88312aea18c5e8d6" + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom", + "once_cell", + "version_check 0.9.4", +] + +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + +[[package]] +name = "android_log-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85965b6739a430150bdd138e2374a98af0c3ee0d030b3bb7fc3bddff58d0102e" + +[[package]] +name = "android_logger" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9ed09b18365ed295d722d0b5ed59c01b79a826ff2d2a8f73d5ecca8e6fb2f66" +dependencies = [ + "android_log-sys", + "env_logger 0.8.4", + "lazy_static", + "log", +] + +[[package]] +name = "android_logger" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c0c6cfd3264e874d461c0316a78fb78e4147562c68a64881af36fe10573613e" +dependencies = [ + "android_log-sys", + "env_logger 0.10.0", + "log", + "once_cell", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "arboard" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc120354d1b5ec6d7aaf4876b602def75595937b5e15d356eb554ab5177e08bb" +dependencies = [ + "clipboard-win", + "core-graphics 0.22.3", + "image 0.23.14", + "log", + "objc", + "objc-foundation", + "objc_id", + "parking_lot 0.12.1", + "thiserror", + "winapi", + "x11rb", +] + +[[package]] +name = "arrayvec" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" + +[[package]] +name = "ash" +version = "0.37.1+1.3.235" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911015c962d56e2e4052f40182ca5462ba60a3d2ff04e827c365a0ab3d65726d" +dependencies = [ + "libloading", +] + +[[package]] +name = "async-channel" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" +dependencies = [ + "concurrent-queue 2.0.0", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" +dependencies = [ + "async-lock", + "async-task", + "concurrent-queue 2.0.0", + "fastrand", + "futures-lite", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" + +[[package]] +name = "atk-sys" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "atomic_refcell" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73b5e5f48b927f04e952dedc932f31995a65a0bf65ec971c74436e51bf6e970d" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "bevy" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea147ef1ebb92d41294cfad804c40de151b174c711ce6e0a4a40eba23eae1a4" +dependencies = [ + "bevy_internal 0.8.1", +] + +[[package]] +name = "bevy" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dae99b246505811f5bc19d2de1e406ec5d2816b421d58fa223779eb576f472c9" +dependencies = [ + "bevy_internal 0.9.1", +] + +[[package]] +name = "bevy_app" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e4ae0a6ed2adf3b153511b4645241660a93f747c05ecd1e5a909dafc803cad4" +dependencies = [ + "bevy_derive 0.8.1", + "bevy_ecs 0.8.1", + "bevy_reflect 0.8.1", + "bevy_tasks 0.8.1", + "bevy_utils 0.8.1", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_app" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "536e4d0018347478545ed8b6cb6e57b9279ee984868e81b7c0e78e0fb3222e42" +dependencies = [ + "bevy_derive 0.9.1", + "bevy_ecs 0.9.1", + "bevy_reflect 0.9.1", + "bevy_utils 0.9.1", + "downcast-rs", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ec773c861a7e9d9978771f59f385500ec6da3a1ab5487705cddb054393d3d19" +dependencies = [ + "anyhow", + "bevy_app 0.8.1", + "bevy_diagnostic 0.8.1", + "bevy_ecs 0.8.1", + "bevy_log 0.8.1", + "bevy_reflect 0.8.1", + "bevy_tasks 0.8.1", + "bevy_utils 0.8.1", + "crossbeam-channel", + "downcast-rs", + "fastrand", + "js-sys", + "ndk-glue 0.5.2", + "parking_lot 0.12.1", + "serde", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db1bb550168304df69c867c09125e1aae7ff51cf21575396e1598bf293442c4" +dependencies = [ + "anyhow", + "bevy_app 0.9.1", + "bevy_diagnostic 0.9.1", + "bevy_ecs 0.9.1", + "bevy_log 0.9.1", + "bevy_reflect 0.9.1", + "bevy_tasks 0.9.1", + "bevy_utils 0.9.1", + "crossbeam-channel", + "downcast-rs", + "fastrand", + "js-sys", + "ndk-glue 0.7.0", + "parking_lot 0.12.1", + "serde", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_core" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c53172003d5cde7780870b5403c66c8ede3581faf3e510e916d8b4baa5b538d2" +dependencies = [ + "bevy_app 0.8.1", + "bevy_ecs 0.8.1", + "bevy_math 0.8.1", + "bevy_reflect 0.8.1", + "bevy_tasks 0.8.1", + "bevy_utils 0.8.1", + "bytemuck", +] + +[[package]] +name = "bevy_core" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96299aceb3c8362cb4aa39ff81c7ef758a5f4e768d16b5046a91628eff114ac0" +dependencies = [ + "bevy_app 0.9.1", + "bevy_ecs 0.9.1", + "bevy_math 0.9.1", + "bevy_reflect 0.9.1", + "bevy_tasks 0.9.1", + "bevy_utils 0.9.1", + "bytemuck", +] + +[[package]] +name = "bevy_core_pipeline" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e60efd10d593f6d122f2687f74c09ad55835a8f999c35bed6380ddd8e6ff7f2" +dependencies = [ + "bevy_app 0.8.1", + "bevy_asset 0.8.1", + "bevy_derive 0.8.1", + "bevy_ecs 0.8.1", + "bevy_reflect 0.8.1", + "bevy_render 0.8.1", + "bevy_transform 0.8.1", + "bevy_utils 0.8.1", + "radsort", + "serde", +] + +[[package]] +name = "bevy_core_pipeline" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc128a9860aadf16fb343ae427f2768986fd91dce64d945455acda9759c48014" +dependencies = [ + "bevy_app 0.9.1", + "bevy_asset 0.9.1", + "bevy_derive 0.9.1", + "bevy_ecs 0.9.1", + "bevy_math 0.9.1", + "bevy_reflect 0.9.1", + "bevy_render 0.9.1", + "bevy_transform 0.9.1", + "bevy_utils 0.9.1", + "bitflags", + "radsort", + "serde", +] + +[[package]] +name = "bevy_derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e6345431bbe6d7b6c165cd860ecd0b35da929779571259c5df970ac256d45f9" +dependencies = [ + "bevy_macro_utils 0.8.1", + "quote", + "syn", +] + +[[package]] +name = "bevy_derive" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7baf73c58d41c353c6fd08e6764a2e7420c9f19e8227b391c50981db6d0282a6" +dependencies = [ + "bevy_macro_utils 0.9.1", + "quote", + "syn", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58ac9f4c2815f412be4b6e21e4b299cdafa710f651d064f6d40b2a8377a0d17c" +dependencies = [ + "bevy_app 0.8.1", + "bevy_ecs 0.8.1", + "bevy_log 0.8.1", + "bevy_time 0.8.1", + "bevy_utils 0.8.1", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63bf96ec7980fa25b77ff6c72dfafada477936c0dab76c1edf6c028c0e5fe0e4" +dependencies = [ + "bevy_app 0.9.1", + "bevy_core 0.9.1", + "bevy_ecs 0.9.1", + "bevy_log 0.9.1", + "bevy_time 0.9.1", + "bevy_utils 0.9.1", +] + +[[package]] +name = "bevy_ecs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c174066a24ed8a14d15ea58b0aea1c1f5c763f4bb36ebdc2b1dc78026007d0f5" +dependencies = [ + "async-channel", + "bevy_ecs_macros 0.8.1", + "bevy_ptr 0.8.1", + "bevy_reflect 0.8.1", + "bevy_tasks 0.8.1", + "bevy_utils 0.8.1", + "downcast-rs", + "fixedbitset", + "fxhash", + "serde", + "thread_local", +] + +[[package]] +name = "bevy_ecs" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c071d7c6bc9801253485e05d0c257284150de755391902746837ba21c0cf74" +dependencies = [ + "async-channel", + "bevy_ecs_macros 0.9.1", + "bevy_ptr 0.9.1", + "bevy_reflect 0.9.1", + "bevy_tasks 0.9.1", + "bevy_utils 0.9.1", + "downcast-rs", + "event-listener", + "fixedbitset", + "fxhash", + "serde", + "thread_local", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc50c39e49e8febccc74e8e731680adb0cb4aef1f53275740cbaa95c6da71f4f" +dependencies = [ + "bevy_macro_utils 0.8.1", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c15bd45438eeb681ad74f2d205bb07a5699f98f9524462a30ec764afab2742ce" +dependencies = [ + "bevy_macro_utils 0.9.1", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_egui" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf44ff770566dca66b805a6829df783f64700bd01d35aec1034dff31b531a4" +dependencies = [ + "arboard", + "bevy 0.8.1", + "egui", + "thread_local", + "webbrowser", +] + +[[package]] +name = "bevy_encase_derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68bc194009c5e9b97da64a08142dd183c264885d99c985cf849868103018adf1" +dependencies = [ + "bevy_macro_utils 0.8.1", + "encase_derive_impl 0.3.0", +] + +[[package]] +name = "bevy_encase_derive" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "962b6bb0d30e92ec2e6c29837acce9e55b920733a634e7c3c5fd5a514bea7a24" +dependencies = [ + "bevy_macro_utils 0.9.1", + "encase_derive_impl 0.4.1", +] + +[[package]] +name = "bevy_gltf" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79db7d7e71b47a69953fbe8407ded5c6308eaeecf9a05efd5dfb42992f400a16" +dependencies = [ + "anyhow", + "base64", + "bevy_app 0.8.1", + "bevy_asset 0.8.1", + "bevy_core 0.8.1", + "bevy_core_pipeline 0.8.1", + "bevy_ecs 0.8.1", + "bevy_hierarchy 0.8.1", + "bevy_log 0.8.1", + "bevy_math 0.8.1", + "bevy_pbr 0.8.1", + "bevy_reflect 0.8.1", + "bevy_render 0.8.1", + "bevy_scene", + "bevy_tasks 0.8.1", + "bevy_transform 0.8.1", + "bevy_utils 0.8.1", + "gltf", + "percent-encoding", + "thiserror", +] + +[[package]] +name = "bevy_hierarchy" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb1ec76099ea5a716de08ea42ff41f036ebe2502df1d569168b58f16458a85e" +dependencies = [ + "bevy_app 0.8.1", + "bevy_ecs 0.8.1", + "bevy_reflect 0.8.1", + "bevy_utils 0.8.1", + "smallvec", +] + +[[package]] +name = "bevy_hierarchy" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd6d50c48c6e1bcb5e08a768b765323292bb3bf3a439b992754c57ffb85b23a" +dependencies = [ + "bevy_app 0.9.1", + "bevy_core 0.9.1", + "bevy_ecs 0.9.1", + "bevy_log 0.9.1", + "bevy_reflect 0.9.1", + "bevy_utils 0.9.1", + "smallvec", +] + +[[package]] +name = "bevy_input" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1821c4b760ba6ddb4fe61806e9cc33f40b09a884557aca4553a29b8c7d73c6b4" +dependencies = [ + "bevy_app 0.8.1", + "bevy_ecs 0.8.1", + "bevy_math 0.8.1", + "bevy_utils 0.8.1", +] + +[[package]] +name = "bevy_input" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3378b5171284f4c4c0e8307081718a9fe458f846444616bd82d69110dcabca51" +dependencies = [ + "bevy_app 0.9.1", + "bevy_ecs 0.9.1", + "bevy_math 0.9.1", + "bevy_reflect 0.9.1", + "bevy_utils 0.9.1", + "thiserror", +] + +[[package]] +name = "bevy_internal" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee63ad1e3f95a26ff2c227fadb1534a7bfe3a098e0e45c347f2f2575a573d9bc" +dependencies = [ + "bevy_app 0.8.1", + "bevy_asset 0.8.1", + "bevy_core 0.8.1", + "bevy_core_pipeline 0.8.1", + "bevy_derive 0.8.1", + "bevy_diagnostic 0.8.1", + "bevy_ecs 0.8.1", + "bevy_gltf", + "bevy_hierarchy 0.8.1", + "bevy_input 0.8.1", + "bevy_log 0.8.1", + "bevy_math 0.8.1", + "bevy_pbr 0.8.1", + "bevy_ptr 0.8.1", + "bevy_reflect 0.8.1", + "bevy_render 0.8.1", + "bevy_sprite", + "bevy_tasks 0.8.1", + "bevy_text", + "bevy_time 0.8.1", + "bevy_transform 0.8.1", + "bevy_ui", + "bevy_utils 0.8.1", + "bevy_window 0.8.1", + "bevy_winit", + "ndk-glue 0.5.2", +] + +[[package]] +name = "bevy_internal" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c46014b7e885b1311de06b6039e448454a4db55b8d35464798ba88faa186e11" +dependencies = [ + "bevy_app 0.9.1", + "bevy_core 0.9.1", + "bevy_core_pipeline 0.9.1", + "bevy_derive 0.9.1", + "bevy_diagnostic 0.9.1", + "bevy_ecs 0.9.1", + "bevy_hierarchy 0.9.1", + "bevy_input 0.9.1", + "bevy_log 0.9.1", + "bevy_math 0.9.1", + "bevy_pbr 0.9.1", + "bevy_ptr 0.9.1", + "bevy_reflect 0.9.1", + "bevy_render 0.9.1", + "bevy_tasks 0.9.1", + "bevy_time 0.9.1", + "bevy_transform 0.9.1", + "bevy_utils 0.9.1", + "bevy_window 0.9.1", + "ndk-glue 0.7.0", +] + +[[package]] +name = "bevy_log" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "092daf498887814a064331dfcd1cf487a5ddab01fd38629b84a35b8b664462a1" +dependencies = [ + "android_log-sys", + "bevy_app 0.8.1", + "bevy_utils 0.8.1", + "console_error_panic_hook", + "tracing-log", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "bevy_log" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c480bac54cf4ae76edc3ae9ae3fa7c5e1b385e7f2111ef5ec3fd00cf3a7998b" +dependencies = [ + "android_log-sys", + "bevy_app 0.9.1", + "bevy_ecs 0.9.1", + "bevy_utils 0.9.1", + "console_error_panic_hook", + "tracing-log", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43fb5137e5198302d7c6c33d1e454cf48a586e7c6fd12f4860f12863951e16b9" +dependencies = [ + "quote", + "syn", + "toml", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "022bb69196deeea691b6997414af85bbd7f2b34a8914c4aa7a7ff4dfa44f7677" +dependencies = [ + "quote", + "syn", + "toml", +] + +[[package]] +name = "bevy_math" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "531f2b90c7e861a96f418b3d560131b3354c5e67a67eba3953a45a56ea0114d2" +dependencies = [ + "glam 0.21.3", +] + +[[package]] +name = "bevy_math" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d434c77ab766c806ed9062ef8a7285b3b02b47df51f188d4496199c3ac062eaf" +dependencies = [ + "glam 0.22.0", + "serde", +] + +[[package]] +name = "bevy_mikktspace" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "941e7d3d4e1dbb735f040e4cdc1558be1d3c38d43f1d9fdbb039c39a7849a00b" +dependencies = [ + "glam 0.21.3", +] + +[[package]] +name = "bevy_mikktspace" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfb5908d33fd613069be516180b8f138aaaf6e41c36b1fd98c6c29c00c24a13" +dependencies = [ + "glam 0.22.0", +] + +[[package]] +name = "bevy_pbr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "176073021a4caeb8b448f24ce790fb57fde74b114f345064a8b102d2f7bed905" +dependencies = [ + "bevy_app 0.8.1", + "bevy_asset 0.8.1", + "bevy_core_pipeline 0.8.1", + "bevy_ecs 0.8.1", + "bevy_math 0.8.1", + "bevy_reflect 0.8.1", + "bevy_render 0.8.1", + "bevy_transform 0.8.1", + "bevy_utils 0.8.1", + "bevy_window 0.8.1", + "bitflags", + "bytemuck", + "radsort", +] + +[[package]] +name = "bevy_pbr" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "310b1f260a475d81445623e138e1b7245759a42310bc1f84b550a3f4ff8763bf" +dependencies = [ + "bevy_app 0.9.1", + "bevy_asset 0.9.1", + "bevy_core_pipeline 0.9.1", + "bevy_derive 0.9.1", + "bevy_ecs 0.9.1", + "bevy_math 0.9.1", + "bevy_reflect 0.9.1", + "bevy_render 0.9.1", + "bevy_transform 0.9.1", + "bevy_utils 0.9.1", + "bevy_window 0.9.1", + "bitflags", + "bytemuck", + "radsort", +] + +[[package]] +name = "bevy_ptr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9960c19e582b43cebe1894b6679520a4f50802d1cc5b6fa432f8d685ed232f09" + +[[package]] +name = "bevy_ptr" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ec44f7655039546bc5d34d98de877083473f3e9b2b81d560c528d6d74d3eff4" + +[[package]] +name = "bevy_reflect" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fc689dd7a7df3b3768884a4754711d406aa302ea48da483c03b52715fa95045" +dependencies = [ + "bevy_ptr 0.8.1", + "bevy_reflect_derive 0.8.1", + "bevy_utils 0.8.1", + "downcast-rs", + "erased-serde", + "glam 0.21.3", + "once_cell", + "parking_lot 0.12.1", + "serde", + "smallvec", + "thiserror", +] + +[[package]] +name = "bevy_reflect" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6deae303a7f69dc243b2fa35b5e193cc920229f448942080c8eb2dbd9de6d37a" +dependencies = [ + "bevy_math 0.9.1", + "bevy_ptr 0.9.1", + "bevy_reflect_derive 0.9.1", + "bevy_utils 0.9.1", + "downcast-rs", + "erased-serde", + "glam 0.22.0", + "once_cell", + "parking_lot 0.12.1", + "serde", + "smallvec", + "thiserror", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c36fa5100832c787c10558d31632ddc454c221e8dfacbbef836938f59614754" +dependencies = [ + "bevy_macro_utils 0.8.1", + "proc-macro2", + "quote", + "syn", + "uuid", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bf4cb9cd5acb4193f890f36cb63679f1502e2de025e66a63b194b8b133d018" +dependencies = [ + "bevy_macro_utils 0.9.1", + "bit-set", + "proc-macro2", + "quote", + "syn", + "uuid", +] + +[[package]] +name = "bevy_render" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "600bcef85c7efac6e38ed725707f0e5b7c59b510430034ba2f743f472493f845" +dependencies = [ + "anyhow", + "bevy_app 0.8.1", + "bevy_asset 0.8.1", + "bevy_core 0.8.1", + "bevy_derive 0.8.1", + "bevy_ecs 0.8.1", + "bevy_encase_derive 0.8.1", + "bevy_hierarchy 0.8.1", + "bevy_log 0.8.1", + "bevy_math 0.8.1", + "bevy_mikktspace 0.8.1", + "bevy_reflect 0.8.1", + "bevy_render_macros 0.8.1", + "bevy_time 0.8.1", + "bevy_transform 0.8.1", + "bevy_utils 0.8.1", + "bevy_window 0.8.1", + "bitflags", + "codespan-reporting", + "copyless", + "downcast-rs", + "encase 0.3.0", + "futures-lite", + "hex", + "hexasphere 7.2.1", + "image 0.24.5", + "naga 0.9.0", + "once_cell", + "parking_lot 0.12.1", + "regex", + "serde", + "smallvec", + "thiserror", + "thread_local", + "wgpu 0.13.1", +] + +[[package]] +name = "bevy_render" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e3282a8f8779d2aced93207fbed73f740937c6c2bd27bd84f0799b081c7fca5" +dependencies = [ + "anyhow", + "bevy_app 0.9.1", + "bevy_asset 0.9.1", + "bevy_core 0.9.1", + "bevy_derive 0.9.1", + "bevy_ecs 0.9.1", + "bevy_encase_derive 0.9.1", + "bevy_hierarchy 0.9.1", + "bevy_log 0.9.1", + "bevy_math 0.9.1", + "bevy_mikktspace 0.9.1", + "bevy_reflect 0.9.1", + "bevy_render_macros 0.9.1", + "bevy_time 0.9.1", + "bevy_transform 0.9.1", + "bevy_utils 0.9.1", + "bevy_window 0.9.1", + "bitflags", + "codespan-reporting", + "downcast-rs", + "encase 0.4.1", + "futures-lite", + "hex", + "hexasphere 8.0.0", + "image 0.24.5", + "naga 0.10.0", + "once_cell", + "parking_lot 0.12.1", + "regex", + "serde", + "smallvec", + "thiserror", + "thread_local", + "wgpu 0.14.2", +] + +[[package]] +name = "bevy_render_macros" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1be90adc9e5d5808833e363670818da5fe68ccafd7ca983a457f90957d2a430b" +dependencies = [ + "bevy_macro_utils 0.8.1", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_render_macros" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7acae697776ac05bea523e1725cf2660c91c53abe72c66782ea1e1b9eedb572" +dependencies = [ + "bevy_macro_utils 0.9.1", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_scene" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a045d575d2c8f776d8ea965363c81660243fefbfc3712ead938b00dfd6797216" +dependencies = [ + "anyhow", + "bevy_app 0.8.1", + "bevy_asset 0.8.1", + "bevy_derive 0.8.1", + "bevy_ecs 0.8.1", + "bevy_hierarchy 0.8.1", + "bevy_reflect 0.8.1", + "bevy_render 0.8.1", + "bevy_transform 0.8.1", + "bevy_utils 0.8.1", + "ron 0.7.1", + "serde", + "thiserror", + "uuid", +] + +[[package]] +name = "bevy_sprite" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69c419f3db09d7ac1f4d45e0874d349d5d6f47f48bc10d55cd0da36413e2331e" +dependencies = [ + "bevy_app 0.8.1", + "bevy_asset 0.8.1", + "bevy_core_pipeline 0.8.1", + "bevy_ecs 0.8.1", + "bevy_log 0.8.1", + "bevy_math 0.8.1", + "bevy_reflect 0.8.1", + "bevy_render 0.8.1", + "bevy_transform 0.8.1", + "bevy_utils 0.8.1", + "bitflags", + "bytemuck", + "copyless", + "fixedbitset", + "guillotiere", + "rectangle-pack", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_tasks" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b753acb3d5b9dbfd77038560fe1893c17d4ee0a4242c2ee70da9d59430537" +dependencies = [ + "async-channel", + "async-executor", + "event-listener", + "futures-lite", + "num_cpus", + "once_cell", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_tasks" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680b16b53df9c9f24681dd95f4d772d83760bd19adf8bca00f358a3aad997853" +dependencies = [ + "async-channel", + "async-executor", + "async-task", + "concurrent-queue 1.2.4", + "futures-lite", + "once_cell", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_text" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c265b7515faf55a3b92fd6ce0ab65dd246f247e11d737d6f5cdaf49c2be42c63" +dependencies = [ + "ab_glyph", + "anyhow", + "bevy_app 0.8.1", + "bevy_asset 0.8.1", + "bevy_ecs 0.8.1", + "bevy_math 0.8.1", + "bevy_reflect 0.8.1", + "bevy_render 0.8.1", + "bevy_sprite", + "bevy_transform 0.8.1", + "bevy_utils 0.8.1", + "bevy_window 0.8.1", + "glyph_brush_layout", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_time" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22830665b8476292b861216383fd79922aef2b540f9fd09d49144e3e5e94550e" +dependencies = [ + "bevy_app 0.8.1", + "bevy_ecs 0.8.1", + "bevy_reflect 0.8.1", + "bevy_utils 0.8.1", + "crossbeam-channel", +] + +[[package]] +name = "bevy_time" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c38a6d3ea929c7f81e6adf5a6c62cf7e8c40f5106c2174d6057e9d8ea624d" +dependencies = [ + "bevy_app 0.9.1", + "bevy_ecs 0.9.1", + "bevy_reflect 0.9.1", + "bevy_utils 0.9.1", + "crossbeam-channel", +] + +[[package]] +name = "bevy_transform" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4bb8760f03e9667e7499a5ceec1f7630fc3e45702781ac0df56cb969e8ae668" +dependencies = [ + "bevy_app 0.8.1", + "bevy_ecs 0.8.1", + "bevy_hierarchy 0.8.1", + "bevy_math 0.8.1", + "bevy_reflect 0.8.1", +] + +[[package]] +name = "bevy_transform" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba13c57a040b89767191a6f6d720a635b7792793628bfa41a9e38b7026484aec" +dependencies = [ + "bevy_app 0.9.1", + "bevy_ecs 0.9.1", + "bevy_hierarchy 0.9.1", + "bevy_math 0.9.1", + "bevy_reflect 0.9.1", +] + +[[package]] +name = "bevy_ui" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "062ce086de1a4a470e5df48cb5c16a1dc97ab610e635cafabdef26c4a1ef5756" +dependencies = [ + "bevy_app 0.8.1", + "bevy_asset 0.8.1", + "bevy_core_pipeline 0.8.1", + "bevy_derive 0.8.1", + "bevy_ecs 0.8.1", + "bevy_hierarchy 0.8.1", + "bevy_input 0.8.1", + "bevy_log 0.8.1", + "bevy_math 0.8.1", + "bevy_reflect 0.8.1", + "bevy_render 0.8.1", + "bevy_sprite", + "bevy_text", + "bevy_transform 0.8.1", + "bevy_utils 0.8.1", + "bevy_window 0.8.1", + "bytemuck", + "serde", + "smallvec", + "taffy", +] + +[[package]] +name = "bevy_utils" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e9aa1866c1cf7ee000f281ce9e90d02d701f5c7380a107252017e58e2f5246" +dependencies = [ + "ahash", + "getrandom", + "hashbrown", + "instant", + "tracing", + "uuid", +] + +[[package]] +name = "bevy_utils" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16750aae52cd35bd7b60eb61cee883420b250e11b4a290b8d44b2b2941795739" +dependencies = [ + "ahash", + "getrandom", + "hashbrown", + "instant", + "tracing", + "uuid", +] + +[[package]] +name = "bevy_window" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707dbbebfac72b1e63e874e7a11a345feab8c440355c0bd71e6dff26709fba9a" +dependencies = [ + "bevy_app 0.8.1", + "bevy_ecs 0.8.1", + "bevy_input 0.8.1", + "bevy_math 0.8.1", + "bevy_utils 0.8.1", + "raw-window-handle 0.4.3", + "web-sys", +] + +[[package]] +name = "bevy_window" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a44d3f3bd54a2261f4f57f614bf7bccc8d2832761493c0cd7dab81d98cc151e" +dependencies = [ + "bevy_app 0.9.1", + "bevy_ecs 0.9.1", + "bevy_input 0.9.1", + "bevy_math 0.9.1", + "bevy_reflect 0.9.1", + "bevy_utils 0.9.1", + "raw-window-handle 0.5.0", +] + +[[package]] +name = "bevy_winit" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98b15fee4b75472e3441b0c7221467303e4ce59b342a94a328e447e7cdb5a43c" +dependencies = [ + "approx", + "bevy_app 0.8.1", + "bevy_ecs 0.8.1", + "bevy_input 0.8.1", + "bevy_math 0.8.1", + "bevy_utils 0.8.1", + "bevy_window 0.8.1", + "crossbeam-channel", + "raw-window-handle 0.4.3", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-mesh" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c0345520b5aa77d7d154bd578a18e7a974350931b5f41f641a7844e951b978f" +dependencies = [ + "ilattice", + "ndcopy", + "ndshape", +] + +[[package]] +name = "bumpalo" +version = "3.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" + +[[package]] +name = "bytemuck" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaa3a8d9a1ca92e282c96a32d6511b695d7d994d1d102ba85d279f9b2756947f" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fe233b960f12f8007e3db2d136e3cb1c291bfd7396e384ee76025fc1a3932b4" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" + +[[package]] +name = "cache-padded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" + +[[package]] +name = "cairo-sys-rs" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "cc" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-expr" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa" +dependencies = [ + "smallvec", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "clipboard-win" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4ab1b92798304eedc095b53942963240037c0516452cb11aeba709d420b2219" +dependencies = [ + "error-code", + "str-buf", + "winapi", +] + +[[package]] +name = "cocoa" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "core-foundation 0.9.3", + "core-graphics 0.22.3", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +dependencies = [ + "bitflags", + "block", + "core-foundation 0.9.3", + "core-graphics-types", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "common" +version = "0.1.0" +dependencies = [ + "bevy 0.8.1", + "block-mesh", + "dot_vox", + "ron 0.8.0", + "serde", + "strum", + "strum_macros", + "thiserror", +] + +[[package]] +name = "concurrent-queue" +version = "1.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c" +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", + "wasm-bindgen", +] + +[[package]] +name = "const_panic" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58baae561b85ca19b3122a9ddd35c8ec40c3bcd14fe89921824eae73f7baffbf" + +[[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", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags", + "core-foundation 0.9.3", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +dependencies = [ + "bitflags", + "core-foundation 0.9.3", + "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", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "cty" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" + +[[package]] +name = "d3d12" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "827914e1f53b1e0e025ecd3d967a7836b7bcb54520f90e21ef8df7b4d88a2759" +dependencies = [ + "bitflags", + "libloading", + "winapi", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "deflate" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" +dependencies = [ + "adler32", + "byteorder", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dot_vox" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83c18405ef54de0398b77a3ec8394d3a1639e7bf060e1385201e8db40c44ab41" +dependencies = [ + "byteorder", + "lazy_static", + "log", + "nom", +] + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "egui" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb095a8b9feb9b7ff8f00b6776dffcef059538a3f4a91238e03c900e9c9ad9a2" +dependencies = [ + "ahash", + "epaint", + "nohash-hasher", +] + +[[package]] +name = "egui_extras" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877bfcce06463cdbcfd7f4efd57608b1384d6d9ae03b33e503fbba1d1a899a52" +dependencies = [ + "egui", +] + +[[package]] +name = "either" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" + +[[package]] +name = "emath" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c223f58c7e38abe1770f367b969f1b3fbd4704b67666bcb65dbb1adb0980ba72" +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 0.3.0", + "glam 0.21.3", + "thiserror", +] + +[[package]] +name = "encase" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48ec50086547d597b5c871a78399ec04a14828a6a5c445a61ed4687c540edec6" +dependencies = [ + "const_panic", + "encase_derive 0.4.1", + "glam 0.22.0", + "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 0.3.0", +] + +[[package]] +name = "encase_derive" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dda93e9714c7683c474f49a461a2ae329471d2bda43c4302d41c6d8339579e92" +dependencies = [ + "encase_derive_impl 0.4.1", +] + +[[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 = "encase_derive_impl" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec27b639e942eb0297513b81cc6d87c50f6c77dc8c37af00a39ed5db3b9657ee" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "enum-map" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50c25992259941eb7e57b936157961b217a4fc8597829ddef0596d6c3cd86e1a" +dependencies = [ + "enum-map-derive", +] + +[[package]] +name = "enum-map-derive" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a4da76b3b6116d758c7ba93f7ec6a35d2e2cf24feda76c6e38a375f4d5c59f2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "env_logger" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "epaint" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c29567088888e8ac3e8f61bbb2ddc820207ebb8d69eefde5bcefa06d65e4e89" +dependencies = [ + "ab_glyph", + "ahash", + "atomic_refcell", + "bytemuck", + "emath", + "nohash-hasher", + "parking_lot 0.12.1", +] + +[[package]] +name = "erased-serde" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ca605381c017ec7a5fef5e548f1cfaa419ed0f6df6367339300db74c92aa7d" +dependencies = [ + "serde", +] + +[[package]] +name = "error-code" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" +dependencies = [ + "libc", + "str-buf", +] + +[[package]] +name = "euclid" +version = "0.22.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b52c2ef4a78da0ba68fbe1fd920627411096d2ac478f7f4c9f3a54ba6705bade" +dependencies = [ + "num-traits", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +dependencies = [ + "crc32fast", + "miniz_oxide 0.6.2", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-core" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" + +[[package]] +name = "futures-io" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" + +[[package]] +name = "futures-lite" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gio-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glam" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b8509e6791516e81c1a630d0bd7fbac36d2fa8712a9da8662e716b52d5051ca" + +[[package]] +name = "glam" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "518faa5064866338b013ff9b2350dc318e14cc4fcd6cb8206d7e7c9886c98815" +dependencies = [ + "bytemuck", + "serde", +] + +[[package]] +name = "glam" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f597d56c1bd55a811a1be189459e8fad2bbc272616375602443bdfb37fa774" +dependencies = [ + "bytemuck", + "serde", +] + +[[package]] +name = "glib-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glow" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8bd5877156a19b8ac83a29b2306fe20537429d318f3ff0a1a2119f8d9c61919" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gltf" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00e0a0eace786193fc83644907097285396360e9e82e30f81a21e9b1ba836a3e" +dependencies = [ + "byteorder", + "gltf-json", + "lazy_static", +] + +[[package]] +name = "gltf-derive" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdd53d6e284bb2bf02a6926e4cc4984978c1990914d6cd9deae4e31cf37cd113" +dependencies = [ + "inflections", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "gltf-json" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9949836a9ec5e7f83f76fb9bbcbc77f254a577ebbdb0820867bc11979ef97cad" +dependencies = [ + "gltf-derive", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "glyph_brush_layout" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc32c2334f00ca5ac3695c5009ae35da21da8c62d255b5b96d56e2597a637a38" +dependencies = [ + "ab_glyph", + "approx", + "xi-unicode", +] + +[[package]] +name = "gobject-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gpu-alloc" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc59e5f710e310e76e6707f86c561dd646f69a8876da9131703b2f717de818d" +dependencies = [ + "bitflags", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54804d0d6bc9d7f26db4eaec1ad10def69b599315f487d32c334a80d1efe67a5" +dependencies = [ + "bitflags", +] + +[[package]] +name = "gpu-descriptor" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b0c02e1ba0bdb14e965058ca34e09c020f8e507a760df1121728e0aef68d57a" +dependencies = [ + "bitflags", + "gpu-descriptor-types", + "hashbrown", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "363e3677e55ad168fef68cf9de3a4a310b53124c5e784c53a1d70e92d23f2126" +dependencies = [ + "bitflags", +] + +[[package]] +name = "gtk-sys" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "guillotiere" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" +dependencies = [ + "euclid", + "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.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", + "serde", +] + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hexasphere" +version = "7.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaadafd1beb6ad34cff5521987017ece5848f9ad5401fdb039bff896a643add4" +dependencies = [ + "glam 0.21.3", + "once_cell", +] + +[[package]] +name = "hexasphere" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "619ce654558681d7d0a7809e1b20249c7032ff13ee6baa7bb7ff64f7f28a906a" +dependencies = [ + "glam 0.22.0", + "once_cell", +] + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "ilattice" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3db9046391c0e0658a18e23877706d16e48cc8b4711702b9f703776410c2b84" +dependencies = [ + "glam 0.19.0", +] + +[[package]] +name = "image" +version = "0.23.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-iter", + "num-rational 0.3.2", + "num-traits", + "png 0.16.8", + "tiff", +] + +[[package]] +name = "image" +version = "0.24.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69b7ea949b537b0fd0af141fff8c77690f2ce96f4f41f042ccb6c69c6c965945" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-rational 0.4.1", + "num-traits", + "png 0.17.7", +] + +[[package]] +name = "indexmap" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "inflections" +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", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" + +[[package]] +name = "jni" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jpeg-decoder" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2" + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "khronos-egl" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" +dependencies = [ + "libc", + "libloading", + "pkg-config", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.138" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metal" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060" +dependencies = [ + "bitflags", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", +] + +[[package]] +name = "miniz_oxide" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" +dependencies = [ + "adler32", +] + +[[package]] +name = "miniz_oxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +dependencies = [ + "adler", + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys", +] + +[[package]] +name = "naga" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f50357e1167a3ab92d6b3c7f4bf5f7fd13fde3f4b28bf0d5ea07b5100fdb6c0" +dependencies = [ + "bit-set", + "bitflags", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "num-traits", + "petgraph", + "pp-rs", + "rustc-hash", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "naga" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "262d2840e72dbe250e8cf2f522d080988dfca624c4112c096238a4845f591707" +dependencies = [ + "bit-set", + "bitflags", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "num-traits", + "petgraph", + "pp-rs", + "rustc-hash", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "ndcopy" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f4e41b81e3f7a4b742755be1bb368a6faafc43af555fe135c36b0efe095c59" +dependencies = [ + "ndshape", +] + +[[package]] +name = "ndk" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d868f654c72e75f8687572699cdabe755f03effbb62542768e995d5b8d699d" +dependencies = [ + "bitflags", + "jni-sys", + "ndk-sys 0.2.2", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" +dependencies = [ + "bitflags", + "jni-sys", + "ndk-sys 0.3.0", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +dependencies = [ + "bitflags", + "jni-sys", + "ndk-sys 0.4.1+23.1.7779620", + "num_enum", + "raw-window-handle 0.5.0", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-glue" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71bee8ea72d685477e28bd004cfe1bf99c754d688cd78cad139eae4089484d4" +dependencies = [ + "android_logger 0.10.1", + "lazy_static", + "libc", + "log", + "ndk 0.5.0", + "ndk-context", + "ndk-macro", + "ndk-sys 0.2.2", +] + +[[package]] +name = "ndk-glue" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d0c4a7b83860226e6b4183edac21851f05d5a51756e97a1144b7f5a6b63e65f" +dependencies = [ + "lazy_static", + "libc", + "log", + "ndk 0.6.0", + "ndk-context", + "ndk-macro", + "ndk-sys 0.3.0", +] + +[[package]] +name = "ndk-glue" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0434fabdd2c15e0aab768ca31d5b7b333717f03cf02037d5a0a3ff3c278ed67f" +dependencies = [ + "android_logger 0.11.2", + "libc", + "log", + "ndk 0.7.0", + "ndk-context", + "ndk-macro", + "ndk-sys 0.4.1+23.1.7779620", + "once_cell", + "parking_lot 0.12.1", +] + +[[package]] +name = "ndk-macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" +dependencies = [ + "darling", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "ndk-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" + +[[package]] +name = "ndk-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "ndk-sys" +version = "0.4.1+23.1.7779620" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "ndshape" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "975bce586ad637e27f6dc26ee907c07050686a588695bfd64b7873a9d48a700c" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "nix" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" +dependencies = [ + "bitflags", + "cc", + "cfg-if 1.0.0", + "libc", + "memoffset", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "4.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" +dependencies = [ + "memchr", + "version_check 0.1.5", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-integer", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + +[[package]] +name = "once_cell" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "owned_ttf_parser" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18904d3c65493a9f0d7542293d1a7f69bfdc309a6b9ef4f46dc3e58b0577edc5" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "pango-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking" +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.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.5", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "petgraph" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pkg-config" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" + +[[package]] +name = "png" +version = "0.16.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" +dependencies = [ + "bitflags", + "crc32fast", + "deflate", + "miniz_oxide 0.3.7", +] + +[[package]] +name = "png" +version = "0.17.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" +dependencies = [ + "bitflags", + "crc32fast", + "flate2", + "miniz_oxide 0.6.2", +] + +[[package]] +name = "pp-rs" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb458bb7f6e250e6eb79d5026badc10a3ebb8f9a15d1fff0f13d17c71f4d6dee" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "proc-macro-crate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +dependencies = [ + "once_cell", + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro2" +version = "1.0.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74605f360ce573babfe43964cbe520294dcb081afbf8c108fc6e23036b4da2df" + +[[package]] +name = "quote" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radsort" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b" + +[[package]] +name = "range-alloc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e935c45e09cc6dcf00d2f0b2d630a58f4095320223d47fc68918722f0538b6" + +[[package]] +name = "raw-window-handle" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb" + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" + +[[package]] +name = "renderdoc-sys" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1382d1f0a252c4bf97dc20d979a2fdd05b024acd7c2ed0f7595d7817666a157" + +[[package]] +name = "rfd" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f756b55bff8f256a1a8c24dbabb1430ac8110628e418a02e4a1c5ff67179f56" +dependencies = [ + "block", + "dispatch", + "glib-sys", + "gobject-sys", + "gtk-sys", + "js-sys", + "lazy_static", + "log", + "objc", + "objc-foundation", + "objc_id", + "raw-window-handle 0.4.3", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows", +] + +[[package]] +name = "ron" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a" +dependencies = [ + "base64", + "bitflags", + "serde", +] + +[[package]] +name = "ron" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300a51053b1cb55c80b7a9fde4120726ddf25ca241a1cbb926626f62fb136bff" +dependencies = [ + "base64", + "bitflags", + "serde", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustversion" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" + +[[package]] +name = "ryu" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "serde" +version = "1.0.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fed41fc1a24994d044e6db6935e69511a1153b52c15eb42493b26fa87feba0" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "255abe9a125a985c05190d687b320c12f9b1f0b99445e608c21ba0782c719ad8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +dependencies = [ + "version_check 0.9.4", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +dependencies = [ + "serde", +] + +[[package]] +name = "smooth-bevy-cameras" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3f5ed8b01ccbe9b560d4f579d76a28f513b816dadf4e6ad7c2ee26e5686b1dc" +dependencies = [ + "approx", + "bevy 0.9.1", + "serde", +] + +[[package]] +name = "spirv" +version = "0.2.0+1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" +dependencies = [ + "bitflags", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "svg_fmt" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" + +[[package]] +name = "syn" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "system-deps" +version = "6.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "taffy" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec27dea659b100d489dffa57cf0efc6d7bfefb119af817b92cc14006c0b214e3" +dependencies = [ + "arrayvec", + "hash32", + "hash32-derive", + "num-traits", + "typenum", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tiff" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437" +dependencies = [ + "jpeg-decoder", + "miniz_oxide 0.4.4", + "weezl", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "toml" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f" +dependencies = [ + "serde", +] + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "tracing-wasm" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" +dependencies = [ + "tracing", + "tracing-subscriber", + "wasm-bindgen", +] + +[[package]] +name = "ttf-parser" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "375812fa44dab6df41c195cd2f7fecb488f6c09fbaafb62807488cefab642bff" + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "url" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "uuid" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "version-compare" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" + +[[package]] +name = "version_check" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "voxel-level-editor" +version = "0.1.0" +dependencies = [ + "async-channel", + "bevy 0.8.1", + "bevy_egui", + "block-mesh", + "common", + "egui", + "egui_extras", + "enum-map", + "itertools", + "rfd", + "smooth-bevy-cameras", +] + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" + +[[package]] +name = "web-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webbrowser" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a3cffdb686fbb24d9fb8f03a213803277ed2300f11026a3afe1f108dc021b" +dependencies = [ + "jni", + "ndk-glue 0.6.2", + "url", + "web-sys", + "widestring", + "winapi", +] + +[[package]] +name = "weezl" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" + +[[package]] +name = "wgpu" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "277e967bf8b7820a76852645a6bce8bbd31c32fda2042e82d8e3ea75fda8892d" +dependencies = [ + "arrayvec", + "js-sys", + "log", + "naga 0.9.0", + "parking_lot 0.12.1", + "raw-window-handle 0.4.3", + "smallvec", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core 0.13.2", + "wgpu-hal 0.13.2", + "wgpu-types 0.13.2", +] + +[[package]] +name = "wgpu" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81f643110d228fd62a60c5ed2ab56c4d5b3704520bd50561174ec4ec74932937" +dependencies = [ + "arrayvec", + "js-sys", + "log", + "naga 0.10.0", + "parking_lot 0.12.1", + "raw-window-handle 0.5.0", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core 0.14.2", + "wgpu-hal 0.14.1", + "wgpu-types 0.14.1", +] + +[[package]] +name = "wgpu-core" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b92788dec9d0c1bed849a1b83f01b2ee12819bf04a79c90f68e4173f7b5ba2" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags", + "cfg_aliases", + "codespan-reporting", + "copyless", + "fxhash", + "log", + "naga 0.9.0", + "parking_lot 0.12.1", + "profiling", + "raw-window-handle 0.4.3", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal 0.13.2", + "wgpu-types 0.13.2", +] + +[[package]] +name = "wgpu-core" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6000d1284ef8eec6076fd5544a73125fd7eb9b635f18dceeb829d826f41724ca" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags", + "cfg_aliases", + "codespan-reporting", + "fxhash", + "log", + "naga 0.10.0", + "parking_lot 0.12.1", + "profiling", + "raw-window-handle 0.5.0", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal 0.14.1", + "wgpu-types 0.14.1", +] + +[[package]] +name = "wgpu-hal" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cbdfc3d0637dba3d5536b93adef3d26023a0b96f0e1ee5ee9560a401d9f646" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set", + "bitflags", + "block", + "core-graphics-types", + "d3d12", + "foreign-types", + "fxhash", + "glow", + "gpu-alloc", + "gpu-descriptor", + "inplace_it", + "js-sys", + "khronos-egl", + "libloading", + "log", + "metal", + "naga 0.9.0", + "objc", + "parking_lot 0.12.1", + "profiling", + "range-alloc", + "raw-window-handle 0.4.3", + "renderdoc-sys", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types 0.13.2", + "winapi", +] + +[[package]] +name = "wgpu-hal" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cc320a61acb26be4f549c9b1b53405c10a223fbfea363ec39474c32c348d12f" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set", + "bitflags", + "block", + "core-graphics-types", + "d3d12", + "foreign-types", + "fxhash", + "glow", + "gpu-alloc", + "gpu-descriptor", + "js-sys", + "khronos-egl", + "libloading", + "log", + "metal", + "naga 0.10.0", + "objc", + "parking_lot 0.12.1", + "profiling", + "range-alloc", + "raw-window-handle 0.5.0", + "renderdoc-sys", + "smallvec", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types 0.14.1", + "winapi", +] + +[[package]] +name = "wgpu-types" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f762cbc08e1a51389859cf9c199c7aef544789cf3510889aab12c607f701604" +dependencies = [ + "bitflags", +] + +[[package]] +name = "wgpu-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb6b28ef22cac17b9109b25b3bf8c9a103eeb293d7c5f78653979b09140375f6" +dependencies = [ + "bitflags", +] + +[[package]] +name = "widestring" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-wsapoll" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647" +dependencies = [ + "windows_aarch64_msvc 0.37.0", + "windows_i686_gnu 0.37.0", + "windows_i686_msvc 0.37.0", + "windows_x86_64_gnu 0.37.0", + "windows_x86_64_msvc 0.37.0", +] + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "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 0.42.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" + +[[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.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" + +[[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.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" + +[[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.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" + +[[package]] +name = "winit" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b43cc931d58b99461188607efd7acb2a093e65fc621f54cad78517a6063e73a" +dependencies = [ + "bitflags", + "cocoa", + "core-foundation 0.9.3", + "core-graphics 0.22.3", + "core-video-sys", + "dispatch", + "instant", + "lazy_static", + "libc", + "log", + "mio", + "ndk 0.5.0", + "ndk-glue 0.5.2", + "ndk-sys 0.2.2", + "objc", + "parking_lot 0.11.2", + "percent-encoding", + "raw-window-handle 0.4.3", + "wasm-bindgen", + "web-sys", + "winapi", + "x11-dl", +] + +[[package]] +name = "x11-dl" +version = "2.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1536d6965a5d4e573c7ef73a2c15ebcd0b2de3347bdf526c34c297c00ac40f0" +dependencies = [ + "lazy_static", + "libc", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e99be55648b3ae2a52342f9a870c0e138709a3493261ce9b469afe6e4df6d8a" +dependencies = [ + "gethostname", + "nix", + "winapi", + "winapi-wsapoll", +] + +[[package]] +name = "xi-unicode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..f80c3f8 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,8 @@ +[workspace] + +members = [ + "app", + "common", +] + +resolver = "2" # need to use resolver = "2" to be able to build wgpu-hal \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/target diff --git a/app/.vscode/launch.json b/app/.vscode/launch.json new file mode 100644 index 0000000..8ca2360 --- /dev/null +++ b/app/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [{ + "type": "lldb", + "request": "launch", + "name": "Debug executable", + "cargo": { + "args": [ + "build", + "--bin=voxel-level-editor" + ], + "filter": { + "name": "voxel-level-editor", + "kind": "bin" + } + }, + "args": [ + ], + "cwd": "${workspaceFolder}" +}] +} \ No newline at end of file diff --git a/app/Cargo.lock b/app/Cargo.lock new file mode 100644 index 0000000..97ca3c0 --- /dev/null +++ b/app/Cargo.lock @@ -0,0 +1,3418 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ab_glyph" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24606928a235e73cdef55a0c909719cadd72fce573e5713d58cb2952d8f5794c" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13739d7177fbd22bb0ed28badfff9f372f8bef46c863db4e1c6248f6b223b6e" + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom", + "once_cell", + "version_check 0.9.4", +] + +[[package]] +name = "aho-corasick" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +dependencies = [ + "memchr", +] + +[[package]] +name = "android_log-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85965b6739a430150bdd138e2374a98af0c3ee0d030b3bb7fc3bddff58d0102e" + +[[package]] +name = "android_logger" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9ed09b18365ed295d722d0b5ed59c01b79a826ff2d2a8f73d5ecca8e6fb2f66" +dependencies = [ + "android_log-sys", + "env_logger", + "lazy_static", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anyhow" +version = "1.0.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c91f1f46651137be86f3a2b9a8359f9ab421d04d941c62b5982e1ca21113adf9" + +[[package]] +name = "approx" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f2a05fd1bd10b2527e20a2cd32d8873d115b8b39fe219ee25f42a8aca6ba278" +dependencies = [ + "num-traits", +] + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "arboard" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc120354d1b5ec6d7aaf4876b602def75595937b5e15d356eb554ab5177e08bb" +dependencies = [ + "clipboard-win", + "core-graphics 0.22.3", + "image 0.23.14", + "log", + "objc", + "objc-foundation", + "objc_id", + "parking_lot 0.12.1", + "thiserror", + "winapi", + "x11rb", +] + +[[package]] +name = "arrayvec" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" + +[[package]] +name = "ash" +version = "0.37.0+1.3.209" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "006ca68e0f2b03f22d6fa9f2860f85aed430d257fec20f8879b2145e7c7ae1a6" +dependencies = [ + "libloading", +] + +[[package]] +name = "async-channel" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "slab", +] + +[[package]] +name = "async-task" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" + +[[package]] +name = "atk-sys" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "atomic_refcell" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73b5e5f48b927f04e952dedc932f31995a65a0bf65ec971c74436e51bf6e970d" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "bevy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55f08528a4e59d607460513a823b40f602d013c1a00f57b824f1075d5d48c3cd" +dependencies = [ + "bevy_internal", +] + +[[package]] +name = "bevy_app" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d26d6ffdf493609d2fedc1018a2ef0cb4d8e48f6d3bcea56fa2df81867e464" +dependencies = [ + "bevy_derive", + "bevy_ecs", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d8fb95306d5f18fa70df40632cd984993aeb71e91ce059ae99699098a4f9ce9" +dependencies = [ + "anyhow", + "bevy_app", + "bevy_diagnostic", + "bevy_ecs", + "bevy_log", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "crossbeam-channel", + "downcast-rs", + "fastrand", + "js-sys", + "ndk-glue", + "parking_lot 0.12.1", + "serde", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_core" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6712146d54fff9e1865362e9f39a7b63c7b037ddb72a3d7bb05b959213fb61e" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bytemuck", +] + +[[package]] +name = "bevy_core_pipeline" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "080bb00399b6d7697e505f871d67c6de8b52eb06b47b0cda2be80c2396805983" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "radsort", + "serde", +] + +[[package]] +name = "bevy_derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4b8f0786d1fc7e0d35297917be463db3d0886f7bd8d4221ca3d565502579ffb" +dependencies = [ + "bevy_macro_utils", + "quote", + "syn", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adab74ee5375fbf5d2b1d3da41de8d1491a8a706d17441b5e31214b65349d692" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_log", + "bevy_time", + "bevy_utils", +] + +[[package]] +name = "bevy_ecs" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5643dc27b7d6778e3a66c8e0f6ad1fd33309aa2fa61d935f360ccc85b7be6a2" +dependencies = [ + "async-channel", + "bevy_ecs_macros", + "bevy_ptr", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "downcast-rs", + "fixedbitset", + "fxhash", + "serde", + "thread_local", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5f2f12677f8725d40930d0a19652f007fe0ef5ac38e23817cfc4930c61f5680" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_egui" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf44ff770566dca66b805a6829df783f64700bd01d35aec1034dff31b531a4" +dependencies = [ + "arboard", + "bevy", + "egui", + "thread_local", + "webbrowser", +] + +[[package]] +name = "bevy_encase_derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a767adc36ce1fc917a736843b026d4de7069d90ed5e669c852481ef69fd5aa" +dependencies = [ + "bevy_macro_utils", + "encase_derive_impl", +] + +[[package]] +name = "bevy_gltf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "150cc6782c4472600c2ade5d78c6ce481c992690f0499e63765aba752d7e0f04" +dependencies = [ + "anyhow", + "base64", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_hierarchy", + "bevy_log", + "bevy_math", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_tasks", + "bevy_transform", + "bevy_utils", + "gltf", + "percent-encoding", + "thiserror", +] + +[[package]] +name = "bevy_hierarchy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2e4c20d7c843cd26ef3c5d7b4c20e3e32c275943e2437ecaca1cfd6cfe3b30" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_reflect", + "bevy_utils", + "smallvec", +] + +[[package]] +name = "bevy_input" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a11c70573fb4d4c056ba32cfa553daa7e6e1245cb876ccfbe322640928b7ee1c" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_utils", +] + +[[package]] +name = "bevy_internal" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d603b597772130782eab6e604706cbb764fb037f9cf0a1904b6f342845b6f44" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_core_pipeline", + "bevy_derive", + "bevy_diagnostic", + "bevy_ecs", + "bevy_gltf", + "bevy_hierarchy", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_pbr", + "bevy_ptr", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_tasks", + "bevy_text", + "bevy_time", + "bevy_transform", + "bevy_ui", + "bevy_utils", + "bevy_window", + "bevy_winit", + "ndk-glue", +] + +[[package]] +name = "bevy_log" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cafb12fc84734236e36f407ab62c72d5d4279fa4777e40a95d7cc973cbabcd1" +dependencies = [ + "android_log-sys", + "bevy_app", + "bevy_utils", + "console_error_panic_hook", + "tracing-log", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d081af83b701e16cad209255ba6b383744dfa49efa99eb6505989f293305ab3" +dependencies = [ + "quote", + "syn", + "toml", +] + +[[package]] +name = "bevy_math" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db5394e86c5708d3aa506c6e98ec4ed2a4083a7a018c6693d9ac0e77ebfabfc2" +dependencies = [ + "glam 0.21.3", +] + +[[package]] +name = "bevy_mikktspace" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b299a61175a6f7e7398f83cd5b50920fd8bad4df674e614ad94f25f8426509" +dependencies = [ + "glam 0.21.3", +] + +[[package]] +name = "bevy_pbr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9a81bbd02f5e0a57899a41aec37d9cb14965e1e4d510547f3f680323d05c0f" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags", + "bytemuck", + "radsort", +] + +[[package]] +name = "bevy_ptr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.21.3", + "once_cell", + "parking_lot 0.12.1", + "serde", + "smallvec", + "thiserror", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19209a7f0238053802b7de04e6724bd90d4ed7d90e87101dbd1b64cca64ff694" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn", + "uuid", +] + +[[package]] +name = "bevy_render" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb49530388ef17cff3fb8bd5e47372fb3cfeb4befc73e3036f6462ac20f049ef" +dependencies = [ + "anyhow", + "bevy_app", + "bevy_asset", + "bevy_core", + "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", + "bitflags", + "codespan-reporting", + "copyless", + "downcast-rs", + "encase", + "futures-lite", + "hex", + "hexasphere", + "image 0.24.3", + "naga", + "once_cell", + "parking_lot 0.12.1", + "regex", + "serde", + "smallvec", + "thiserror", + "thread_local", + "wgpu", +] + +[[package]] +name = "bevy_render_macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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", + "thiserror", + "uuid", +] + +[[package]] +name = "bevy_sprite" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f83dfe8897d6c0d9d5ce3818d49a13e58ae2b9b9ecf4f4bb85aa31bb0678f68" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bitflags", + "bytemuck", + "copyless", + "fixedbitset", + "guillotiere", + "rectangle-pack", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_tasks" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff874c91a36eaac3ef957c6f3b590fb71332d9d136671cc858847d56fe9f80a3" +dependencies = [ + "async-channel", + "async-executor", + "event-listener", + "futures-lite", + "num_cpus", + "once_cell", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_text" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef05a788c2c04aaa5db95b22a8f0fff0d3a0b08a7bcd1a71f050a628b38eec6e" +dependencies = [ + "ab_glyph", + "anyhow", + "bevy_app", + "bevy_asset", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_transform", + "bevy_utils", + "bevy_window", + "glyph_brush_layout", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_time" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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", + "bevy_hierarchy", + "bevy_math", + "bevy_reflect", +] + +[[package]] +name = "bevy_ui" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac181a7b637da61fad72981ff9d2e5b899283ca7d54b2b7ea49c431121331c53" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_text", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bytemuck", + "serde", + "smallvec", + "taffy", +] + +[[package]] +name = "bevy_utils" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bda6dada53e546845887ae7357eec57b8d547ef71627b716b33839b4a98b687" +dependencies = [ + "ahash", + "getrandom", + "hashbrown 0.12.3", + "instant", + "tracing", + "uuid", +] + +[[package]] +name = "bevy_window" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3bdc3a220a9bb2fad9bd30d5f44c6645725398fe1bc588fc87abf09f092696e" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_math", + "bevy_utils", + "raw-window-handle", + "web-sys", +] + +[[package]] +name = "bevy_winit" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57537a56ac4f4e1ffcad95227bcab37cd17b51770dacff82374a2d88be376322" +dependencies = [ + "approx 0.5.1", + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_math", + "bevy_utils", + "bevy_window", + "crossbeam-channel", + "raw-window-handle", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-mesh" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c0345520b5aa77d7d154bd578a18e7a974350931b5f41f641a7844e951b978f" +dependencies = [ + "ilattice", + "ndcopy", + "ndshape", +] + +[[package]] +name = "bumpalo" +version = "3.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" + +[[package]] +name = "bytemuck" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5377c8865e74a160d21f29c2d40669f53286db6eab59b88540cbb12ffc8b835" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfd2f4180c5721da6335cc9e9061cce522b87a35e51cc57636d28d22a9863c80" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" + +[[package]] +name = "cache-padded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" + +[[package]] +name = "cairo-sys-rs" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-expr" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aacacf4d96c24b2ad6eb8ee6df040e4f27b0d0b39a5710c30091baa830485db" +dependencies = [ + "smallvec", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "clipboard-win" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4ab1b92798304eedc095b53942963240037c0516452cb11aeba709d420b2219" +dependencies = [ + "error-code", + "str-buf", + "winapi", +] + +[[package]] +name = "cocoa" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63902e9223530efb4e26ccd0cf55ec30d592d3b42e21a28defc42a9586e832" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "core-foundation 0.9.3", + "core-graphics 0.22.3", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +dependencies = [ + "bitflags", + "block", + "core-foundation 0.9.3", + "core-graphics-types", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "combine" +version = "4.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a604e93b79d1808327a6fca85a6f2d69de66461e7620f5a4cbf5fb4d1d7c948" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "1.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c" +dependencies = [ + "cache-padded", +] + +[[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", + "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.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", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags", + "core-foundation 0.9.3", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +dependencies = [ + "bitflags", + "core-foundation 0.9.3", + "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", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + +[[package]] +name = "cty" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" + +[[package]] +name = "d3d12" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "827914e1f53b1e0e025ecd3d967a7836b7bcb54520f90e21ef8df7b4d88a2759" +dependencies = [ + "bitflags", + "libloading", + "winapi", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "deflate" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" +dependencies = [ + "adler32", + "byteorder", +] + +[[package]] +name = "deflate" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f" +dependencies = [ + "adler32", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dot_vox" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83c18405ef54de0398b77a3ec8394d3a1639e7bf060e1385201e8db40c44ab41" +dependencies = [ + "byteorder", + "lazy_static", + "log", + "nom", +] + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "egui" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb095a8b9feb9b7ff8f00b6776dffcef059538a3f4a91238e03c900e9c9ad9a2" +dependencies = [ + "ahash", + "epaint", + "nohash-hasher", +] + +[[package]] +name = "egui_extras" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877bfcce06463cdbcfd7f4efd57608b1384d6d9ae03b33e503fbba1d1a899a52" +dependencies = [ + "egui", +] + +[[package]] +name = "either" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be" + +[[package]] +name = "emath" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c223f58c7e38abe1770f367b969f1b3fbd4704b67666bcb65dbb1adb0980ba72" +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 0.21.3", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "epaint" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c29567088888e8ac3e8f61bbb2ddc820207ebb8d69eefde5bcefa06d65e4e89" +dependencies = [ + "ab_glyph", + "ahash", + "atomic_refcell", + "bytemuck", + "emath", + "nohash-hasher", + "parking_lot 0.12.1", +] + +[[package]] +name = "erased-serde" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003000e712ad0f95857bd4d2ef8d1890069e06554101697d12050668b2f6f020" +dependencies = [ + "serde", +] + +[[package]] +name = "error-code" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" +dependencies = [ + "libc", + "str-buf", +] + +[[package]] +name = "euclid" +version = "0.22.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b52c2ef4a78da0ba68fbe1fd920627411096d2ac478f7f4c9f3a54ba6705bade" +dependencies = [ + "num-traits", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +dependencies = [ + "matches", + "percent-encoding", +] + +[[package]] +name = "futures-core" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" + +[[package]] +name = "futures-io" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" + +[[package]] +name = "futures-lite" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "getrandom" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gio-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glam" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b8509e6791516e81c1a630d0bd7fbac36d2fa8712a9da8662e716b52d5051ca" + +[[package]] +name = "glam" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "518faa5064866338b013ff9b2350dc318e14cc4fcd6cb8206d7e7c9886c98815" +dependencies = [ + "bytemuck", + "serde", +] + +[[package]] +name = "glib-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glow" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8bd5877156a19b8ac83a29b2306fe20537429d318f3ff0a1a2119f8d9c61919" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gltf" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00e0a0eace786193fc83644907097285396360e9e82e30f81a21e9b1ba836a3e" +dependencies = [ + "byteorder", + "gltf-json", + "lazy_static", +] + +[[package]] +name = "gltf-derive" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdd53d6e284bb2bf02a6926e4cc4984978c1990914d6cd9deae4e31cf37cd113" +dependencies = [ + "inflections", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "gltf-json" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9949836a9ec5e7f83f76fb9bbcbc77f254a577ebbdb0820867bc11979ef97cad" +dependencies = [ + "gltf-derive", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "glyph_brush_layout" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc32c2334f00ca5ac3695c5009ae35da21da8c62d255b5b96d56e2597a637a38" +dependencies = [ + "ab_glyph", + "approx 0.5.1", + "xi-unicode", +] + +[[package]] +name = "gobject-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gpu-alloc" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc59e5f710e310e76e6707f86c561dd646f69a8876da9131703b2f717de818d" +dependencies = [ + "bitflags", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54804d0d6bc9d7f26db4eaec1ad10def69b599315f487d32c334a80d1efe67a5" +dependencies = [ + "bitflags", +] + +[[package]] +name = "gpu-descriptor" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a538f217be4d405ff4719a283ca68323cc2384003eca5baaa87501e821c81dda" +dependencies = [ + "bitflags", + "gpu-descriptor-types", + "hashbrown 0.11.2", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "363e3677e55ad168fef68cf9de3a4a310b53124c5e784c53a1d70e92d23f2126" +dependencies = [ + "bitflags", +] + +[[package]] +name = "gtk-sys" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "guillotiere" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" +dependencies = [ + "euclid", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", + "serde", +] + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hexasphere" +version = "7.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9652f2ed7ee9c6374a061039f60fc6e25d7adac7fa10f83365669af3b24b0bf0" +dependencies = [ + "glam 0.21.3", + "once_cell", +] + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "ilattice" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3db9046391c0e0658a18e23877706d16e48cc8b4711702b9f703776410c2b84" +dependencies = [ + "glam 0.19.0", +] + +[[package]] +name = "image" +version = "0.23.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-iter", + "num-rational 0.3.2", + "num-traits", + "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", +] + +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "inflections" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" + +[[package]] +name = "inplace_it" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67f0347836f3f6362c1e7efdadde2b1c4b4556d211310b70631bae7eb692070b" + +[[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", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "itertools" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" + +[[package]] +name = "jni" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jpeg-decoder" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2" + +[[package]] +name = "js-sys" +version = "0.3.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "khronos-egl" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" +dependencies = [ + "libc", + "libloading", + "pkg-config", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505e71a4706fa491e9b1b55f51b95d4037d0821ee40131190475f692b35b009b" + +[[package]] +name = "libloading" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] + +[[package]] +name = "lock_api" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matches" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metal" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060" +dependencies = [ + "bitflags", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", +] + +[[package]] +name = "miniz_oxide" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" +dependencies = [ + "adler32", +] + +[[package]] +name = "miniz_oxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +dependencies = [ + "adler", + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys", +] + +[[package]] +name = "naga" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f50357e1167a3ab92d6b3c7f4bf5f7fd13fde3f4b28bf0d5ea07b5100fdb6c0" +dependencies = [ + "bit-set", + "bitflags", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "num-traits", + "petgraph", + "pp-rs", + "rustc-hash", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "ndcopy" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f4e41b81e3f7a4b742755be1bb368a6faafc43af555fe135c36b0efe095c59" +dependencies = [ + "ndshape", +] + +[[package]] +name = "ndk" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d868f654c72e75f8687572699cdabe755f03effbb62542768e995d5b8d699d" +dependencies = [ + "bitflags", + "jni-sys", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-glue" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71bee8ea72d685477e28bd004cfe1bf99c754d688cd78cad139eae4089484d4" +dependencies = [ + "android_logger", + "lazy_static", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-macro", + "ndk-sys", +] + +[[package]] +name = "ndk-macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" +dependencies = [ + "darling", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "ndk-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" + +[[package]] +name = "ndshape" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "975bce586ad637e27f6dc26ee907c07050686a588695bfd64b7873a9d48a700c" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "nix" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" +dependencies = [ + "bitflags", + "cc", + "cfg-if 1.0.0", + "libc", + "memoffset", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "4.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" +dependencies = [ + "memchr", + "version_check 0.1.5", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-integer", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + +[[package]] +name = "once_cell" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" + +[[package]] +name = "owned_ttf_parser" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ef1a404ae479dd6906f4fa2c88b3c94028f1284beb42a47c183a7c27ee9a3e" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "pango-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.3", +] + +[[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", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "petgraph" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pkg-config" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" + +[[package]] +name = "png" +version = "0.16.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" +dependencies = [ + "bitflags", + "crc32fast", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb458bb7f6e250e6eb79d5026badc10a3ebb8f9a15d1fff0f13d17c71f4d6dee" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "proc-macro-crate" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d50bfb8c23f23915855a00d98b5a35ef2e0b871bb52937bacadb798fbb66c8" +dependencies = [ + "once_cell", + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro2" +version = "1.0.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f61dcf0b917cd75d4521d7343d1ffff3d1583054133c9b5cbea3375c703c40d" + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radsort" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b" + +[[package]] +name = "range-alloc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e935c45e09cc6dcf00d2f0b2d630a58f4095320223d47fc68918722f0538b6" + +[[package]] +name = "raw-window-handle" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41" +dependencies = [ + "cty", +] + +[[package]] +name = "rectangle-pack" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb" + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] +name = "renderdoc-sys" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1382d1f0a252c4bf97dc20d979a2fdd05b024acd7c2ed0f7595d7817666a157" + +[[package]] +name = "rfd" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f756b55bff8f256a1a8c24dbabb1430ac8110628e418a02e4a1c5ff67179f56" +dependencies = [ + "block", + "dispatch", + "glib-sys", + "gobject-sys", + "gtk-sys", + "js-sys", + "lazy_static", + "log", + "objc", + "objc-foundation", + "objc_id", + "raw-window-handle", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows", +] + +[[package]] +name = "ron" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a" +dependencies = [ + "base64", + "bitflags", + "serde", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustversion" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" + +[[package]] +name = "ryu" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "serde" +version = "1.0.142" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e590c437916fb6b221e1d00df6e3294f3fccd70ca7e92541c475d6ed6ef5fee2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.142" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b5b8d809babe02f538c2cfec6f2c1ed10804c0e5a6a041a049a4f5588ccc2e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +dependencies = [ + "version_check 0.9.4", +] + +[[package]] +name = "smallvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" +dependencies = [ + "serde", +] + +[[package]] +name = "smooth-bevy-cameras" +version = "0.4.0" +source = "git+https://github.com/bonsairobo/smooth-bevy-cameras.git?branch=main#a1095b9bc563d459c79b59e12ef620fa4567e04e" +dependencies = [ + "approx 0.4.0", + "bevy", + "serde", +] + +[[package]] +name = "spirv" +version = "0.2.0+1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" +dependencies = [ + "bitflags", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "svg_fmt" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" + +[[package]] +name = "syn" +version = "1.0.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "system-deps" +version = "6.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a45a1c4c9015217e12347f2a411b57ce2c4fc543913b14b6fe40483328e709" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "taffy" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec27dea659b100d489dffa57cf0efc6d7bfefb119af817b92cc14006c0b214e3" +dependencies = [ + "arrayvec", + "hash32", + "hash32-derive", + "num-traits", + "typenum", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tiff" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437" +dependencies = [ + "jpeg-decoder", + "miniz_oxide 0.4.4", + "weezl", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + +[[package]] +name = "tracing" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60db860322da191b40952ad9affe65ea23e7dd6a5c442c2c42865810c6ab8e6b" +dependencies = [ + "ansi_term", + "matchers", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "tracing-wasm" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" +dependencies = [ + "tracing", + "tracing-subscriber", + "wasm-bindgen", +] + +[[package]] +name = "ttf-parser" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" + +[[package]] +name = "unicode-normalization" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" + +[[package]] +name = "unicode-xid" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" + +[[package]] +name = "url" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +dependencies = [ + "form_urlencoded", + "idna", + "matches", + "percent-encoding", +] + +[[package]] +name = "uuid" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "version-compare" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73" + +[[package]] +name = "version_check" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "voxel-level-editor" +version = "0.1.0" +dependencies = [ + "bevy", + "bevy_egui", + "block-mesh", + "dot_vox", + "egui", + "egui_extras", + "itertools", + "rfd", + "smooth-bevy-cameras", + "strum", + "strum_macros", +] + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa76fb221a1f8acddf5b54ace85912606980ad661ac7a503b4570ffd3a624dad" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" + +[[package]] +name = "web-sys" +version = "0.3.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webbrowser" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a3cffdb686fbb24d9fb8f03a213803277ed2300f11026a3afe1f108dc021b" +dependencies = [ + "jni", + "ndk-glue", + "url", + "web-sys", + "widestring", + "winapi", +] + +[[package]] +name = "weezl" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" + +[[package]] +name = "wgpu" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "277e967bf8b7820a76852645a6bce8bbd31c32fda2042e82d8e3ea75fda8892d" +dependencies = [ + "arrayvec", + "js-sys", + "log", + "naga", + "parking_lot 0.12.1", + "raw-window-handle", + "smallvec", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b92788dec9d0c1bed849a1b83f01b2ee12819bf04a79c90f68e4173f7b5ba2" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags", + "cfg_aliases", + "codespan-reporting", + "copyless", + "fxhash", + "log", + "naga", + "parking_lot 0.12.1", + "profiling", + "raw-window-handle", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-hal" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cbdfc3d0637dba3d5536b93adef3d26023a0b96f0e1ee5ee9560a401d9f646" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set", + "bitflags", + "block", + "core-graphics-types", + "d3d12", + "foreign-types", + "fxhash", + "glow", + "gpu-alloc", + "gpu-descriptor", + "inplace_it", + "js-sys", + "khronos-egl", + "libloading", + "log", + "metal", + "naga", + "objc", + "parking_lot 0.12.1", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "winapi", +] + +[[package]] +name = "wgpu-types" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f762cbc08e1a51389859cf9c199c7aef544789cf3510889aab12c607f701604" +dependencies = [ + "bitflags", +] + +[[package]] +name = "widestring" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-wsapoll" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647" +dependencies = [ + "windows_aarch64_msvc 0.37.0", + "windows_i686_gnu 0.37.0", + "windows_i686_msvc 0.37.0", + "windows_x86_64_gnu 0.37.0", + "windows_x86_64_msvc 0.37.0", +] + +[[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_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.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" + +[[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.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" + +[[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.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" + +[[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.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" + +[[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.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" + +[[package]] +name = "winit" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b43cc931d58b99461188607efd7acb2a093e65fc621f54cad78517a6063e73a" +dependencies = [ + "bitflags", + "cocoa", + "core-foundation 0.9.3", + "core-graphics 0.22.3", + "core-video-sys", + "dispatch", + "instant", + "lazy_static", + "libc", + "log", + "mio", + "ndk", + "ndk-glue", + "ndk-sys", + "objc", + "parking_lot 0.11.2", + "percent-encoding", + "raw-window-handle", + "wasm-bindgen", + "web-sys", + "winapi", + "x11-dl", +] + +[[package]] +name = "x11-dl" +version = "2.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea26926b4ce81a6f5d9d0f3a0bc401e5a37c6ae14a1bfaa8ff6099ca80038c59" +dependencies = [ + "lazy_static", + "libc", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e99be55648b3ae2a52342f9a870c0e138709a3493261ce9b469afe6e4df6d8a" +dependencies = [ + "gethostname", + "nix", + "winapi", + "winapi-wsapoll", +] + +[[package]] +name = "xi-unicode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" diff --git a/app/Cargo.toml b/app/Cargo.toml new file mode 100644 index 0000000..0c79ec5 --- /dev/null +++ b/app/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "voxel-level-editor" +version = "0.1.0" +edition = "2021" +resolver = "2" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +common = { path = "../common", features = [ "two_dimensional", "three_dimensional", "serde", "bevy", "import_dot_vox" ] } +bevy = { version = "0.8", default-features = false, features = ["bevy_winit", "bevy_render", "render", "png", "x11"] } +block-mesh = "0.2.0" +bevy_egui = "0.15.1" +egui = "0.18" +egui_extras = "0.18" +smooth-bevy-cameras = "0.6.0" +itertools = "0.10" +rfd = "0.8" +async-channel = "1.6.1" +enum-map = "2.4" # syntax_highlighting dep, possibly redundant with strum? \ No newline at end of file diff --git a/app/res/sample_level_1.vox b/app/res/sample_level_1.vox new file mode 100644 index 0000000000000000000000000000000000000000..2d57aa5ebee9ef11dc13edaca2ce8454fe68fe25 GIT binary patch literal 2844 zcmWmDNwVBT5CBk3rMapkwXN1`s4f0 z{}e^>+b`dK7m9u=ia)>o_;vpH;`0*^J>UQS@$J9Sz~|qpC}L5RiA*ew$;8T-OstK` z#KxFR48~+)YfL6~#$=|xC}$#x%)-jXi)k>2NFuYavhiXX%^{M=EUaw2m?m?GBr*#t z8!y6Klr0@S10xeNkwj);W#h#sKC|=Y;N;@w;R|00(f`oVGcYnS6G>ziRyJOI;xjvM z4o)s^9=`CEDfvAjiOj;v#*3Xd2PYRd4^vi8B#~KI*?6(@=HTSw=3!dY6G>ziRyJPj zyg4|zxOtdX^+Xbxg_VsLJ8uq7E^Z#uriPt22PYRd59wtN>61wMERuGS^cHCj`$i&D zoJCnuQPU7;>F604nV5+rGR38yikgN%OGnSZ$iz$}ktuHVRMa#CS~_|LMkZz=iTv?> zDBY>johsd_(w!>ZsnVS)-6c5^nT3^&d6FZMSy;^rY{^T{l%?7TTRxwv`Q7dZ}2E^Z$7RgQy`i<^giljGpz;^yHC#aY?c%Dz_i z)jJYs>F604nV5+rGR38yikgN%OGnSZ$iz$}k*RMr1X?HlKehd- z?N43S(K8a6g+0~QzqbCh^{=geZT)NOFPG&wIJvla*cUktPA+a9_EnC9lZ%_@BW@yJ zD9+lt*49;TGz3~YdIm-&W+I79ajB=GrXkSM(K9eIF%wB->RSzgmX4l*k%^f|B2&+e z^=z!A$h|h+OWZ{6m&pA|XzAz~7@3%fB=Uzj=r!my=r!my=r!my=r!my=r!my=r!my=vB?7 ihCoY4&%nsUOeB%1Z#4v3I(i01CT1du{9$hC%Kri8WoNqp literal 0 HcmV?d00001 diff --git a/app/res/sample_level_2.vox b/app/res/sample_level_2.vox new file mode 100644 index 0000000000000000000000000000000000000000..8de5370c075aec97ff67405463f19afdefe2ec79 GIT binary patch literal 6452 zcmXZfxsJrjc?M7pYu{@eS(%p%Yf z=l_15=imPN$GN3g|BrwF$3Or0pMU+%KF?pWxA*z^;Uy4B zWD1o=XE0f84wom$;3W`AWD1o=XE0f84wom&;3W`AWD1o=XE0f84wom%;3W`AWD1o= zXE0f84wom(;3W`AWD1o=XE0f84wt9M;3W`AWD1o=XE0f84woN)n)YkfuUY=@^?DCP zp6?4Ufk+}#s5Cl*$zpT3JYN_ufk+}#s5Cl*$zpT3Jl{XVOCXZS6e^9*V6xa8E>Dud zOCXZS6e^9*V6xa8E>D)hOCXZS6e^9*V6xa8E>DrcOCXZS6e^9*V6xa8E?LJEDvi!y zl66?2(&!8(kB&@a3YA7@Fj;I4m*?wvUILLsrch~g29w3+aCyEPhnGMkkttLfoxxqrv ziDmPcToQxHVsp4W-^9a9Ad<)wDvi!yve+Ch&o^=L5{M)+g-W9{m@GDj%kxcqyaXbN zOrg@~3?_@s;qrVFCoh3WB2%a|I)lk#bGSU;#LG({lE@S)jm}`Q*c|Tn*`$29{IX5Z zhs!U|H(B!%h$IG+#pZDN<@qLeUILLsrch~g29w3+aQWr=76@Jfkwm6YX>kwm6YX>D3V}!> zQ>ZjLgC}%-;d%m*M5a(_bOw{f=JG`KyaXbNOrg@~3?_@sYY9XWnL?$}8B7+N%M;b} z5{M)+g-W9{m@GDzC#mNp5J_YTl}2YUS!^y(R?kZylE@S)jm}`Q*j!R^Erm*>Gng!X zUQf&fB8g0)(&!9+f@=vx5}87!(HTq@o5STNswWUhWD1o=XE0f84wom%;3W`AWD1o= zXE0f84wom(;3W`AWD1o=XE0f84wq2Wk;oJ(jm}`Qc;2Ormp1kUOeB#hR2rSZWU)D1 zeu8=ekwm6YX>ZjLgUMoZxcnsb1R{w{q0;CKCX3DC@?;sj1R{w{q0;CKCX3DC@)Q}o y1R{w{q0;CKCW{iTHoDsAYNP9SU%%Tq8l6E-&Qoc01|>U3qko^{uex8?Ir6`jaEZtO literal 0 HcmV?d00001 diff --git a/app/res/sample_level_3.vox b/app/res/sample_level_3.vox new file mode 100644 index 0000000000000000000000000000000000000000..2f7c6f43305c91381df9b4bbac944c38f02cf013 GIT binary patch literal 372 zcmWm9Jx;_h5C+ik{3MISAvg#P1;rK%1rl1e;#8cMXGc#~Cf|&m@6Y?oUqsyAt{=Ae zT@hc`$NTesv7R_Nxc@w^ufFfK!yU1P{VbBA86wq5ie@-Cxez5oQZ&QC$pr_kMN%{| zY9vMDl53F^&A8b?r4bAVCsFEKyQW}mnQ|%TZ#31WF*O#=kcQNjB}12tealv(84NGO HtC?B, +} + +impl VoxelContainer for VoxelCursorLayer { + fn get_voxel_at_pos(&self, pos: Vec3Generic) -> Option { + Some(BoolVoxel(self.position == pos)) + } +} diff --git a/app/src/components/fn_layer.rs b/app/src/components/fn_layer.rs new file mode 100644 index 0000000..e8e62bc --- /dev/null +++ b/app/src/components/fn_layer.rs @@ -0,0 +1,17 @@ +use std::sync::Arc; + +use bevy::prelude::Component; +use common::space::three_dimensional::{traits::VoxelContainer, vec3generic::Vec3Generic}; + +use crate::voxels::bool_voxel::BoolVoxel; + +#[derive(Component)] +pub struct VoxelFnLayer { + pub is_solid: Arc) -> bool + Send + Sync>, +} + +impl VoxelContainer for VoxelFnLayer { + fn get_voxel_at_pos(&self, pos: Vec3Generic) -> Option { + Some(BoolVoxel((self.is_solid)(pos))) + } +} diff --git a/app/src/components/mod.rs b/app/src/components/mod.rs new file mode 100644 index 0000000..0a3e259 --- /dev/null +++ b/app/src/components/mod.rs @@ -0,0 +1,5 @@ +pub mod cursor_layer; +pub mod fn_layer; +pub mod mutable_mesh; +pub mod named; +pub mod property_pane; diff --git a/app/src/components/mutable_mesh.rs b/app/src/components/mutable_mesh.rs new file mode 100644 index 0000000..f0d60f2 --- /dev/null +++ b/app/src/components/mutable_mesh.rs @@ -0,0 +1,7 @@ +use bevy::prelude::Component; + +#[derive(Component)] +pub struct MutableMesh { + pub current: bool, + pub visible: bool, +} diff --git a/app/src/components/named.rs b/app/src/components/named.rs new file mode 100644 index 0000000..c8d1fa0 --- /dev/null +++ b/app/src/components/named.rs @@ -0,0 +1,6 @@ +use bevy::prelude::Component; + +#[derive(Component)] +pub struct Named { + pub name: String, +} diff --git a/app/src/components/property_pane.rs b/app/src/components/property_pane.rs new file mode 100644 index 0000000..8c9df19 --- /dev/null +++ b/app/src/components/property_pane.rs @@ -0,0 +1,18 @@ +use bevy::prelude::Component; + +#[derive(Component)] +pub struct PropertyPane { + pub title: String, + pub closable: bool, + pub is_open: bool, +} + +impl PropertyPane { + pub fn new(title: String, closable: bool) -> Self { + PropertyPane { + title, + closable, + is_open: true, + } + } +} diff --git a/app/src/main.rs b/app/src/main.rs new file mode 100644 index 0000000..05b07f0 --- /dev/null +++ b/app/src/main.rs @@ -0,0 +1,166 @@ +use bevy::render::mesh::MeshVertexAttribute; +use bevy::render::render_resource::VertexFormat; +use bevy::tasks::TaskPoolBuilder; +use bevy_egui::EguiPlugin; + +use bevy::{ + pbr::wireframe::{WireframeConfig, WireframePlugin}, + prelude::*, + render::settings::WgpuSettings, +}; +use common::space::level_tile::LevelTile; +use common::space::three_dimensional::hash_map_container::VoxelHashMapLayer; +use common::space::three_dimensional::vec3generic::Vec3Generic; +use common::space::two_dimensional::depth_tiles::DepthTileContainer; +use components::cursor_layer::VoxelCursorLayer; +use components::property_pane::PropertyPane; +use smooth_bevy_cameras::controllers::orbit::{ + OrbitCameraBundle, OrbitCameraController, OrbitCameraPlugin, +}; +use smooth_bevy_cameras::{LookTransform, LookTransformPlugin}; +use systems::{generic_command_queue::CommandQueue, layer_spawner::LayerSpawnerCommand, ui::ui_spawner::{UiSpawnerCommand, UiSpawnerState}}; +use voxels::bool_voxel::BoolVoxel; +use voxels::mesh::into_domain; +mod components; +mod systems; +mod voxels; + +pub const ATTRIBUTE_POSITION: MeshVertexAttribute = + MeshVertexAttribute::new("Position", 88238261, VertexFormat::Float32x3); +pub const ATTRIBUTE_NORMAL: MeshVertexAttribute = + MeshVertexAttribute::new("Normal", 508828962, VertexFormat::Float32x3); +pub const ATTRIBUTE_UV: MeshVertexAttribute = + MeshVertexAttribute::new("UV", 1982256274, VertexFormat::Float32x2); + +fn main() { + App::new() + .insert_resource(WgpuSettings { + // features: WgpuFeatures::POLYGON_MODE_LINE, + ..Default::default() + }) + .insert_resource(Msaa { samples: 4 }) + .insert_resource(CommandQueue::::default()) + .insert_resource(CommandQueue::::default()) + .insert_resource(UiSpawnerState::default()) + .insert_resource(TaskPoolBuilder::new().num_threads(1).build()) + .add_plugins(DefaultPlugins) + .add_plugin(WireframePlugin) + .add_plugin(EguiPlugin) + .add_plugin(LookTransformPlugin) + .add_plugin(OrbitCameraPlugin { + override_input_system: false, + }) + .add_system(systems::ui::layers::layer_ui) + .add_system(systems::ui::properties::properties_ui) + .add_system(systems::ui::properties::clean_up_closed_panes) + .add_system( + systems::mutable_mesh_refresher::mutable_mesh_refresher::< + VoxelHashMapLayer, + LevelTile, + >, + ) + .add_system( + systems::mutable_mesh_refresher::mutable_mesh_refresher::< + DepthTileContainer, + LevelTile, + >, + ) + .add_system( + systems::mutable_mesh_refresher::mutable_mesh_refresher::, + ) + .add_system(move_camera_system) + .add_system(look_at_cursor_system) + .add_system(systems::layer_spawner::layer_spawner) + .add_system(systems::ui::ui_spawner::ui_spawner) + .add_startup_system(setup) + .run(); +} + +fn setup( + mut commands: Commands, + mut wireframe_config: ResMut, + mut materials: ResMut>, + mut meshes: ResMut>, +) { + wireframe_config.global = false; + + commands.spawn_bundle(PointLightBundle { + transform: Transform::from_translation(Vec3::new(25.0, 25.0, 25.0)), + point_light: PointLight { + range: 200.0, + intensity: 8000.0, + ..Default::default() + }, + ..Default::default() + }); + let _camera_bundle = commands + .spawn_bundle(OrbitCameraBundle::new( + OrbitCameraController::default(), + Vec3::new(-10.0, 21.0, -10.0), + Vec3::new(0.0, 0.0, 0.0), + )) + .insert_bundle(Camera3dBundle::default()) + .insert(PropertyPane::new("Camera".to_string(), false)); + /*.insert_bundle(Camera3dBundle { + projection: OrthographicProjection { + scale: 1.0, + scaling_mode: ScalingMode::FixedVertical(32.0), + ..default() + }.into(), + transform: Transform::from_translation(Vec3::new(50.0, 15.0, 50.0)) + .looking_at(Vec3::new(0.0, 0.0, 0.0), Vec3::Y), + ..Default::default() + }); */ + + voxels::layers::container_to_layer_component( + "cursor".to_string(), + VoxelCursorLayer { + position: Vec3Generic { x: 5, y: 5, z: 3 }, + }, + StandardMaterial::from(Color::rgba(10.0, 0.0, 0.0, 0.5)), + &mut meshes, + &mut commands, + &mut materials, + ); + + // voxels::layers::container_to_layer_component( + // "bounds".to_string(), + // VoxelFnLayer { is_solid: Arc::new(|p: Vec3Generic| p.x % 3 == 0) }, + // StandardMaterial::from(Color::rgba(0.0, 3.0, 3.0, 0.5)), + // &mut meshes, + // &mut commands, + // &mut materials); +} + +fn move_camera_system(mut cameras: Query<&mut LookTransform>) { + for mut c in cameras.iter_mut() { + c.target += Vec3::new(1.0, 1.0, 1.0); + } +} + +fn look_at_cursor_system( + mut cameras: Query<&mut LookTransform>, + cursor_mesh: Query<(&VoxelCursorLayer, &Handle)>, +) { + match cursor_mesh.get_single() { + Ok((cursor, _cursor_mesh)) => { + let cursor_pos = into_domain(/*unused?*/ 0, cursor.position.into()); + // assume cursor is a single voxel size + let cursor_size = into_domain(/*unused?*/ 0, [1, 1, 1]); + + // add half the cursor size so that the look target is in the middle of the cursor + let look_target = cursor_pos + (cursor_size); //((cursor_pos * 2.0) + 1.0) / 2.0; + + let mut camera = cameras.single_mut(); + camera.target = Vec3 { + x: look_target.x, + y: look_target.y, + z: look_target.z, + }; + } + Err(_) => (), // maybe cursor mesh was hidden? + } +} + +const SAMPLE_WORLD: &[u8] = include_bytes!("../res/sample_level_2.vox"); +const SAMPLE_WORLD_OLD: &[u8] = include_bytes!("../res/sample_level_1.vox"); diff --git a/app/src/systems/generic_command_queue.rs b/app/src/systems/generic_command_queue.rs new file mode 100644 index 0000000..f062d10 --- /dev/null +++ b/app/src/systems/generic_command_queue.rs @@ -0,0 +1,44 @@ +use std::collections::VecDeque; + +use bevy::prelude::Resource; + +/// Command queue which allows both synchronous and asynchronous queuing. +#[derive(Resource)] +pub struct CommandQueue { + sync_commands: VecDeque, + async_sender: async_channel::Sender, + async_receiver: async_channel::Receiver, +} + +impl CommandQueue { + pub fn add(&mut self, command: T) { + self.sync_commands.push_back(command) + } + + pub fn get_async_sender(&self) -> async_channel::Sender { + self.async_sender.clone() + } + + pub fn get_commands(&mut self) -> Vec { + let mut commands = vec![]; + + while let Ok(command) = self.async_receiver.try_recv() { + commands.push(command); + } + + commands.extend(self.sync_commands.drain(0..self.sync_commands.len())); + + commands + } +} + +impl Default for CommandQueue { + fn default() -> Self { + let (async_sender, async_receiver) = async_channel::unbounded::(); + Self { + sync_commands: Default::default(), + async_sender, + async_receiver, + } + } +} \ No newline at end of file diff --git a/app/src/systems/layer_spawner.rs b/app/src/systems/layer_spawner.rs new file mode 100644 index 0000000..2463d63 --- /dev/null +++ b/app/src/systems/layer_spawner.rs @@ -0,0 +1,128 @@ +use common::space::{ + level_tile::LevelTile, three_dimensional::hash_map_container::VoxelHashMapLayer, + two_dimensional::depth_tiles::{DepthTileContainer, DepthTile}, +}; +use common::strum::IntoEnumIterator; +use std::collections::VecDeque; + +use bevy::{prelude::*, tasks::TaskPool}; +use common::space::two_dimensional::depth_tiles::Direction; + +use super::{generic_command_queue::CommandQueue, ui::ui_spawner::{UiSpawnerCommand, build_message_box_command, build_command, EditorPopup}}; + +pub fn layer_spawner( + mut spawner_commands: ResMut>, + mut commands: Commands, + mut materials: ResMut>, + mut meshes: ResMut>, + mut tile_hashmap_layer_query: Query<&mut VoxelHashMapLayer>, + ui_spawner_commands: ResMut>, + pool: Res, +) { + for command in spawner_commands.get_commands() { + match command { + LayerSpawnerCommand::FromVoxData { name, data } => { + match common::space::three_dimensional::hash_map_container::import_from_bytes::< + LevelTile, + >(&data) + { + Ok(voxels) => { + crate::voxels::layers::container_to_layer_component( + name, + voxels, + StandardMaterial::from(Color::rgb(5.0, 5.0, 5.0)), + &mut meshes, + &mut commands, + &mut materials, + ); + } + Err(e) => { + println!("Couldn't load file {}: {:?}", name, e) + } + } + } + LayerSpawnerCommand::FromTileProjectedLayer { + name, + source_layer, + direction, + } => { + if let Ok(layer) = tile_hashmap_layer_query.get_mut(source_layer) { + let layer = layer.into_inner(); + + let tiles = common::space::three_dimensional::project_to_2d::create_tilemap( + layer, direction, 32, 32, 32, + ); + let tile_map_layer = DepthTileContainer:: { tiles }; + + crate::voxels::layers::container_to_layer_component( + name, + tile_map_layer, + StandardMaterial::from(Color::rgb(0.0, 5.0, 0.0)), + &mut meshes, + &mut commands, + &mut materials, + ); + } + } + LayerSpawnerCommand::ExportProjectedTilesToml { name, source_layer } => { + let sender = ui_spawner_commands.get_async_sender(); + if let Ok(layer) = tile_hashmap_layer_query.get_mut(source_layer) { + let mut layer = layer.into_inner().clone(); + pool.spawn(async move { + match common::space::level_serde::create_export_map(&mut layer) { + Ok(map) => { + match common::ron::to_string(&map) { + Ok(map_ron) => { + sender.send(build_command(EditorPopup { + title: "exported".to_string(), + data: map_ron, + open: true + })).await; + }, + Err(e) => { + let (cmd, recv) = build_message_box_command("error".to_string(), format!("serialization failed: {:?}", e), vec![":(", "show Debug"], true); + sender.send(cmd).await; + if let Ok(button_pressed) = recv.recv().await { + if button_pressed == "show Debug" { + + sender.send(build_command(EditorPopup { + title: "Debug of export".to_string(), + data: format!("{:?}", map), + open: true + })).await; + } + + } + + } + + } + }, + Err(e) => { + let (cmd, recv) = build_message_box_command("error".to_string(), format!("export failed: {:?}", e), vec![":("], true); + sender.send(cmd).await; + }, + } + + }).detach(); + } + }, + } + } +} + +pub enum LayerSpawnerCommand { + FromVoxData { + name: String, + data: Vec, + }, + FromTileProjectedLayer { + name: String, + source_layer: Entity, + direction: common::space::two_dimensional::depth_tiles::Direction, + }, + ExportProjectedTilesToml { + name: String, + source_layer: Entity, + } +} diff --git a/app/src/systems/mod.rs b/app/src/systems/mod.rs new file mode 100644 index 0000000..72b907f --- /dev/null +++ b/app/src/systems/mod.rs @@ -0,0 +1,4 @@ +pub mod layer_spawner; +pub mod mutable_mesh_refresher; +pub mod ui; +pub mod generic_command_queue; diff --git a/app/src/systems/mutable_mesh_refresher.rs b/app/src/systems/mutable_mesh_refresher.rs new file mode 100644 index 0000000..fe94028 --- /dev/null +++ b/app/src/systems/mutable_mesh_refresher.rs @@ -0,0 +1,39 @@ +use bevy::prelude::{Commands, Component, Entity, Mesh, Query, ResMut}; + +use block_mesh::Voxel; +use common::space::three_dimensional::traits::DefaultVoxel; + +use crate::{components::mutable_mesh::MutableMesh, voxels::layers::traits::VoxelLayer}; + +pub fn mutable_mesh_refresher( + mut commands: Commands, + mut query: Query<(Entity, &mut MutableMesh, &TContainer)>, + mesh_query: Query<&Handle>, + mut meshes: ResMut>, +) where + TContainer: VoxelLayer + Component, + TVoxel: Voxel + DefaultVoxel + Copy, +{ + // for (e, mut mutable_mesh, container) in query.iter_mut().filter(|(_, mm, _)| mm.current == false){ + for (e, mut mutable_mesh, container) in query.iter_mut() { + if !mutable_mesh.current { + let mut commands = commands.entity(e); + match mutable_mesh.visible { + true => { + if mesh_query.contains(e) { + commands.remove::>(); + } + let new_mesh = container.generate_simple_mesh(&mut meshes); + commands.insert(new_mesh); + } + false => { + if mesh_query.contains(e) { + commands.remove::>(); + } + } + }; + + mutable_mesh.current = true; + } + } +} diff --git a/app/src/systems/ui/layers.rs b/app/src/systems/ui/layers.rs new file mode 100644 index 0000000..7b69bf7 --- /dev/null +++ b/app/src/systems/ui/layers.rs @@ -0,0 +1,161 @@ +use crate::{ + components::{ + cursor_layer::VoxelCursorLayer, mutable_mesh::MutableMesh, named::Named, + property_pane::PropertyPane, + }, + systems::{layer_spawner::{LayerSpawnerCommand}, generic_command_queue::CommandQueue, ui::ui_spawner::{UiSpawnerCommand, build_message_box_command, EditorPopup, build_command}}, +}; +use bevy::{ + prelude::{Camera, Commands, Entity, Query, Res, ResMut}, + render::camera::Projection, + tasks::TaskPool, +}; +use bevy_egui::EguiContext; + +use egui_extras::{Size, TableBuilder}; +use itertools::Itertools; +use smooth_bevy_cameras::LookTransform; + +pub fn layer_ui( + mut commands: Commands, + layer_spawner_commands: ResMut>, + ui_spawner_commands: ResMut>, + mut egui_context: ResMut, + mut camera_query: Query<(&mut Camera, &mut Projection, &mut LookTransform)>, + mut layer_query: Query<( + &mut Named, + Entity, + &mut MutableMesh, + Option<&mut VoxelCursorLayer>, + )>, + property_pane_query: Query<&mut PropertyPane>, + pool: Res, +) { + egui::Window::new("Layers") + .resizable(true) + .vscroll(true) + .show(egui_context.ctx_mut(), |ui| { + let (_camera, _projection, _look_transform) = camera_query.single_mut(); + + TableBuilder::new(ui) + .striped(true) + .scroll(true) + .column(Size::initial(200.0).at_least(40.0)) + .column(Size::initial(60.0)) + .header(20.0, |mut header| { + header.col(|ui| { + ui.heading("Name"); + }); + header.col(|ui| { + ui.heading("Visible"); + }); + }) + .body(|mut body| { + // draw layer controls + for layer_query_result in layer_query + .iter_mut() + // sort by name + .sorted_by(|(left_named, ..), (right_named, ..)| { + left_named.name.cmp(&right_named.name) + }) + { + let (named, entity, mut mutable_mesh, _cursor_layer) = layer_query_result; + body.row(20.0, |mut row| { + row.col(|ui| { + if ui.button(&named.name).clicked() + && !property_pane_query.contains(entity) + { + commands.entity(entity).insert(PropertyPane::new( + format!("Layer - {}", named.name), + true, + )); + } + }); + row.col(|ui| { + if ui.checkbox(&mut mutable_mesh.visible, "").clicked() { + mutable_mesh.current = false; + } + }); + }); + + // if let Some(mut cursor_layer) = cursor_layer { + // ui.horizontal(|ui| { + // if ui.add(egui::DragValue::new(&mut cursor_layer.position.x).speed(1).prefix("x:")).changed() || + // ui.add(egui::DragValue::new(&mut cursor_layer.position.y).speed(1).prefix("y:")).changed() || + // ui.add(egui::DragValue::new(&mut cursor_layer.position.z).speed(1).prefix("z:")).changed() { + + // // invalidate the mesh so it is redrawn + // mutable_mesh.current = false; + + // } + // }); + + // } + //ui.label(format!("size: {}x{}x{}", layer.size.x, layer.size.y, layer.size.z)); + } + }); + + ui.separator(); + + if ui.button("Load .vox").clicked() { + let sender = layer_spawner_commands.get_async_sender(); + pool.spawn(async move { + if let Some(path) = rfd::AsyncFileDialog::new() + .add_filter("MagicaVoxel .vox", &["vox"]) + .set_directory(".") + .pick_file() + .await + { + let data = path.read().await; + sender + .send(LayerSpawnerCommand::FromVoxData { + name: path.file_name(), + data, + }) + .await + .unwrap(); + } + }) + .detach(); + } + + if ui.button("Popup test").clicked() { + let sender = ui_spawner_commands.get_async_sender(); + pool.spawn(async move { + println!("opening 1st message box"); + let (m, recv) = build_message_box_command("test 1".to_string(), "hello! i'm a test dialog".to_string(), vec!["ok cool", "so", "editor"], true); + sender.send(m).await.unwrap(); + println!("awaiting click"); + if let Ok(clicked) = recv.recv().await { + println!("the button {} was clicked", clicked); + if clicked == "editor" { + sender.send(build_command(EditorPopup { + title: "editor".to_string(), + data: "hello world".to_string(), + open: true + } + )).await.unwrap(); + + } + else { + let (m, _) = build_message_box_command("test 2".to_string(), format!("you clicked {}", clicked), vec!["ok."], true); + sender.send(m).await.unwrap(); + } + } else { + println!("no button was clicked"); + } + }) + .detach(); + } + + /* + for dir in Direction::iter() { + if ui.add(Button::new(format!("project {:?}", dir))).clicked() { + // get the right layer named 'world'. + let layer = layer_query.iter().filter(|(_, named, _)| named.name == "world").last(); + + }; + + } */ + }); +} diff --git a/app/src/systems/ui/mod.rs b/app/src/systems/ui/mod.rs new file mode 100644 index 0000000..5b70f68 --- /dev/null +++ b/app/src/systems/ui/mod.rs @@ -0,0 +1,5 @@ +pub mod layers; +pub mod properties; +pub mod util; +pub mod syntax_highlighting; +pub mod ui_spawner; \ No newline at end of file diff --git a/app/src/systems/ui/properties.rs b/app/src/systems/ui/properties.rs new file mode 100644 index 0000000..49ab563 --- /dev/null +++ b/app/src/systems/ui/properties.rs @@ -0,0 +1,168 @@ +use core::fmt; +use std::rc::Rc; + +use bevy::{ + prelude::{Camera, Commands, Component, Entity, GlobalTransform, Query, ResMut, Transform}, + render::camera::Projection, +}; +use bevy_egui::EguiContext; +use block_mesh::Voxel; +use common::space::{ + level_tile::LevelTile, + three_dimensional::{ + hash_map_container::VoxelHashMapLayer, + traits::{DefaultVoxel, VoxelContainer}, + }, + two_dimensional::depth_tiles::Direction, +}; +use egui::{mutex::Mutex, Button, CollapsingHeader, Ui}; + +use smooth_bevy_cameras::LookTransform; +use common::strum::IntoEnumIterator; + +use crate::{ + components::{mutable_mesh::MutableMesh, named::Named, property_pane::PropertyPane}, + systems::{layer_spawner::{LayerSpawnerCommand}, generic_command_queue::CommandQueue}, + voxels::layers::traits::VoxelLayer, +}; + +use super::util::{bevy_quat_controls, bevy_vec3_controls}; + +pub fn properties_ui( + commands: Commands, + layer_spawner_commands: ResMut>, + mut egui_context: ResMut, + mut property_pane_query: Query<(&mut PropertyPane, Entity)>, + mut camera_query: Query<(&mut Camera, &mut Projection, &mut LookTransform)>, + mut transform_query: Query<(&mut Transform, &mut GlobalTransform)>, + mut tile_hashmap_layer_query: Query<( + &mut VoxelHashMapLayer, + &mut Named, + &mut MutableMesh, + )>, +) { + // in case we want to send commands from multiple places in the ui + let _commands = Rc::new(Mutex::new(commands)); + let layer_spawner_commands = Rc::new(Mutex::new(layer_spawner_commands)); + + for (mut property_pane, entity) in property_pane_query.iter_mut() { + egui::Window::new(&property_pane.title) + .open(&mut property_pane.is_open) + .min_width(400.0) + .resizable(true) + .vscroll(true) + .show(egui_context.ctx_mut(), |ui| { + voxel_layer_properties( + layer_spawner_commands.clone(), + ui, + entity, + &mut tile_hashmap_layer_query, + ); + if let Ok((_camera, projection, mut look_transform)) = camera_query.get_mut(entity) + { + let _heading = + CollapsingHeader::new("Camera") + .default_open(true) + .show(ui, |ui| { + match projection.into_inner() { + Projection::Perspective(_perspective) => {} + Projection::Orthographic(orthographic) => { + ui.add( + egui::DragValue::new(&mut orthographic.scale) + .speed(1) + .prefix("orthographic scale:"), + ); + } + } + ui.add( + egui::DragValue::new(&mut look_transform.eye.x) + .speed(0.2) + .prefix("eye x:"), + ); + ui.add( + egui::DragValue::new(&mut look_transform.eye.y) + .speed(0.2) + .prefix("eye y:"), + ); + ui.add( + egui::DragValue::new(&mut look_transform.eye.z) + .speed(0.2) + .prefix("eye z:"), + ); + }); + } + if let Ok((mut transform, global_transform)) = transform_query.get_mut(entity) { + let _heading = + CollapsingHeader::new("Transform") + .default_open(true) + .show(ui, |ui| { + bevy_vec3_controls(ui, &mut transform.translation, "pos"); + bevy_quat_controls(ui, &mut transform.rotation, "rot"); + bevy_vec3_controls(ui, &mut transform.scale, "scale"); + }); + let _heading = CollapsingHeader::new("GlobalTransform") + .default_open(true) + .show(ui, |ui| { + let (mut scale, mut rotation, mut translation) = + global_transform.to_scale_rotation_translation(); + bevy_vec3_controls(ui, &mut translation, "pos"); + bevy_quat_controls(ui, &mut rotation, "rot"); + bevy_vec3_controls(ui, &mut scale, "scale"); + }); + } + }); + } +} + +fn voxel_layer_properties( + layer_spawner_commands: Rc>>>, + ui: &mut Ui, + entity: Entity, + layer_query: &mut Query<(&mut TLayer, &mut Named, &mut MutableMesh)>, +) where + TLayer: VoxelLayer + VoxelContainer + Component, + TVoxel: Voxel + DefaultVoxel + Copy + Send + Sync + fmt::Debug, +{ + if let Ok((layer, named, _mutable_mesh)) = layer_query.get_mut(entity) { + let _layer = layer.into_inner(); + CollapsingHeader::new("Generic Voxel Layer") + .default_open(true) + .show(ui, |ui| { + ui.horizontal(|ui| { + for dir in Direction::iter() { + if ui.add(Button::new(format!("project {:?}", dir))).clicked() { + layer_spawner_commands.lock().add( + LayerSpawnerCommand::FromTileProjectedLayer { + name: format!("{} - {:?} proj", named.name, dir), + source_layer: entity, + direction: dir, + }, + ) + }; + } + }); + + ui.separator(); + + if ui.button("Export projected tiles").clicked() { + layer_spawner_commands.lock().add( + LayerSpawnerCommand::ExportProjectedTilesToml { name: named.name.to_string(), source_layer: entity } + ); + } + }); + } +} + +pub fn clean_up_closed_panes( + mut commands: Commands, + mut property_pane_query: Query<(&mut PropertyPane, Entity)>, +) { + for (mut pane, entity) in property_pane_query.iter_mut() { + if pane.closable && !pane.is_open { + commands.entity(entity).remove::(); + } else if !pane.closable && !pane.is_open { + // reopen it. don't allow closing this one + pane.is_open = true; + } + } +} diff --git a/app/src/systems/ui/syntax_highlighting.rs b/app/src/systems/ui/syntax_highlighting.rs new file mode 100644 index 0000000..58c86c4 --- /dev/null +++ b/app/src/systems/ui/syntax_highlighting.rs @@ -0,0 +1,508 @@ +// This is just copied from the egui sample +// because it's not actually packed in a crate... +// https://github.com/emilk/egui/discussions/1628#discussioncomment-2751231 +// source: https://raw.githubusercontent.com/emilk/egui/master/crates/egui_demo_lib/src/syntax_highlighting.rs + +use egui::text::LayoutJob; + +/// View some code with syntax highlighting and selection. +pub fn code_view_ui(ui: &mut egui::Ui, mut code: &str) { + let language = "rs"; + let theme = CodeTheme::from_memory(ui.ctx()); + + let mut layouter = |ui: &egui::Ui, string: &str, _wrap_width: f32| { + let layout_job = highlight(ui.ctx(), &theme, string, language); + // layout_job.wrap.max_width = wrap_width; // no wrapping + ui.fonts().layout_job(layout_job) + }; + + ui.add( + egui::TextEdit::multiline(&mut code) + .font(egui::TextStyle::Monospace) // for cursor height + .code_editor() + .desired_rows(1) + .lock_focus(true) + .layouter(&mut layouter), + ); +} + +/// Memoized Code highlighting +pub fn highlight(ctx: &egui::Context, theme: &CodeTheme, code: &str, language: &str) -> LayoutJob { + impl egui::util::cache::ComputerMut<(&CodeTheme, &str, &str), LayoutJob> for Highlighter { + fn compute(&mut self, (theme, code, lang): (&CodeTheme, &str, &str)) -> LayoutJob { + self.highlight(theme, code, lang) + } + } + + type HighlightCache = egui::util::cache::FrameCache; + + let mut memory = ctx.memory(); + let highlight_cache = memory.caches.cache::(); + highlight_cache.get((theme, code, language)) +} + +// ---------------------------------------------------------------------------- + +#[cfg(not(feature = "syntect"))] +#[derive(Clone, Copy, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] +#[derive(enum_map::Enum)] +enum TokenType { + Comment, + Keyword, + Literal, + StringLiteral, + Punctuation, + Whitespace, +} + +#[cfg(feature = "syntect")] +#[derive(Clone, Copy, Hash, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] +enum SyntectTheme { + Base16EightiesDark, + Base16MochaDark, + Base16OceanDark, + Base16OceanLight, + InspiredGitHub, + SolarizedDark, + SolarizedLight, +} + +#[cfg(feature = "syntect")] +impl SyntectTheme { + fn all() -> impl ExactSizeIterator { + [ + Self::Base16EightiesDark, + Self::Base16MochaDark, + Self::Base16OceanDark, + Self::Base16OceanLight, + Self::InspiredGitHub, + Self::SolarizedDark, + Self::SolarizedLight, + ] + .iter() + .copied() + } + + fn name(&self) -> &'static str { + match self { + Self::Base16EightiesDark => "Base16 Eighties (dark)", + Self::Base16MochaDark => "Base16 Mocha (dark)", + Self::Base16OceanDark => "Base16 Ocean (dark)", + Self::Base16OceanLight => "Base16 Ocean (light)", + Self::InspiredGitHub => "InspiredGitHub (light)", + Self::SolarizedDark => "Solarized (dark)", + Self::SolarizedLight => "Solarized (light)", + } + } + + fn syntect_key_name(&self) -> &'static str { + match self { + Self::Base16EightiesDark => "base16-eighties.dark", + Self::Base16MochaDark => "base16-mocha.dark", + Self::Base16OceanDark => "base16-ocean.dark", + Self::Base16OceanLight => "base16-ocean.light", + Self::InspiredGitHub => "InspiredGitHub", + Self::SolarizedDark => "Solarized (dark)", + Self::SolarizedLight => "Solarized (light)", + } + } + + pub fn is_dark(&self) -> bool { + match self { + Self::Base16EightiesDark + | Self::Base16MochaDark + | Self::Base16OceanDark + | Self::SolarizedDark => true, + + Self::Base16OceanLight | Self::InspiredGitHub | Self::SolarizedLight => false, + } + } +} + +#[derive(Clone, Hash, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] +#[cfg_attr(feature = "serde", serde(default))] +pub struct CodeTheme { + dark_mode: bool, + + #[cfg(feature = "syntect")] + syntect_theme: SyntectTheme, + + #[cfg(not(feature = "syntect"))] + formats: enum_map::EnumMap, +} + +impl Default for CodeTheme { + fn default() -> Self { + Self::dark() + } +} + +impl CodeTheme { + pub fn from_style(style: &egui::Style) -> Self { + if style.visuals.dark_mode { + Self::dark() + } else { + Self::light() + } + } + + pub fn from_memory(ctx: &egui::Context) -> Self { + if ctx.style().visuals.dark_mode { + ctx.data() + .get_persisted(egui::Id::new("dark")) + .unwrap_or_else(CodeTheme::dark) + } else { + ctx.data() + .get_persisted(egui::Id::new("light")) + .unwrap_or_else(CodeTheme::light) + } + } + + pub fn store_in_memory(self, ctx: &egui::Context) { + if self.dark_mode { + ctx.data().insert_persisted(egui::Id::new("dark"), self); + } else { + ctx.data().insert_persisted(egui::Id::new("light"), self); + } + } +} + +#[cfg(feature = "syntect")] +impl CodeTheme { + pub fn dark() -> Self { + Self { + dark_mode: true, + syntect_theme: SyntectTheme::Base16MochaDark, + } + } + + pub fn light() -> Self { + Self { + dark_mode: false, + syntect_theme: SyntectTheme::SolarizedLight, + } + } + + pub fn ui(&mut self, ui: &mut egui::Ui) { + egui::widgets::global_dark_light_mode_buttons(ui); + + for theme in SyntectTheme::all() { + if theme.is_dark() == self.dark_mode { + ui.radio_value(&mut self.syntect_theme, theme, theme.name()); + } + } + } +} + +#[cfg(not(feature = "syntect"))] +impl CodeTheme { + pub fn dark() -> Self { + let font_id = egui::FontId::monospace(12.0); + use egui::{Color32, TextFormat}; + Self { + dark_mode: true, + formats: enum_map::enum_map![ + TokenType::Comment => TextFormat::simple(font_id.clone(), Color32::from_gray(120)), + TokenType::Keyword => TextFormat::simple(font_id.clone(), Color32::from_rgb(255, 100, 100)), + TokenType::Literal => TextFormat::simple(font_id.clone(), Color32::from_rgb(87, 165, 171)), + TokenType::StringLiteral => TextFormat::simple(font_id.clone(), Color32::from_rgb(109, 147, 226)), + TokenType::Punctuation => TextFormat::simple(font_id.clone(), Color32::LIGHT_GRAY), + TokenType::Whitespace => TextFormat::simple(font_id.clone(), Color32::TRANSPARENT), + ], + } + } + + pub fn light() -> Self { + let font_id = egui::FontId::monospace(12.0); + use egui::{Color32, TextFormat}; + Self { + dark_mode: false, + #[cfg(not(feature = "syntect"))] + formats: enum_map::enum_map![ + TokenType::Comment => TextFormat::simple(font_id.clone(), Color32::GRAY), + TokenType::Keyword => TextFormat::simple(font_id.clone(), Color32::from_rgb(235, 0, 0)), + TokenType::Literal => TextFormat::simple(font_id.clone(), Color32::from_rgb(153, 134, 255)), + TokenType::StringLiteral => TextFormat::simple(font_id.clone(), Color32::from_rgb(37, 203, 105)), + TokenType::Punctuation => TextFormat::simple(font_id.clone(), Color32::DARK_GRAY), + TokenType::Whitespace => TextFormat::simple(font_id.clone(), Color32::TRANSPARENT), + ], + } + } + + pub fn ui(&mut self, ui: &mut egui::Ui) { + ui.horizontal_top(|ui| { + let selected_id = egui::Id::null(); + let mut selected_tt: TokenType = *ui + .data() + .get_persisted_mut_or(selected_id, TokenType::Comment); + + ui.vertical(|ui| { + ui.set_width(150.0); + egui::widgets::global_dark_light_mode_buttons(ui); + + ui.add_space(8.0); + ui.separator(); + ui.add_space(8.0); + + ui.scope(|ui| { + for (tt, tt_name) in [ + (TokenType::Comment, "// comment"), + (TokenType::Keyword, "keyword"), + (TokenType::Literal, "literal"), + (TokenType::StringLiteral, "\"string literal\""), + (TokenType::Punctuation, "punctuation ;"), + // (TokenType::Whitespace, "whitespace"), + ] { + let format = &mut self.formats[tt]; + ui.style_mut().override_font_id = Some(format.font_id.clone()); + ui.visuals_mut().override_text_color = Some(format.color); + ui.radio_value(&mut selected_tt, tt, tt_name); + } + }); + + let reset_value = if self.dark_mode { + CodeTheme::dark() + } else { + CodeTheme::light() + }; + + if ui + .add_enabled(*self != reset_value, egui::Button::new("Reset theme")) + .clicked() + { + *self = reset_value; + } + }); + + ui.add_space(16.0); + + ui.data().insert_persisted(selected_id, selected_tt); + + egui::Frame::group(ui.style()) + .inner_margin(egui::Vec2::splat(2.0)) + .show(ui, |ui| { + // ui.group(|ui| { + ui.style_mut().override_text_style = Some(egui::TextStyle::Small); + ui.spacing_mut().slider_width = 128.0; // Controls color picker size + egui::widgets::color_picker::color_picker_color32( + ui, + &mut self.formats[selected_tt].color, + egui::color_picker::Alpha::Opaque, + ); + }); + }); + } +} + +// ---------------------------------------------------------------------------- + +#[cfg(feature = "syntect")] +struct Highlighter { + ps: syntect::parsing::SyntaxSet, + ts: syntect::highlighting::ThemeSet, +} + +#[cfg(feature = "syntect")] +impl Default for Highlighter { + fn default() -> Self { + Self { + ps: syntect::parsing::SyntaxSet::load_defaults_newlines(), + ts: syntect::highlighting::ThemeSet::load_defaults(), + } + } +} + +#[cfg(feature = "syntect")] +impl Highlighter { + #[allow(clippy::unused_self, clippy::unnecessary_wraps)] + fn highlight(&self, theme: &CodeTheme, code: &str, lang: &str) -> LayoutJob { + self.highlight_impl(theme, code, lang).unwrap_or_else(|| { + // Fallback: + LayoutJob::simple( + code.into(), + egui::FontId::monospace(14.0), + if theme.dark_mode { + egui::Color32::LIGHT_GRAY + } else { + egui::Color32::DARK_GRAY + }, + f32::INFINITY, + ) + }) + } + + fn highlight_impl(&self, theme: &CodeTheme, text: &str, language: &str) -> Option { + use syntect::easy::HighlightLines; + use syntect::highlighting::FontStyle; + use syntect::util::LinesWithEndings; + + let syntax = self + .ps + .find_syntax_by_name(language) + .or_else(|| self.ps.find_syntax_by_extension(language))?; + + let theme = theme.syntect_theme.syntect_key_name(); + let mut h = HighlightLines::new(syntax, &self.ts.themes[theme]); + + use egui::text::{LayoutSection, TextFormat}; + + let mut job = LayoutJob { + text: text.into(), + ..Default::default() + }; + + for line in LinesWithEndings::from(text) { + for (style, range) in h.highlight_line(line, &self.ps).ok()? { + let fg = style.foreground; + let text_color = egui::Color32::from_rgb(fg.r, fg.g, fg.b); + let italics = style.font_style.contains(FontStyle::ITALIC); + let underline = style.font_style.contains(FontStyle::ITALIC); + let underline = if underline { + egui::Stroke::new(1.0, text_color) + } else { + egui::Stroke::none() + }; + job.sections.push(LayoutSection { + leading_space: 0.0, + byte_range: as_byte_range(text, range), + format: TextFormat { + font_id: egui::FontId::monospace(14.0), + color: text_color, + italics, + underline, + ..Default::default() + }, + }); + } + } + + Some(job) + } +} + +#[cfg(feature = "syntect")] +fn as_byte_range(whole: &str, range: &str) -> std::ops::Range { + let whole_start = whole.as_ptr() as usize; + let range_start = range.as_ptr() as usize; + assert!(whole_start <= range_start); + assert!(range_start + range.len() <= whole_start + whole.len()); + let offset = range_start - whole_start; + offset..(offset + range.len()) +} + +// ---------------------------------------------------------------------------- + +#[cfg(not(feature = "syntect"))] +#[derive(Default)] +struct Highlighter {} + +#[cfg(not(feature = "syntect"))] +impl Highlighter { + #[allow(clippy::unused_self, clippy::unnecessary_wraps)] + fn highlight(&self, theme: &CodeTheme, mut text: &str, _language: &str) -> LayoutJob { + // Extremely simple syntax highlighter for when we compile without syntect + + let mut job = LayoutJob::default(); + + while !text.is_empty() { + if text.starts_with("//") { + let end = text.find('\n').unwrap_or(text.len()); + job.append(&text[..end], 0.0, theme.formats[TokenType::Comment].clone()); + text = &text[end..]; + } else if text.starts_with('"') { + let end = text[1..] + .find('"') + .map(|i| i + 2) + .or_else(|| text.find('\n')) + .unwrap_or(text.len()); + job.append( + &text[..end], + 0.0, + theme.formats[TokenType::StringLiteral].clone(), + ); + text = &text[end..]; + } else if text.starts_with(|c: char| c.is_ascii_alphanumeric()) { + let end = text[1..] + .find(|c: char| !c.is_ascii_alphanumeric()) + .map_or_else(|| text.len(), |i| i + 1); + let word = &text[..end]; + let tt = if is_keyword(word) { + TokenType::Keyword + } else { + TokenType::Literal + }; + job.append(word, 0.0, theme.formats[tt].clone()); + text = &text[end..]; + } else if text.starts_with(|c: char| c.is_ascii_whitespace()) { + let end = text[1..] + .find(|c: char| !c.is_ascii_whitespace()) + .map_or_else(|| text.len(), |i| i + 1); + job.append( + &text[..end], + 0.0, + theme.formats[TokenType::Whitespace].clone(), + ); + text = &text[end..]; + } else { + let mut it = text.char_indices(); + it.next(); + let end = it.next().map_or(text.len(), |(idx, _chr)| idx); + job.append( + &text[..end], + 0.0, + theme.formats[TokenType::Punctuation].clone(), + ); + text = &text[end..]; + } + } + + job + } +} + +#[cfg(not(feature = "syntect"))] +fn is_keyword(word: &str) -> bool { + matches!( + word, + "as" | "async" + | "await" + | "break" + | "const" + | "continue" + | "crate" + | "dyn" + | "else" + | "enum" + | "extern" + | "false" + | "fn" + | "for" + | "if" + | "impl" + | "in" + | "let" + | "loop" + | "match" + | "mod" + | "move" + | "mut" + | "pub" + | "ref" + | "return" + | "self" + | "Self" + | "static" + | "struct" + | "super" + | "trait" + | "true" + | "type" + | "unsafe" + | "use" + | "where" + | "while" + ) +} diff --git a/app/src/systems/ui/ui_spawner.rs b/app/src/systems/ui/ui_spawner.rs new file mode 100644 index 0000000..dd0480c --- /dev/null +++ b/app/src/systems/ui/ui_spawner.rs @@ -0,0 +1,141 @@ +use bevy_egui::EguiContext; +use common::space::{ + level_tile::LevelTile, three_dimensional::hash_map_container::VoxelHashMapLayer, + two_dimensional::depth_tiles::DepthTileContainer, +}; +use egui::Ui; +use std::{collections::VecDeque, fmt::Display, future::Future}; + +use bevy::prelude::*; + +use super::{super::generic_command_queue::CommandQueue, syntax_highlighting::{self, CodeTheme}}; + +pub fn ui_spawner( + mut spawner_commands: ResMut>, + mut state: ResMut, + mut egui_context: ResMut, +) { + for command in spawner_commands.get_commands() { + match command { + UiSpawnerCommand::CreateElement(e) => { + state.elements.push(e) + }, + } + } + + // remove elements that aren't open + state.elements.retain(|e| e.is_open()); + + for element in &mut state.elements { + element.display(egui_context.ctx_mut()); + } +} + +pub enum UiSpawnerCommand { + CreateElement(Box) +} + +pub struct EditorPopup { + pub title: String, + pub data: String, + pub open: bool, +} + +pub trait SpawnedUiElement { + fn display(&mut self, egui_context: &egui::Context); + fn is_open(&self) -> bool; +} +pub struct MessageBox { + title: String, + body: String, + buttons: Vec, + onclick_sender: async_channel::Sender, + open: bool, + dismiss_on_click: bool, +} + +impl SpawnedUiElement for MessageBox where T: Display + Clone { + fn display(&mut self, egui_context: &egui::Context) { + let mut should_close = false; + egui::Window::new(&self.title) + .open(&mut self.open) + .show(egui_context, |ui| { + ui.label(&self.body); + ui.horizontal(|ui| { + for button in self.buttons.iter() { + if ui.button(button.to_string()).clicked() { + self.onclick_sender.try_send(button.clone()); + if self.dismiss_on_click { + self.onclick_sender.close(); + should_close = true; + } + } + } + }); + }); + + if should_close { + self.open = false; + } + } + + fn is_open(&self) -> bool { + self.open + } +} + +impl SpawnedUiElement for EditorPopup { + fn display(&mut self, egui_context: &egui::Context) { + let mut layouter = |ui: &egui::Ui, string: &str, wrap_width: f32| { + let mut layout_job = + syntax_highlighting::highlight(ui.ctx(), &CodeTheme::dark(), string, "toml"); + layout_job.wrap.max_width = wrap_width; + ui.fonts().layout_job(layout_job) + }; + + egui::Window::new(&self.title) + .open(&mut self.open) + .show(egui_context, |ui|{ + egui::ScrollArea::vertical().show(ui, |ui|{ + ui.add(egui::TextEdit::multiline(&mut self.data) + .font(egui::TextStyle::Monospace) + .code_editor() + .desired_rows(20) + .lock_focus(true) + .desired_width(400.0) + .layouter(&mut layouter) + ) + + }); + }); + } + + fn is_open(&self) -> bool { + self.open + } +} + +pub fn build_message_box_command (title: String, body: String, buttons: Vec, dismiss_on_click: bool) -> (UiSpawnerCommand, async_channel::Receiver) +where TButton: Display + Send + Sync + Clone + 'static { + let (onclick_sender, onclick_recv) = async_channel::bounded(1); + let mb = MessageBox{ + title, + body, + buttons: buttons, + onclick_sender, + open: true, + dismiss_on_click + }; + + (build_command(mb), onclick_recv) +} + +pub fn build_command (element: T) -> UiSpawnerCommand +where T: SpawnedUiElement + Send + Sync + 'static { + UiSpawnerCommand::CreateElement(Box::new(element)) +} + +#[derive(Default)] +pub struct UiSpawnerState { + elements: Vec> +} \ No newline at end of file diff --git a/app/src/systems/ui/util.rs b/app/src/systems/ui/util.rs new file mode 100644 index 0000000..a1bd266 --- /dev/null +++ b/app/src/systems/ui/util.rs @@ -0,0 +1,20 @@ +use egui::Ui; + +pub fn bevy_vec3_controls(ui: &mut Ui, vec: &mut bevy::prelude::Vec3, label: &str) { + ui.horizontal(|ui| { + ui.label(label); + ui.add(egui::DragValue::new(&mut vec.x).speed(0.2).prefix("x:")); + ui.add(egui::DragValue::new(&mut vec.y).speed(0.2).prefix("y:")); + ui.add(egui::DragValue::new(&mut vec.z).speed(0.2).prefix("z:")); + }); +} + +pub fn bevy_quat_controls(ui: &mut Ui, quat: &mut bevy::prelude::Quat, label: &str) { + ui.horizontal(|ui| { + ui.label(label); + ui.add(egui::DragValue::new(&mut quat.x).speed(0.2).prefix("x:")); + ui.add(egui::DragValue::new(&mut quat.y).speed(0.2).prefix("y:")); + ui.add(egui::DragValue::new(&mut quat.z).speed(0.2).prefix("z:")); + ui.add(egui::DragValue::new(&mut quat.w).speed(0.2).prefix("w:")); + }); +} diff --git a/app/src/voxels/bool_voxel.rs b/app/src/voxels/bool_voxel.rs new file mode 100644 index 0000000..ddeed0a --- /dev/null +++ b/app/src/voxels/bool_voxel.rs @@ -0,0 +1,23 @@ +use block_mesh::Voxel; +use common::space::three_dimensional::traits::{DefaultVoxel, DefaultVoxelKinds}; + +#[derive(Copy, Clone)] +pub struct BoolVoxel(pub bool); + +impl Voxel for BoolVoxel { + fn get_visibility(&self) -> block_mesh::VoxelVisibility { + match self.0 { + true => block_mesh::VoxelVisibility::Opaque, + false => block_mesh::VoxelVisibility::Empty, + } + } +} + +impl DefaultVoxel for BoolVoxel { + fn get_default(kind: DefaultVoxelKinds) -> Self { + match kind { + DefaultVoxelKinds::None => BoolVoxel(false), + DefaultVoxelKinds::Solid => BoolVoxel(true), + } + } +} diff --git a/app/src/voxels/layers/mod.rs b/app/src/voxels/layers/mod.rs new file mode 100644 index 0000000..b785794 --- /dev/null +++ b/app/src/voxels/layers/mod.rs @@ -0,0 +1,39 @@ +use bevy::prelude::*; +use block_mesh::Voxel; +use common::space::three_dimensional::traits::{DefaultVoxel, VoxelContainer}; + +use crate::components::{mutable_mesh::MutableMesh, named::Named}; + +use self::traits::VoxelLayer; + +pub mod traits; + +pub fn container_to_layer_component<'a, TVoxel, TContainer>( + name: String, + container: TContainer, + material: StandardMaterial, + meshes: &mut Assets, + commands: &mut Commands, + materials: &mut Assets, +) -> Entity +where + TVoxel: Voxel + DefaultVoxel + Copy, + TContainer: VoxelLayer + VoxelContainer + Component, +{ + let mesh = container.generate_simple_mesh(meshes); + + commands + .spawn_bundle(PbrBundle { + mesh, + material: materials.add(material), + transform: Transform::identity(), + ..Default::default() + }) + .insert(container) + .insert(MutableMesh { + current: true, + visible: true, + }) + .insert(Named { name }) + .id() +} diff --git a/app/src/voxels/layers/traits.rs b/app/src/voxels/layers/traits.rs new file mode 100644 index 0000000..9513739 --- /dev/null +++ b/app/src/voxels/layers/traits.rs @@ -0,0 +1,89 @@ +use bevy::{ + prelude::*, + render::{ + mesh::{Indices, VertexAttributeValues}, + render_resource::PrimitiveTopology, + }, +}; +use block_mesh::{ + ilattice::prelude::Vec3A, + ndshape::{ConstShape, ConstShape3u32}, + visible_block_faces, UnitQuadBuffer, Voxel, RIGHT_HANDED_Y_UP_CONFIG, +}; +use common::space::three_dimensional::traits::{DefaultVoxel, DefaultVoxelKinds, VoxelContainer}; + +use crate::voxels::mesh::into_domain; + +/// A renderable collection of voxels that have 3-dimensional coordinates, and can be displayed as a single mesh. +pub trait VoxelLayer +where + TVoxel: Voxel + DefaultVoxel + Copy, +{ + fn get_voxel_or_default_at_vec<'a>(&self, pos: Vec3A) -> TVoxel; + fn generate_simple_mesh(&self, meshes: &mut Assets) -> Handle; +} + +impl VoxelLayer for TContainer +where + TVoxel: Voxel + DefaultVoxel + Copy, + TContainer: VoxelContainer, +{ + fn get_voxel_or_default_at_vec<'a>(&self, position: Vec3A) -> TVoxel { + match self.get_voxel_at_pos(position.into()) { + Some(v) => v, + None => DefaultVoxel::get_default(DefaultVoxelKinds::None), + } + } + + fn generate_simple_mesh(&self, meshes: &mut Assets) -> Handle { + type SampleShape = ConstShape3u32<34, 34, 34>; + + let mut samples: [TVoxel; SampleShape::SIZE as usize] = + [DefaultVoxel::get_default(DefaultVoxelKinds::None); SampleShape::SIZE as usize]; + for i in 0u32..(SampleShape::SIZE) { + let p = into_domain(32, SampleShape::delinearize(i)); + samples[i as usize] = self.get_voxel_or_default_at_vec(p); + } + + let faces = RIGHT_HANDED_Y_UP_CONFIG.faces; + + let mut buffer = UnitQuadBuffer::new(); + visible_block_faces( + &samples, + &SampleShape {}, + [0; 3], + [33; 3], + &faces, + &mut buffer, + ); + let num_indices = buffer.num_quads() * 6; + let num_vertices = buffer.num_quads() * 4; + let mut indices = Vec::with_capacity(num_indices); + let mut positions = Vec::with_capacity(num_vertices); + let mut normals = Vec::with_capacity(num_vertices); + for (group, face) in buffer.groups.into_iter().zip(faces.into_iter()) { + for quad in group.into_iter() { + indices.extend_from_slice(&face.quad_mesh_indices(positions.len() as u32)); + positions.extend_from_slice(&face.quad_mesh_positions(&quad.into(), 1.0)); + normals.extend_from_slice(&face.quad_mesh_normals()); + } + } + + let mut render_mesh = Mesh::new(PrimitiveTopology::TriangleList); + render_mesh.insert_attribute( + Mesh::ATTRIBUTE_POSITION, + VertexAttributeValues::Float32x3(positions), + ); + render_mesh.insert_attribute( + Mesh::ATTRIBUTE_NORMAL, + VertexAttributeValues::Float32x3(normals), + ); + render_mesh.insert_attribute( + Mesh::ATTRIBUTE_UV_0, + VertexAttributeValues::Float32x2(vec![[0.0; 2]; num_vertices]), + ); + render_mesh.set_indices(Some(Indices::U32(indices.clone()))); + + meshes.add(render_mesh) + } +} diff --git a/app/src/voxels/mesh.rs b/app/src/voxels/mesh.rs new file mode 100644 index 0000000..2c36618 --- /dev/null +++ b/app/src/voxels/mesh.rs @@ -0,0 +1,10 @@ +use block_mesh::ilattice::glam; +use glam::Vec3A; + +pub fn into_domain(_array_dim: u32, [x, y, z]: [u32; 3]) -> Vec3A { + Vec3A::new(x as f32, y as f32, z as f32) - 1.0 + /* + let result = (2.0 / array_dim as f32) * Vec3A::new(x as f32, y as f32, z as f32) - 1.0; + println!("into_domain {},{},{} -> {}", x, y, z, result); + result*/ +} diff --git a/app/src/voxels/mod.rs b/app/src/voxels/mod.rs new file mode 100644 index 0000000..d53bdc1 --- /dev/null +++ b/app/src/voxels/mod.rs @@ -0,0 +1,3 @@ +pub mod bool_voxel; +pub mod layers; +pub mod mesh; diff --git a/app/wasm-build.sh b/app/wasm-build.sh new file mode 100755 index 0000000..e348fc2 --- /dev/null +++ b/app/wasm-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +cargo build --release --target wasm32-unknown-unknown +wasm-bindgen --out-dir ./web_out --target web ../target/wasm32-unknown-unknown/release/voxel-level-editor.wasm + diff --git a/common/Cargo.toml b/common/Cargo.toml new file mode 100644 index 0000000..f21ec2b --- /dev/null +++ b/common/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "common" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +block-mesh = { version = "0.2.0", optional = true } +ron = { version = "0.8", optional = true } +serde = { version = "1.0", optional = true } +strum = { version = "0.24", optional = true } +strum_macros = { version = "0.24", optional = true } +bevy = { version = "0.8", default-features = false, optional = true } +dot_vox = { version = "4.1.0", optional = true } +thiserror = { version = "1.0", optional = true } + + +[features] +# there are probably some invalid and untested combinations of these! +two_dimensional = [] +three_dimensional = [ "block-mesh", "two_dimensional" ] +serde = ["dep:serde", "dep:ron", "two_dimensional", "three_dimensional", "std"] +bevy = ["dep:bevy"] +import_dot_vox = ["dep:dot_vox"] +block-mesh = ["dep:block-mesh"] +std = ["dep:strum", "dep:strum_macros", "dep:thiserror"] +fixed_arrays_instead_of_vecs = [] \ No newline at end of file diff --git a/common/src/lib.rs b/common/src/lib.rs new file mode 100644 index 0000000..b6f3075 --- /dev/null +++ b/common/src/lib.rs @@ -0,0 +1,29 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +pub mod space; +#[cfg(feature = "serde")] +pub use ron; +#[cfg(feature = "std")] +pub use strum; +#[cfg(feature = "std")] +pub use strum_macros; + +pub mod gba_prelude { + pub use crate::space::level_gba::*; + pub use crate::space::level_tile::{ + LevelTile, + LevelTile::*, // the generated code doesn't namespace the enum variants + Climbable, + }; + pub use crate::space::two_dimensional::depth_tiles::{ + DepthTile, + Direction + }; +} + +#[cfg(test)] +mod tests { + + #[test] + fn it_works() {} +} diff --git a/common/src/space/level_gba.rs b/common/src/space/level_gba.rs new file mode 100644 index 0000000..8bb8645 --- /dev/null +++ b/common/src/space/level_gba.rs @@ -0,0 +1,12 @@ +use crate::gba_prelude::DepthTile; +use crate::gba_prelude::Direction; +use crate::gba_prelude::LevelTile; + +pub struct ImportedMap { + pub tiles_north: &'static [DepthTile], + pub tiles_south: &'static [DepthTile], + pub tiles_east: &'static [DepthTile], + pub tiles_west: &'static [DepthTile], + pub player_start: [i32; 3], + pub start_direction: Direction, +} \ No newline at end of file diff --git a/common/src/space/level_serde.rs b/common/src/space/level_serde.rs new file mode 100644 index 0000000..15f3f5e --- /dev/null +++ b/common/src/space/level_serde.rs @@ -0,0 +1,43 @@ +use serde::{Serialize, Deserialize}; +use thiserror::Error; +use crate::space::level_tile::LevelTile; +use crate::space::two_dimensional::depth_tiles::Direction; +use super::two_dimensional::depth_tiles::DepthTile; + +#[cfg(feature = "three_dimensional")] +use super::three_dimensional::vec3generic::Vec3Generic; + +#[cfg(all(feature = "three_dimensional"))] +pub fn create_export_map(voxels: &mut super::three_dimensional::hash_map_container::VoxelHashMapLayer) -> Result { + + + let project_voxels_dir = |d| super::three_dimensional::project_to_2d::create_tilemap(voxels, d, 32, 32, 32); + + Ok(ExportedMap { + tiles_north: project_voxels_dir(Direction::North), + tiles_south: project_voxels_dir(Direction::South), + tiles_east: project_voxels_dir(Direction::East), + tiles_west: project_voxels_dir(Direction::West), + player_start: Vec3Generic { x: 0, y: 0, z: 0 }, + start_direction: Direction::North, + }) +} + +#[cfg(all(feature = "serde", feature = "three_dimensional"))] +#[derive(Debug, Error)] +pub enum ExportError { + #[error("serialization failed")] + SerializationError(#[from] ron::Error) +} + +#[derive(Debug)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[cfg(feature = "std")] +pub struct ExportedMap { + pub tiles_north: Vec>, + pub tiles_south: Vec>, + pub tiles_east: Vec>, + pub tiles_west: Vec>, + pub player_start: Vec3Generic, + pub start_direction: Direction, +} \ No newline at end of file diff --git a/common/src/space/level_tile.rs b/common/src/space/level_tile.rs new file mode 100644 index 0000000..53d2aca --- /dev/null +++ b/common/src/space/level_tile.rs @@ -0,0 +1,77 @@ +#[cfg(not(feature = "std"))] +use core::default::Default; +#[cfg(feature = "serde")] +use serde::{Serialize, Deserialize}; + +#[derive(Copy, Clone, Debug, Default)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub enum LevelTile { + #[default] + None, + Solid(Climbable), + SemisolidPlatform, + Door(DoorInfo), + EntitySpawn(EntityInfo), +} + +#[derive(Copy, Clone, Default, Debug)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct Climbable { + pub front: bool, + pub left: bool, + pub right: bool, +} // TODO: modular_bitfield? + +#[derive(Copy, Clone, Default, Debug)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct DoorInfo { + id: u8, +} + +#[derive(Copy, Clone, Default, Debug)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct EntityInfo { + id: u8, +} + +#[cfg(feature = "block-mesh")] +pub mod block_mesh_impl { + use block_mesh::{Voxel, VoxelVisibility}; + + use super::LevelTile; + + impl Voxel for LevelTile { + fn get_visibility(&self) -> VoxelVisibility { + get_visibility(self) + } + } + + fn get_visibility(v: &LevelTile) -> VoxelVisibility { + match v { + LevelTile::None => VoxelVisibility::Empty, + LevelTile::Solid(_) => VoxelVisibility::Opaque, + LevelTile::SemisolidPlatform => VoxelVisibility::Translucent, + LevelTile::Door(_) => VoxelVisibility::Translucent, + LevelTile::EntitySpawn(_) => VoxelVisibility::Translucent, + } + } +} + +pub const NULL_TILE: LevelTile = LevelTile::None; + +const DEFAULT_NONE: LevelTile = LevelTile::None; +const DEFAULT_SOLID: LevelTile = LevelTile::Solid(Climbable { + front: false, + left: false, + right: false, +}); + +#[cfg(feature = "three_dimensional")] +impl super::three_dimensional::traits::DefaultVoxel for LevelTile { + fn get_default(kind: super::three_dimensional::traits::DefaultVoxelKinds) -> Self { + match kind { + super::three_dimensional::traits::DefaultVoxelKinds::None => DEFAULT_NONE, + super::three_dimensional::traits::DefaultVoxelKinds::Solid => DEFAULT_SOLID, + } + } +} diff --git a/common/src/space/mod.rs b/common/src/space/mod.rs new file mode 100644 index 0000000..9bd2b30 --- /dev/null +++ b/common/src/space/mod.rs @@ -0,0 +1,10 @@ +#[cfg(feature = "three_dimensional")] +pub mod three_dimensional; +#[cfg(feature = "two_dimensional")] +pub mod two_dimensional; + +#[cfg(feature = "serde")] +pub mod level_serde; + +pub mod level_tile; +pub mod level_gba; diff --git a/common/src/space/three_dimensional/hash_map_container.rs b/common/src/space/three_dimensional/hash_map_container.rs new file mode 100644 index 0000000..d3e433b --- /dev/null +++ b/common/src/space/three_dimensional/hash_map_container.rs @@ -0,0 +1,66 @@ +use std::collections::HashMap; + +use crate::space::three_dimensional::{ + traits::{DefaultVoxelKinds, VoxelContainer}, + vec3generic::Vec3Generic, +}; +use block_mesh::Voxel; +#[cfg(feature = "import_dot_vox")] +use dot_vox::DotVoxData; + +use super::traits::DefaultVoxel; + +#[derive(Debug, Default, Clone)] +#[cfg_attr(feature = "bevy", derive(bevy::prelude::Component))] +pub struct VoxelHashMapLayer { + pub voxels: HashMap, TVoxel>, + pub size: Vec3Generic, +} + +impl VoxelContainer for VoxelHashMapLayer +where + TVoxel: Voxel + Copy, +{ + fn get_voxel_at_pos<'a>(&self, pos: Vec3Generic) -> Option { + self.voxels.get(&pos).copied() + } +} + +#[cfg(feature = "import_dot_vox")] +pub fn import_from_bytes(data: &[u8]) -> Result, &'static str> +where + T: Voxel + DefaultVoxel + Default, +{ + let v = dot_vox::load_bytes(data)?; + Ok(v.into()) +} + +#[cfg(feature = "import_dot_vox")] +impl From for VoxelHashMapLayer +where + T: Voxel + DefaultVoxel + Default, +{ + fn from(d: DotVoxData) -> Self { + let mut w: VoxelHashMapLayer = Default::default(); + + for model in d.models { + for voxel in model.voxels { + w.voxels.insert( + Vec3Generic { + x: voxel.x as i32, + y: voxel.z as i32, + z: voxel.y as i32, + }, + DefaultVoxel::get_default(DefaultVoxelKinds::Solid), + ); + } + + w.size.x = w.size.x.max(model.size.x as i32); + w.size.y = w.size.y.max(model.size.z as i32); + w.size.z = w.size.z.max(model.size.y as i32); + } + println!("loaded world size {:?}", w.size); + + w + } +} diff --git a/common/src/space/three_dimensional/mod.rs b/common/src/space/three_dimensional/mod.rs new file mode 100644 index 0000000..9dfb91b --- /dev/null +++ b/common/src/space/three_dimensional/mod.rs @@ -0,0 +1,4 @@ +pub mod hash_map_container; +pub mod project_to_2d; +pub mod traits; +pub mod vec3generic; diff --git a/common/src/space/three_dimensional/project_to_2d.rs b/common/src/space/three_dimensional/project_to_2d.rs new file mode 100644 index 0000000..5948c9c --- /dev/null +++ b/common/src/space/three_dimensional/project_to_2d.rs @@ -0,0 +1,139 @@ +use block_mesh::Voxel; + +use crate::space::two_dimensional::depth_tiles::{DepthTile, Direction}; + +use super::{traits::VoxelContainer, vec3generic::Vec3Generic}; + +#[derive(Debug)] +struct VoxelCursor { + position: Vec3Generic, + finished: bool, + found: Option, +} + +impl VoxelCursor { + pub fn new(position: Vec3Generic) -> VoxelCursor { + VoxelCursor:: { + position, + finished: false, + found: None, + } + } +} + +pub fn create_tilemap( + container: &TContainer, + direction: Direction, + width: u32, + height: u32, + search_depth: u32, +) -> Vec> +where + TContainer: VoxelContainer, + TVoxel: Voxel + Copy + Default, +{ + let step = match direction { + Direction::North => Vec3Generic:: { x: 0, y: 0, z: 1 }, + Direction::South => Vec3Generic:: { x: 0, y: 0, z: -1 }, + Direction::East => Vec3Generic:: { x: 1, y: 0, z: 0 }, + Direction::West => Vec3Generic:: { x: -1, y: 0, z: 0 }, + }; + + // create a bunch of cursors + let mut cursors: Vec> = vec![]; + for x in 0..width as i32 { + for y in 0..height as i32 { + cursors.push(match direction { + Direction::North => VoxelCursor::new(Vec3Generic:: { x, y, z: 0 }), + Direction::South => VoxelCursor::new(Vec3Generic:: { + x, + y, + z: search_depth as i32 - 1, + }), + Direction::East => VoxelCursor::new(Vec3Generic:: { x: 0, y, z: x }), + Direction::West => VoxelCursor::new(Vec3Generic:: { + x: search_depth as i32 - 1, + y, + z: x, + }), + }); + } + } + + // move them each until they bump into something. + // spec: https://www.youtube.com/watch?v=wwvLlEtxX3o + let mut num_finished_cursors = 0; + while num_finished_cursors < cursors.len() - 1 { + println!( + "num finished cursors: {}/{}", + num_finished_cursors, + cursors.len() + ); + for cursor in &mut cursors { + if cursor.finished { + continue; + } + + // is there a visible voxel at the current location? if so, we're done. + match container.get_voxel_at_pos(cursor.position) { + Some(v) => match v.get_visibility() { + block_mesh::VoxelVisibility::Opaque + | block_mesh::VoxelVisibility::Translucent => { + cursor.found = Some(v); + cursor.finished = true; + num_finished_cursors += 1; + continue; + } + block_mesh::VoxelVisibility::Empty => (), + }, + None => (), + }; + + // step the cursor + cursor.position = cursor.position + step; + + // test if the cursor is out of bounds (any dimension is outside of 0 <= n < search_depth) + for n in [&cursor.position.x, &cursor.position.y, &cursor.position.z] { + if *n < 0 || *n > search_depth as i32 { + cursor.finished = true; + num_finished_cursors += 1; + } + } + } + } + println!("all cursors finished."); + + // todo: do we need to normalize the depth relative to camera? i.e. closest layer is depth 0 + // even if it was on the backside + + let mut tiles: Vec> = vec![]; + for cursor in cursors { + match cursor.found { + Some(v) => { + // determine the x, y, and depth based on the direction and the voxel's vector + let (x, y, depth) = match direction { + Direction::North => (cursor.position.x, cursor.position.y, cursor.position.z), + Direction::South => ( + cursor.position.x, + cursor.position.y, + cursor.position.z, + ), // flip x and z + Direction::East => (cursor.position.z, cursor.position.y, cursor.position.x), + Direction::West => ( + cursor.position.z, + cursor.position.y, + cursor.position.x, + ), + }; + tiles.push(DepthTile:: { + x, + y, + depth, + data: v, + }); + } + None => (), + } + } + tiles +} diff --git a/common/src/space/three_dimensional/traits.rs b/common/src/space/three_dimensional/traits.rs new file mode 100644 index 0000000..837b393 --- /dev/null +++ b/common/src/space/three_dimensional/traits.rs @@ -0,0 +1,19 @@ +use super::vec3generic::Vec3Generic; + +/// A container for voxels that have 3-dimensional integer coordinates. +//#[cfg(feature = "block-mesh")] +pub trait VoxelContainer +where + TVoxel: Copy, +{ + fn get_voxel_at_pos(&self, pos: Vec3Generic) -> Option; +} + +pub trait DefaultVoxel { + fn get_default(kind: DefaultVoxelKinds) -> Self; +} + +pub enum DefaultVoxelKinds { + None, + Solid, +} diff --git a/common/src/space/three_dimensional/vec3generic.rs b/common/src/space/three_dimensional/vec3generic.rs new file mode 100644 index 0000000..18f8edf --- /dev/null +++ b/common/src/space/three_dimensional/vec3generic.rs @@ -0,0 +1,41 @@ +#[cfg(feature = "serde")] +use serde::{Serialize, Deserialize}; +use std::ops::Add; + +use block_mesh::ilattice::prelude::Vec3A; + +#[derive(Eq, PartialEq, Hash, Debug, Default, Copy, Clone)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct Vec3Generic { + pub x: T, + pub y: T, + pub z: T, +} + +impl From for Vec3Generic { + fn from(v: Vec3A) -> Self { + Self { + x: (v.x.round()) as i32, + y: v.y.round() as i32, + z: v.z.round() as i32, + } + } +} + +impl Into<[u32; 3]> for Vec3Generic { + fn into(self) -> [u32; 3] { + [self.x as u32, self.y as u32, self.z as u32] + } +} + +impl Add for Vec3Generic { + type Output = Self; + + fn add(self, rhs: Self) -> Self::Output { + Self::Output { + x: self.x + rhs.x, + y: self.y + rhs.y, + z: self.z + rhs.z, + } + } +} diff --git a/common/src/space/two_dimensional/depth_tiles.rs b/common/src/space/two_dimensional/depth_tiles.rs new file mode 100644 index 0000000..c0a2bc1 --- /dev/null +++ b/common/src/space/two_dimensional/depth_tiles.rs @@ -0,0 +1,57 @@ +#[cfg(feature = "serde")] +use serde::{Serialize, Deserialize}; + +#[cfg(feature = "std")] +use strum_macros::EnumIter; + +#[cfg(feature = "three_dimensional")] +use crate::space::three_dimensional::{traits::VoxelContainer, vec3generic::Vec3Generic}; + +#[derive(Debug, PartialEq, Eq, Clone, Copy)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[cfg_attr(feature = "std", derive(EnumIter))] +pub enum Direction { + North, + South, + East, + West, +} + +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Debug)] +pub struct DepthTile +where + T: Default, +{ + pub data: T, + pub x: i32, + pub y: i32, + pub depth: i32, +} + +#[cfg(feature = "std")] +#[derive(Default)] +#[cfg_attr(feature = "bevy", derive(bevy::prelude::Component))] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct DepthTileContainer +where + T: Default, +{ + pub tiles: Vec>, +} + +#[cfg(all(feature = "block-mesh", feature = "three_dimensional"))] +/// Implementation that projects depth tiles back into voxels from the north face, mostly for visualization in the editor +impl VoxelContainer for DepthTileContainer +where + T: Copy + Default, +{ + fn get_voxel_at_pos(&self, pos: Vec3Generic) -> Option { + for tile in &self.tiles { + if tile.x == pos.x && tile.y == pos.y && tile.depth == pos.z { + return Some(tile.data); + } + } + None + } +} diff --git a/common/src/space/two_dimensional/mod.rs b/common/src/space/two_dimensional/mod.rs new file mode 100644 index 0000000..2a3abb5 --- /dev/null +++ b/common/src/space/two_dimensional/mod.rs @@ -0,0 +1 @@ +pub mod depth_tiles; diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..af074bf --- /dev/null +++ b/flake.lock @@ -0,0 +1,93 @@ +{ + "nodes": { + "nixGL": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1656321324, + "narHash": "sha256-Sz0uWspqvshGFbT+XmRVVayuW514rNNLLvrre8jBLLU=", + "owner": "guibou", + "repo": "nixGL", + "rev": "047a34b2f087e2e3f93d43df8e67ada40bf70e5c", + "type": "github" + }, + "original": { + "owner": "guibou", + "repo": "nixGL", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1659868656, + "narHash": "sha256-LINDS957FYzOb412t/Zha44LQqGniMpUIUz4Pi+fvSs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "80fc83ad314fe701766ee66ac8286307d65b39e3", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs-mozilla": { + "flake": false, + "locked": { + "lastModified": 1657214286, + "narHash": "sha256-rO/4oymKXU09wG2bcTt4uthPCp1XsBZjxuCJo3yVXNs=", + "owner": "mozilla", + "repo": "nixpkgs-mozilla", + "rev": "0508a66e28a5792fdfb126bbf4dec1029c2509e0", + "type": "github" + }, + "original": { + "owner": "mozilla", + "repo": "nixpkgs-mozilla", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1659868656, + "narHash": "sha256-LINDS957FYzOb412t/Zha44LQqGniMpUIUz4Pi+fvSs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "80fc83ad314fe701766ee66ac8286307d65b39e3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixGL": "nixGL", + "nixpkgs": "nixpkgs_2", + "nixpkgs-mozilla": "nixpkgs-mozilla", + "utils": "utils" + } + }, + "utils": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..2b77fd5 --- /dev/null +++ b/flake.nix @@ -0,0 +1,99 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + utils.url = "github:numtide/flake-utils"; + nixGL.url = "github:guibou/nixGL"; + + nixpkgs-mozilla = { url = "github:mozilla/nixpkgs-mozilla"; }; + }; + + outputs = { self, nixpkgs, utils, nixpkgs-mozilla, nixGL }: + utils.lib.eachDefaultSystem (system: + let + pkgs = (import nixpkgs) { + inherit system; + + overlays = [ (import nixpkgs-mozilla) nixGL.overlay ]; + }; + + toolchain = (pkgs.rustChannelOf { + # sadly, https://github.com/mozilla/nixpkgs-mozilla/issues/287 + date = "2022-08-07"; + channel = "nightly"; + sha256 = "sha256-cXABXvQuh4dXNLtFMvRuB7YBi9LXRerA0u/u/TUm4rQ="; + }).rust.override { + extensions = [ + "rust-src" + "rust-analyzer-preview" + "clippy-preview" + "rustfmt-preview" + ]; + targets = [ "x86_64-unknown-linux-gnu" "wasm32-unknown-unknown" ]; + }; + + nixGlWrappedMgbaQt = pkgs.writeShellScriptBin "mgba-qt" '' + # call mgba-qt with nixGL + exec ${pkgs.nixgl.nixGLIntel}/bin/nixGLIntel ${pkgs.mgba}/bin/mgba-qt $@ + ''; + + # this doesn't seem to work + softwareVulkan = pkgs.writeShellScriptBin "hell" '' + export LIBGL_ALWAYS_SOFTWARE=1 + export __GLX_VENDOR_LIBRARY_NAME=mesa + export VK_ICD_FILENAMES=${pkgs.mesa.drivers}/share/vulkan/icd.d/lvp_icd.x86_64.json + exec ${pkgs.nixgl.nixVulkanIntel}/bin/nixVulkanIntel $@ + ''; + + baseBuildInputs = [ toolchain pkgs.gcc-arm-embedded ]; + levelEditorDeps = with pkgs; { + # thanks, https://github.com/bevyengine/bevy/blob/main/docs/linux_dependencies.md#nixos ! + nativeBuildInputs = [ pkgconfig llvmPackages.bintools vulkan-loader nixgl.nixVulkanIntel vulkan-tools + openssl # deps for building wasm. we have to cargo install -f wasm-bindgen-cli, the nixpkg is out of sync + ]; + buildInputs = [ # wip and not minimal. was trying to get stuff working on my desktop and didn't finish + udev alsaLib + xlibsWrapper xorg.libXcursor xorg.libXrandr xorg.libXi # To use x11 feature + libxkbcommon wayland # To use wayland feature + gdk-pixbuf atk pango cairo gtk3-x11 # additional dependencies for voxel-level-editor + ]; + hook = '' + export PATH=$PATH:$HOME/.cargo/bin + ''; + }; + + ensureSubmodules = '' + # quick check of whether submodules are initialized, if the working directory is the root of the repo + if [[ -f "flake.nix" && -f "Cargo.toml" && ! -f "external/agb/README.md" ]]; then + echo "fetching submodules" + git submodule init + git submodule update + fi + ''; + in { + devShell = with pkgs; + mkShell { + nativeBuildInputs = baseBuildInputs ++ [ nixGlWrappedMgbaQt ]; + shellHook = '' + '' + ensureSubmodules; + }; + + devShells.level-editor = with pkgs; # wip use at your own peril + mkShell rec { + nativeBuildInputs = baseBuildInputs ++ levelEditorDeps.nativeBuildInputs ++ [ nixGlWrappedMgbaQt softwareVulkan ]; + buildInputs = levelEditorDeps.buildInputs; + shellHook = '' + '' + ensureSubmodules; + LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs; + }; + + devShells.wsl-vcxsrv = with pkgs; + mkShell { + nativeBuildInputs = baseBuildInputs ++ [ nixGlWrappedMgbaQt ]; + shellHook = '' + export HOST_IP="$(ip route |awk '/^default/{print $3}')" + export DISPLAY=$HOST_IP:0 # use vcxsrv + export PULSE_SERVER="tcp:$HOST_IP" + '' + ensureSubmodules; + }; + }); +} diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..4ef94c8 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "stable" +components = ["rust-src", "clippy"] diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..77db547 --- /dev/null +++ b/shell.nix @@ -0,0 +1,7 @@ +(import ( + fetchTarball { + url = "https://github.com/edolstra/flake-compat/archive/99f1c2157fba4bfe6211a321fd0ee43199025dbf.tar.gz"; + sha256 = "0x2jn3vrawwv9xp15674wjz9pixwjyj3j771izayl962zziivbx2"; } +) { + src = ./.; +}).shellNix