From 2c75e46f1bf00f731a29e0f38a41e6e18f279c7c Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Sat, 12 Dec 2020 08:21:55 -0600 Subject: [PATCH] Initial commit. --- .gitignore | 2 + Cargo.lock | 3963 +++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 14 + assets/footstep.ogg | Bin 0 -> 36239 bytes assets/footstep.wav | Bin 0 -> 93548 bytes examples/game.rs | 52 + src/lib.rs | 225 +++ 7 files changed, 4256 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 assets/footstep.ogg create mode 100644 assets/footstep.wav create mode 100644 examples/game.rs create mode 100644 src/lib.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..102d568 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +*.dll diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..9053f18 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,3963 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" + +[[package]] +name = "ab_glyph" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a104f276ccf2299596c747b495582c8313bae3eca524bcf66db684848c50be9" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9fe5e32de01730eb1f6b7f5b51c17e03e2325bf40a74f754f04f130043affff" + +[[package]] +name = "addr2line" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c0929d69e78dd9bf5408269919fcbcaeb2e35e5d43e5815517cdc6a8e11a423" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "ahash" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75b7e6a93ecd6dbd2c225154d0fa7f86205574ecaa6c87429fb5f66ee677c44" +dependencies = [ + "getrandom 0.2.0", + "lazy_static 1.4.0", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" +dependencies = [ + "memchr", +] + +[[package]] +name = "al-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff8d9b0f4d10264c060ee5614dedb6b7695f366e93be6549c48f58981da39023" +dependencies = [ + "cmake", + "libloading 0.5.2", + "rental", +] + +[[package]] +name = "alsa" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb213f6b3e4b1480a60931ca2035794aa67b73103d254715b1db7b70dcb3c934" +dependencies = [ + "alsa-sys", + "bitflags", + "libc", + "nix 0.15.0", +] + +[[package]] +name = "alsa-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5a0559bcd3f7a482690d98be41c08a43e92f669b179433e95ddf5e8b8fd36a3" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "alto" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75be812fc4f27ac66752f30715a2357c9f3ad619229fc21cf431b32606dfae5" +dependencies = [ + "al-sys", + "lazy_static 0.2.11", + "parking_lot 0.4.8", +] + +[[package]] +name = "android_log-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8052e2d8aabbb8d556d6abbcce2a22b9590996c5f849b9c7ce4544a2e3b984e" + +[[package]] +name = "android_log-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85965b6739a430150bdd138e2374a98af0c3ee0d030b3bb7fc3bddff58d0102e" + +[[package]] +name = "android_logger" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cbd542dd180566fad88fd2729a53a62a734843c626638006a9d63ec0688484e" +dependencies = [ + "android_log-sys 0.1.2", + "env_logger", + "lazy_static 1.4.0", + "log", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "anyhow" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c0df63cb2955042487fad3aefd2c6e3ae7389ac5dc1beb28921de0b69f779d4" + +[[package]] +name = "anymap" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33954243bd79057c2de7338850b85983a44588021f8a5fee574a8888c6de4344" + +[[package]] +name = "approx" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f2a05fd1bd10b2527e20a2cd32d8873d115b8b39fe219ee25f42a8aca6ba278" +dependencies = [ + "num-traits", +] + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "ash" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c69a8137596e84c22d57f3da1b5de1d4230b1742a710091c85f4d7ce50f00f38" +dependencies = [ + "libloading 0.6.6", +] + +[[package]] +name = "async-channel" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59740d83946db6a5af71ae25ddf9562c2b176b2ca42cf99a455f09f4a220d6b9" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb877970c7b440ead138f6321a3b5395d6061183af779340b65e20c0fede9146" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "vec-arena", +] + +[[package]] +name = "async-task" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" + +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] +name = "backtrace" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5140344c85b01f9bbb4d4b7288a8aa4b3287ccef913a14bcc78a1063623598" +dependencies = [ + "addr2line", + "cfg-if 1.0.0", + "libc", + "miniz_oxide 0.4.3", + "object", + "rustc-demangle", +] + +[[package]] +name = "base-x" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" + +[[package]] +name = "base64" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +dependencies = [ + "byteorder", +] + +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "bevy" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_internal", +] + +[[package]] +name = "bevy-glsl-to-spirv" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d5f2f58f0aec3c50a20799792c3705e80dd7df327e79791cacec197e84e5e61" + +[[package]] +name = "bevy_app" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_derive", + "bevy_ecs", + "bevy_utils", + "serde", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "anyhow", + "bevy_app", + "bevy_ecs", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "crossbeam-channel", + "downcast-rs", + "js-sys", + "ndk-glue", + "notify", + "parking_lot 0.11.1", + "rand 0.7.3", + "ron", + "serde", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_audio" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "anyhow", + "bevy_app", + "bevy_asset", + "bevy_ecs", + "bevy_reflect", + "bevy_utils", + "parking_lot 0.11.1", + "rodio", +] + +[[package]] +name = "bevy_core" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_app", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", +] + +[[package]] +name = "bevy_derive" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "Inflector", + "find-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_utils", + "parking_lot 0.11.1", +] + +[[package]] +name = "bevy_dynamic_plugin" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_app", + "libloading 0.6.6", +] + +[[package]] +name = "bevy_ecs" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_ecs_macros", + "bevy_tasks", + "bevy_utils", + "bitflags", + "downcast-rs", + "fixedbitset", + "lazy_static 1.4.0", + "parking_lot 0.11.1", + "rand 0.7.3", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "find-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_gilrs" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_utils", + "gilrs", +] + +[[package]] +name = "bevy_gltf" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "anyhow", + "base64 0.12.3", + "bevy_app", + "bevy_asset", + "bevy_ecs", + "bevy_math", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_transform", + "gltf", + "image", + "thiserror", +] + +[[package]] +name = "bevy_input" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_utils", +] + +[[package]] +name = "bevy_internal" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_audio", + "bevy_core", + "bevy_derive", + "bevy_diagnostic", + "bevy_dynamic_plugin", + "bevy_ecs", + "bevy_gilrs", + "bevy_gltf", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_sprite", + "bevy_tasks", + "bevy_text", + "bevy_transform", + "bevy_ui", + "bevy_utils", + "bevy_wgpu", + "bevy_window", + "bevy_winit", + "ndk-glue", +] + +[[package]] +name = "bevy_log" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "android_log-sys 0.2.0", + "bevy_app", + "bevy_utils", + "console_error_panic_hook", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "bevy_math" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_reflect", + "glam", +] + +[[package]] +name = "bevy_openal" +version = "0.1.0" +dependencies = [ + "alto", + "anyhow", + "bevy", + "hound", + "lewton", +] + +[[package]] +name = "bevy_pbr" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_window", +] + +[[package]] +name = "bevy_reflect" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_reflect_derive", + "bevy_utils", + "downcast-rs", + "erased-serde", + "glam", + "parking_lot 0.11.1", + "serde", + "smallvec 1.5.1", + "thiserror", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "find-crate", + "proc-macro2", + "quote", + "syn", + "uuid", +] + +[[package]] +name = "bevy_render" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "anyhow", + "bevy-glsl-to-spirv", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags", + "downcast-rs", + "hex", + "hexasphere", + "image", + "once_cell", + "parking_lot 0.11.1", + "serde", + "shaderc", + "smallvec 1.5.1", + "spirv-reflect", + "thiserror", +] + +[[package]] +name = "bevy_scene" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "anyhow", + "bevy_app", + "bevy_asset", + "bevy_ecs", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "parking_lot 0.11.1", + "ron", + "serde", + "thiserror", + "uuid", +] + +[[package]] +name = "bevy_sprite" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "guillotiere", + "rectangle-pack", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_tasks" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "async-channel", + "async-executor", + "event-listener", + "futures-lite", + "instant", + "num_cpus", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_text" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "ab_glyph", + "anyhow", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_utils", + "glyph_brush_layout", + "thiserror", +] + +[[package]] +name = "bevy_transform" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_utils", + "smallvec 1.5.1", +] + +[[package]] +name = "bevy_ui" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_input", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_text", + "bevy_transform", + "bevy_utils", + "bevy_window", + "serde", + "stretch", +] + +[[package]] +name = "bevy_utils" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "ahash", + "getrandom 0.2.0", + "instant", + "tracing", + "uuid", +] + +[[package]] +name = "bevy_wgpu" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_diagnostic", + "bevy_ecs", + "bevy_render", + "bevy_utils", + "bevy_window", + "bevy_winit", + "crossbeam-channel", + "crossbeam-utils", + "futures-lite", + "parking_lot 0.11.1", + "wgpu", +] + +[[package]] +name = "bevy_window" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_utils", + "web-sys", +] + +[[package]] +name = "bevy_winit" +version = "0.3.0" +source = "git+https://github.com/bevyengine/bevy#9239621ffc9c653b27ce857448d82bbf770f8933" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_math", + "bevy_utils", + "bevy_window", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "bindgen" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2da379dbebc0b76ef63ca68d8fc6e71c0f13e59432e0987e508c1820e6ab5239" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "lazy_static 1.4.0", + "lazycell", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", +] + +[[package]] +name = "bit-set" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de" +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.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "bumpalo" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" + +[[package]] +name = "bytemuck" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41aa2ec95ca3b5c54cf73c91acf06d24f4495d5f1b1c12506ae3483d646177ac" + +[[package]] +name = "byteorder" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" + +[[package]] +name = "bytes" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" + +[[package]] +name = "cache-padded" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" + +[[package]] +name = "cc" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +dependencies = [ + "libc", + "num-integer", + "num-traits", + "time", + "winapi 0.3.9", +] + +[[package]] +name = "chunked_transfer" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7477065d45a8fe57167bf3cf8bcd3729b54cfcb81cca49bda2d038ea89ae82ca" + +[[package]] +name = "clang-sys" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0659001ab56b791be01d4b729c44376edc6718cf389a502e579b77b758f3296c" +dependencies = [ + "glob", + "libc", + "libloading 0.6.6", +] + +[[package]] +name = "cmake" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb6210b637171dfba4cda12e579ac6dc73f5165ad56133e5d72ef3131f320855" +dependencies = [ + "cc", +] + +[[package]] +name = "cocoa" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c54201c07dcf3a5ca33fececb8042aed767ee4bfd5a0235a8ceabcda956044b2" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "core-foundation 0.9.1", + "core-graphics 0.22.2", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +dependencies = [ + "bitflags", + "block", + "core-foundation 0.9.1", + "core-graphics-types", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "combine" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9417a0c314565e2abffaece67e95a8cb51f9238cd39f3764d9dfdf09e72b20c" +dependencies = [ + "bytes", + "memchr", + "pin-project-lite 0.1.11", +] + +[[package]] +name = "concurrent-queue" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" +dependencies = [ + "cache-padded", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8d976903543e0c48546a91908f21588a680a8c8f984df9a5d69feccb2b2a211" +dependencies = [ + "cfg-if 0.1.10", + "wasm-bindgen", +] + +[[package]] +name = "cookie" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5" +dependencies = [ + "time", + "url 1.7.2", +] + +[[package]] +name = "copyless" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2df960f5d869b2dd8532793fde43eb5427cceb126c929747a26823ab0eeb536" + +[[package]] +name = "core-foundation" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" +dependencies = [ + "core-foundation-sys 0.6.2", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +dependencies = [ + "core-foundation-sys 0.7.0", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" +dependencies = [ + "core-foundation-sys 0.8.2", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" + +[[package]] +name = "core-foundation-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" + +[[package]] +name = "core-foundation-sys" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" + +[[package]] +name = "core-graphics" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" +dependencies = [ + "bitflags", + "core-foundation 0.7.0", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "269f35f69b542b80e736a20a89a05215c0ce80c2c03c514abb2e318b78379d86" +dependencies = [ + "bitflags", + "core-foundation 0.9.1", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +dependencies = [ + "bitflags", + "core-foundation 0.9.1", + "foreign-types", + "libc", +] + +[[package]] +name = "core-video-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" +dependencies = [ + "cfg-if 0.1.10", + "core-foundation-sys 0.7.0", + "core-graphics 0.19.2", + "libc", + "objc", +] + +[[package]] +name = "coreaudio-rs" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f229761965dad3e9b11081668a6ea00f1def7aa46062321b5ec245b834f6e491" +dependencies = [ + "bitflags", + "coreaudio-sys", +] + +[[package]] +name = "coreaudio-sys" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b7e3347be6a09b46aba228d6608386739fb70beff4f61e07422da87b0bb31fa" +dependencies = [ + "bindgen", +] + +[[package]] +name = "cpal" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05631e2089dfa5d3b6ea1cfbbfd092e2ee5deeb69698911bc976b28b746d3657" +dependencies = [ + "alsa", + "core-foundation-sys 0.6.2", + "coreaudio-rs", + "jni 0.17.0", + "js-sys", + "lazy_static 1.4.0", + "libc", + "mach 0.3.2", + "ndk", + "ndk-glue", + "nix 0.15.0", + "oboe", + "parking_lot 0.11.1", + "stdweb 0.1.3", + "thiserror", + "web-sys", + "winapi 0.3.9", +] + +[[package]] +name = "crc32fast" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-channel" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" +dependencies = [ + "crossbeam-utils", + "maybe-uninit", +] + +[[package]] +name = "crossbeam-utils" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +dependencies = [ + "autocfg", + "cfg-if 0.1.10", + "lazy_static 1.4.0", +] + +[[package]] +name = "d3d12" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a60cceb22c7c53035f8980524fdc7f17cf49681a3c154e6757d30afbec6ec4" +dependencies = [ + "bitflags", + "libloading 0.6.6", + "winapi 0.3.9", +] + +[[package]] +name = "darling" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15d658711a12632b5574c8d5b3fc5d2f0d2f87b9fbf9237ee0f759b88bb6bdec" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d3514d243331d8acde56bfcf45d0147aabbda853c2f49dce081ea85f9a7220" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44f63c369ef0c17ad17585d31d5f2bf10dece2710bf0766e01db57a6f9849a2e" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "deflate" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" +dependencies = [ + "adler32", + "byteorder", +] + +[[package]] +name = "derivative" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb582b60359da160a9477ee80f15c8d784c477e69c217ef2cdd4169c24ea380f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + +[[package]] +name = "env_logger" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "erased-serde" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ca8b296792113e1500fd935ae487be6e00ce318952a6880555554824d6ebf38" +dependencies = [ + "serde", +] + +[[package]] +name = "error-chain" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" +dependencies = [ + "backtrace", + "version_check", +] + +[[package]] +name = "euclid" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5337024b8293bdce5265dc9570ef6e608a34bfacbbc87fe1a5dcb5f1dac2f4e2" +dependencies = [ + "num-traits", +] + +[[package]] +name = "event-listener" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" + +[[package]] +name = "fastrand" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5faf057445ce5c9d4329e382b2ce7ca38550ef3b73a5348362d5f24e0c7fe3" +dependencies = [ + "instant", +] + +[[package]] +name = "fetch_unroll" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5c55005e95bbe15f5f72a73b6597d0dc82ddc97ffe2ca097a99dcd591fefbca" +dependencies = [ + "libflate", + "tar", + "ureq", +] + +[[package]] +name = "filetime" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c122a393ea57648015bf06fbd3d372378992e86b9ff5a7a497b076a28c79efe" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "winapi 0.3.9", +] + +[[package]] +name = "find-crate" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057a1d48e8ff33649ee2d7c510b79ecf1f8a52b684d446a72de600ad7e2823b6" +dependencies = [ + "toml", +] + +[[package]] +name = "fixedbitset" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e08c8bc7575d7e091fe0706963bd22e2a4be6a64da995f03b2a5a57d66ad015" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00" +dependencies = [ + "matches", + "percent-encoding 2.1.0", +] + +[[package]] +name = "fsevent" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97f347202c95c98805c216f9e1df210e8ebaec9fdb2365700a43c10797a35e63" +dependencies = [ + "bitflags", + "fsevent-sys", +] + +[[package]] +name = "fsevent-sys" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a29c77f1ca394c3e73a9a5d24cfcabb734682d9634fc398f2204a63c994120" +dependencies = [ + "libc", +] + +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + +[[package]] +name = "futures" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748" + +[[package]] +name = "futures-executor" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb" + +[[package]] +name = "futures-lite" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6c079abfac3ab269e2927ec048dabc89d009ebfdda6b8ee86624f30c689658" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite 0.1.11", + "waker-fn", +] + +[[package]] +name = "futures-macro" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d" + +[[package]] +name = "futures-task" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d" +dependencies = [ + "once_cell", +] + +[[package]] +name = "futures-util" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project", + "pin-utils", + "proc-macro-hack", + "proc-macro-nested", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "generator" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cdc09201b2e8ca1b19290cf7e65de2246b8e91fb6874279722189c4de7b94dc" +dependencies = [ + "cc", + "libc", + "log", + "rustc_version", + "winapi 0.3.9", +] + +[[package]] +name = "getrandom" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee8025cf36f917e6a52cce185b7c7177689b838b7ec138364e50cc2277a56cf4" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "stdweb 0.4.20", + "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gfx-auxil" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07cd956b592970f08545b9325b87580eb95a51843b6f39da27b8667fec1a1216" +dependencies = [ + "fxhash", + "gfx-hal", + "spirv_cross", +] + +[[package]] +name = "gfx-backend-dx11" +version = "0.6.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b43f06089866bdffe59b5a6801022c86b74d2c1dd28940a9cf301d3d014fbc" +dependencies = [ + "arrayvec", + "bitflags", + "gfx-auxil", + "gfx-hal", + "libloading 0.6.6", + "log", + "parking_lot 0.11.1", + "range-alloc", + "raw-window-handle", + "smallvec 1.5.1", + "spirv_cross", + "thunderdome", + "winapi 0.3.9", + "wio", +] + +[[package]] +name = "gfx-backend-dx12" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "375014deed24d76b03604736dd899f0925158a1a96db90cbefb9cce070f71af7" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags", + "d3d12", + "gfx-auxil", + "gfx-hal", + "log", + "range-alloc", + "raw-window-handle", + "smallvec 1.5.1", + "spirv_cross", + "winapi 0.3.9", +] + +[[package]] +name = "gfx-backend-empty" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2085227c12b78f6657a900c829f2d0deb46a9be3eaf86844fde263cdc218f77c" +dependencies = [ + "gfx-hal", + "log", + "raw-window-handle", +] + +[[package]] +name = "gfx-backend-metal" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "273d60d5207f96d99e0d11d0718995f67e56533a9df1444d83baf787f4c3cb32" +dependencies = [ + "arrayvec", + "bitflags", + "block", + "cocoa-foundation", + "copyless", + "foreign-types", + "gfx-auxil", + "gfx-hal", + "lazy_static 1.4.0", + "log", + "metal", + "objc", + "parking_lot 0.11.1", + "range-alloc", + "raw-window-handle", + "smallvec 1.5.1", + "spirv_cross", + "storage-map", +] + +[[package]] +name = "gfx-backend-vulkan" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a3a63cf61067a09b7d1ac480af3cb2ae0c5ede5bed294607bbd814cb1666c45" +dependencies = [ + "arrayvec", + "ash", + "byteorder", + "core-graphics-types", + "gfx-hal", + "inplace_it", + "lazy_static 1.4.0", + "log", + "objc", + "raw-window-handle", + "smallvec 1.5.1", + "winapi 0.3.9", + "x11", +] + +[[package]] +name = "gfx-descriptor" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8c7afcd000f279d541a490e27117e61037537279b9342279abf4938fe60c6b" +dependencies = [ + "arrayvec", + "fxhash", + "gfx-hal", + "log", +] + +[[package]] +name = "gfx-hal" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d0754f5b7a43915fd7466883b2d1bb0800d7cc4609178d0b27bf143b9e5123" +dependencies = [ + "bitflags", + "raw-window-handle", +] + +[[package]] +name = "gfx-memory" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dccdda5d2b39412f4ca2cb15c70b5a82783a86b0606f5e985342754c8ed88f05" +dependencies = [ + "bit-set", + "fxhash", + "gfx-hal", + "log", + "slab", +] + +[[package]] +name = "gilrs" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b64ac678e1174eb012be1cfd409ff2483f23cb79bc880ce4737147245b0fbff" +dependencies = [ + "fnv", + "gilrs-core", + "log", + "stdweb 0.4.20", + "uuid", + "vec_map", +] + +[[package]] +name = "gilrs-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1024d4046c5c67d2adb8c90f6ed235163b58e05d35a63bf699b53f0cceeba2c6" +dependencies = [ + "core-foundation 0.6.4", + "io-kit-sys", + "libc", + "libudev-sys", + "log", + "nix 0.18.0", + "rusty-xinput", + "stdweb 0.4.20", + "uuid", + "vec_map", + "winapi 0.3.9", +] + +[[package]] +name = "gimli" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" + +[[package]] +name = "glam" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef81f244b2a421ddb8ccb382857772379c0996fe5948992db5bee51cef3c28e" +dependencies = [ + "serde", + "version_check", +] + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "gltf" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6fb0d1d772daf10ea74528c3aeb12215f6d5b820adf2ecfc93a6578d6779c3c" +dependencies = [ + "byteorder", + "gltf-json", + "lazy_static 1.4.0", +] + +[[package]] +name = "gltf-derive" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6636de7bf52227363554f1ca2d9cd180fc666129ddd0933097e1f227dfa7293" +dependencies = [ + "inflections", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "gltf-json" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3fc3deb81e6fa04bf808f6be7c3983229552a95b77f687ad96af00f6d3e7d6c" +dependencies = [ + "gltf-derive", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "glyph_brush_layout" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10bc06d530bf20c1902f1b02799ab7372ff43f6119770c49b0bc3f21bd148820" +dependencies = [ + "ab_glyph", + "approx", + "xi-unicode", +] + +[[package]] +name = "guillotiere" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7cccefbf418f663e11e9500326f46a44273dc598210bbedc8bbe95e696531f" +dependencies = [ + "euclid", + "svg_fmt", +] + +[[package]] +name = "hermit-abi" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" + +[[package]] +name = "hexasphere" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b81ef4574a098bd48fad1a5cd7c4e6e908ac9a90d85338cef224be96f3059355" +dependencies = [ + "glam", + "lazy_static 1.4.0", +] + +[[package]] +name = "hound" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a164bb2ceaeff4f42542bdb847c41517c78a60f5649671b2a07312b6e117549" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "image" +version = "0.23.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ce04077ead78e39ae8610ad26216aed811996b043d47beed5090db674f9e9b5" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-iter", + "num-rational", + "num-traits", + "png", + "scoped_threadpool", +] + +[[package]] +name = "inflections" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" + +[[package]] +name = "inotify" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46dd0a94b393c730779ccfd2a872b67b1eb67be3fc33082e733bdb38b5fde4d4" +dependencies = [ + "bitflags", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4563555856585ab3180a5bf0b2f9f8d301a728462afffc8195b3f5394229c55" +dependencies = [ + "libc", +] + +[[package]] +name = "inplace_it" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd01a2a73f2f399df96b22dc88ea687ef4d76226284e7531ae3c7ee1dc5cb534" + +[[package]] +name = "instant" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "io-kit-sys" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f21dcc74995dd4cd090b147e79789f8d65959cbfb5f0b118002db869ea3bd0a0" +dependencies = [ + "core-foundation-sys 0.6.2", + "mach 0.2.3", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + +[[package]] +name = "itoa" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" + +[[package]] +name = "jni" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1981310da491a4f0f815238097d0d43d8072732b5ae5f8bd0d8eadf5bf245402" +dependencies = [ + "cesu8", + "combine 3.8.1", + "error-chain", + "jni-sys", + "log", + "walkdir", +] + +[[package]] +name = "jni" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36bcc950632e48b86da402c5c077590583da5ac0d480103611d5374e7c967a3c" +dependencies = [ + "cesu8", + "combine 4.4.0", + "error-chain", + "jni-sys", + "log", + "walkdir", +] + +[[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.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d7383929f7c9c7c2d0fa596f325832df98c3704f2c60553080f7127a58175" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "lazy_static" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "lewton" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be42bea7971f4ba0ea1e215730c29bc1ff9bd2a9c10013912f42a8dcf8d77c0d" +dependencies = [ + "byteorder", + "ogg", + "tinyvec 0.3.4", +] + +[[package]] +name = "libc" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb" + +[[package]] +name = "libflate" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9135df43b1f5d0e333385cb6e7897ecd1a43d7d11b91ac003f4d2c2d2401fdd" +dependencies = [ + "adler32", + "crc32fast", + "rle-decode-fast", + "take_mut", +] + +[[package]] +name = "libloading" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" +dependencies = [ + "cc", + "winapi 0.3.9", +] + +[[package]] +name = "libloading" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9367bdfa836b7e3cf895867f7a570283444da90562980ec2263d6e1569b16bc" +dependencies = [ + "cfg-if 1.0.0", + "winapi 0.3.9", +] + +[[package]] +name = "libm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" + +[[package]] +name = "libudev-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "lock_api" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" +dependencies = [ + "cfg-if 0.1.10", +] + +[[package]] +name = "loom" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0e8460f2f2121162705187214720353c517b97bdfb3494c0b1e33d83ebe4bed" +dependencies = [ + "cfg-if 0.1.10", + "generator", + "scoped-tls", + "serde", + "serde_json", +] + +[[package]] +name = "mach" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86dd2487cdfea56def77b88438a2c915fb45113c5319bfe7e14306ca4cd0b0e1" +dependencies = [ + "libc", +] + +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +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.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" + +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" + +[[package]] +name = "memchr" +version = "2.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" + +[[package]] +name = "metal" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c4e8a431536529327e28c9ba6992f2cb0c15d4222f0602a16e6d7695ff3bccf" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "foreign-types", + "log", + "objc", +] + +[[package]] +name = "minimp3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9684a8c55935322fdab159b5d7a6163b33f6e7d32c4a8a54fe53d1bcfad738db" +dependencies = [ + "minimp3-sys", + "slice-deque", +] + +[[package]] +name = "minimp3-sys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e21c73734c69dc95696c9ed8926a2b393171d98b3f5f5935686a26a487ab9b90" +dependencies = [ + "cc", +] + +[[package]] +name = "miniz_oxide" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" +dependencies = [ + "adler32", +] + +[[package]] +name = "miniz_oxide" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" +dependencies = [ + "adler", + "autocfg", +] + +[[package]] +name = "mio" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +dependencies = [ + "cfg-if 0.1.10", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log", + "miow", + "net2", + "slab", + "winapi 0.2.8", +] + +[[package]] +name = "mio-extras" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" +dependencies = [ + "lazycell", + "log", + "mio", + "slab", +] + +[[package]] +name = "miow" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", +] + +[[package]] +name = "naga" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0873deb76cf44b7454fba7b2ba6a89d3de70c08aceffd2c489379b3d9d08e661" +dependencies = [ + "bitflags", + "fxhash", + "log", + "num-traits", + "spirv_headers", + "thiserror", +] + +[[package]] +name = "ndk" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb167c1febed0a496639034d0c76b3b74263636045db5489eee52143c246e73" +dependencies = [ + "jni-sys", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk-glue" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdf399b8b7a39c6fb153c4ec32c72fd5fe789df24a647f229c239aa7adb15241" +dependencies = [ + "android_logger", + "lazy_static 1.4.0", + "libc", + "log", + "ndk", + "ndk-macro", + "ndk-sys", +] + +[[package]] +name = "ndk-macro" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" +dependencies = [ + "darling", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "ndk-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c44922cb3dbb1c70b5e5f443d63b64363a898564d739ba5198e3a9138442868d" + +[[package]] +name = "net2" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "nix" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e0b4f3320ed72aaedb9a5ac838690a8047c7b275da22711fddff4f8a14229" +dependencies = [ + "bitflags", + "cc", + "cfg-if 0.1.10", + "libc", + "void", +] + +[[package]] +name = "nix" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055" +dependencies = [ + "bitflags", + "cc", + "cfg-if 0.1.10", + "libc", +] + +[[package]] +name = "nom" +version = "5.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" +dependencies = [ + "memchr", + "version_check", +] + +[[package]] +name = "notify" +version = "5.0.0-pre.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8b946889dfdad884379cd56367d93b6d0ce8889cc027d26a69a3a31c0a03bb5" +dependencies = [ + "anymap", + "bitflags", + "crossbeam-channel", + "filetime", + "fsevent", + "fsevent-sys", + "inotify", + "libc", + "mio", + "mio-extras", + "walkdir", + "winapi 0.3.9", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca565a7df06f3d4b485494f25ba05da1435950f4dc263440eda7a6fa9b8e36e4" +dependencies = [ + "derivative", + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "object" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397" + +[[package]] +name = "oboe" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aadc2b0867bdbb9a81c4d99b9b682958f49dbea1295a81d2f646cca2afdd9fc" +dependencies = [ + "jni 0.14.0", + "ndk", + "ndk-glue", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ff7a51600eabe34e189eec5c995a62f151d8d97e5fbca39e87ca738bb99b82" +dependencies = [ + "fetch_unroll", +] + +[[package]] +name = "ogg" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13e571c3517af9e1729d4c63571a27edd660ade0667973bfc74a67c660c2b651" +dependencies = [ + "byteorder", +] + +[[package]] +name = "once_cell" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" + +[[package]] +name = "owned_ttf_parser" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1035b3031937401c4d01719ec82c558b268f923dcfca86e0fb1c2701782b2e89" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "owning_ref" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "parking" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" + +[[package]] +name = "parking_lot" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e" +dependencies = [ + "owning_ref", + "parking_lot_core 0.2.14", +] + +[[package]] +name = "parking_lot" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.1", +] + +[[package]] +name = "parking_lot_core" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4db1a8ccf734a7bce794cc19b3df06ed87ab2f3907036b693c68f56b4d4537fa" +dependencies = [ + "libc", + "rand 0.4.6", + "smallvec 0.6.13", + "winapi 0.3.9", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c6d9b8427445284a09c55be860a15855ab580a417ccad9da88f5a06787ced0" +dependencies = [ + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall", + "smallvec 1.5.1", + "winapi 0.3.9", +] + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "pin-project" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ccc2237c2c489783abd8c4c80e5450fc0e98644555b1364da68cc29aa151ca7" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8e8d2bf0b23038a4424865103a4df472855692821aab4e4f5c3312d461d9e5f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b" + +[[package]] +name = "pin-project-lite" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b063f57ec186e6140e2b8b6921e5f1bd89c7356dda5b33acc5401203ca6131c" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" + +[[package]] +name = "png" +version = "0.16.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" +dependencies = [ + "bitflags", + "crc32fast", + "deflate", + "miniz_oxide 0.3.7", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + +[[package]] +name = "proc-macro-nested" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" + +[[package]] +name = "proc-macro2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding 2.1.0", +] + +[[package]] +name = "quote" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +dependencies = [ + "fuchsia-cprng", + "libc", + "rand_core 0.3.1", + "rdrand", + "winapi 0.3.9", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.15", + "libc", + "rand_chacha", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +dependencies = [ + "rand_core 0.4.2", +] + +[[package]] +name = "rand_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.15", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "range-alloc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a871f1e45a3a3f0c73fb60343c811238bb5143a81642e27c2ac7aac27ff01a63" + +[[package]] +name = "raw-window-handle" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a441a7a6c80ad6473bd4b74ec1c9a4c951794285bf941c2126f607c72e48211" +dependencies = [ + "libc", +] + +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rectangle-pack" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e509b8eba9ca1884760ad1e2161cece724d4fd2b4cb47ddc01706920c6500cd7" + +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + +[[package]] +name = "regex" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", +] + +[[package]] +name = "regex-automata" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4" +dependencies = [ + "byteorder", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" + +[[package]] +name = "rental" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8545debe98b2b139fb04cad8618b530e9b07c152d99a5de83c860b877d67847f" +dependencies = [ + "rental-impl", + "stable_deref_trait", +] + +[[package]] +name = "rental-impl" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "475e68978dc5b743f2f40d8e0a8fdc83f1c5e78cbf4b8fa5e74e73beebc340de" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "ring" +version = "0.16.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "024a1e66fea74c66c66624ee5622a7ff0e4b73a13b4f5c326ddb50c708944226" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi 0.3.9", +] + +[[package]] +name = "rle-decode-fast" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac" + +[[package]] +name = "rodio" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9683532495146e98878d4948fa1a1953f584cd923f2a5f5c26b7a8701b56943" +dependencies = [ + "cpal", + "minimp3", +] + +[[package]] +name = "ron" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a58080b7bb83b2ea28c3b7a9a994fd5e310330b7c8ca5258d99b98128ecfe4" +dependencies = [ + "base64 0.12.3", + "bitflags", + "serde", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "rustls" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b25a18b1bf7387f0145e7f8324e700805aade3842dd3db2e74e4cdeb4677c09e" +dependencies = [ + "base64 0.10.1", + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rusty-xinput" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2aa654bc32eb9ca14cce1a084abc9dfe43949a4547c35269a094c39272db3bb" +dependencies = [ + "lazy_static 1.4.0", + "log", + "winapi 0.3.9", +] + +[[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + +[[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 = "scoped-tls" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" + +[[package]] +name = "scoped_threadpool" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "sct" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06c64263859d87aa2eb554587e2d23183398d617427327cf2b3d0ed8c69e4800" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c84d3526699cd55261af4b941e4e725444df67aa4f9e6a3564f18030d12672df" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1500e84d27fe482ed1dc791a56eddc2f230046a040fa908c08bda1d9fb615779" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" + +[[package]] +name = "shaderc" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03f0cb8d1f8667fc9c50d5054be830a117af5f9a15f87c66b72bbca0c2fca484" +dependencies = [ + "libc", + "shaderc-sys", +] + +[[package]] +name = "shaderc-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89175f80244b82f882033a81bd188f87307c4c39b2fe8d0f194314f270bdea9" +dependencies = [ + "cmake", + "libc", +] + +[[package]] +name = "sharded-slab" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4921be914e16899a80adefb821f8ddb7974e3f1250223575a44ed994882127" +dependencies = [ + "lazy_static 1.4.0", + "loom", +] + +[[package]] +name = "shlex" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" + +[[package]] +name = "slab" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" + +[[package]] +name = "slice-deque" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31ef6ee280cdefba6d2d0b4b78a84a1c1a3f3a4cec98c2d4231c8bc225de0f25" +dependencies = [ + "libc", + "mach 0.3.2", + "winapi 0.3.9", +] + +[[package]] +name = "smallvec" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" +dependencies = [ + "maybe-uninit", +] + +[[package]] +name = "smallvec" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae524f056d7d770e174287294f562e95044c68e88dec909a00d2094805db9d75" +dependencies = [ + "serde", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spirv-reflect" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecc7af6a7d3ca6d15f4d6b5077df89c77ad1f4b314d0cabee221656d041dad7" +dependencies = [ + "bitflags", + "cc", + "num-traits", + "serde", + "serde_derive", + "spirv_headers", +] + +[[package]] +name = "spirv_cross" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea964c42ce40326fe96111918abe71fa45076da1ea85769f3f1ab1cda9a1d496" +dependencies = [ + "cc", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "spirv_headers" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f5b132530b1ac069df335577e3581765995cba5a13995cdbbdbc8fb057c532c" +dependencies = [ + "bitflags", + "num-traits", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "stdweb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e" + +[[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version", + "serde", + "serde_json", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1", + "syn", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + +[[package]] +name = "storage-map" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418bb14643aa55a7841d5303f72cf512cfb323b8cc221d51580500a1ca75206c" +dependencies = [ + "lock_api", +] + +[[package]] +name = "stretch" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0dc6d20ce137f302edf90f9cd3d278866fd7fb139efca6f246161222ad6d87" +dependencies = [ + "lazy_static 1.4.0", + "libm", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "svg_fmt" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" + +[[package]] +name = "syn" +version = "1.0.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2af957a63d6bd42255c359c93d9bfdb97076bd3b820897ce55ffbfbf107f44" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" + +[[package]] +name = "tar" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489997b7557e9a43e192c527face4feacc78bfbe6eed67fd55c4c9e381cba290" +dependencies = [ + "filetime", + "libc", + "redox_syscall", + "xattr", +] + +[[package]] +name = "thiserror" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e9ae34b84616eedaaf1e9dd6026dbe00dcafa92aa0c8077cb69df1fcfe5e53e" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ba20f23e85b10754cd195504aebf6a27e2e6cbe28c17778a0c930724628dd56" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" +dependencies = [ + "lazy_static 1.4.0", +] + +[[package]] +name = "thunderdome" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7572415bd688d401c52f6e36f4c8e805b9ae1622619303b9fa835d531db0acae" + +[[package]] +name = "time" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi 0.3.9", +] + +[[package]] +name = "tinyvec" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117" + +[[package]] +name = "tinyvec" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf8dbc19eb42fba10e8feaaec282fb50e2c14b2726d6301dbfeed0f73306a6f" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "toml" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645" +dependencies = [ + "serde", +] + +[[package]] +name = "tracing" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f47026cdc4080c07e49b37087de021820269d996f581aac150ef9e5583eefe3" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite 0.2.0", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4ada" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" +dependencies = [ + "lazy_static 1.4.0", +] + +[[package]] +name = "tracing-log" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e0f8c7178e13481ff6765bd169b33e8d554c5d2bbede5e32c356194be02b9b9" +dependencies = [ + "lazy_static 1.4.0", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb65ea441fbb84f9f6748fd496cf7f63ec9af5bca94dd86456978d055e8eb28b" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1fa8f0c8f4c594e4fc9debc1990deab13238077271ba84dd853d54902ee3401" +dependencies = [ + "ansi_term", + "chrono", + "lazy_static 1.4.0", + "matchers", + "regex", + "serde", + "serde_json", + "sharded-slab", + "smallvec 1.5.1", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", +] + +[[package]] +name = "tracing-wasm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd96394d3d2f119de6c1078fa065b99217db4377f9aac6e87f8393276a0d7962" +dependencies = [ + "tracing", + "tracing-subscriber", + "wasm-bindgen", +] + +[[package]] +name = "ttf-parser" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62ddb402ac6c2af6f7a2844243887631c4e94b51585b229fcfddb43958cd55ca" + +[[package]] +name = "typed-arena" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0685c84d5d54d1c26f7d3eb96cd41550adb97baed141a761cf335d3d33bcd0ae" + +[[package]] +name = "unicode-bidi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +dependencies = [ + "matches", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13e63ab62dbe32aeee58d1c5408d35c36c392bba5d9d3142287219721afe606" +dependencies = [ + "tinyvec 1.1.0", +] + +[[package]] +name = "unicode-xid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" + +[[package]] +name = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "ureq" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801125e6d1ba6864cf3a5a92cfb2f0b0a3ee73e40602a0cd206ad2f3c040aa96" +dependencies = [ + "base64 0.11.0", + "chunked_transfer", + "cookie", + "lazy_static 1.4.0", + "qstring", + "rustls", + "url 2.2.0", + "webpki", + "webpki-roots", +] + +[[package]] +name = "url" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +dependencies = [ + "idna 0.1.5", + "matches", + "percent-encoding 1.0.1", +] + +[[package]] +name = "url" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e" +dependencies = [ + "form_urlencoded", + "idna 0.2.0", + "matches", + "percent-encoding 2.1.0", +] + +[[package]] +name = "uuid" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fde2f6a4bea1d6e007c4ad38c6839fa71cbb63b6dbf5b595aa38dc9b1093c11" +dependencies = [ + "rand 0.7.3", + "serde", +] + +[[package]] +name = "vec-arena" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eafc1b9b2dfc6f5529177b62cf806484db55b32dc7c9658a118e11bbeb33061d" + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "walkdir" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" +dependencies = [ + "same-file", + "winapi 0.3.9", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasm-bindgen" +version = "0.2.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cd364751395ca0f68cafb17666eee36b63077fb5ecd972bbcd74c90c4bf736e" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1114f89ab1f4106e5b55e688b828c0ab0ea593a1ea7c094b141b14cbaaec2d62" +dependencies = [ + "bumpalo", + "lazy_static 1.4.0", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fe9756085a84584ee9457a002b7cdfe0bfff169f45d2591d8be1345a6780e35" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6ac8995ead1f084a8dea1e65f194d0973800c7f571f6edd70adf06ecf77084" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a48c72f299d80557c7c62e37e7225369ecc0c963964059509fbafe917c7549" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e7811dd7f9398f14cc76efd356f98f03aa30419dea46aa810d71e819fc97158" + +[[package]] +name = "web-sys" +version = "0.3.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222b1ef9334f92a21d3fb53dc3fd80f30836959a90f9274a626d7e06315ba3c3" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4" +dependencies = [ + "webpki", +] + +[[package]] +name = "wgpu" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "991903e4c9f5b7319732b30a3d0339e27a51ea992cea22769b5f6c7f7076af6d" +dependencies = [ + "arrayvec", + "futures", + "gfx-backend-vulkan", + "js-sys", + "objc", + "parking_lot 0.11.1", + "raw-window-handle", + "smallvec 1.5.1", + "tracing", + "typed-arena", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea487deeae90e06d77eb8e6cef945247774e7c0a0a226d238b31e90633594365" +dependencies = [ + "arrayvec", + "bitflags", + "copyless", + "fxhash", + "gfx-backend-dx11", + "gfx-backend-dx12", + "gfx-backend-empty", + "gfx-backend-metal", + "gfx-backend-vulkan", + "gfx-descriptor", + "gfx-hal", + "gfx-memory", + "naga", + "parking_lot 0.11.1", + "raw-window-handle", + "smallvec 1.5.1", + "thiserror", + "tracing", + "wgpu-types", +] + +[[package]] +name = "wgpu-types" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e3529528e608b54838ee618c3923b0f46e6db0334cfc6c42a16cf4ceb3bdb57" +dependencies = [ + "bitflags", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + +[[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-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi 0.3.9", +] + +[[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 = "winit" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5bc559da567d8aa671bbcd08304d49e982c7bf2cb91e10288b9188931c1b772" +dependencies = [ + "bitflags", + "cocoa", + "core-foundation 0.9.1", + "core-graphics 0.22.2", + "core-video-sys", + "dispatch", + "instant", + "lazy_static 1.4.0", + "libc", + "log", + "mio", + "mio-extras", + "ndk", + "ndk-glue", + "ndk-sys", + "objc", + "parking_lot 0.11.1", + "percent-encoding 2.1.0", + "raw-window-handle", + "wasm-bindgen", + "web-sys", + "winapi 0.3.9", + "x11-dl", +] + +[[package]] +name = "wio" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "x11" +version = "2.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ecd092546cb16f25783a5451538e73afc8d32e242648d54f4ae5459ba1e773" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf981e3a5b3301209754218f962052d4d9ee97e478f4d26d4a6eced34c1fef8" +dependencies = [ + "lazy_static 1.4.0", + "libc", + "maybe-uninit", + "pkg-config", +] + +[[package]] +name = "xattr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" +dependencies = [ + "libc", +] + +[[package]] +name = "xi-unicode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..904bb49 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "bevy_openal" +version = "0.1.0" +authors = ["Nolan Darilek "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +alto = "3" +anyhow = "1" +bevy = { git = "https://github.com/bevyengine/bevy" } +hound = "3" +lewton = "0.10" \ No newline at end of file diff --git a/assets/footstep.ogg b/assets/footstep.ogg new file mode 100644 index 0000000000000000000000000000000000000000..41c9ad59317cce1d5471a86dffc33f9d8b154c21 GIT binary patch literal 36239 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

c{UF|;TZ0)7KG5hGUPMR^jn3Yl90Q~QaP79 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 exwiS&dJf0GjVXZ=2BNSnxHJ@m+y^ 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 literal 0 HcmV?d00001 diff --git a/examples/game.rs b/examples/game.rs new file mode 100644 index 0000000..1b8f5fb --- /dev/null +++ b/examples/game.rs @@ -0,0 +1,52 @@ +use bevy::{asset::LoadState, prelude::*}; +use bevy_openal::{Listener, OpenAlPlugin, Sound, Sounds}; + +#[derive(Default)] +struct AssetHandles { + sounds: Vec, + loaded: bool, +} + +fn setup(asset_server: Res, mut handles: ResMut) { + handles.sounds = asset_server.load_folder(".").expect("Failed to load sfx"); +} + +fn load_and_create_system( + commands: &mut Commands, + asset_server: Res, + mut handles: ResMut, +) { + if handles.loaded { + return; + } + handles.loaded = asset_server + .get_group_load_state(handles.sounds.iter().map(|handle| handle.id)) + == LoadState::Loaded; + if handles.loaded { + commands.spawn((Listener::default(), Transform::default)); + let handle = handles.sounds[0].clone(); + let buffer = asset_server.get_handle(handle); + let mut sounds = Sounds::default(); + sounds.insert( + "footstep".into(), + Sound { + buffer, + autoplay: true, + looping: true, + ..Default::default() + }, + ); + commands.spawn((Transform::from_translation(Vec3::new(15., 0., 0.)), sounds)); + } +} + +fn main() { + App::build() + .add_plugins(DefaultPlugins) + .add_system(bevy::input::system::exit_on_esc_system) + .add_plugin(OpenAlPlugin) + .init_resource::() + .add_startup_system(setup) + .add_system(load_and_create_system) + .run(); +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..9c47eee --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,225 @@ +use std::collections::HashMap; +use std::io::Cursor; +use std::sync::Arc; + +pub use alto::Source; +use alto::{Alto, Context, Mono, StaticSource, Stereo}; +use bevy::{ + asset::{AssetLoader, HandleId, LoadContext, LoadedAsset}, + prelude::*, + reflect::TypeUuid, + utils::BoxedFuture, +}; +use lewton::inside_ogg::OggStreamReader; + +#[derive(Clone, Debug, TypeUuid)] +#[uuid = "aa22d11e-3bed-11eb-8708-00155dea3db9"] +pub struct Buffer { + samples: Vec, + sample_rate: i32, + channels: u16, +} + +#[derive(Clone, Copy, Debug, Default)] +pub struct BufferAssetLoader; + +impl AssetLoader for BufferAssetLoader { + fn load<'a>( + &'a self, + bytes: &'a [u8], + load_context: &'a mut LoadContext, + ) -> BoxedFuture<'a, Result<(), anyhow::Error>> { + Box::pin(async move { + let cursor = Cursor::new(bytes.to_vec()); + let buffer: Option = + match load_context.path().extension().unwrap().to_str().unwrap() { + "ogg" => { + let mut stream = OggStreamReader::new(cursor)?; + let mut samples: Vec = vec![]; + while let Some(pck_samples) = &mut stream.read_dec_packet_itl()? { + samples.append(pck_samples); + } + Some(Buffer { + samples, + channels: stream.ident_hdr.audio_channels as u16, + sample_rate: stream.ident_hdr.audio_sample_rate as i32, + }) + } + "wav" => { + let reader = hound::WavReader::new(cursor); + if let Ok(mut reader) = reader { + let mut samples: Vec = vec![]; + for sample in reader.samples::() { + if let Ok(sample) = sample { + samples.push(sample); + } + } + Some(Buffer { + samples, + sample_rate: reader.spec().sample_rate as i32, + channels: reader.spec().channels, + }) + } else { + None + } + } + _ => None, + }; + if let Some(buffer) = buffer { + load_context.set_default_asset(LoadedAsset::new(buffer)); + } + Ok(()) + }) + } + + fn extensions(&self) -> &[&str] { + &["mp3", "ogg", "wav"] + } +} + +#[derive(Default)] +struct Buffers(HashMap>); + +fn buffer_creation_system( + context: Res, + mut buffers: ResMut, + mut event_reader: Local>>, + events: Res>>, + assets: Res>, +) { + for event in event_reader.iter(&events) { + match event { + AssetEvent::Created { handle } => { + if let Some(buffer) = assets.get(handle) { + let buffer = match buffer.channels { + 1 => { + context.new_buffer::, _>(&buffer.samples, buffer.sample_rate) + } + 2 => context + .new_buffer::, _>(&buffer.samples, buffer.sample_rate), + _ => { + panic!("Unsupported channel count"); + } + }; + if let Ok(buffer) = buffer { + buffers.0.insert(handle.id, Arc::new(buffer)); + } + } + } + AssetEvent::Modified { handle: _ } => {} + AssetEvent::Removed { handle } => { + buffers.0.remove(&handle.id); + } + } + } +} + +#[derive(Reflect)] +#[reflect(Component)] +pub struct Sound { + pub buffer: Handle, + pub autoplay: bool, + pub gain: f32, + pub looping: bool, + #[reflect(ignore)] + pub source: Option, +} + +impl Default for Sound { + fn default() -> Self { + Self { + buffer: Default::default(), + autoplay: false, + gain: 1., + looping: false, + source: None, + } + } +} +pub type Sounds = HashMap; + +fn source_system( + context: Res, + buffers: Res, + mut query: Query<(&mut Sounds, Option<&Transform>)>, +) { + for (mut sounds, transform) in query.iter_mut() { + for mut sound in sounds.values_mut() { + if sound.source.is_none() { + if let Ok(mut source) = context.new_static_source() { + if let Some(buffer) = buffers.0.get(&sound.buffer.id) { + source.set_buffer(buffer.clone()).unwrap(); + } + if sound.autoplay { + source.play(); + } + sound.source = Some(source); + } + } + if let Some(source) = sound.source.as_mut() { + source.set_gain(sound.gain).unwrap(); + source.set_looping(sound.looping); + if let Some(transform) = transform { + source.set_relative(false); + source + .set_position([ + transform.translation.x, + transform.translation.y, + transform.translation.z, + ]) + .unwrap(); + } else { + source.set_relative(true); + source.set_position([0., 0., 0.]).unwrap(); + } + } + } + } +} + +#[derive(Clone, Copy, Debug, Default, Reflect)] +#[reflect(Component)] +pub struct Listener; + +fn update_listener_system(context: ResMut, query: Query<(&Listener, Option<&Transform>)>) { + for (_, transform) in query.iter() { + if let Some(transform) = transform { + let matrix = transform.compute_matrix().inverse(); + let look = matrix.x_axis; + let up = matrix.z_axis; + context + .set_position([ + transform.translation.x, + transform.translation.y, + transform.translation.z, + ]) + .unwrap(); + context + .set_orientation(([look.x, look.y, look.z], [up.x, up.y, up.z])) + .unwrap(); + } else { + context.set_position([0., 0., 0.]).unwrap(); + context + .set_orientation(([0., 0., 1.], [0., 1., 0.])) + .unwrap(); + } + } +} + +pub struct OpenAlPlugin; + +impl Plugin for OpenAlPlugin { + fn build(&self, app: &mut AppBuilder) { + let al = Alto::load_default().expect("Could not load alto"); + let device = al.open(None).expect("Could not open device"); + let context = device.new_context(None).expect("Could not create context"); + app.add_asset::() + .init_asset_loader::() + .add_resource(context) + .add_resource(Buffers::default()) + .register_type::() + .add_system(buffer_creation_system) + .add_system(source_system) + .add_system(update_listener_system); + } +}