From 0aead0853c6cd2735c10fb2d470b74fe3bb4ddc0 Mon Sep 17 00:00:00 2001 From: Mark Moissette Date: Sun, 17 Dec 2023 15:31:25 +0100 Subject: [PATCH] feat(scene components) : added scene components to control ambient, bloom etc from Blender(#76) * feat(tools): scene component injection & export - ambient light, shadowmap resolution, bloom intensity, ambient occlusion are now directly settable from scene components that are injected automatically in the scene - relaxed requirements for changes(aka when to export gltf) for main scenes, so that render , background etc changes also trigger a save - added scene components examples - added additional proxies & handling for camera & lights - in relevant cases, made sure that entity specific components are not overridden by scene components - added option to toggle scene level exports of params/ components - ambient colour/ intensity is now also set as background/clear colour - updated docs --- Cargo.lock | 12 + Cargo.toml | 1 + crates/bevy_gltf_blueprints/README.md | 2 + .../basic_scene_components/Cargo.lock | 4629 +++++++++++++++++ .../basic_scene_components/Cargo.toml | 13 + .../basic_scene_components/README.md | 11 + .../assets/assets_core.assets.ron | 1 + .../assets/assets_game.assets.ron | 6 + .../assets/models/World.glb | Bin 0 -> 6560 bytes .../assets/models/library/Container.glb | Bin 0 -> 5940 bytes .../assets/models/library/Health_Pickup.glb | Bin 0 -> 5448 bytes .../assets/models/library/MagicTeapot.glb | Bin 0 -> 24028 bytes .../assets/models/library/Pillar.glb | Bin 0 -> 3984 bytes .../assets/models/library/Player.glb | Bin 0 -> 28712 bytes .../models/library/Unused_in_level_test.glb | Bin 0 -> 5552 bytes .../assets/scene_components.bin | Bin 0 -> 60756 bytes .../assets/scene_components.blend | Bin 0 -> 1349780 bytes .../assets/scene_components.gltf | 1752 +++++++ .../assets/scenes/save.scn.ron | 485 ++ .../src/assets/assets_core.rs | 5 + .../src/assets/assets_game.rs | 13 + .../basic_scene_components/src/assets/mod.rs | 35 + .../src/core/camera/camera_replace_proxies.rs | 53 + .../src/core/camera/camera_tracking.rs | 58 + .../src/core/camera/mod.rs | 25 + .../core/lighting/lighting_replace_proxies.rs | 59 + .../src/core/lighting/mod.rs | 19 + .../basic_scene_components/src/core/mod.rs | 31 + .../src/core/physics/controls.rs | 25 + .../src/core/physics/mod.rs | 34 + .../core/physics/physics_replace_proxies.rs | 101 + .../src/core/physics/utils.rs | 175 + .../src/core/relationships/mod.rs | 11 + ...lationships_insert_dependant_components.rs | 15 + .../src/game/in_game.rs | 81 + .../src/game/in_main_menu.rs | 113 + .../basic_scene_components/src/game/mod.rs | 115 + .../src/game/picking.rs | 34 + .../basic_scene_components/src/main.rs | 33 + .../basic_scene_components/src/state.rs | 54 + .../src/test_components.rs | 80 + tools/gltf_auto_export/README.md | 3 + tools/gltf_auto_export/__init__.py | 2 +- tools/gltf_auto_export/auto_export.py | 13 +- .../docs/blender_addon_use3.png | Bin 18168 -> 18866 bytes tools/gltf_auto_export/preferences.py | 7 + tools/gltf_auto_export/scene_components.py | 67 + tools/gltf_auto_export/ui/main.py | 1 + 48 files changed, 8172 insertions(+), 2 deletions(-) create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/Cargo.lock create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/Cargo.toml create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/README.md create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/assets/assets_core.assets.ron create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/assets/assets_game.assets.ron create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/assets/models/World.glb create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Container.glb create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Health_Pickup.glb create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/MagicTeapot.glb create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Pillar.glb create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Player.glb create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Unused_in_level_test.glb create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/assets/scene_components.bin create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/assets/scene_components.blend create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/assets/scene_components.gltf create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/assets/scenes/save.scn.ron create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/assets/assets_core.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/assets/assets_game.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/assets/mod.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/core/camera/camera_replace_proxies.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/core/camera/camera_tracking.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/core/camera/mod.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/core/lighting/lighting_replace_proxies.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/core/lighting/mod.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/core/mod.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/controls.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/mod.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/physics_replace_proxies.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/utils.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/core/relationships/mod.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/core/relationships/relationships_insert_dependant_components.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/game/in_game.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/game/in_main_menu.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/game/mod.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/game/picking.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/main.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/state.rs create mode 100644 examples/bevy_gltf_blueprints/basic_scene_components/src/test_components.rs create mode 100644 tools/gltf_auto_export/scene_components.py diff --git a/Cargo.lock b/Cargo.lock index 2884719..2255f8f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -809,6 +809,18 @@ dependencies = [ "rand", ] +[[package]] +name = "bevy_gltf_blueprints_basic_scene_components_example" +version = "0.3.0" +dependencies = [ + "bevy", + "bevy_asset_loader", + "bevy_editor_pls", + "bevy_gltf_blueprints", + "bevy_rapier3d", + "rand", +] + [[package]] name = "bevy_gltf_blueprints_basic_xpbd_physics_example" version = "0.3.0" diff --git a/Cargo.toml b/Cargo.toml index 61510f5..8d610db 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,6 +4,7 @@ members = [ "crates/bevy_gltf_blueprints", "examples/bevy_gltf_components/basic/", "examples/bevy_gltf_blueprints/basic/", + "examples/bevy_gltf_blueprints/basic_scene_components/", "examples/bevy_gltf_blueprints/basic_xpbd_physics/", "examples/bevy_gltf_blueprints/animation/", "examples/bevy_gltf_blueprints/multiple_levels/", diff --git a/crates/bevy_gltf_blueprints/README.md b/crates/bevy_gltf_blueprints/README.md index d42e166..8d998f0 100644 --- a/crates/bevy_gltf_blueprints/README.md +++ b/crates/bevy_gltf_blueprints/README.md @@ -273,6 +273,8 @@ https://github.com/kaosat-dev/Blender_bevy_components_workflow/tree/main/example https://github.com/kaosat-dev/Blender_bevy_components_workflow/tree/main/examples/basic_xpbd_physics +https://github.com/kaosat-dev/Blender_bevy_components_workflow/tree/main/examples/basic_scene_components + https://github.com/kaosat-dev/Blender_bevy_components_workflow/tree/main/examples/animation https://github.com/kaosat-dev/Blender_bevy_components_workflow/tree/main/examples/multiple_levels diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/Cargo.lock b/examples/bevy_gltf_blueprints/basic_scene_components/Cargo.lock new file mode 100644 index 0000000..5063b29 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/Cargo.lock @@ -0,0 +1,4629 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ab_glyph" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + +[[package]] +name = "accesskit" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca8410747ed85a17c4a1e9ed3f5a74d3e7bdcc876cf9a18ff40ae21d645997b2" + +[[package]] +name = "accesskit_consumer" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c17cca53c09fbd7288667b22a201274b9becaa27f0b91bf52a526db95de45e6" +dependencies = [ + "accesskit", +] + +[[package]] +name = "accesskit_macos" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd3b6ae1eabbfbced10e840fd3fce8a93ae84f174b3e4ba892ab7bcb42e477a7" +dependencies = [ + "accesskit", + "accesskit_consumer", + "objc2", + "once_cell", +] + +[[package]] +name = "accesskit_windows" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afcae27ec0974fc7c3b0b318783be89fd1b2e66dd702179fe600166a38ff4a0b" +dependencies = [ + "accesskit", + "accesskit_consumer", + "once_cell", + "paste", + "static_assertions", + "windows 0.48.0", +] + +[[package]] +name = "accesskit_winit" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88e39fcec2e10971e188730b7a76bab60647dacc973d4591855ebebcadfaa738" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_windows", + "winit", +] + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "alsa" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2562ad8dcf0f789f65c6fdaad8a8a9708ed6b488e649da28c01656ad66b8b47" +dependencies = [ + "alsa-sys", + "bitflags 1.3.2", + "libc", + "nix 0.24.3", +] + +[[package]] +name = "alsa-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "android-activity" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64529721f27c2314ced0890ce45e469574a73e5e6fdd6e9da1860eb29285f5e0" +dependencies = [ + "android-properties", + "bitflags 1.3.2", + "cc", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "num_enum 0.6.1", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "android_log-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ecc8056bf6ab9892dcd53216c83d1597487d7dacac16c8df6b877d127df9937" + +[[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.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[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 = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac57f2b058a76363e357c056e4f74f1945bf734d37b8b3ef49066c4787dde0fc" +dependencies = [ + "clipboard-win", + "core-graphics", + "image", + "log", + "objc", + "objc-foundation", + "objc_id", + "parking_lot", + "thiserror", + "winapi", + "x11rb", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "ash" +version = "0.37.3+1.3.251" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" +dependencies = [ + "libloading 0.7.4", +] + +[[package]] +name = "async-broadcast" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" +dependencies = [ + "event-listener", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0c4a4f319e45986f347ee47fef8bf5e81c9abc3f6f58dc2391439f30df65f0" +dependencies = [ + "async-lock", + "async-task", + "concurrent-queue", + "fastrand 2.0.1", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" +dependencies = [ + "async-lock", + "autocfg", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-task" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" + +[[package]] +name = "bevy" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "329e344f835f5a9a4c46a6d1d57371f726aa2c482d1bd669b2b9c4eb1ee91fd7" +dependencies = [ + "bevy_internal", +] + +[[package]] +name = "bevy-inspector-egui" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d65b98d6fca1209c36c4d403c377f303aad22d940281fe1a9e431217516f0622" +dependencies = [ + "bevy-inspector-egui-derive", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_egui", + "bevy_hierarchy", + "bevy_log", + "bevy_math", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_utils", + "bevy_window", + "egui", + "image", + "once_cell", + "pretty-type-name", + "smallvec", +] + +[[package]] +name = "bevy-inspector-egui-derive" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec800b7cf98151b5dbff80f0eb6dffcb4bcfceef6e457888b395ead4eb7e75ba" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "bevy_a11y" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271b812e5734f5056a400f7d64592dd82d6c0e6179389c2f066f433ab8bc7692" +dependencies = [ + "accesskit", + "bevy_app", + "bevy_derive", + "bevy_ecs", +] + +[[package]] +name = "bevy_animation" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab94187a1253433e14f175293d8a86ec1c2822fda2a17807908f11ec21f45f00" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_ecs", + "bevy_hierarchy", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_time", + "bevy_transform", + "bevy_utils", +] + +[[package]] +name = "bevy_app" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "172d532ea812e5954fa814dae003c207f2a0b20c6e50431787c94a7159677ece" +dependencies = [ + "bevy_derive", + "bevy_ecs", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "downcast-rs", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccb2b67984088b23e223cfe9ec1befd89a110665a679acb06839bc4334ed37d6" +dependencies = [ + "async-broadcast", + "async-fs", + "async-lock", + "bevy_app", + "bevy_asset_macros", + "bevy_ecs", + "bevy_log", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bevy_winit", + "blake3", + "crossbeam-channel", + "downcast-rs", + "futures-io", + "futures-lite", + "js-sys", + "parking_lot", + "ron", + "serde", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_asset_loader" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d797cc907daa293a2776fea1517ed79f9e54d9901dfd35410743cbe536d4c2b" +dependencies = [ + "anyhow", + "bevy", + "bevy_asset_loader_derive", + "bevy_common_assets", + "path-slash", + "serde", +] + +[[package]] +name = "bevy_asset_loader_derive" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d43820afc6e2a7a9e09adb5f13a760bd9a973f391c106411f0bf229d9958c61d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "bevy_asset_macros" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b3245193e90fc8abcf1059a467cb224501dcda083d114c67c10ac66b7171e3a" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "bevy_audio" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478de80ff25cb7decbcb22797774d1597e8c32914e81431c67d64faadc08f84a" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "oboe", + "rodio", +] + +[[package]] +name = "bevy_common_assets" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9397adf1558aa3f08e20aa567538a7238b451362fc8c6b678d409c040c221799" +dependencies = [ + "anyhow", + "bevy", + "ron", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_core" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "025e6800b73048092a55c3611e9327ad4c4c17b60517ec1c0086bb40b4b19ea8" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bytemuck", + "serde", +] + +[[package]] +name = "bevy_core_pipeline" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e4b08a2d53ba62d9ec1fca3f7f4e0f556e9f59e1c8e63a4b7c2a18c0701152c" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bitflags 2.4.1", + "radsort", + "serde", +] + +[[package]] +name = "bevy_derive" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24bf40259be12a1a24d9fd536f5ff18d31eeb5665b77e2732899783be6edc5d6" +dependencies = [ + "bevy_macro_utils", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41b5a99a9fb6cd7d1eb1714fad193944a0317f0887a15cccb8309c8d37951132" +dependencies = [ + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_log", + "bevy_time", + "bevy_utils", + "sysinfo", +] + +[[package]] +name = "bevy_ecs" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae11a1f467c372b50e9d4b55e78370f5420c9db7416200cc441cc84f08174dd3" +dependencies = [ + "async-channel", + "bevy_ecs_macros", + "bevy_ptr", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "downcast-rs", + "event-listener", + "fixedbitset", + "rustc-hash", + "serde", + "thiserror", + "thread_local", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f642c2b67c4d0daf8edf15074f6351457eb487a34b3de1290c760d8f3ac9ec16" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "bevy_editor_pls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170e3ee3293f70be7fa1b82e8ffe52dcb190c68b2f0ef4847afe65626b417ad7" +dependencies = [ + "bevy", + "bevy_editor_pls_core", + "bevy_editor_pls_default_windows", + "egui", + "egui-gizmo", +] + +[[package]] +name = "bevy_editor_pls_core" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9bab331de653d7d976a1fb0ab3ae8eff1dc821c5991c09bdbe945e70234839c" +dependencies = [ + "bevy", + "bevy-inspector-egui", + "egui_dock", + "indexmap 2.1.0", +] + +[[package]] +name = "bevy_editor_pls_default_windows" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b833e3b3d5c69b92527e766b470b27cb4745406e2087be19be81b595cc48792c" +dependencies = [ + "bevy", + "bevy-inspector-egui", + "bevy_editor_pls_core", + "bevy_mod_debugdump", + "egui-gizmo", + "indexmap 2.1.0", + "opener", + "pretty-type-name", +] + +[[package]] +name = "bevy_egui" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85450af551b7e1cb766f710763b60a12a82ffd6323945a8f776c6334c59ccdc1" +dependencies = [ + "arboard", + "bevy", + "egui", + "thread_local", + "webbrowser", +] + +[[package]] +name = "bevy_encase_derive" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65b9fb5a62c4e3ab70caaa839470d35fa932001b1b34b08bc7f7f1909bd2b3a7" +dependencies = [ + "bevy_macro_utils", + "encase_derive_impl", +] + +[[package]] +name = "bevy_gilrs" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad31cc2c84315e0759d793d6c5bcb7d8789bbc16359c98d1b766e708c1bbae49" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_log", + "bevy_time", + "bevy_utils", + "gilrs", + "thiserror", +] + +[[package]] +name = "bevy_gizmos" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87d1cc978b91f416b23eb16f00e69f95c3a04582021827d8082e92d4725cc510" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_math", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_transform", + "bevy_utils", +] + +[[package]] +name = "bevy_gltf" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f933745c0c86e2c07948def581259b466f99708328657054e956275430ccfd7" +dependencies = [ + "base64 0.13.1", + "bevy_animation", + "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", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "bevy_gltf_blueprints" +version = "0.3.0" +dependencies = [ + "bevy", + "bevy_gltf_components", +] + +[[package]] +name = "bevy_gltf_blueprints_basic_example" +version = "0.3.0" +dependencies = [ + "bevy", + "bevy_asset_loader", + "bevy_editor_pls", + "bevy_gltf_blueprints", + "bevy_rapier3d", + "rand", +] + +[[package]] +name = "bevy_gltf_components" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd745a2988c631286404e12d184d4a30a634fbbba1deceaaa1ca7fcbc607cc7a" +dependencies = [ + "bevy", + "ron", + "serde", +] + +[[package]] +name = "bevy_hierarchy" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64fa240011fce8ee23f9b46e5a26a628a31d7860d6d2e4e0e361bb3ea6d5a703" +dependencies = [ + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_log", + "bevy_reflect", + "bevy_utils", + "smallvec", +] + +[[package]] +name = "bevy_input" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e86e241b3a10b79f65a69205552546723b855d3d4c1bd8261637c076144d32f" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_utils", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_internal" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55124e486814c4d3632d5cfad9c4f4e46d052c028593ec46fef5bfbfb0f840b1" +dependencies = [ + "bevy_a11y", + "bevy_animation", + "bevy_app", + "bevy_asset", + "bevy_audio", + "bevy_core", + "bevy_core_pipeline", + "bevy_derive", + "bevy_diagnostic", + "bevy_ecs", + "bevy_gilrs", + "bevy_gizmos", + "bevy_gltf", + "bevy_hierarchy", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_pbr", + "bevy_ptr", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_sprite", + "bevy_tasks", + "bevy_text", + "bevy_time", + "bevy_transform", + "bevy_ui", + "bevy_utils", + "bevy_window", + "bevy_winit", +] + +[[package]] +name = "bevy_log" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "011417debf7868b45932bb97fc0d5bfdeaf9304e324aa94840e2f1e6deeed69d" +dependencies = [ + "android_log-sys", + "bevy_app", + "bevy_ecs", + "bevy_utils", + "console_error_panic_hook", + "tracing-log", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf6fba87c6d069fcbcd8a48625ca8ab4392ad40d2b260863ce7d641a0f42986d" +dependencies = [ + "proc-macro2", + "quote", + "rustc-hash", + "syn 2.0.39", + "toml_edit 0.20.7", +] + +[[package]] +name = "bevy_math" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "752764558a1f429c20704c3b836a019fa308961c43fdfef4f08e339d456c96be" +dependencies = [ + "glam", + "serde", +] + +[[package]] +name = "bevy_mikktspace" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b596c41a56f2268ec7cde560edc588bc7b5886e4b49c8b27c4dcc9f7c743424c" +dependencies = [ + "glam", +] + +[[package]] +name = "bevy_mod_debugdump" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4db8601f41ea570b7d32f3177292a608196c59bdf3298001a9e202d5e7439438" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_render", + "bevy_utils", + "once_cell", + "petgraph", + "pretty-type-name", +] + +[[package]] +name = "bevy_pbr" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeb6a35a78d355cc21c10f277dcd171eca65e30a90e76eb89f4dacf606621fe1" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags 2.4.1", + "bytemuck", + "fixedbitset", + "naga_oil", + "radsort", + "smallvec", + "thread_local", +] + +[[package]] +name = "bevy_ptr" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "308a02679f6ce21ef71de20fae6d6a2016c07baa21d8e8d0558e6b7851e8adf2" + +[[package]] +name = "bevy_rapier3d" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f0a2641af76c9eb17da0dcb0fb20cd9d615b93b67be0b85f1867487e956b5a" +dependencies = [ + "bevy", + "bitflags 2.4.1", + "log", + "nalgebra", + "rapier3d", + "serde", +] + +[[package]] +name = "bevy_reflect" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdd56914a8ad57621d7a1a099f7e6b1f7482c9c76cedc9c3d4c175a203939c5d" +dependencies = [ + "bevy_math", + "bevy_ptr", + "bevy_reflect_derive", + "bevy_utils", + "downcast-rs", + "erased-serde", + "glam", + "serde", + "smallvec", + "smol_str", + "thiserror", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25f627907c40ac552f798423447fc331fc1ddacd94c5f7a2a70942eb06bc8447" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.39", + "uuid", +] + +[[package]] +name = "bevy_render" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90d777f4c51bd58e9e40777c6cb8dde0778df7e2c5298b3f9e3455bd12a9856c" +dependencies = [ + "async-channel", + "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_tasks", + "bevy_time", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags 2.4.1", + "bytemuck", + "codespan-reporting", + "downcast-rs", + "encase", + "futures-lite", + "hexasphere", + "image", + "js-sys", + "ktx2", + "naga", + "naga_oil", + "ruzstd", + "serde", + "smallvec", + "thiserror", + "thread_local", + "wasm-bindgen", + "web-sys", + "wgpu", +] + +[[package]] +name = "bevy_render_macros" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35b00c3d0abff94a729460fc9aa95c2ceac71b49b3041166bb5ba3098e9657e7" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "bevy_scene" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6294396a6375f0b14341d8003408c10aa040e3f833ac8bd49677170ec55d73" +dependencies = [ + "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.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4f7d1f88a6e5497fdafd95c20984a1d1b5517bc39d51600b4988cd60c51837a" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bitflags 2.4.1", + "bytemuck", + "fixedbitset", + "guillotiere", + "radsort", + "rectangle-pack", + "thiserror", +] + +[[package]] +name = "bevy_tasks" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a45be906618192515bc613e46546150089adbb4a82178dc462045acd1e89e92" +dependencies = [ + "async-channel", + "async-executor", + "async-task", + "concurrent-queue", + "futures-lite", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_text" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c136af700af4f87c94f68d6e019528c371bf09ebf4a8ff7468bb3c73806b34f5" +dependencies = [ + "ab_glyph", + "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.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b29709cadf22d318a0b7c79f763e9c5ac414292bd0e850066fa935959021b276" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_reflect", + "bevy_utils", + "crossbeam-channel", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_transform" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70262c51e915b6224129206d23823364e650cf5eb5f4b6ce3ee379f608c180d2" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_hierarchy", + "bevy_math", + "bevy_reflect", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_ui" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd5ecbf2dceaab118769dd870e34d780bfde556af561fd10d8d613b0f237297e" +dependencies = [ + "bevy_a11y", + "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", + "thiserror", +] + +[[package]] +name = "bevy_utils" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8e75d4a34ef0b15dffd1ee9079ef1f0f5139527e192b9d5708b3e158777c753" +dependencies = [ + "ahash", + "bevy_utils_proc_macros", + "getrandom", + "hashbrown 0.14.2", + "instant", + "nonmax", + "petgraph", + "thiserror", + "tracing", + "uuid", +] + +[[package]] +name = "bevy_utils_proc_macros" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7dfd3735a61a1b681ed1e176afe4eae731bbb03e51ad871e9eb39e76a2d170e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "bevy_window" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e60d1830b3fbd7db5bfea7ac9fcd0f5e1d1af88c91ab469e697ab176d8b3140b" +dependencies = [ + "bevy_a11y", + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_math", + "bevy_reflect", + "bevy_utils", + "raw-window-handle", + "serde", +] + +[[package]] +name = "bevy_winit" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f8294e78c6a1f9c34d36501a377c5d20bf0fa23a0958187bb270187741448ba" +dependencies = [ + "accesskit_winit", + "approx", + "bevy_a11y", + "bevy_app", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_input", + "bevy_math", + "bevy_tasks", + "bevy_utils", + "bevy_window", + "crossbeam-channel", + "raw-window-handle", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "bindgen" +version = "0.68.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" +dependencies = [ + "bitflags 2.4.1", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.39", +] + +[[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" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +dependencies = [ + "serde", +] + +[[package]] +name = "blake3" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-sys" +version = "0.1.0-beta.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" +dependencies = [ + "objc-sys", +] + +[[package]] +name = "block2" +version = "0.2.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" +dependencies = [ + "block-sys", + "objc2-encode", +] + +[[package]] +name = "blocking" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c36a4d0d48574b3dd360b4b7d95cc651d2b6557b6402848a27d4b228a473e2a" +dependencies = [ + "async-channel", + "async-lock", + "async-task", + "fastrand 2.0.1", + "futures-io", + "futures-lite", + "piper", + "tracing", +] + +[[package]] +name = "bstr" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" +dependencies = [ + "memchr", + "regex-automata 0.4.3", + "serde", +] + +[[package]] +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "bytemuck" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "jobserver", + "libc", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[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 = "clang-sys" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +dependencies = [ + "glob", + "libc", + "libloading 0.7.4", +] + +[[package]] +name = "clipboard-win" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" +dependencies = [ + "error-code", + "str-buf", + "winapi", +] + +[[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 = "com-rs" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" + +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" +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", + "wasm-bindgen", +] + +[[package]] +name = "const_panic" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6051f239ecec86fde3410901ab7860d458d160371533842974fc61f96d15879b" + +[[package]] +name = "const_soft_float" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ca1caa64ef4ed453e68bb3db612e51cf1b2f5b871337f0fcab1c8f87cc3dff" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "constgebra" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd23e864550e6dafc1e41ac78ce4f1ccddc8672b40c403524a04ff3f0518420" +dependencies = [ + "const_soft_float", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "core-graphics" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-graphics-types", + "foreign-types 0.3.2", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "libc", +] + +[[package]] +name = "coreaudio-rs" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" +dependencies = [ + "bitflags 1.3.2", + "core-foundation-sys", + "coreaudio-sys", +] + +[[package]] +name = "coreaudio-sys" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8478e5bdad14dce236b9898ea002eabfa87cbe14f0aa538dbe3b6a4bec4332d" +dependencies = [ + "bindgen", +] + +[[package]] +name = "cpal" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d959d90e938c5493000514b446987c07aed46c668faaa7d34d6c7a67b1a578c" +dependencies = [ + "alsa", + "core-foundation-sys", + "coreaudio-rs", + "dasp_sample", + "jni 0.19.0", + "js-sys", + "libc", + "mach2", + "ndk", + "ndk-context", + "oboe", + "once_cell", + "parking_lot", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows 0.46.0", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" +dependencies = [ + "cfg-if", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset 0.9.0", + "scopeguard", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "d3d12" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16e44ab292b1dddfdaf7be62cfd8877df52f2f3fde5858d95bab606be259f20" +dependencies = [ + "bitflags 2.4.1", + "libloading 0.8.1", + "winapi", +] + +[[package]] +name = "dasp_sample" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" + +[[package]] +name = "data-encoding" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "duplicate" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de78e66ac9061e030587b2a2e75cc88f22304913c907b11307bca737141230cb" +dependencies = [ + "heck", + "proc-macro-error", +] + +[[package]] +name = "ecolor" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfdf4e52dbbb615cfd30cf5a5265335c217b5fd8d669593cea74a517d9c605af" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "egui" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bd69fed5fcf4fbb8225b24e80ea6193b61e17a625db105ef0c4d71dde6eb8b7" +dependencies = [ + "ahash", + "epaint", + "nohash-hasher", +] + +[[package]] +name = "egui-gizmo" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f732ad247afe275d6cf901e0f134025ad735007c8f4d82e667a6871f1b4a5441" +dependencies = [ + "egui", + "glam", +] + +[[package]] +name = "egui_dock" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a52f67bcab0eb6050cf8051c614966c1c57129fab23dbeae9c157214779053c7" +dependencies = [ + "duplicate", + "egui", + "paste", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "emath" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ef2b29de53074e575c18b694167ccbe6e5191f7b25fe65175a0d905a32eeec0" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "encase" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fce2eeef77fd4a293a54b62aa00ac9daebfbcda4bf8998c5a815635b004aa1c" +dependencies = [ + "const_panic", + "encase_derive", + "glam", + "thiserror", +] + +[[package]] +name = "encase_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e520cde08cbf4f7cc097f61573ec06ce467019803de8ae82fb2823fa1554a0e" +dependencies = [ + "encase_derive_impl", +] + +[[package]] +name = "encase_derive_impl" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fe2568f851fd6144a45fa91cfed8fe5ca8fc0b56ba6797bfc1ed2771b90e37c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "epaint" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58067b840d009143934d91d8dcb8ded054d8301d7c11a517ace0a99bb1e1595e" +dependencies = [ + "ab_glyph", + "ahash", + "bytemuck", + "ecolor", + "emath", + "nohash-hasher", + "parking_lot", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "erased-serde" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c138974f9d5e7fe373eb04df7cae98833802ae4b11c24ac7039a21d5af4b26c" +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.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787" +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.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "fdeflate" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868" +dependencies = [ + "simd-adler32", +] + +[[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.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[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 0.1.1", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-core" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" + +[[package]] +name = "futures-io" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[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.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gilrs" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e9eec02069fcbd7abe00a28adf216547774889129a777cb5e53fdfb75d59f09" +dependencies = [ + "fnv", + "gilrs-core", + "log", + "uuid", + "vec_map", +] + +[[package]] +name = "gilrs-core" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e11f4e03be4f1beda399e4791c11d33102fa48f368e864259e4e810d3a3d2ff5" +dependencies = [ + "core-foundation", + "inotify", + "io-kit-sys", + "js-sys", + "libc", + "libudev-sys", + "log", + "nix 0.27.1", + "uuid", + "vec_map", + "wasm-bindgen", + "web-sys", + "windows 0.51.1", +] + +[[package]] +name = "gimli" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" + +[[package]] +name = "glam" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5418c17512bdf42730f9032c74e1ae39afc408745ebb2acf72fbc4691c17945" +dependencies = [ + "bytemuck", + "serde", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "glow" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca0fe580e4b60a8ab24a868bc08e2f03cbcb20d3d676601fa909386713333728" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gltf" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad2dcfb6dd7a66f9eb3d181a29dcfb22d146b0bcdc2e1ed1713cbf03939a88ea" +dependencies = [ + "byteorder", + "gltf-json", + "lazy_static", +] + +[[package]] +name = "gltf-derive" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cbcea5dd47e7ad4e9ee6f040384fcd7204bbf671aa4f9e7ca7dfc9bfa1de20" +dependencies = [ + "inflections", + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "gltf-json" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5b810806b78dde4b71a95cc0e6fdcab34c4c617da3574df166f9987be97d03" +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 = "gpu-alloc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +dependencies = [ + "bitflags 2.4.1", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.4.1", +] + +[[package]] +name = "gpu-allocator" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce95f9e2e11c2c6fadfce42b5af60005db06576f231f5c92550fdded43c423e8" +dependencies = [ + "backtrace", + "log", + "thiserror", + "winapi", + "windows 0.44.0", +] + +[[package]] +name = "gpu-descriptor" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" +dependencies = [ + "bitflags 2.4.1", + "gpu-descriptor-types", + "hashbrown 0.14.2", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" +dependencies = [ + "bitflags 2.4.1", +] + +[[package]] +name = "grid" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eec1c01eb1de97451ee0d60de7d81cf1e72aabefb021616027f3d1c3ec1c723c" + +[[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 = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +dependencies = [ + "ahash", + "allocator-api2", + "serde", +] + +[[package]] +name = "hassle-rs" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1397650ee315e8891a0df210707f0fc61771b0cc518c3023896064c5407cb3b0" +dependencies = [ + "bitflags 1.3.2", + "com-rs", + "libc", + "libloading 0.7.4", + "thiserror", + "widestring", + "winapi", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hexasphere" +version = "9.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cb3df16a7bcb1b5bc092abd55e14f77ca70aea14445026e264586fc62889a10" +dependencies = [ + "constgebra", + "glam", +] + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "image" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-rational", + "num-traits", + "png", + "tiff", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +dependencies = [ + "equivalent", + "hashbrown 0.14.2", +] + +[[package]] +name = "inflections" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" + +[[package]] +name = "inotify" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc" +dependencies = [ + "bitflags 1.3.2", + "futures-core", + "inotify-sys", + "libc", + "tokio", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "io-kit-sys" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4769cb30e5dcf1710fc6730d3e94f78c47723a014a567de385e113c737394640" +dependencies = [ + "core-foundation-sys", + "mach2", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[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" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +dependencies = [ + "libc", +] + +[[package]] +name = "jpeg-decoder" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" + +[[package]] +name = "js-sys" +version = "0.3.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" +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 0.7.4", + "pkg-config", +] + +[[package]] +name = "ktx2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87d65e08a9ec02e409d27a0139eaa6b9756b4d81fe7cde71f6941a83730ce838" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "lewton" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030" +dependencies = [ + "byteorder", + "ogg", + "tinyvec", +] + +[[package]] +name = "libc" +version = "0.2.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libloading" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall 0.4.1", +] + +[[package]] +name = "libudev-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "mach2" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8" +dependencies = [ + "libc", +] + +[[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 0.1.10", +] + +[[package]] +name = "matrixmultiply" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metal" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "623b5e6cefd76e58f774bd3cc0c6f5c7615c58c03a97815245a25c3c9bdee318" +dependencies = [ + "bitflags 2.4.1", + "block", + "core-graphics-types", + "foreign-types 0.5.0", + "log", + "objc", + "paste", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "naga" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ceaaa4eedaece7e4ec08c55c640ba03dbb73fb812a6570a59bcf1930d0f70e" +dependencies = [ + "bit-set", + "bitflags 2.4.1", + "codespan-reporting", + "hexf-parse", + "indexmap 1.9.3", + "log", + "num-traits", + "pp-rs", + "rustc-hash", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "naga_oil" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1fa9518ff79ae8a98c3abe3897d873a85561d1b5642981c2245c1c4b9b2429d" +dependencies = [ + "bit-set", + "codespan-reporting", + "data-encoding", + "indexmap 1.9.3", + "naga", + "once_cell", + "regex", + "regex-syntax 0.7.5", + "rustc-hash", + "thiserror", + "tracing", + "unicode-ident", +] + +[[package]] +name = "nalgebra" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "307ed9b18cc2423f29e83f84fd23a8e73628727990181f18641a8b5dc2ab1caa" +dependencies = [ + "approx", + "glam", + "matrixmultiply", + "nalgebra-macros", + "num-complex", + "num-rational", + "num-traits", + "serde", + "simba", + "typenum", +] + +[[package]] +name = "nalgebra-macros" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91761aed67d03ad966ef783ae962ef9bbaca728d2dd7ceb7939ec110fffad998" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ndk" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +dependencies = [ + "bitflags 1.3.2", + "jni-sys", + "ndk-sys", + "num_enum 0.5.11", + "raw-window-handle", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[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 = "nix" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.6.5", +] + +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.4.1", + "cfg-if", + "libc", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nonmax" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4a593ea4fffed8684ad13d75c82cf0b6dc2b88947e0ed85b9e70f555a7e422" + +[[package]] +name = "normpath" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec60c60a693226186f5d6edf073232bfb6464ed97eb22cf3b01c1e8198fd97f5" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[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-complex" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +dependencies = [ + "num-traits", + "serde", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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-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.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive 0.5.11", +] + +[[package]] +name = "num_enum" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +dependencies = [ + "num_enum_derive 0.6.1", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num_enum_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[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-sys" +version = "0.2.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" + +[[package]] +name = "objc2" +version = "0.3.0-beta.3.patch-leaks.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" +dependencies = [ + "block2", + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-encode" +version = "2.0.0-pre.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" +dependencies = [ + "objc-sys", +] + +[[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 = "object" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + +[[package]] +name = "oboe" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8868cc237ee02e2d9618539a23a8d228b9bb3fc2e7a5b11eed3831de77c395d0" +dependencies = [ + "jni 0.20.0", + "ndk", + "ndk-context", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f44155e7fb718d3cfddcf70690b2b51ac4412f347cd9e4fbe511abe9cd7b5f2" +dependencies = [ + "cc", +] + +[[package]] +name = "ogg" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e" +dependencies = [ + "byteorder", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "opener" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c62dcb6174f9cb326eac248f07e955d5d559c272730b6c03e396b443b562788" +dependencies = [ + "bstr", + "normpath", + "winapi", +] + +[[package]] +name = "orbclient" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166" +dependencies = [ + "libredox", +] + +[[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.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + +[[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", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "parry3d" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55dc0e6db79bddbc5fd583569f7356cdcc63e1e9b2b93a9ab70dd8e717160e0" +dependencies = [ + "approx", + "arrayvec", + "bitflags 1.3.2", + "downcast-rs", + "either", + "indexmap 1.9.3", + "nalgebra", + "num-derive", + "num-traits", + "rustc-hash", + "serde", + "simba", + "slab", + "smallvec", + "spade", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "path-slash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap 2.1.0", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.1", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "png" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[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 = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "pretty-type-name" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f73cdaf19b52e6143685c3606206e114a4dfa969d6b14ec3894c88eb38bd4b" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f89dff0959d98c9758c88826cc002e2c3d0b9dfac4139711d1f30de442f1139b" + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radsort" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "range-alloc" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" + +[[package]] +name = "rapier3d" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62a8a0bd9d3135f7b4eb45d0796540e7bab47b6b7c974f90567ccc5a0454f42b" +dependencies = [ + "approx", + "arrayvec", + "bit-vec", + "bitflags 1.3.2", + "crossbeam", + "downcast-rs", + "nalgebra", + "num-derive", + "num-traits", + "parry3d", + "rustc-hash", + "serde", + "simba", +] + +[[package]] +name = "raw-window-handle" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[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.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "regex" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "renderdoc-sys" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216080ab382b992234dda86873c18d4c48358f5cfcb70fd693d7f6f2131b628b" + +[[package]] +name = "robust" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf4a6aa5f6d6888f39e980649f3ad6b666acdce1d78e95b8a2cb076e687ae30" + +[[package]] +name = "rodio" +version = "0.17.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b1bb7b48ee48471f55da122c0044fcc7600cfcc85db88240b89cb832935e611" +dependencies = [ + "cpal", + "lewton", +] + +[[package]] +name = "ron" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +dependencies = [ + "base64 0.21.5", + "bitflags 2.4.1", + "serde", + "serde_derive", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "ruzstd" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3ffab8f9715a0d455df4bbb9d21e91135aab3cd3ca187af0cd0c3c3f868fdc" +dependencies = [ + "byteorder", + "thiserror-core", + "twox-hash", +] + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "safe_arch" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354" +dependencies = [ + "bytemuck", +] + +[[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.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.192" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.192" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "serde_json" +version = "1.0.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" + +[[package]] +name = "simba" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae" +dependencies = [ + "approx", + "libm", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +dependencies = [ + "serde", +] + +[[package]] +name = "smol_str" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "spade" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c39e369d9638e42586b226e67df08a7358d1e02eb80629d596b944b7c16f44f" +dependencies = [ + "hashbrown 0.14.2", + "num-traits", + "robust", + "smallvec", +] + +[[package]] +name = "spirv" +version = "0.2.0+1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" +dependencies = [ + "bitflags 1.3.2", + "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 = "svg_fmt" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sysinfo" +version = "0.29.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a18d114d420ada3a891e6bc8e96a2023402203296a47cdd65083377dad18ba5" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "winapi", +] + +[[package]] +name = "taffy" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c2287b6d7f721ada4cddf61ade5e760b2c6207df041cac9bfaa192897362fd3" +dependencies = [ + "arrayvec", + "grid", + "num-traits", + "slotmap", +] + +[[package]] +name = "termcolor" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-core" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d97345f6437bb2004cd58819d8a9ef8e36cdd7661c2abc4bbde0a7c40d9f497" +dependencies = [ + "thiserror-core-impl", +] + +[[package]] +name = "thiserror-core-impl" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10ac1c5050e43014d16b2f94d0d2ce79e65ffdd8b38d8048f9c8f6a8a6da62ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tiff" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d172b0f4d3fba17ba89811858b9d3d97f928aece846475bbda076ca46736211" +dependencies = [ + "flate2", + "jpeg-decoder", + "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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" +dependencies = [ + "backtrace", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.48.0", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.1.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.20.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap 2.1.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +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.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "static_assertions", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[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.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[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.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "uuid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "waker-fn" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" + +[[package]] +name = "walkdir" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "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.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.39", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" + +[[package]] +name = "wayland-scanner" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" +dependencies = [ + "proc-macro2", + "quote", + "xml-rs", +] + +[[package]] +name = "web-sys" +version = "0.3.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webbrowser" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b2391658b02c27719fc5a0a73d6e696285138e8b12fba9d4baa70451023c71" +dependencies = [ + "core-foundation", + "home", + "jni 0.21.1", + "log", + "ndk-context", + "objc", + "raw-window-handle", + "url", + "web-sys", +] + +[[package]] +name = "weezl" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" + +[[package]] +name = "wgpu" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed547920565c56c7a29afb4538ac5ae5048865a5d2f05bff3ad4fbeb921a9a2c" +dependencies = [ + "arrayvec", + "cfg-if", + "js-sys", + "log", + "naga", + "parking_lot", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f8a44dd301a30ceeed3c27d8c0090433d3da04d7b2a4042738095a424d12ae7" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags 2.4.1", + "codespan-reporting", + "log", + "naga", + "parking_lot", + "profiling", + "raw-window-handle", + "rustc-hash", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-hal" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a80bf0e3c77399bb52850cb0830af9bad073d5cfcb9dd8253bef8125c42db17" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set", + "bitflags 2.4.1", + "block", + "core-graphics-types", + "d3d12", + "glow", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor", + "hassle-rs", + "js-sys", + "khronos-egl", + "libc", + "libloading 0.8.1", + "log", + "metal", + "naga", + "objc", + "parking_lot", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "rustc-hash", + "smallvec", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "winapi", +] + +[[package]] +name = "wgpu-types" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee64d7398d0c2f9ca48922c902ef69c42d000c759f3db41e355f4a570b052b67" +dependencies = [ + "bitflags 2.4.1", + "js-sys", + "web-sys", +] + +[[package]] +name = "wide" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68938b57b33da363195412cfc5fc37c9ed49aa9cfe2156fde64b8d2c9498242" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "widestring" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +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.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" +dependencies = [ + "windows-core", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-implement" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2ee588991b9e7e6c8338edf3333fbe4da35dc72092643958ebb43f0ab2c49c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "windows-interface" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6fb8df20c9bcaa8ad6ab513f7b40104840c8867d5751126e4df3b08388d0cc7" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "winit" +version = "0.28.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9596d90b45384f5281384ab204224876e8e8bf7d58366d9b795ad99aa9894b94" +dependencies = [ + "android-activity", + "bitflags 1.3.2", + "cfg_aliases", + "core-foundation", + "core-graphics", + "dispatch", + "instant", + "libc", + "log", + "mio", + "ndk", + "objc2", + "once_cell", + "orbclient", + "percent-encoding", + "raw-window-handle", + "redox_syscall 0.3.5", + "wasm-bindgen", + "wayland-scanner", + "web-sys", + "windows-sys 0.45.0", + "x11-dl", +] + +[[package]] +name = "winnow" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +dependencies = [ + "memchr", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "592b4883219f345e712b3209c62654ebda0bb50887f330cbd018d0f654bfd507" +dependencies = [ + "gethostname", + "nix 0.24.3", + "winapi", + "winapi-wsapoll", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56b245751c0ac9db0e006dc812031482784e434630205a93c73cfefcaabeac67" +dependencies = [ + "nix 0.24.3", +] + +[[package]] +name = "xi-unicode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" + +[[package]] +name = "xml-rs" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" + +[[package]] +name = "zerocopy" +version = "0.7.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd369a67c0edfef15010f980c3cbe45d7f651deac2cd67ce097cd801de16557" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2f140bda219a26ccc0cdb03dba58af72590c53b22642577d88a927bc5c87d6b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/Cargo.toml b/examples/bevy_gltf_blueprints/basic_scene_components/Cargo.toml new file mode 100644 index 0000000..65465e6 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "bevy_gltf_blueprints_basic_scene_components_example" +version = "0.3.0" +edition = "2021" +license = "MIT OR Apache-2.0" + +[dependencies] +bevy="0.12" +bevy_gltf_blueprints = { path = "../../../crates/bevy_gltf_blueprints" } +bevy_rapier3d = { version = "0.23.0", features = [ "serde-serialize", "debug-render-3d", "enhanced-determinism"] } +bevy_asset_loader = { version = "0.18", features = ["standard_dynamic_assets" ]} +bevy_editor_pls = { version = "0.6" } +rand = "0.8.5" diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/README.md b/examples/bevy_gltf_blueprints/basic_scene_components/README.md new file mode 100644 index 0000000..ac2dd21 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/README.md @@ -0,0 +1,11 @@ +# Basic scene components demo + +This example showcases the use of "scene" components ie components that are injected into the root scene/level so that you can control things +like ambient lighting, bloom, shadowmap resolution, & ao directly from Blender. + +## Running this example + +``` +cargo run --features bevy/dynamic_linking +``` + diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/assets/assets_core.assets.ron b/examples/bevy_gltf_blueprints/basic_scene_components/assets/assets_core.assets.ron new file mode 100644 index 0000000..8d0a099 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/assets/assets_core.assets.ron @@ -0,0 +1 @@ +({}) \ No newline at end of file diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/assets/assets_game.assets.ron b/examples/bevy_gltf_blueprints/basic_scene_components/assets/assets_game.assets.ron new file mode 100644 index 0000000..5b1e969 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/assets/assets_game.assets.ron @@ -0,0 +1,6 @@ +({ + "world":File (path: "models/World.glb"), + "models": Folder ( + path: "models/library", + ), +}) \ No newline at end of file diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/assets/models/World.glb b/examples/bevy_gltf_blueprints/basic_scene_components/assets/models/World.glb new file mode 100644 index 0000000000000000000000000000000000000000..e73bc9fa48d713812ecd987341ba9eb51090e928 GIT binary patch literal 6560 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 O(a)lfaQ!IyRrG)4SkHt2 literal 0 HcmV?d00001 diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Container.glb b/examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Container.glb new file mode 100644 index 0000000000000000000000000000000000000000..21cfd546707f5ca7d440a96fbd2e49fe11f0edc0 GIT binary patch literal 5940 zcmeHK+iu%N5M|S(*CcJ)ra}88@F7o(%KOC+jbg_^+}f65yFq~@Gcs_n+NR6vcj^D1YBklwbDR+ox)n z=d4gyPSpWRSQZv(rmm>J9%gBh=8XYV8mlo&`YdZ~{M2q7+fBV`TdJlWvn-F&1j1%h zSI;yx?*Twv(FK*OD=$w~_O{4Ekf&sBlCWOU zIb!)CN9qa2Fw9s|00-#8Pu2Og%6IO+AQUHtWm?nU1E0 z!(n{VIZFHLilM2cflinmg~cdC7~tijZYO5P3|0)pcaWwCwi}1|gWDpWcJ~i>Ou@d= z5bZF{3f5ms;}~3|hZauNBs>D7x)a55m?2ja&RUujVT8O_nLBZKGRt|+!nio>>>$q3 zuqwJ04x-*Z3x{b@W&f6pa@OxeN$G#5U^&)bAqe5gH2X=~XXK==8JekCug(yLLr&>}2U%Y^VAxddvC{l18zaWw4!IdNfQEzN3_kDF!7j zLajl2i)sMMr3=^&;X)Nf2vfy{F*5wpXc~s^+O}udmgCs2?`v0LA!yWTlE)!!8c)X~ zy=mwsn&aDs?*%?kH61yu`n$)HoF5nz#8ThQ1-|E{;(zKnf<$$*EDGbYEc@xG8?!wm z9EYIDMr`8fdUD+9#v_KXhTUw76*y~AZ#Nwc4$Fgfs&>PiA>=fB7WVk1@lr=o7_P0` zhUuA>YdenXYhVVtg*3XBWBI=2*%o->lzN6^I*w;~nnBJ9GZGMIJ(CtEyry$TTM)*> z!*C0=i%MDDT;F~QPnU-yx27ZGzh+!DclD-g1-|J!x@B0XIM+c?u8Wy#xPj>!fo0lY z8BXAMwrvNxYg)Ev|Ep1!#rOeZw1U9&eABTI7ES&tf?FH z$PBaSC@P|3ArKZt7IjCs&giw+Y42_9Z?w1hBe31x-FmXg@9q8d-`Cph-KQO0T`|uz zHA?zXk5sJb0e}wOhjTV{T%A`}H*40h;dOP+i{1r zHz=FSz%R-TcSF3R`-}H&s$S0xYUwiT<+htm(=>F?F$3J~M&NmlW(k&K*}kdco_Dpn z6e{DWtd#m13P(Wb4xUyEm#M8is>@wcT{r}n#V}1ly*Tl8cy)DT5Z+8{yLyoLA?ltK zY?CE}0-vrXK0H)nv=0vW=QZB4BFqN#rES@Pi)#rlC_jXk>vFKGYU8_i*0SSKm0!`e zH>d331)ov2uH(3GzfahPVa^%9C~LL24coXz;I$1iT>To>>*{`R4eK@MO#|m)Ch@q& zW%Y^5tCpMPxwz&VjmGoO6=ii}8~^2v&(YEN_!7ERky%C)4)7+Ji)hl7{6#eUpvL{V zh;CJ6meGVmwj|CXnsg<95sfw8#$uqkpovq>+dN;c6JO>;%J4b(vT+~gY|)z3<1vg& z>6-52(ht5WWQd-`jdkt=jnu}xFR=wp9PY!MjO6oi0nWRhg&i94qdBz(WXV2_)LzqE zthb0qau`XT<_-L+<7<);>r$^el041lN5YeO)sf_AK0kh};3(ktiSn89g>oPLedSx_ zJLQ3L5B)vmu5w5DO1X*trgB61RQX1^jsCXsk@CIrrE&}XE#+$MC{Txcm zXn{AufozQ?UCCcW!v-~O>ms^Uky%C)4%w18i)hl7{6#d@cpHm>=7J{9Bqw}AUD+l! zA7ef)ZSWP))OcRToaEgkCo~Vo$mu>=k=Yr0sI_GWZRhvcOXVlHKBIOj`nz+Z+# zb<6Q-#E;i8gd4C$d>W~}rny*e5f8M2k>qLKz^^*KCK<6V^{OMu(|mp;JgHY5Nsi{T z;|~w-zSB4VI>*?$i2m{6Hm!4+WwgL~SHY>#LYMQG(5;F;OX-Ratz~q@ABjVDXXuI# z5{Ju3K5~4HyiptTesS&1$#8MXH`j0O3v7uq;Q>=NTI1`)7)$PyCw1p# I{;&Uk0OI?dSO5S3 literal 0 HcmV?d00001 diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Health_Pickup.glb b/examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Health_Pickup.glb new file mode 100644 index 0000000000000000000000000000000000000000..c9653e6bd6fa6f2b18af7cf0b6bda4ffbaa04893 GIT binary patch literal 5448 zcmb7G&vzSF6~2`Ipg>Ctv=nGTofdG)MAgjbhou%7$4weHj^)};pqO+RNl)@LqZu(X za_l%R;jrTz4h#MO);)(UTbXmZ=5JxqZ5Mp^X`b|yO0r@*SKqvM=icvr@7||$gZ*ny z5YhFQi2n5q(Fc2t?Nh@`5|J9UQ==ji;aNDuwi-B2XFonI};AIqxRg{oaOjgF7Bu{-5t zmrTR!_k$C+7oj}MG)4(rFGi7r7-e8B88qEM90_ExAWA2SpindL@CVviJ&ookV9dor z0&(1r;#9OZq9DL33n*0xy&gguJAM#&F$6v}vXzY}Og$fmr7!LT-pTaJb>Ri+p}T`R z2Yuc3rq}gb`@-u-slI$G9N^qsKOFIQQ;}f*4vNU~PSg*hwqTM4)4Fqp64djlF+POs zohcG-S42IL;sCjt$tklFxYvvouNMu%v}PABK`a);N8@2*!|Nx5K&<3ej&WQCGj~$E zY~?L8cb^|Gh+^gHWrsY?r(W!?P!1$dti+YN#lXQ@n&s*&1=coIsi+@u?odXxonjScClKq zO#C9&WP-S_FPa{>sMvdIqH0#Dk}p;9Q&=q)D|We5K0_fBsrzx%N0HWOWV1thKZx$} zQ1zSfO_5?k{MK$X=pK&79 zqJieI*Y*c;vdg2%ww=|YwF(*-Q2#z&<5K{?g6ZT7P~MAMZreXHYPM+vm;i}++W>OY zlRmf2Mq_vT>h2zdirQ`0JN6UYCVm%JV3szF+`#YoxJ~5(gwF(?@P)`RyWk!iO}Uq* zvELkE*!awM8he}jn~iOGMQt~BZ?12R?h!w1`z`hXLDh0_!gwpIvo+; z_QgFJW!$g(vWk*rmvImAm?5&g%HfWs9wpPtm!L@r5qmzWI=GAn6LSVLTF!*HeRac; zBdn*w-FIQCMen1qufFe0sG`M;?ESrs^{w??+)bu2VW1Z;3vZsJVr%q8gRyW>HLo-} z9r=BSqfNcI%U^v?v0AqIMj8cM;^k4eW#32dP3LwB6)r|g?@VgR>d?qLm>nE+?%{Jp zS2nllo&Wx${_$V`d5+KFJdCe-dhqAZ&cAr_-@|1v{OX-fNBTboUgP+g|3b_hI6gl3 z-?Dg3^IwQr3r&-mn7Ohhi1~0?tZ6b_5-T0pe<9}DGEE*n24)?U|3a*3QlEzrOZ7>8 z8O*w6I@BKnvkuCCA!ZJlCS2RHn0=N1LafaTYog|83Nu%&PnN=(CTfnj-bGmHz&;Bx z*OqDW@G&s!p!_ewaQ)AD=6@m1bX((|nuigD`-Giu`s_X=1iQOi>zfC%p6dc zs{KODT$wW*)%~y#YqhKXVg6H?8Du)B`I2WnZ(Y-Y<0u`b@E0qe)gAiVu>5NG{O?bl z*WbPO5r6XY8n0u2$j@q>pOyc-clGrz|M$7%n*U31uE)eP>p|G(9L%B49A@~}Ij8Q= z@9?`EllNxv(c{eUm$???J-?`S=Bj)&T-UYIaGklTdNu#y3~ur)X821TX86lmbbk%Y zy;(dpAJ$fJQ~okn#*?vHA2QbK()3@Ox1Q-dL_GFUJ*I0i6<@1yO^-i^XMKi0$6K4R zE;;CY;G_C;mcNXX`Ky>?e?5*~7w672XRTDdJVy%4SlYRa{q>kSH$5hFP_rY?264W^ zE%TTAy1y1@s9`<}6_fixVa1c=`9gAe-v2by_8duF@9l7XCX{p^i+ezowh?A?%0r9=%If z=sxUy`V(!?4jsWB(J8%8H|Q4ZE!w6J=m~lj_F3Ae2K|N(U=L`IZqqmEdD!RaceG0% zQ4h99$Mjozj+(Gd3g{XY$%S=klPr3hUW0v&?$CAmn4X4xn!ZNAr&s9}*jMQ5Br9aXG*avivA{x-Au%FTi{U4tcS9JgY literal 0 HcmV?d00001 diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/MagicTeapot.glb b/examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/MagicTeapot.glb new file mode 100644 index 0000000000000000000000000000000000000000..22e5e16106d4681dfd4137a287a62829e0e5fedc GIT binary patch literal 24028 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 yg}$e0=u?`G{-$2&HyV!~qQlU`G!nfGvSVs^Ly literal 0 HcmV?d00001 diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Pillar.glb b/examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Pillar.glb new file mode 100644 index 0000000000000000000000000000000000000000..13a5b7d7f147e5351a5656183022088ff67a9f6d GIT binary patch literal 3984 zcmb_f+iu%N5Z$IpdP|$8ZQ561pBa^RNq%TzI}YO3whY@13K#)RNh^sBMG7S4+7Jxr z6Z%K)r}R^LX0@bfN|qC(M98`9%$X}GXAqvey2lv%`!QqM7mWRS+&-9cKTSo(H>P|b zB9Zu6obV0)+c1fvIIRufQrike)DuZ<_vd!)+^*|&+u|BO7fBk#5sb~c&aX6{b^*XQ zbj787<8;c!MV9zrr@TA#qk-rh&#m}g&`JE{5S=fWM8;I?TMgBY<0KQk?Kljf zMSJLA$|HXSNPZZEp`V~vg=RaBGCx4y%gV#hzr3k=E&MPWdWWcUGA^6$`-7l+BK&cj zmDRsTlT`G)Ae!gzWg^A-TNI%(S#&>&dxDbGHA6GsUZIFwGv&n?ZshL`L_881W=DlA z224c<*b@}GPxI6GQ7{O4TX7Gw<*$MZ(St{x!Mqn?;U4XdH)bdqC_=7-~< zzmImK8(Vuj2QQJQ_KG4XLI$8>Lv zX&@#__Padm`r&MNad+sqkWeYIvoI8Lr;MdtR&6UO!}PYxe+uLCvo5Ao_eg|L=>1&27BI z0bYT*f|tHZzmi8D5(kuWx{WV#fX!{Z^t~?Otl*0ravWt-=poB%rU=Q3Cr!C;RegR= z`n)H(jg+C!FOsV^be8L6FJ^P=CEw@sJmjgeA->!{nFH+PHB+Qo3*}I;ANc<0Z~@31K0lW`d>0PRSK=r?*$Wj{+9^Jdk@sqC4#-trGernn@uVT#l{l3g z$~LsOQYMO9?lG`xh(&s$be)l`&R>uYJOd?rl54oj^o(rOdG1%HWKVLH5?=0CresI* GP5K`W&EGBn literal 0 HcmV?d00001 diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Player.glb b/examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Player.glb new file mode 100644 index 0000000000000000000000000000000000000000..1546e5faae62a2e20537b025ca09b9f3b8f57861 GIT binary patch literal 28712 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 literal 0 HcmV?d00001 diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Unused_in_level_test.glb b/examples/bevy_gltf_blueprints/basic_scene_components/assets/models/library/Unused_in_level_test.glb new file mode 100644 index 0000000000000000000000000000000000000000..dff3f8768c2374731bf6edbeab88e8f39061eae4 GIT binary patch literal 5552 zcmb7GOLrqz5w0YJ437z~BoIhI>G1G`9;F|8gC#u9OvV|HZDf0R7}K<*mfV?Ex9Dzp ztTASC4tq8n7FlPP4cUc_?FB0iYtG>>uz^3og0HUn+E+7@t+B1rr`vVEs`_r#m3zU~ zt!Iholb4BJx?R{tdtoo#({^<&X(OsuGcuH5+aWW>F5sco-gCpA*V!CUEZ*AiydMC{zgDJ}9*fKM33y0v~GG%5oH@u8+e~7dHZTG`VuybAxox z*+8Acf$DnK?fLC3&mBamy1X3@ac+(uj`Md?FTwL&6p_U}S3it89w%w&=I#+nke?5= zvqQ-COe1xAUexzeoFf-?e%PEaN~mcIZa*4^Y0WaOK{M9HNB`l$vO7qIfwz!bIKZhH zdTvy^Zstur_mDqc%jx_empxG)=s7GFbIi8s?t3^4Ru-RFobyjjzvp*uL>;u1_Ra_u z_-&*p%b!|GJL(UjP_!8fan|kP1Uu0Xkv5S$`X!Br9u7Mjf?IA|Oxg~TwQbWVluISE zWLSl2+0^k1uJd`~F28J+;3By<<$Tr5VmV)|;>V~I3T3NQEFGbqbHxX7G(fH9c!0Ab zdpC$4@Q4js@m(*)y!h>AH0MwMCt11rbEjVOnDu?`$n!JQDh1#zp6;eS_@6PJ7tGnT|ys zPnlNh;@W}cvD@*7V$MtBIk)Ue!K@$+jH~|;+xQfapP}1%1IoK`+v)iGTFuh60P`R) zKh}VpbTr`ZSzd3h-E3|`sHoF%+yg(s-QxFfA!cF2$O-(ukGoYYK=@4Hfg85n`yNXi zvjgtL@x;4n8vCsw29HmCV|{aFYh`^+Tvu!B&AUsh<2%I@wDikW{O1okfOZ>#h+a;q^ zF4}gXY8yD>s{W)G!uNd$u){<7IK%ZR6jS`bkqLb7=CUnr2(<{@u$LBb(SAtw2^_*O;Bq;A~fFIWgyviQOq zlg+VtOgHa-^z>wG+bDA}N_hLcmaGmXc^fl{7Ru#vA6zB6v9d^AxzQ_+N+>O&YT>xMZI+=E1C6rbFW?FzX=wFT|V! z^Ft4j&zzWhL;7Ecm3d)JFi@T#or+7d9)8GHI_^*EsPXF@UM<;mI z8DovtkL5c1N&i`UXYu^+zkg#5DF27x6faQ&)=o12h7z~IF=zSn9?7HTrp8tGPVpD9 z)VQiY=W$u>s*i#fAJa!_wa7Jd&YX*ykFs|{=S%#BK3VOe7S&(Db(LSi6ZuT>7yOw& z<3)9E7MJ^^uGG6YYhCFR_K`hSSK}(0hHZ%D|kX5bzRL9I>_0ntGQ+VLWf!Y3g<*zh4Vzg+&`SB z><5Xte`F35{-{y*Jl88R&&A@Ddqb`_*jK4V-ajHP*7^PseUWhr|BQ3m-V>SgJbM)$ zc`i@X`&eAAi{nn@{}|6%4$x3y_LqB)6|C~e9uWPe=r3nMtk1dkEUu!1oLQ0oGxS;d z3O$3@3-la)gWiCBgT73kqp#8{u&>Zn`VxJI-h_RVzD8f5m#GWeC6`{J@6jIY9<}M~ z^i5iTU7#F&i}F;4Ez>pnHhrJof_;lL`T-TG3R|Tg(sxOx7&fLJU8f(>5$q8q^fsAP zhpkhE3UrHBVOOa^C0e8<*d?mbPiT#ruuXc0eoQxL1UsVN(=u()1K0=jJ9?My&^GKg z-KF>FS-Jvyg|=v&enva6JG4pn==1aX literal 0 HcmV?d00001 diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/assets/scene_components.bin b/examples/bevy_gltf_blueprints/basic_scene_components/assets/scene_components.bin new file mode 100644 index 0000000000000000000000000000000000000000..4c8e88c2ced4e80a39b7559325338639aea2d130 GIT binary patch literal 60756 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 literal 0 HcmV?d00001 diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/assets/scene_components.blend b/examples/bevy_gltf_blueprints/basic_scene_components/assets/scene_components.blend new file mode 100644 index 0000000000000000000000000000000000000000..d76780e0862ca7b9b2d7b1924e10750209495dff GIT binary patch literal 1349780 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

(6xZN`IW}h5zzHZQP!0)5qNz^CV+lL}ro-c&b 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 XPo~si&QHQWRF$Yuych}m, + + #[asset(key = "models", collection(typed, mapped))] + pub models: HashMap>, +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/assets/mod.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/assets/mod.rs new file mode 100644 index 0000000..a2c8b22 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/assets/mod.rs @@ -0,0 +1,35 @@ +pub mod assets_core; +pub use assets_core::*; + +pub mod assets_game; +pub use assets_game::*; + +use bevy::prelude::*; +use bevy_asset_loader::prelude::*; + +use crate::state::AppState; + +pub struct AssetsPlugin; +impl Plugin for AssetsPlugin { + fn build(&self, app: &mut App) { + app + // load core assets (ie assets needed in the main menu, and everywhere else before loading more assets in game) + .add_loading_state( + LoadingState::new(AppState::CoreLoading).continue_to_state(AppState::MenuRunning), + ) + .add_dynamic_collection_to_loading_state::<_, StandardDynamicAssetCollection>( + AppState::CoreLoading, + "assets_core.assets.ron", + ) + .add_collection_to_loading_state::<_, CoreAssets>(AppState::CoreLoading) + // load game assets + .add_loading_state( + LoadingState::new(AppState::AppLoading).continue_to_state(AppState::AppRunning), + ) + .add_dynamic_collection_to_loading_state::<_, StandardDynamicAssetCollection>( + AppState::AppLoading, + "assets_game.assets.ron", + ) + .add_collection_to_loading_state::<_, GameAssets>(AppState::AppLoading); + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/core/camera/camera_replace_proxies.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/camera/camera_replace_proxies.rs new file mode 100644 index 0000000..49b0c10 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/camera/camera_replace_proxies.rs @@ -0,0 +1,53 @@ +use bevy::core_pipeline::bloom::{BloomCompositeMode, BloomSettings}; +use bevy::core_pipeline::experimental::taa::TemporalAntiAliasBundle; +use bevy::core_pipeline::tonemapping::{DebandDither, Tonemapping}; +use bevy::pbr::ScreenSpaceAmbientOcclusionBundle; +use bevy::prelude::*; + +use super::CameraTrackingOffset; + + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +pub struct SSAOSettings; + +pub fn camera_replace_proxies( + mut commands: Commands, + mut added_cameras: Query<(Entity, &mut Camera, Option<&BloomSettings>, Option<&SSAOSettings>), (Added, With)>, + + added_bloom_settings : Query<&BloomSettings, Added>, + added_ssao_settings: Query<&SSAOSettings, Added>, // Move to camera +) { + for (entity, mut camera, bloom_settings, ssao_setting) in added_cameras.iter_mut() { + info!("detected added camera, updating proxy"); + camera.hdr = true; + commands + .entity(entity) + .insert(DebandDither::Enabled) + .insert(Tonemapping::BlenderFilmic) + ; + + // we only inject the scene_level bloom settings if there are no settings already on the Camera + if bloom_settings.is_none() { + for bloom_settings in added_bloom_settings.iter(){ + commands + .entity(entity) + .insert(BloomSettings { + intensity: bloom_settings.intensity, + composite_mode: BloomCompositeMode::Additive, + ..default() + }); + } + } + + if ssao_setting.is_none() { + for _ in added_ssao_settings.iter(){ + commands.insert_resource(Msaa::Off); // when using SSAO, you cannot use Msaa + + commands.entity(entity) + .insert(ScreenSpaceAmbientOcclusionBundle::default()) + .insert(TemporalAntiAliasBundle::default()); + } + } + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/core/camera/camera_tracking.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/camera/camera_tracking.rs new file mode 100644 index 0000000..62da84d --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/camera/camera_tracking.rs @@ -0,0 +1,58 @@ +use bevy::prelude::*; + +#[derive(Component, Reflect, Debug)] +#[reflect(Component)] +/// Component for cameras, with an offset from the Trackable target +/// +pub struct CameraTracking { + pub offset: Vec3, +} +impl Default for CameraTracking { + fn default() -> Self { + CameraTracking { + offset: Vec3::new(0.0, 6.0, 8.0), + } + } +} + +#[derive(Component, Reflect, Debug, Deref, DerefMut)] +#[reflect(Component)] +/// Component for cameras, with an offset from the Trackable target +pub struct CameraTrackingOffset(Vec3); +impl Default for CameraTrackingOffset { + fn default() -> Self { + CameraTrackingOffset(Vec3::new(0.0, 6.0, 8.0)) + } +} + +impl CameraTrackingOffset { + fn new(input: Vec3) -> Self { + CameraTrackingOffset(input) + } +} + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +/// Add this component to an entity if you want it to be tracked by a Camera +pub struct CameraTrackable; + +pub fn camera_track( + mut tracking_cameras: Query< + (&mut Transform, &CameraTrackingOffset), + ( + With, + With, + Without, + ), + >, + camera_tracked: Query<&Transform, With>, +) { + for (mut camera_transform, tracking_offset) in tracking_cameras.iter_mut() { + for tracked_transform in camera_tracked.iter() { + let target_position = tracked_transform.translation + tracking_offset.0; + let eased_position = camera_transform.translation.lerp(target_position, 0.1); + camera_transform.translation = eased_position; // + tracking.offset;// tracked_transform.translation + tracking.offset; + *camera_transform = camera_transform.looking_at(tracked_transform.translation, Vec3::Y); + } + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/core/camera/mod.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/camera/mod.rs new file mode 100644 index 0000000..ca95986 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/camera/mod.rs @@ -0,0 +1,25 @@ +pub mod camera_tracking; +pub use camera_tracking::*; + +pub mod camera_replace_proxies; +pub use camera_replace_proxies::*; + +use bevy::prelude::*; +use bevy_gltf_blueprints::GltfBlueprintsSet; + +pub struct CameraPlugin; +impl Plugin for CameraPlugin { + fn build(&self, app: &mut App) { + app.register_type::() + .register_type::() + .register_type::() + .register_type::() + .add_systems( + Update, + ( + camera_replace_proxies.after(GltfBlueprintsSet::AfterSpawn), + camera_track, + ), + ); + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/core/lighting/lighting_replace_proxies.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/lighting/lighting_replace_proxies.rs new file mode 100644 index 0000000..a92db65 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/lighting/lighting_replace_proxies.rs @@ -0,0 +1,59 @@ +use bevy::prelude::*; + +use bevy::pbr::{CascadeShadowConfig, CascadeShadowConfigBuilder, DirectionalLightShadowMap}; + + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +pub struct AmbientLightSettings {pub color: Color, pub brightness: f32} + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +pub struct ShadowmapSettings {pub size: usize} + + +pub fn lighting_replace_proxies( + mut added_dirights: Query<(Entity, &mut DirectionalLight), Added>, + mut added_spotlights: Query<&mut SpotLight, Added>, + mut added_pointlights: Query<&mut PointLight, Added>, + + added_ambient_proxies : Query<&AmbientLightSettings, Added>, + added_shadowmap_settings : Query<&ShadowmapSettings, Added>, + + mut commands: Commands, +) { + for (entity, mut light) in added_dirights.iter_mut() { + light.illuminance *= 5.0; + light.shadows_enabled = true; + let shadow_config: CascadeShadowConfig = CascadeShadowConfigBuilder { + first_cascade_far_bound: 15.0, + maximum_distance: 135.0, + ..default() + } + .into(); + commands.entity(entity).insert(shadow_config); + } + for mut light in added_spotlights.iter_mut() { + light.shadows_enabled = true; + } + + for mut light in added_pointlights.iter_mut() { + light.intensity *= 0.001; // arbitrary/ eyeballed to match the levels of Blender + light.shadows_enabled = true; + } + + + for setting in added_shadowmap_settings.iter() { + commands.insert_resource(DirectionalLightShadowMap { size: setting.size }); + } + + for ambient in added_ambient_proxies.iter(){ + commands.insert_resource(AmbientLight { + color: ambient.color, + brightness: ambient.brightness, + }); + // FIXME: does this belong here ? + commands.insert_resource(ClearColor(ambient.color * ambient.brightness)); + } + +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/core/lighting/mod.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/lighting/mod.rs new file mode 100644 index 0000000..50177de --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/lighting/mod.rs @@ -0,0 +1,19 @@ +mod lighting_replace_proxies; +use lighting_replace_proxies::*; + +use bevy::pbr::NotShadowCaster; +use bevy::prelude::*; + +pub struct LightingPlugin; +impl Plugin for LightingPlugin { + fn build(&self, app: &mut App) { + app + .register_type::() + .register_type::() + // FIXME: adding these since they are missing + .register_type::() + + .add_systems(PreUpdate, lighting_replace_proxies) + ; + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/core/mod.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/mod.rs new file mode 100644 index 0000000..9c38fa7 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/mod.rs @@ -0,0 +1,31 @@ +pub mod camera; +pub use camera::*; + +pub mod lighting; +pub use lighting::*; + +pub mod relationships; +pub use relationships::*; + +pub mod physics; +pub use physics::*; + +use bevy::prelude::*; +use bevy_gltf_blueprints::*; + +pub struct CorePlugin; +impl Plugin for CorePlugin { + fn build(&self, app: &mut App) { + app.add_plugins(( + LightingPlugin, + CameraPlugin, + PhysicsPlugin, + BlueprintsPlugin { + library_folder: "models/library".into(), + format: GltfFormat::GLB, + aabbs: true, + ..Default::default() + }, + )); + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/controls.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/controls.rs new file mode 100644 index 0000000..a138d7c --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/controls.rs @@ -0,0 +1,25 @@ +use bevy::{ + ecs::system::Res, + input::{keyboard::KeyCode, Input}, + prelude::{info, ResMut}, +}; +use bevy_rapier3d::{prelude::RapierConfiguration, render::DebugRenderContext}; + +pub fn pause_physics(mut physics_config: ResMut) { + info!("pausing physics"); + physics_config.physics_pipeline_active = false; +} + +pub fn resume_physics(mut physics_config: ResMut) { + info!("unpausing physics"); + physics_config.physics_pipeline_active = true; +} + +pub fn toggle_physics_debug( + mut debug_config: ResMut, + keycode: Res>, +) { + if keycode.just_pressed(KeyCode::D) { + debug_config.enabled = !debug_config.enabled; + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/mod.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/mod.rs new file mode 100644 index 0000000..3b64090 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/mod.rs @@ -0,0 +1,34 @@ +pub mod physics_replace_proxies; +pub use physics_replace_proxies::*; + +pub mod utils; + +pub mod controls; +pub use controls::*; + +use crate::state::GameState; +use bevy::prelude::*; +use bevy_gltf_blueprints::GltfBlueprintsSet; +use bevy_rapier3d::{ + prelude::{NoUserData, RapierPhysicsPlugin}, + render::RapierDebugRenderPlugin, +}; + +pub struct PhysicsPlugin; +impl Plugin for PhysicsPlugin { + fn build(&self, app: &mut App) { + app.add_plugins(( + RapierPhysicsPlugin::::default(), + RapierDebugRenderPlugin::default(), + )) + .register_type::() + .register_type::() + .add_systems( + Update, + physics_replace_proxies.after(GltfBlueprintsSet::AfterSpawn), + ) + .add_systems(Update, toggle_physics_debug) + .add_systems(OnEnter(GameState::InGame), resume_physics) + .add_systems(OnExit(GameState::InGame), pause_physics); + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/physics_replace_proxies.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/physics_replace_proxies.rs new file mode 100644 index 0000000..b91462c --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/physics_replace_proxies.rs @@ -0,0 +1,101 @@ +use bevy::prelude::*; +// use bevy::render::primitives::Aabb; +use bevy_rapier3d::geometry::Collider as RapierCollider; +use bevy_rapier3d::prelude::{ActiveCollisionTypes, ActiveEvents, ComputedColliderShape}; + +use super::utils::*; + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +pub enum Collider { + Ball(f32), + Cuboid(Vec3), + Capsule(Vec3, Vec3, f32), + #[default] + Mesh, +} + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +pub enum AutoAABBCollider { + #[default] + Cuboid, + Ball, + Capsule, +} + +// replaces all physics stand-ins with the actual rapier types +pub fn physics_replace_proxies( + meshes: Res>, + mesh_handles: Query<&Handle>, + mut proxy_colliders: Query< + (Entity, &Collider, &Name, &mut Visibility), + (Without, Added), + >, + // needed for tri meshes + children: Query<&Children>, + + mut commands: Commands, +) { + for proxy_colider in proxy_colliders.iter_mut() { + let (entity, collider_proxy, name, mut visibility) = proxy_colider; + // we hide the collider meshes: perhaps they should be removed altogether once processed ? + if name.ends_with("_collider") || name.ends_with("_sensor") { + *visibility = Visibility::Hidden; + } + + let mut rapier_collider: RapierCollider; + match collider_proxy { + Collider::Ball(radius) => { + info!("generating collider from proxy: ball"); + rapier_collider = RapierCollider::ball(*radius); + commands.entity(entity) + .insert(rapier_collider) + .insert(ActiveEvents::COLLISION_EVENTS) // FIXME: this is just for demo purposes !!! + ; + } + Collider::Cuboid(size) => { + info!("generating collider from proxy: cuboid"); + rapier_collider = RapierCollider::cuboid(size.x, size.y, size.z); + commands.entity(entity) + .insert(rapier_collider) + .insert(ActiveEvents::COLLISION_EVENTS) // FIXME: this is just for demo purposes !!! + ; + } + Collider::Capsule(a, b, radius) => { + info!("generating collider from proxy: capsule"); + rapier_collider = RapierCollider::capsule(*a, *b, *radius); + commands.entity(entity) + .insert(rapier_collider) + .insert(ActiveEvents::COLLISION_EVENTS) // FIXME: this is just for demo purposes !!! + ; + } + Collider::Mesh => { + info!("generating collider from proxy: mesh"); + for (_, collider_mesh) in + Mesh::search_in_children(entity, &children, &meshes, &mesh_handles) + { + rapier_collider = RapierCollider::from_bevy_mesh( + collider_mesh, + &ComputedColliderShape::TriMesh, + ) + .unwrap(); + commands + .entity(entity) + .insert(rapier_collider) + // FIXME: this is just for demo purposes !!! + .insert( + ActiveCollisionTypes::default() + | ActiveCollisionTypes::KINEMATIC_STATIC + | ActiveCollisionTypes::STATIC_STATIC + | ActiveCollisionTypes::DYNAMIC_STATIC, + ) + .insert(ActiveEvents::COLLISION_EVENTS); + // .insert(ActiveEvents::COLLISION_EVENTS) + // break; + // RapierCollider::convex_hull(points) + } + } + } + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/utils.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/utils.rs new file mode 100644 index 0000000..7886710 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/physics/utils.rs @@ -0,0 +1,175 @@ +use bevy::prelude::*; +use bevy::render::mesh::{MeshVertexAttributeId, PrimitiveTopology, VertexAttributeValues}; +// TAKEN VERBATIB FROM https://github.com/janhohenheim/foxtrot/blob/src/util/trait_extension.rs + +pub(crate) trait Vec3Ext: Copy { + fn is_approx_zero(self) -> bool; + fn split(self, up: Vec3) -> SplitVec3; +} +impl Vec3Ext for Vec3 { + #[inline] + fn is_approx_zero(self) -> bool { + self.length_squared() < 1e-5 + } + + #[inline] + fn split(self, up: Vec3) -> SplitVec3 { + let vertical = up * self.dot(up); + let horizontal = self - vertical; + SplitVec3 { + vertical, + horizontal, + } + } +} + +#[derive(Debug, Clone, Copy, PartialEq)] +pub(crate) struct SplitVec3 { + pub(crate) vertical: Vec3, + pub(crate) horizontal: Vec3, +} + +pub(crate) trait Vec2Ext: Copy { + fn is_approx_zero(self) -> bool; + fn x0y(self) -> Vec3; +} +impl Vec2Ext for Vec2 { + #[inline] + fn is_approx_zero(self) -> bool { + self.length_squared() < 1e-5 + } + + #[inline] + fn x0y(self) -> Vec3 { + Vec3::new(self.x, 0., self.y) + } +} + +pub(crate) trait MeshExt { + fn transform(&mut self, transform: Transform); + fn transformed(&self, transform: Transform) -> Mesh; + fn read_coords_mut(&mut self, id: impl Into) -> &mut Vec<[f32; 3]>; + fn search_in_children<'a>( + parent: Entity, + children: &'a Query<&Children>, + meshes: &'a Assets, + mesh_handles: &'a Query<&Handle>, + ) -> Vec<(Entity, &'a Mesh)>; +} + +impl MeshExt for Mesh { + fn transform(&mut self, transform: Transform) { + for coords in self.read_coords_mut(Mesh::ATTRIBUTE_POSITION.clone()) { + let vec3 = (*coords).into(); + let transformed = transform.transform_point(vec3); + *coords = transformed.into(); + } + for normal in self.read_coords_mut(Mesh::ATTRIBUTE_NORMAL.clone()) { + let vec3 = (*normal).into(); + let transformed = transform.rotation.mul_vec3(vec3); + *normal = transformed.into(); + } + } + + fn transformed(&self, transform: Transform) -> Mesh { + let mut mesh = self.clone(); + mesh.transform(transform); + mesh + } + + fn read_coords_mut(&mut self, id: impl Into) -> &mut Vec<[f32; 3]> { + // Guaranteed by Bevy for the current usage + match self + .attribute_mut(id) + .expect("Failed to read unknown mesh attribute") + { + VertexAttributeValues::Float32x3(values) => values, + // Guaranteed by Bevy for the current usage + _ => unreachable!(), + } + } + + fn search_in_children<'a>( + parent: Entity, + children_query: &'a Query<&Children>, + meshes: &'a Assets, + mesh_handles: &'a Query<&Handle>, + ) -> Vec<(Entity, &'a Mesh)> { + if let Ok(children) = children_query.get(parent) { + let mut result: Vec<_> = children + .iter() + .filter_map(|entity| mesh_handles.get(*entity).ok().map(|mesh| (*entity, mesh))) + .map(|(entity, mesh_handle)| { + ( + entity, + meshes + .get(mesh_handle) + .expect("Failed to get mesh from handle"), + ) + }) + .map(|(entity, mesh)| { + assert_eq!(mesh.primitive_topology(), PrimitiveTopology::TriangleList); + (entity, mesh) + }) + .collect(); + let mut inner_result = children + .iter() + .flat_map(|entity| { + Self::search_in_children(*entity, children_query, meshes, mesh_handles) + }) + .collect(); + result.append(&mut inner_result); + result + } else { + Vec::new() + } + } +} + +pub(crate) trait F32Ext: Copy { + fn is_approx_zero(self) -> bool; + fn squared(self) -> f32; + fn lerp(self, other: f32, ratio: f32) -> f32; +} + +impl F32Ext for f32 { + #[inline] + fn is_approx_zero(self) -> bool { + self.abs() < 1e-5 + } + + #[inline] + fn squared(self) -> f32 { + self * self + } + + #[inline] + fn lerp(self, other: f32, ratio: f32) -> f32 { + self.mul_add(1. - ratio, other * ratio) + } +} + +pub(crate) trait TransformExt: Copy { + fn horizontally_looking_at(self, target: Vec3, up: Vec3) -> Transform; + fn lerp(self, other: Transform, ratio: f32) -> Transform; +} + +impl TransformExt for Transform { + fn horizontally_looking_at(self, target: Vec3, up: Vec3) -> Transform { + let direction = target - self.translation; + let horizontal_direction = direction - up * direction.dot(up); + let look_target = self.translation + horizontal_direction; + self.looking_at(look_target, up) + } + + fn lerp(self, other: Transform, ratio: f32) -> Transform { + let translation = self.translation.lerp(other.translation, ratio); + let rotation = self.rotation.slerp(other.rotation, ratio); + let scale = self.scale.lerp(other.scale, ratio); + Transform { + translation, + rotation, + scale, + } + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/core/relationships/mod.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/relationships/mod.rs new file mode 100644 index 0000000..4128453 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/relationships/mod.rs @@ -0,0 +1,11 @@ +pub mod relationships_insert_dependant_components; +pub use relationships_insert_dependant_components::*; + +use bevy::prelude::*; + +pub struct EcsRelationshipsPlugin; +impl Plugin for EcsRelationshipsPlugin { + fn build(&self, app: &mut App) { + app; + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/core/relationships/relationships_insert_dependant_components.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/relationships/relationships_insert_dependant_components.rs new file mode 100644 index 0000000..4e9ad17 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/core/relationships/relationships_insert_dependant_components.rs @@ -0,0 +1,15 @@ +use bevy::prelude::*; + +pub fn insert_dependant_component< + Dependant: Component, + Dependency: Component + std::default::Default, +>( + mut commands: Commands, + entities_without_depency: Query<(Entity, &Name), (With, Without)>, +) { + for (entity, name) in entities_without_depency.iter() { + let name = name.clone().to_string(); + commands.entity(entity).insert(Dependency::default()); + warn!("found an entity called {} with a {} component but without an {}, please check your assets", name.clone(), std::any::type_name::(), std::any::type_name::()); + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/game/in_game.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/game/in_game.rs new file mode 100644 index 0000000..f98f8c3 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/game/in_game.rs @@ -0,0 +1,81 @@ +use bevy::prelude::*; + +use crate::{ + assets::GameAssets, + state::{GameState, InAppRunning}, +}; +use bevy_gltf_blueprints::{BluePrintBundle, BlueprintName, GameWorldTag}; + +use bevy_rapier3d::prelude::Velocity; +use rand::Rng; + +pub fn setup_game( + mut commands: Commands, + game_assets: Res, + models: Res>, + mut next_game_state: ResMut>, +) { + println!("setting up all stuff"); + // here we actually spawn our game world/level + + commands.spawn(( + SceneBundle { + // note: because of this issue https://github.com/bevyengine/bevy/issues/10436, "world" is now a gltf file instead of a scene + scene: models + .get(game_assets.world.id()) + .expect("main level should have been loaded") + .scenes[0] + .clone(), + ..default() + }, + bevy::prelude::Name::from("world"), + GameWorldTag, + InAppRunning, + )); + + next_game_state.set(GameState::InGame) +} + +pub fn spawn_test( + keycode: Res>, + mut commands: Commands, + + mut game_world: Query<(Entity, &Children), With>, +) { + if keycode.just_pressed(KeyCode::T) { + let world = game_world.single_mut(); + let world = world.1[0]; + + let mut rng = rand::thread_rng(); + let range = 5.5; + let x: f32 = rng.gen_range(-range..range); + let y: f32 = rng.gen_range(-range..range); + + let mut rng = rand::thread_rng(); + let range = 0.8; + let vel_x: f32 = rng.gen_range(-range..range); + let vel_y: f32 = rng.gen_range(2.0..2.5); + let vel_z: f32 = rng.gen_range(-range..range); + + let name_index: u64 = rng.gen(); + + let new_entity = commands + .spawn(( + BluePrintBundle { + blueprint: BlueprintName("Health_Pickup".to_string()), + transform: TransformBundle::from_transform(Transform::from_xyz(x, 2.0, y)), + ..Default::default() + }, + bevy::prelude::Name::from(format!("test{}", name_index)), + // BlueprintName("Health_Pickup".to_string()), + // SpawnHere, + // TransformBundle::from_transform(Transform::from_xyz(x, 2.0, y)), + Velocity { + linvel: Vec3::new(vel_x, vel_y, vel_z), + angvel: Vec3::new(0.0, 0.0, 0.0), + }, + )) + .id(); + commands.entity(world).add_child(new_entity); + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/game/in_main_menu.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/game/in_main_menu.rs new file mode 100644 index 0000000..cecd13a --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/game/in_main_menu.rs @@ -0,0 +1,113 @@ +use bevy::prelude::*; + +use crate::state::{AppState, GameState, InMainMenu}; + +pub fn setup_main_menu(mut commands: Commands) { + commands.spawn((Camera2dBundle::default(), InMainMenu)); + + commands.spawn(( + TextBundle::from_section( + "SOME GAME TITLE !!", + TextStyle { + //font: asset_server.load("fonts/FiraMono-Medium.ttf"), + font_size: 18.0, + color: Color::WHITE, + ..Default::default() + }, + ) + .with_style(Style { + position_type: PositionType::Absolute, + top: Val::Px(100.0), + left: Val::Px(200.0), + ..default() + }), + InMainMenu, + )); + + commands.spawn(( + TextBundle::from_section( + "New Game (press Enter to start, press T once the game is started for demo spawning)", + TextStyle { + //font: asset_server.load("fonts/FiraMono-Medium.ttf"), + font_size: 18.0, + color: Color::WHITE, + ..Default::default() + }, + ) + .with_style(Style { + position_type: PositionType::Absolute, + top: Val::Px(200.0), + left: Val::Px(200.0), + ..default() + }), + InMainMenu, + )); + + /* + commands.spawn(( + TextBundle::from_section( + "Load Game", + TextStyle { + //font: asset_server.load("fonts/FiraMono-Medium.ttf"), + font_size: 18.0, + color: Color::WHITE, + ..Default::default() + }, + ) + .with_style(Style { + position_type: PositionType::Absolute, + top: Val::Px(250.0), + left: Val::Px(200.0), + ..default() + }), + InMainMenu + )); + + commands.spawn(( + TextBundle::from_section( + "Exit Game", + TextStyle { + //font: asset_server.load("fonts/FiraMono-Medium.ttf"), + font_size: 18.0, + color: Color::WHITE, + ..Default::default() + }, + ) + .with_style(Style { + position_type: PositionType::Absolute, + top: Val::Px(300.0), + left: Val::Px(200.0), + ..default() + }), + InMainMenu + ));*/ +} + +pub fn teardown_main_menu(bla: Query>, mut commands: Commands) { + for bli in bla.iter() { + commands.entity(bli).despawn_recursive(); + } +} + +pub fn main_menu( + keycode: Res>, + + mut next_app_state: ResMut>, + // mut next_game_state: ResMut>, + // mut save_requested_events: EventWriter, + // mut load_requested_events: EventWriter, +) { + if keycode.just_pressed(KeyCode::Return) { + next_app_state.set(AppState::AppLoading); + // next_game_state.set(GameState::None); + } + + if keycode.just_pressed(KeyCode::L) { + next_app_state.set(AppState::AppLoading); + // load_requested_events.send(LoadRequest { path: "toto".into() }) + } + + if keycode.just_pressed(KeyCode::S) { + // save_requested_events.send(SaveRequest { path: "toto".into() }) + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/game/mod.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/game/mod.rs new file mode 100644 index 0000000..a650314 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/game/mod.rs @@ -0,0 +1,115 @@ +pub mod in_game; +pub use in_game::*; + +pub mod in_main_menu; +pub use in_main_menu::*; + +pub mod picking; +pub use picking::*; + +use crate::{ + insert_dependant_component, + state::{AppState, GameState}, +}; +use bevy::prelude::*; +use bevy_rapier3d::prelude::*; + +// this file is just for demo purposes, contains various types of components, systems etc + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +pub enum SoundMaterial { + Metal, + Wood, + Rock, + Cloth, + Squishy, + #[default] + None, +} + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +/// Demo marker component +pub struct Player; + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +/// Demo component showing auto injection of components +pub struct ShouldBeWithPlayer; + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +/// Demo marker component +pub struct Interactible; + +fn player_move_demo( + keycode: Res>, + mut players: Query<&mut Transform, With>, +) { + let speed = 0.2; + if let Ok(mut player) = players.get_single_mut() { + if keycode.pressed(KeyCode::Left) { + player.translation.x += speed; + } + if keycode.pressed(KeyCode::Right) { + player.translation.x -= speed; + } + + if keycode.pressed(KeyCode::Up) { + player.translation.z += speed; + } + if keycode.pressed(KeyCode::Down) { + player.translation.z -= speed; + } + } +} + +// collision tests/debug +pub fn test_collision_events( + mut collision_events: EventReader, + mut contact_force_events: EventReader, +) { + for collision_event in collision_events.read() { + println!("collision"); + match collision_event { + CollisionEvent::Started(_entity1, _entity2, _) => { + println!("collision started") + } + CollisionEvent::Stopped(_entity1, _entity2, _) => { + println!("collision ended") + } + } + } + + for contact_force_event in contact_force_events.read() { + println!("Received contact force event: {:?}", contact_force_event); + } +} + +pub struct GamePlugin; +impl Plugin for GamePlugin { + fn build(&self, app: &mut App) { + app.add_plugins(PickingPlugin) + .register_type::() + .register_type::() + .register_type::() + // little helper utility, to automatically inject components that are dependant on an other component + // ie, here an Entity with a Player component should also always have a ShouldBeWithPlayer component + // you get a warning if you use this, as I consider this to be stop-gap solution (usually you should have either a bundle, or directly define all needed components) + .add_systems( + Update, + ( + // insert_dependant_component::, + player_move_demo, //.run_if(in_state(AppState::Running)), + // test_collision_events + spawn_test, + ) + .run_if(in_state(GameState::InGame)), + ) + .add_systems(OnEnter(AppState::MenuRunning), setup_main_menu) + .add_systems(OnExit(AppState::MenuRunning), teardown_main_menu) + .add_systems(Update, main_menu.run_if(in_state(AppState::MenuRunning))) + .add_systems(OnEnter(AppState::AppRunning), setup_game); + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/game/picking.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/game/picking.rs new file mode 100644 index 0000000..6731bbb --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/game/picking.rs @@ -0,0 +1,34 @@ +use super::Player; +use bevy::prelude::*; +use bevy_gltf_blueprints::GltfBlueprintsSet; + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +pub struct Pickable; + +// very simple, crude picking (as in picking up objects) implementation + +pub fn picking( + players: Query<&GlobalTransform, With>, + pickables: Query<(Entity, &GlobalTransform), With>, + mut commands: Commands, +) { + for player_transforms in players.iter() { + for (pickable, pickable_transforms) in pickables.iter() { + let distance = player_transforms + .translation() + .distance(pickable_transforms.translation()); + if distance < 2.5 { + commands.entity(pickable).despawn_recursive(); + } + } + } +} + +pub struct PickingPlugin; +impl Plugin for PickingPlugin { + fn build(&self, app: &mut App) { + app.register_type::() + .add_systems(Update, (picking.after(GltfBlueprintsSet::AfterSpawn),)); + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/main.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/main.rs new file mode 100644 index 0000000..6edba33 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/main.rs @@ -0,0 +1,33 @@ +use bevy::prelude::*; +use bevy_editor_pls::prelude::*; + +mod core; +use crate::core::*; + +pub mod assets; +use assets::*; + +pub mod state; +use state::*; + +mod game; +use game::*; + +mod test_components; +use test_components::*; + +fn main() { + App::new() + .add_plugins(( + DefaultPlugins.set(AssetPlugin::default()), + // editor + EditorPlugin::default(), + // our custom plugins + StatePlugin, + AssetsPlugin, + CorePlugin, // reusable plugins + GamePlugin, // specific to our game + ComponentsTestPlugin, // Showcases different type of components /structs + )) + .run(); +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/state.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/state.rs new file mode 100644 index 0000000..8e983d9 --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/state.rs @@ -0,0 +1,54 @@ +use bevy::app::AppExit; +use bevy::prelude::*; + +#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, Default, States)] +pub enum AppState { + #[default] + CoreLoading, + MenuRunning, + AppLoading, + AppRunning, + AppEnding, + + // FIXME: not sure + LoadingGame, +} + +#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, Default, States)] +pub enum GameState { + #[default] + None, + + InMenu, + InGame, + + InGameOver, + + InSaving, + InLoading, +} + +// tag components for all entities within a certain state (for despawning them if needed) , FIXME: seems kinda hack-ish +#[derive(Component)] +pub struct InCoreLoading; +#[derive(Component, Default)] +pub struct InMenuRunning; +#[derive(Component)] +pub struct InAppLoading; +#[derive(Component)] +pub struct InAppRunning; + +// components for tagging in game vs in game menu stuff +#[derive(Component, Default)] +pub struct InMainMenu; +#[derive(Component, Default)] +pub struct InMenu; +#[derive(Component, Default)] +pub struct InGame; + +pub struct StatePlugin; +impl Plugin for StatePlugin { + fn build(&self, app: &mut App) { + app.add_state::().add_state::(); + } +} diff --git a/examples/bevy_gltf_blueprints/basic_scene_components/src/test_components.rs b/examples/bevy_gltf_blueprints/basic_scene_components/src/test_components.rs new file mode 100644 index 0000000..d0e6fbd --- /dev/null +++ b/examples/bevy_gltf_blueprints/basic_scene_components/src/test_components.rs @@ -0,0 +1,80 @@ +use bevy::prelude::*; + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +struct UnitTest; + +#[derive(Component, Reflect, Default, Debug, Deref, DerefMut)] +#[reflect(Component)] +struct TuppleTestF32(f32); + +#[derive(Component, Reflect, Default, Debug, Deref, DerefMut)] +#[reflect(Component)] +struct TuppleTestU64(u64); + +#[derive(Component, Reflect, Default, Debug, Deref, DerefMut)] +#[reflect(Component)] +pub struct TuppleTestStr(String); + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +struct TuppleTest2(f32, u64, String); + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +struct TuppleTestBool(bool); + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +struct TuppleVec2(Vec2); + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +struct TuppleVec3(Vec3); + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +struct TuppleVec(Vec); + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +struct TuppleTestColor(Color); + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +struct BasicTest { + a: f32, + b: u64, + c: String, +} + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +pub enum EnumTest { + Metal, + Wood, + Rock, + Cloth, + Squishy, + #[default] + None, +} + +pub struct ComponentsTestPlugin; +impl Plugin for ComponentsTestPlugin { + fn build(&self, app: &mut App) { + app.register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::>(); + } +} diff --git a/tools/gltf_auto_export/README.md b/tools/gltf_auto_export/README.md index 4925f7c..fcfdab1 100644 --- a/tools/gltf_auto_export/README.md +++ b/tools/gltf_auto_export/README.md @@ -44,6 +44,9 @@ This [Blender addon](./) - export folder: root folder to export models too + - export scene settings: exports "global"/scene settings like ambient color, bloom, ao, etc + + This automatically generates additional components at the scene level - pick your main (level) scenes and library scenes (see the chapter about Blueprints below) - click in the scene picker & select your scene diff --git a/tools/gltf_auto_export/__init__.py b/tools/gltf_auto_export/__init__.py index 2dffde7..2cb83e3 100644 --- a/tools/gltf_auto_export/__init__.py +++ b/tools/gltf_auto_export/__init__.py @@ -1,7 +1,7 @@ bl_info = { "name": "gltf_auto_export", "author": "kaosigh", - "version": (0, 6, 0), + "version": (0, 7, 0), "blender": (3, 4, 0), "location": "File > Import-Export", "description": "glTF/glb auto-export", diff --git a/tools/gltf_auto_export/auto_export.py b/tools/gltf_auto_export/auto_export.py index 928138e..894f23b 100644 --- a/tools/gltf_auto_export/auto_export.py +++ b/tools/gltf_auto_export/auto_export.py @@ -7,6 +7,8 @@ from .helpers_collections import (get_exportable_collections, get_collections_pe from .helpers_export import (export_main_scene, export_blueprints_from_collections) from .helpers import (check_if_blueprints_exist, check_if_blueprint_on_disk) from .materials import cleanup_materials, clear_material_info, clear_materials_scene, export_materials, generate_materials_scenes, get_all_materials +from .scene_components import upsert_scene_components + from .config import scene_key """Main function""" @@ -46,6 +48,8 @@ def auto_export(changes_per_scene, changed_export_parameters): print("error setting preferences from saved settings", error) bpy.context.window_manager['__gltf_auto_export_initialized'] = True + + # have the export parameters (not auto export, just gltf export) have changed: if yes (for example switch from glb to gltf, compression or not, animations or not etc), we need to re-export everything print ("changed_export_parameters", changed_export_parameters) try: @@ -58,12 +62,18 @@ def auto_export(changes_per_scene, changed_export_parameters): export_output_folder = getattr(addon_prefs,"export_output_folder") export_materials_library = getattr(addon_prefs,"export_materials_library") + export_scene_settings = getattr(addon_prefs,"export_scene_settings") + [main_scene_names, level_scenes, library_scene_names, library_scenes] = get_scenes(addon_prefs) print("main scenes", main_scene_names, "library_scenes", library_scene_names) print("export_output_folder", export_output_folder) + if export_scene_settings: + # inject/ update scene components + upsert_scene_components(bpy.context.scene, world = bpy.context.scene.world) + # export everything everytime if export_blueprints: print("EXPORTING") @@ -125,7 +135,8 @@ def auto_export(changes_per_scene, changed_export_parameters): # first export any main/level/world scenes print("export MAIN scenes") for scene_name in main_scene_names: - do_export_main_scene = changed_export_parameters or (scene_name in changes_per_scene.keys() and len(changes_per_scene[scene_name].keys()) > 0) or not check_if_blueprint_on_disk(scene_name, export_levels_path, gltf_extension) + # we have more relaxed rules to determine if the main scenes have changed : any change is ok, (allows easier handling of changes, render settings etc) + do_export_main_scene = changed_export_parameters or scene_name in changes_per_scene.keys() or not check_if_blueprint_on_disk(scene_name, export_levels_path, gltf_extension) if do_export_main_scene: print(" exporting scene:", scene_name) export_main_scene(bpy.data.scenes[scene_name], folder_path, addon_prefs, collections) diff --git a/tools/gltf_auto_export/docs/blender_addon_use3.png b/tools/gltf_auto_export/docs/blender_addon_use3.png index 1df7aa99fe2606796bbde4bd7092996e70066058..e704e1f192692b652dd0f2bd3551ee96c1f53ebe 100644 GIT binary patch literal 18866 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