From a9a8166b462797e7e7aec10b48fadbb7e028c486 Mon Sep 17 00:00:00 2001 From: WanderingPenwing Date: Sat, 5 Oct 2024 08:41:37 +0200 Subject: [PATCH] first commit --- .gitignore | 1 + Cargo.lock | 4305 +++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 15 + README.md | 1 + assets/test.png | Bin 0 -> 85129 bytes flake.lock | 110 ++ flake.nix | 90 + src/main.rs | 57 + 8 files changed, 4579 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 README.md create mode 100644 assets/test.png create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..f36326b --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,4305 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ab_glyph" +version = "0.2.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79faae4620f45232f599d9bc7b290f88247a0834162c4495ab2f02d60004adfb" +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.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cf780eb737f2d4a49ffbd512324d53ad089070f813f7be7f99dbd5123a7f448" + +[[package]] +name = "accesskit_consumer" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bdfa1638ddd6eb9c752def95568df8b3ad832df252e9156d2eb783b201ca8a9" +dependencies = [ + "accesskit", + "immutable-chunkmap", +] + +[[package]] +name = "accesskit_macos" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c236a84ff1111defc280cee755eaa953d0b24398786851b9d28322c6d3bb1ebd" +dependencies = [ + "accesskit", + "accesskit_consumer", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", +] + +[[package]] +name = "accesskit_windows" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d7f43d24b16b3e76bef248124fbfd2493c3a9860edb5aae1010c890e826de5e" +dependencies = [ + "accesskit", + "accesskit_consumer", + "paste", + "static_assertions", + "windows 0.54.0", +] + +[[package]] +name = "accesskit_winit" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "755535e6bf711a42dac28b888b884b10fc00ff4010d9d3bd871c5f5beae5aa78" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_windows", + "raw-window-handle", + "winit", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "alsa" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" +dependencies = [ + "alsa-sys", + "bitflags 2.6.0", + "cfg-if", + "libc", +] + +[[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.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +dependencies = [ + "android-properties", + "bitflags 2.6.0", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk 0.9.0", + "ndk-context", + "ndk-sys 0.6.0+11769913", + "num_enum", + "thiserror", +] + +[[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 = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + +[[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 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener 5.3.1", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[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.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bevy" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "043c9ad4b6fc4ca52d779873a8ca792a4e37842d07fce95363c9e17e36a1d8a0" +dependencies = [ + "bevy_dylib", + "bevy_internal", +] + +[[package]] +name = "bevy-test" +version = "0.1.0" +dependencies = [ + "bevy", +] + +[[package]] +name = "bevy_a11y" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a976cb539d6a5a3ff579cdb78187a6bcfbffa7e8224ea28f23d8b983d9389" +dependencies = [ + "accesskit", + "bevy_app", + "bevy_derive", + "bevy_ecs", +] + +[[package]] +name = "bevy_animation" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93aef7d21a0342c24b05059493aa31d58f1798d34a2236569a8789b74df5a475" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_time", + "bevy_transform", + "bevy_utils", + "blake3", + "fixedbitset 0.5.7", + "petgraph", + "ron", + "serde", + "thiserror", + "thread_local", + "uuid", +] + +[[package]] +name = "bevy_app" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5361d0f8a8677a5d0102cfe7321a7ecd2a8b9a4f887ce0dde1059311cf9cd42" +dependencies = [ + "bevy_derive", + "bevy_ecs", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "console_error_panic_hook", + "downcast-rs", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60ec5ea257e1ebd3d411f669e29acf60beb715bebc7e1f374c17f49cd3aad46c" +dependencies = [ + "async-broadcast", + "async-fs", + "async-lock", + "bevy_app", + "bevy_asset_macros", + "bevy_ecs", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bevy_winit", + "blake3", + "crossbeam-channel", + "downcast-rs", + "futures-io", + "futures-lite", + "js-sys", + "parking_lot", + "ron", + "serde", + "thiserror", + "uuid", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_asset_macros" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9eb05ce838d282f09d83380b4d6432aec7519d421dee8c75cc20e6148237e6e" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "bevy_audio" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee31312a0e67f288fe12a1d9aa679dd0ba8a49e1e6fe5fcd2ba1aa1ea34e5ed" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_math", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "cpal", + "rodio", +] + +[[package]] +name = "bevy_color" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04842e9d38a93f0c75ab46f7f404ea24ef57ad83dbd159e5b4b35318b02257bb" +dependencies = [ + "bevy_math", + "bevy_reflect", + "bytemuck", + "encase", + "serde", + "thiserror", + "wgpu-types", +] + +[[package]] +name = "bevy_core" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de706862871a1fe99ea619bff2f99d73e43ad82f19ef866a9e19a14c957c8537" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "uuid", +] + +[[package]] +name = "bevy_core_pipeline" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f6e1e122ada4cd811442e083fb5ad3e325c59a87271d5ef57193f1c2cad7f8c" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bitflags 2.6.0", + "nonmax", + "radsort", + "serde", + "smallvec", + "thiserror", +] + +[[package]] +name = "bevy_derive" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbfc33a4c6b80760bb8bf850a2cc65a1e031da62fd3ca8b552189104dc98514" +dependencies = [ + "bevy_macro_utils", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bebb154e0cc78e3bbfbfdb42fb502b14c1cd47e72f16e6d4228dfe6233ba6cbd" +dependencies = [ + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_tasks", + "bevy_time", + "bevy_utils", + "const-fnv1a-hash", + "sysinfo", +] + +[[package]] +name = "bevy_dylib" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c399292fac67682a72666e78872626f3c1c39b34c430b6f02c81d21da91b500" +dependencies = [ + "bevy_internal", +] + +[[package]] +name = "bevy_ecs" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee4222406637f3c8e3991a99788cfcde76097bf997c311f1b6297364057483f" +dependencies = [ + "arrayvec", + "bevy_ecs_macros", + "bevy_ptr", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bitflags 2.6.0", + "concurrent-queue", + "fixedbitset 0.5.7", + "nonmax", + "petgraph", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36b573430b67aff7bde8292257494f39343401379bfbda64035ba4918bba7b20" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "bevy_encase_derive" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d06c9693847a2a6ea61d6b86288dd4d8b6a79f05d4bf6e27b96d4f5c8d552fe4" +dependencies = [ + "bevy_macro_utils", + "encase_derive_impl", +] + +[[package]] +name = "bevy_gilrs" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0422ccb3ce0f79b264100cf064fdc5ef65cef5c7d51bf6378058f9b96fea4183" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_time", + "bevy_utils", + "gilrs", + "thiserror", +] + +[[package]] +name = "bevy_gizmos" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfe32af0666d8d8a7fd6eb6b5e41eceefdc6f2e5441c74b812e8f0902a9d7f52" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_gizmos_macros", + "bevy_math", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_time", + "bevy_transform", + "bevy_utils", + "bytemuck", +] + +[[package]] +name = "bevy_gizmos_macros" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "906b052f8cf3f3983f0f6df625fb10cbd9b27d44e362a327dc1ed51300d362bc" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "bevy_gltf" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6adbd325b90e3c700d0966b5404e226c7deec1b8bda8f36832788d7b435b9b8" +dependencies = [ + "base64 0.22.1", + "bevy_animation", + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_hierarchy", + "bevy_math", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_tasks", + "bevy_transform", + "bevy_utils", + "gltf", + "percent-encoding", + "serde", + "serde_json", + "smallvec", + "thiserror", +] + +[[package]] +name = "bevy_hierarchy" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a88b912b37e1bc4dbb2aa40723199f74c8b06c4fbb6da0bb4585131df28ef66e" +dependencies = [ + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_reflect", + "bevy_utils", + "smallvec", +] + +[[package]] +name = "bevy_input" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd3a54e67cc3ba17971de7b1a7e64eda84493c1e7bb6bfa11c6cf8ac124377b" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_utils", + "smol_str", + "thiserror", +] + +[[package]] +name = "bevy_internal" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45d435cac77c568f3aef65f786a5fee0e53c81950c5258182dd2c1d6cd6c4fec" +dependencies = [ + "bevy_a11y", + "bevy_animation", + "bevy_app", + "bevy_asset", + "bevy_audio", + "bevy_color", + "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_state", + "bevy_tasks", + "bevy_text", + "bevy_time", + "bevy_transform", + "bevy_ui", + "bevy_utils", + "bevy_window", + "bevy_winit", +] + +[[package]] +name = "bevy_log" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67240c7596c8f0653e50fce35a60196516817449235193246599facba9002e02" +dependencies = [ + "android_log-sys", + "bevy_app", + "bevy_ecs", + "bevy_utils", + "tracing-log", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfc65e570012e64a21f3546df68591aaede8349e6174fb500071677f54f06630" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", + "toml_edit", +] + +[[package]] +name = "bevy_math" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5421792749dda753ab3718e77d27bfce38443daf1850b836b97530b6245a4581" +dependencies = [ + "bevy_reflect", + "glam", + "rand", + "serde", + "smallvec", + "thiserror", +] + +[[package]] +name = "bevy_mikktspace" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf695a264b043f2c4edb92dd5c742e6892180d2b30dac870012d153f8557ea" +dependencies = [ + "glam", +] + +[[package]] +name = "bevy_pbr" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dccaa3c945f19834dcf7cd8eb358236dbf0fc4000dacbc7710564e7856714db" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags 2.6.0", + "bytemuck", + "fixedbitset 0.5.7", + "nonmax", + "radsort", + "smallvec", + "static_assertions", +] + +[[package]] +name = "bevy_ptr" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61baa1bdc1f4a7ac2c18217570a7cc04e1cd54d38456e91782f0371c79afe0a8" + +[[package]] +name = "bevy_reflect" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2508785a4a5809f25a237eec4fee2c91a4dbcf81324b2bbc2d6c52629e603781" +dependencies = [ + "bevy_ptr", + "bevy_reflect_derive", + "bevy_utils", + "downcast-rs", + "erased-serde", + "glam", + "petgraph", + "serde", + "smallvec", + "smol_str", + "thiserror", + "uuid", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "967d5da1882ec3bb3675353915d3da909cafac033cbf31e58727824a1ad2a288" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.79", + "uuid", +] + +[[package]] +name = "bevy_render" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836cf8a513db013cbe7d55a331060088efd407e49fd5b05c8404700cd82e7619" +dependencies = [ + "async-channel", + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core", + "bevy_derive", + "bevy_diagnostic", + "bevy_ecs", + "bevy_encase_derive", + "bevy_hierarchy", + "bevy_math", + "bevy_mikktspace", + "bevy_reflect", + "bevy_render_macros", + "bevy_tasks", + "bevy_time", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags 2.6.0", + "bytemuck", + "codespan-reporting", + "downcast-rs", + "encase", + "futures-lite", + "hexasphere", + "image", + "js-sys", + "ktx2", + "naga", + "naga_oil", + "nonmax", + "ruzstd", + "send_wrapper", + "serde", + "smallvec", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu", +] + +[[package]] +name = "bevy_render_macros" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbc24e0e95061a38a7744218b9c7e52e4c08b53f1499f33480e2b749f3864432" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "bevy_scene" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ec57a72d75273bdbb6154390688fd07ba79ae9f6f99476d1937f799c736c2da" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "serde", + "thiserror", + "uuid", +] + +[[package]] +name = "bevy_sprite" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e045b4d8cc8e7422a4c29b1eadbe224f5cc42f170b88d43e7535892fcede3840" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bitflags 2.6.0", + "bytemuck", + "fixedbitset 0.5.7", + "guillotiere", + "radsort", + "rectangle-pack", + "thiserror", +] + +[[package]] +name = "bevy_state" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25335bfa58cc22371182335c3b133017293bc9b6d3308402fd4d1f978b83f937" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_hierarchy", + "bevy_reflect", + "bevy_state_macros", + "bevy_utils", +] + +[[package]] +name = "bevy_state_macros" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee600b659c739f1911f997a81611fec0a1832cf731727956e5fa4e7532b4dd5" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "bevy_tasks" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77865f310b1fc48fb05b7c4adbe76607ec01d0c14f8ab4caba4d714c86439946" +dependencies = [ + "async-channel", + "async-executor", + "concurrent-queue", + "futures-lite", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_text" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b661db828fd423fc41a4ccf43aa4d1b8e50e75057ec40453317d0d761e8ad62d" +dependencies = [ + "ab_glyph", + "bevy_app", + "bevy_asset", + "bevy_color", + "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.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e4d53ec32a1b16492396951d04de0d2d90e924bf9adcb8d1adacab5ab6c17c" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_reflect", + "bevy_utils", + "crossbeam-channel", + "thiserror", +] + +[[package]] +name = "bevy_transform" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5493dce84427d00a9266e8e4386d738a72ee8640423b62dfcecb6dfccbfe0d2" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_hierarchy", + "bevy_math", + "bevy_reflect", + "thiserror", +] + +[[package]] +name = "bevy_ui" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56d2cba6603b39a3765f043212ae530e25550af168a7eec6b23b9b93c19bc5f7" +dependencies = [ + "bevy_a11y", + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_input", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_text", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bytemuck", + "nonmax", + "smallvec", + "taffy", + "thiserror", +] + +[[package]] +name = "bevy_utils" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb0ec333b5965771153bd746f92ffd8aeeb9d008a8620ffd9ed474859381a5e" +dependencies = [ + "ahash", + "bevy_utils_proc_macros", + "getrandom", + "hashbrown 0.14.5", + "thread_local", + "tracing", + "web-time", +] + +[[package]] +name = "bevy_utils_proc_macros" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f1ab8f2f6f58439d260081d89a42b02690e5fdd64f814edc9417d33fcf2857" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "bevy_window" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89e88a20db64ea8204540afb4699295947c454738fd50293f7b32ab8be857a6" +dependencies = [ + "bevy_a11y", + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_utils", + "raw-window-handle", + "smol_str", +] + +[[package]] +name = "bevy_winit" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0bef8ec3e4b45db943ad4d1c0bf59b09e382ce0651a706e2f33a70fa955303c" +dependencies = [ + "accesskit_winit", + "approx", + "bevy_a11y", + "bevy_app", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bevy_window", + "cfg-if", + "crossbeam-channel", + "raw-window-handle", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "bindgen" +version = "0.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +dependencies = [ + "bitflags 2.6.0", + "cexpr", + "clang-sys", + "itertools", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.79", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] + +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +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 = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytemuck" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" + +[[package]] +name = "calloop" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" +dependencies = [ + "bitflags 2.6.0", + "log", + "polling", + "rustix", + "slab", + "thiserror", +] + +[[package]] +name = "cc" +version = "1.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812acba72f0a070b003d3697490d2b55b837230ae7c6c6497f05cc2ddbb8d938" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[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 = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading 0.8.5", +] + +[[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 = "com" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" +dependencies = [ + "com_macros", +] + +[[package]] +name = "com_macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" +dependencies = [ + "com_macros_support", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "com_macros_support" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +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-fnv1a-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" + +[[package]] +name = "const_panic" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "013b6c2c3a14d678f38cd23994b02da3a1a1b6a5d1eedddfe63a5a5f11b13a81" + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "constgebra" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1aaf9b65849a68662ac6c0810c8893a765c960b907dd7cfab9c4a50bf764fbc" +dependencies = [ + "const_soft_float", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +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.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ce857aa0b77d77287acc1ac3e37a05a8c95a2af3647d23b15f263bdaeb7562b" +dependencies = [ + "bindgen", +] + +[[package]] +name = "cpal" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" +dependencies = [ + "alsa", + "core-foundation-sys", + "coreaudio-rs", + "dasp_sample", + "jni", + "js-sys", + "libc", + "mach2", + "ndk 0.8.0", + "ndk-context", + "oboe", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows 0.54.0", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "cursor-icon" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" + +[[package]] +name = "d3d12" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b28bfe653d79bd16c77f659305b195b82bb5ce0c0eb2a4846b82ddbd77586813" +dependencies = [ + "bitflags 2.6.0", + "libloading 0.8.5", + "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.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading 0.8.5", +] + +[[package]] +name = "document-features" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0" +dependencies = [ + "litrs", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "encase" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9299a95fa5671ddf29ecc22b00e121843a65cb9ff24911e394b4ae556baf36" +dependencies = [ + "const_panic", + "encase_derive", + "glam", + "thiserror", +] + +[[package]] +name = "encase_derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e09decb3beb1fe2db6940f598957b2e1f7df6206a804d438ff6cb2a9cddc10" +dependencies = [ + "encase_derive_impl", +] + +[[package]] +name = "encase_derive_impl" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd31dbbd9743684d339f907a87fe212cb7b51d75b9e8e74181fe363199ee9b47" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[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.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +dependencies = [ + "serde", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "euclid" +version = "0.22.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" +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 = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener 5.3.1", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" + +[[package]] +name = "fdeflate" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + +[[package]] +name = "flate2" +version = "1.0.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +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.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[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.79", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.5", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gilrs" +version = "0.10.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a556964c6d62458084356ce9770676f5104bd667e12e9a795691076e8a17c5cf" +dependencies = [ + "fnv", + "gilrs-core", + "log", + "uuid", + "vec_map", +] + +[[package]] +name = "gilrs-core" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "732dadc05170599ddec9a89653f10d7a2af54da9181b3fa6e2bd49907ec8f7e4" +dependencies = [ + "core-foundation", + "inotify", + "io-kit-sys", + "js-sys", + "libc", + "libudev-sys", + "log", + "nix", + "uuid", + "vec_map", + "wasm-bindgen", + "web-sys", + "windows 0.58.0", +] + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "glam" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e05e7e6723e3455f4818c7b26e855439f7546cf617ef669d1adedb8669e5cb9" +dependencies = [ + "bytemuck", + "rand", + "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.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gltf" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ce1918195723ce6ac74e80542c5a96a40c2b26162c1957a5cd70799b8cacf7" +dependencies = [ + "byteorder", + "gltf-json", + "lazy_static", + "serde_json", +] + +[[package]] +name = "gltf-derive" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14070e711538afba5d6c807edb74bcb84e5dbb9211a3bf5dea0dfab5b24f4c51" +dependencies = [ + "inflections", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "gltf-json" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6176f9d60a7eab0a877e8e96548605dedbde9190a7ae1e80bbcc1c9af03ab14" +dependencies = [ + "gltf-derive", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "glyph_brush_layout" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1e288bfd2f6c0313f78bf5aa538356ad481a3bb97e9b7f93220ab0066c5992" +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.6.0", + "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.6.0", +] + +[[package]] +name = "gpu-allocator" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" +dependencies = [ + "log", + "presser", + "thiserror", + "winapi", + "windows 0.52.0", +] + +[[package]] +name = "gpu-descriptor" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c08c1f623a8d0b722b8b99f821eb0ba672a1618f0d3b16ddbee1cedd2dd8557" +dependencies = [ + "bitflags 2.6.0", + "gpu-descriptor-types", + "hashbrown 0.14.5", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "grid" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be136d9dacc2a13cc70bb6c8f902b414fb2641f8db1314637c6b7933411a8f82" + +[[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.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" + +[[package]] +name = "hassle-rs" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" +dependencies = [ + "bitflags 2.6.0", + "com", + "libc", + "libloading 0.8.5", + "thiserror", + "widestring", + "winapi", +] + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "hexasphere" +version = "12.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd6b038160f086b0a7496edae34169ae22f328793cbe2b627a5a3d8373748ec" +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 = "image" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99314c8a2152b8ddb211f924cdae532d8c5e4c8bb54728e12fff1b0cd5963a10" +dependencies = [ + "bytemuck", + "byteorder-lite", + "num-traits", + "png", +] + +[[package]] +name = "immutable-chunkmap" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4419f022e55cc63d5bbd6b44b71e1d226b9c9480a47824c706e9d54e5c40c5eb" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "indexmap" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +dependencies = [ + "equivalent", + "hashbrown 0.15.0", +] + +[[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", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "io-kit-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b" +dependencies = [ + "core-foundation-sys", + "mach2", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[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.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading 0.8.5", + "pkg-config", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[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.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[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.159" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" + +[[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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + +[[package]] +name = "libredox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" +dependencies = [ + "bitflags 2.6.0", + "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 = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "mach2" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" +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 = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "metal" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5637e166ea14be6063a3f8ba5ccb9a4159df7d8f6d61c02fc3d480b1f90dcfcb" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-graphics-types", + "foreign-types", + "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.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "naga" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e536ae46fcab0876853bd4a632ede5df4b1c2527a58f6c5a4150fe86be858231" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags 2.6.0", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "num-traits", + "pp-rs", + "rustc-hash", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "naga_oil" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "275d9720a7338eedac966141089232514c84d76a246a58ef501af88c5edf402f" +dependencies = [ + "bit-set", + "codespan-reporting", + "data-encoding", + "indexmap", + "naga", + "once_cell", + "regex", + "regex-syntax 0.8.5", + "rustc-hash", + "thiserror", + "tracing", + "unicode-ident", +] + +[[package]] +name = "ndk" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" +dependencies = [ + "bitflags 2.6.0", + "jni-sys", + "log", + "ndk-sys 0.5.0+25.2.9519653", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.6.0", + "jni-sys", + "log", + "ndk-sys 0.6.0+11769913", + "num_enum", + "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.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "cfg_aliases 0.2.1", + "libc", +] + +[[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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" + +[[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-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2", + "objc2", + "objc2-contacts", + "objc2-foundation", +] + +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.6.0", + "block2", + "dispatch", + "libc", + "objc2", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "oboe" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" +dependencies = [ + "jni", + "ndk 0.8.0", + "ndk-context", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" +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.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" +dependencies = [ + "portable-atomic", +] + +[[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.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "490d3a563d3122bf7c911a59b0add9389e5ec0f5f0c3ac6b91ff235a0e6a7f90" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.7", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset 0.4.2", + "indexmap", + "serde", + "serde_derive", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "png" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "portable-atomic" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" + +[[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 = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radsort" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "019b4b213425016d7d84a153c4c73afb0946fbb4840e4eece7ba8848b9d6da22" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "range-alloc" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[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.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "regex" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", +] + +[[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.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[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.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + +[[package]] +name = "rodio" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1fceb9d127d515af1586d8d0cc601e1245bdb0af38e75c865a156290184f5b3" +dependencies = [ + "cpal", + "lewton", + "thiserror", +] + +[[package]] +name = "ron" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +dependencies = [ + "base64 0.21.7", + "bitflags 2.6.0", + "serde", + "serde_derive", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustix" +version = "0.38.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "ruzstd" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99c3938e133aac070997ddc684d4b393777d293ba170f2988c8fd5ea2ad4ce21" +dependencies = [ + "twox-hash", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[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 = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "serde" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "serde_json" +version = "1.0.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +dependencies = [ + "itoa", + "memchr", + "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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[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.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "svg_fmt" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20e16a0f46cf5fd675563ef54f26e83e20f2366bcf027bcb3cc3ed2b98aaf2ca" + +[[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.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sysinfo" +version = "0.30.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "windows 0.52.0", +] + +[[package]] +name = "taffy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cb893bff0f80ae17d3a57e030622a967b8dbc90e38284d9b4b1442e23873c94" +dependencies = [ + "arrayvec", + "grid", + "num-traits", + "serde", + "slotmap", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +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 = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.22.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +dependencies = [ + "indexmap", + "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.79", +] + +[[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.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +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.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be21190ff5d38e8b4a2d3b6a3ae57f612cc39c96e83cedeaf7abc338a8bac4a" + +[[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 = "typeid" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" + +[[package]] +name = "unicode-ident" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "uuid" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +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.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.79", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" + +[[package]] +name = "web-sys" +version = "0.3.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wgpu" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90e37c7b9921b75dfd26dd973fdcbce36f13dfa6e2dc82aece584e0ed48c355c" +dependencies = [ + "arrayvec", + "cfg-if", + "cfg_aliases 0.1.1", + "document-features", + "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.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d50819ab545b867d8a454d1d756b90cd5f15da1f2943334ca314af10583c9d39" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags 2.6.0", + "cfg_aliases 0.1.1", + "codespan-reporting", + "document-features", + "indexmap", + "log", + "naga", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle", + "rustc-hash", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-hal" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "172e490a87295564f3fcc0f165798d87386f6231b04d4548bca458cbbfd63222" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set", + "bitflags 2.6.0", + "block", + "cfg_aliases 0.1.1", + "core-graphics-types", + "d3d12", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor", + "hassle-rs", + "js-sys", + "khronos-egl", + "libc", + "libloading 0.8.5", + "log", + "metal", + "naga", + "ndk-sys 0.5.0+25.2.9519653", + "objc", + "once_cell", + "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.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1353d9a46bff7f955a680577f34c69122628cc2076e1d6f3a9be6ef00ae793ef" +dependencies = [ + "bitflags 2.6.0", + "js-sys", + "web-sys", +] + +[[package]] +name = "widestring" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" + +[[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.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[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.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +dependencies = [ + "windows-core 0.54.0", + "windows-implement 0.53.0", + "windows-interface 0.53.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +dependencies = [ + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "windows-interface" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + +[[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.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[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-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[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_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[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_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[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_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[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_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[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_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[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_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[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 = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winit" +version = "0.30.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0be9e76a1f1077e04a411f0b989cbd3c93339e1771cb41e71ac4aee95bfd2c67" +dependencies = [ + "android-activity", + "atomic-waker", + "bitflags 2.6.0", + "block2", + "bytemuck", + "calloop", + "cfg_aliases 0.2.1", + "concurrent-queue", + "core-foundation", + "core-graphics", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "ndk 0.9.0", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix", + "smol_str", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "web-time", + "windows-sys 0.52.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", +] + +[[package]] +name = "winnow" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +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.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading 0.8.5", + "once_cell", + "rustix", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" + +[[package]] +name = "xi-unicode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.6.0", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + +[[package]] +name = "xml-rs" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..5a3665f --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "bevy-test" +version = "0.1.0" +edition = "2021" + +[dependencies] +bevy = { version = "0.14.2", features = [ "dynamic_linking" ] } + +# Enable a small amount of optimization in the dev profile. +[profile.dev] +opt-level = 1 + +# Enable a large amount of optimization in the dev profile for dependencies. +[profile.dev.package."*"] +opt-level = 3 diff --git a/README.md b/README.md new file mode 100644 index 0000000..53dba86 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +https://bevyengine.org/learn/quick-start/getting-started/ecs/ diff --git a/assets/test.png b/assets/test.png new file mode 100644 index 0000000000000000000000000000000000000000..796c92b534e286db3da20105270cd4a18d2af6e6 GIT binary patch literal 85129 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 literal 0 HcmV?d00001 diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..08e7e13 --- /dev/null +++ b/flake.lock @@ -0,0 +1,110 @@ +{ + "nodes": { + "flake-utils": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixgl": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1713543440, + "narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=", + "owner": "guibou", + "repo": "nixGL", + "rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a", + "type": "github" + }, + "original": { + "owner": "guibou", + "repo": "nixGL", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1660551188, + "narHash": "sha256-a1LARMMYQ8DPx1BgoI/UN4bXe12hhZkCNqdxNi6uS0g=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "441dc5d512153039f19ef198e662e4f3dbb9fd65", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1704290814, + "narHash": "sha256-LWvKHp7kGxk/GEtlrGYV68qIvPHkU9iToomNFGagixU=", + "rev": "70bdadeb94ffc8806c0570eb5c2695ad29f0e421", + "revCount": 492897, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2305.492897%2Brev-70bdadeb94ffc8806c0570eb5c2695ad29f0e421/018ce318-b896-7d27-b495-cc2cdb39d680/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/NixOS/nixpkgs/0.2305.491812.tar.gz" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1718428119, + "narHash": "sha256-WdWDpNaq6u1IPtxtYHHWpl5BmabtpmLnMAx0RdJ/vo8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e6cea36f83499eb4e9cd184c8a8e823296b50ad5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixgl": "nixgl", + "nixpkgs": "nixpkgs_2", + "rust-overlay": "rust-overlay" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1727836133, + "narHash": "sha256-JE0zciM5IGWvK8J/pE2VldNBf7oyMH5WrU8tZArefbg=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "02321540b0c8000b36889b1b974d1fec585b25a4", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..db9e2eb --- /dev/null +++ b/flake.nix @@ -0,0 +1,90 @@ +{ + description = "Rust dev shell for Hertog's bevy project (YAY!)"; + + # Flake inputs + inputs = { + nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.2305.491812.tar.gz"; + rust-overlay.url = "github:oxalica/rust-overlay"; # A helper for Rust + Nix + nixgl.url = "github:guibou/nixGL"; # Allows you to run OpenGL and or Vulkan applications in a nix shell + }; + + # Flake outputs + outputs = { self, nixpkgs, rust-overlay, nixgl, ... }: + let + # Overlays enable you to customize the Nixpkgs attribute set + overlays = [ + # Makes a `rust-bin` attribute available in Nixpkgs + (import rust-overlay) + nixgl.overlay + # Provides a `rustToolchain` attribute for Nixpkgs that we can use to + # create a Rust environment + (self: super: { + rustToolchain = super.rust-bin.stable.latest.default; + }) + ]; + + # Systems supported + allSystems = [ + "x86_64-linux" # 64-bit Intel/AMD Linux + "aarch64-linux" # 64-bit ARM Linux + "x86_64-darwin" # 64-bit Intel macOS + "aarch64-darwin" # 64-bit ARM macOS + ]; + + # Helper to provide system-specific attributes + forAllSystems = f: nixpkgs.lib.genAttrs allSystems (system: f { + pkgs = import nixpkgs { inherit overlays system; }; + }); + in + { + # Development environment output + devShells = forAllSystems ({ pkgs }: { + default = pkgs.mkShell { + # The Nix packages provided in the environment + packages = (with pkgs; [ + # Fluff + cargo-mommy + onefetch + # Bevy + pkg-config + alsa-lib + vulkan-tools + vulkan-headers + vulkan-loader + vulkan-validation-layers + udev + clang + lld + # If using an intel GPU + pkgs.nixgl.nixVulkanIntel + # If on x11 + xorg.libX11 + xorg.libX11 + xorg.libXcursor + xorg.libXi + xorg.libXrandr + # If on wayland + libxkbcommon + wayland + # Rust + rustup + rustToolchain + ]) ++ pkgs.lib.optionals pkgs.stdenv.isDarwin (with pkgs; [ libiconv ]); + shellHook = '' + # Required + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${pkgs.lib.makeLibraryPath [ + pkgs.alsaLib + pkgs.udev + pkgs.vulkan-loader + pkgs.libxkbcommon + ]}" + # Aliases and other fluff/ease of use + alias runIntel="nixVulkanIntel cargo run" + alias runMommyIntel="nixVulkanIntel cargo mommy run" + onefetch + echo "Welcome to nix-hell uh nix-shell!" + ''; + }; + }); + }; +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..6c1ac56 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,57 @@ +use bevy::prelude::*; + +fn main() { + App::new() + .add_plugins(DefaultPlugins) + .add_systems(Startup, setup) + .add_systems(Update, move_player) + .run(); +} + +#[derive(Bundle)] +struct PlayerBundle { + core: Player, + sprite: SpriteBundle, +} + +#[derive(Component)] +struct Player; + + +fn setup( + //mut materials: ResMut>, + //mut meshes: ResMut>, + mut commands: Commands, + asset_server: Res +) { + commands.spawn(Camera2dBundle::default()); + commands.spawn(PlayerBundle { + core: Player, + sprite: SpriteBundle { + texture: asset_server.load("../assets/test.png"), + ..default() + }, + }); +} + +const MOVE_SPEED: f32 = 6.0; + +fn move_player( + mut transforms: Query<&mut Transform, With>, + keys: Res>, +) { + for mut transform in transforms.iter_mut() { + let mut direction = Vec3::ZERO; + + if keys.pressed(KeyCode::KeyW) { direction.y += 1.0; } + if keys.pressed(KeyCode::KeyA) { direction.x -= 1.0; } + if keys.pressed(KeyCode::KeyS) { direction.y -= 1.0; } + if keys.pressed(KeyCode::KeyD) { direction.x += 1.0; } + + if 0.0 < direction.length() { + transform.translation += MOVE_SPEED * direction.normalize(); + } + } +} + +