From ebe86cee9554da039ff9568832ae03228fc4e85b Mon Sep 17 00:00:00 2001 From: mikeder Date: Tue, 27 Jun 2023 11:09:06 -0400 Subject: [PATCH] audio overhaul --- Cargo.lock | 674 ++++++++++++----------- Cargo.toml | 2 +- assets/audio/fireball1.ogg | Bin 0 -> 21335 bytes assets/audio/pickup.ogg | Bin 0 -> 7987 bytes assets/audio/sprinting.ogg | Bin 0 -> 16436 bytes assets/audio/{flying.ogg => walking.ogg} | Bin src/actions/game_control.rs | 35 -- src/actions/mod.rs | 36 -- src/audio.rs | 200 +++++-- src/lib.rs | 3 - src/loading.rs | 14 +- src/player/systems.rs | 126 ++++- 12 files changed, 619 insertions(+), 471 deletions(-) create mode 100644 assets/audio/fireball1.ogg create mode 100644 assets/audio/pickup.ogg create mode 100644 assets/audio/sprinting.ogg rename assets/audio/{flying.ogg => walking.ogg} (100%) delete mode 100644 src/actions/game_control.rs delete mode 100644 src/actions/mod.rs diff --git a/Cargo.lock b/Cargo.lock index c0806d7..d47e491 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "ab_glyph" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe21446ad43aa56417a767f3e2f3d7c4ca522904de1dd640529a76e9c5c3b33c" +checksum = "5110f1c78cf582855d895ecd0746b653db010cec6d9f5575293f27934d980a39" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -140,9 +140,9 @@ dependencies = [ [[package]] name = "aes" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ "cfg-if", "cipher 0.4.4", @@ -165,12 +165,12 @@ dependencies = [ [[package]] name = "aes-gcm" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e1366e0c69c9f927b1fa5ce2c7bf9eafc8f9268c0b9800729e8b267612447c" +checksum = "209b47e8954a928e1d72e86eca7000ebb6655fe1436d33eefc2201cad027e237" dependencies = [ "aead 0.5.2", - "aes 0.8.2", + "aes 0.8.3", "cipher 0.4.4", "ctr 0.9.2", "ghash 0.5.0", @@ -203,7 +203,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "once_cell", "version_check", ] @@ -221,9 +221,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" dependencies = [ "memchr", ] @@ -291,9 +291,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.70" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" +checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" [[package]] name = "approx" @@ -332,15 +332,15 @@ checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "ash" -version = "0.37.2+1.3.238" +version = "0.37.3+1.3.251" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28bf19c1f0a470be5fbf7522a308a05df06610252c5bcf5143e1b23f629a9a03" +checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" dependencies = [ "libloading", ] @@ -374,6 +374,7 @@ dependencies = [ "num-traits", "rusticata-macros", "thiserror", + "time", ] [[package]] @@ -547,7 +548,7 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.22", ] [[package]] @@ -590,9 +591,9 @@ checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" [[package]] name = "atomic_refcell" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "857253367827bd9d0fd973f0ef15506a96e79e41b0ad7aa691203a4e3214f6c8" +checksum = "79d6dc922a2792b006573f60b2648076355daeae5ce9cb59507e5908c9625d31" [[package]] name = "autocfg" @@ -629,9 +630,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.0" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" [[package]] name = "base64ct" @@ -684,7 +685,7 @@ checksum = "7556c913daacbec7aa213eda82517673bf6c6b25e0d827a56efe17421ebaca35" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.22", ] [[package]] @@ -858,9 +859,9 @@ dependencies = [ [[package]] name = "bevy_egui" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c40ec476443b97d5d9c6f40668da7ded2d83b13955a7c94c062ad2b6f98120" +checksum = "e5e269226c4a8fb659aa3161c19925650ebe2c23021ddf4dd9ed191cf708364f" dependencies = [ "arboard", "bevy", @@ -1321,8 +1322,8 @@ checksum = "0a88ebbca55d360d72e9fe78df0d22e25cd419933c9559e79dae2757f7c4d066" dependencies = [ "ahash 0.7.6", "bevy_utils_proc_macros", - "getrandom 0.2.9", - "hashbrown", + "getrandom 0.2.10", + "hashbrown 0.12.3", "instant", "petgraph", "thiserror", @@ -1517,9 +1518,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "bytemuck" @@ -1538,7 +1539,7 @@ checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.22", ] [[package]] @@ -1709,9 +1710,9 @@ checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913" [[package]] name = "const_panic" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58baae561b85ca19b3122a9ddd35c8ec40c3bcd14fe89921824eae73f7baffbf" +checksum = "6051f239ecec86fde3410901ab7860d458d160371533842974fc61f96d15879b" [[package]] name = "convert_case" @@ -1756,13 +1757,12 @@ dependencies = [ [[package]] name = "core-graphics-types" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" dependencies = [ "bitflags", "core-foundation", - "foreign-types", "libc", ] @@ -1813,9 +1813,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" +checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" dependencies = [ "libc", ] @@ -1856,9 +1856,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] @@ -1896,16 +1896,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "ctor" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" -dependencies = [ - "quote", - "syn 1.0.109", -] - [[package]] name = "ctr" version = "0.8.0" @@ -1939,18 +1929,31 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.0.0-rc.2" +version = "4.0.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d928d978dbec61a1167414f5ec534f24bea0d7a0d24dd9b6233d3d8223e585" +checksum = "436ace70fc06e06f7f689d2624dc4e2f0ea666efb5aa704215f7249ae6e047a7" dependencies = [ "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", "fiat-crypto", - "packed_simd_2", "platforms", + "rustc_version", "subtle", "zeroize", ] +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.22", +] + [[package]] name = "d3d12" version = "0.6.0" @@ -2005,9 +2008,9 @@ checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" [[package]] name = "data-encoding" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" [[package]] name = "der" @@ -2043,6 +2046,7 @@ dependencies = [ "asn1-rs 0.5.2", "displaydoc", "nom", + "num-bigint 0.4.3", "num-traits", "rusticata-macros", ] @@ -2102,35 +2106,15 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", "crypto-common", "subtle", ] -[[package]] -name = "dirs" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "dispatch" version = "0.2.0" @@ -2139,13 +2123,13 @@ checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" [[package]] name = "displaydoc" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", ] [[package]] @@ -2195,7 +2179,7 @@ dependencies = [ "base16ct", "crypto-bigint", "der", - "digest 0.10.6", + "digest 0.10.7", "ff", "generic-array", "group", @@ -2287,6 +2271,12 @@ dependencies = [ "parking_lot 0.12.1", ] +[[package]] +name = "equivalent" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" + [[package]] name = "erased-serde" version = "0.3.25" @@ -2406,12 +2396,12 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" dependencies = [ "crc32fast", - "miniz_oxide 0.6.2", + "miniz_oxide 0.7.1", ] [[package]] @@ -2437,9 +2427,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ "percent-encoding", ] @@ -2515,7 +2505,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.22", ] [[package]] @@ -2600,9 +2590,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "js-sys", @@ -2620,7 +2610,7 @@ dependencies = [ "bincode", "bitfield-rle", "bytemuck", - "getrandom 0.2.9", + "getrandom 0.2.10", "instant", "js-sys", "parking_lot 0.11.2", @@ -2645,14 +2635,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" dependencies = [ "opaque-debug", - "polyval 0.6.0", + "polyval 0.6.1", ] [[package]] name = "gimli" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" [[package]] name = "glam" @@ -2684,9 +2674,9 @@ dependencies = [ [[package]] name = "glow" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e007a07a24de5ecae94160f141029e9a347282cfe25d1d58d85d845cf3130f1" +checksum = "807edf58b70c0b5b2181dd39fe1839dbdb3ba02645630dc5f753e23da307f762" dependencies = [ "js-sys", "slotmap", @@ -2696,33 +2686,32 @@ dependencies = [ [[package]] name = "gltf" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd7703af6975def3b32573c60aaa5ebfebfab5d879da1e1315d87155ba57bcd" +checksum = "f4fe8d5192923fbd783c15e74627de8e27c97e1e3dec22bf54515a407249febf" dependencies = [ "byteorder", "gltf-json", "lazy_static", - "urlencoding", ] [[package]] name = "gltf-derive" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b33dbe598480111e3b2e5a1e9a7e52ad5df0f836e04b8c80fc96f52a9c9f2e" +checksum = "ec223c88f017861193ae128239aff8fbc4478f38a036d9d7b2ce10a52b46b1f2" dependencies = [ "inflections", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", ] [[package]] name = "gltf-json" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5511a759d99beeeef064bd6f81e207c77e3a3431c7499d7590929e35de371f31" +checksum = "3b1ba7523fcf32541f4aec96e13024c255d928eab3223f99ab945045f2a6de18" dependencies = [ "gltf-derive", "serde", @@ -2743,9 +2732,9 @@ dependencies = [ [[package]] name = "gpu-alloc" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc59e5f710e310e76e6707f86c561dd646f69a8876da9131703b2f717de818d" +checksum = "22beaafc29b38204457ea030f6fb7a84c9e4dd1b86e311ba0542533453d87f62" dependencies = [ "bitflags", "gpu-alloc-types", @@ -2781,7 +2770,7 @@ checksum = "0b0c02e1ba0bdb14e965058ca34e09c020f8e507a760df1121728e0aef68d57a" dependencies = [ "bitflags", "gpu-descriptor-types", - "hashbrown", + "hashbrown 0.12.3", ] [[package]] @@ -2824,6 +2813,12 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + [[package]] name = "hassle-rs" version = "0.9.0" @@ -2901,7 +2896,16 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys 0.48.0", ] [[package]] @@ -2929,9 +2933,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -2959,7 +2963,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", ] [[package]] @@ -3000,7 +3014,7 @@ dependencies = [ "log", "rand", "rtcp", - "rtp", + "rtp 0.6.8", "thiserror", "tokio", "waitgroup", @@ -3010,9 +3024,9 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ "hermit-abi 0.3.1", "libc", @@ -3021,9 +3035,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.7.2" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "itoa" @@ -3098,9 +3112,9 @@ checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" [[package]] name = "js-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -3151,9 +3165,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.141" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libloading" @@ -3165,23 +3179,17 @@ dependencies = [ "winapi", ] -[[package]] -name = "libm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" - [[package]] name = "linux-raw-sys" -version = "0.3.1" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -3189,11 +3197,10 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" dependencies = [ - "cfg-if", "value-bag", ] @@ -3273,7 +3280,7 @@ version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -3332,27 +3339,27 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] name = "naga" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eafe22a23b797c9bc227c6c896419b26b5bb88fa903417a3adaed08778850d5" +checksum = "6c3d4269bcb7d50121097702fde1afb75f4ea8083aeb7a55688dcf289a853271" dependencies = [ "bit-set", "bitflags", "codespan-reporting", "hexf-parse", - "indexmap", + "indexmap 1.9.3", "log", "num-traits", "petgraph", @@ -3423,9 +3430,9 @@ dependencies = [ [[package]] name = "ntapi" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc51db7b362b205941f71232e56c625156eb9a929f8cf74a428fd5bc094a4afc" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" dependencies = [ "winapi", ] @@ -3648,9 +3655,9 @@ dependencies = [ [[package]] name = "object" -version = "0.30.3" +version = "0.30.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" +checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" dependencies = [ "memchr", ] @@ -3687,11 +3694,20 @@ dependencies = [ "asn1-rs 0.3.1", ] +[[package]] +name = "oid-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" +dependencies = [ + "asn1-rs 0.5.2", +] + [[package]] name = "once_cell" -version = "1.17.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "opaque-debug" @@ -3701,14 +3717,11 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "orbclient" -version = "0.3.44" +version = "0.3.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e9829e16c5e112e94efb5e2ad1fe17f8c1c99bb0fcdc8c65c44e935d904767d" +checksum = "221d488cd70617f1bd599ed8ceb659df2147d9393717954d82a0f5e8032a6ab1" dependencies = [ - "cfg-if", - "redox_syscall 0.2.16", - "wasm-bindgen", - "web-sys", + "redox_syscall 0.3.5", ] [[package]] @@ -3719,9 +3732,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "owned_ttf_parser" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e25e9fb15717794fae58ab55c26e044103aad13186fbb625893f9a3bbcc24228" +checksum = "706de7e2214113d63a8238d1910463cfce781129a6f263d13fdb09ff64355ba4" dependencies = [ "ttf-parser", ] @@ -3748,16 +3761,6 @@ dependencies = [ "sha2", ] -[[package]] -name = "packed_simd_2" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1914cd452d8fccd6f9db48147b29fd4ae05bea9dc5d9ad578509f72415de282" -dependencies = [ - "cfg-if", - "libm", -] - [[package]] name = "parking" version = "2.1.0" @@ -3782,7 +3785,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.7", + "parking_lot_core 0.9.8", ] [[package]] @@ -3801,15 +3804,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.2.16", + "redox_syscall 0.3.5", "smallvec", - "windows-sys 0.45.0", + "windows-targets 0.48.0", ] [[package]] @@ -3844,9 +3847,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "percentage" @@ -3864,7 +3867,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" dependencies = [ "fixedbitset", - "indexmap", + "indexmap 1.9.3", ] [[package]] @@ -3901,9 +3904,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "platforms" @@ -3913,9 +3916,9 @@ checksum = "e3d7ddaed09e0eb771a79ab0fd64609ba0afb0a8366421957936ad14cbd13630" [[package]] name = "png" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaeebc51f9e7d2c150d3f3bfeb667f2aa985db5ef1e3d212847bdedb488beeaa" +checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" dependencies = [ "bitflags", "crc32fast", @@ -3926,9 +3929,9 @@ dependencies = [ [[package]] name = "polling" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be1c66a6add46bff50935c313dae30a5030cf8385c5206e8a95e9e9def974aa" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" dependencies = [ "autocfg", "bitflags", @@ -3954,14 +3957,14 @@ dependencies = [ [[package]] name = "polyval" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef234e08c11dfcb2e56f79fd70f6f2eb7f025c0ce2333e82f4f0518ecad30c6" +checksum = "d52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fb" dependencies = [ "cfg-if", "cpufeatures", "opaque-debug", - "universal-hash 0.5.0", + "universal-hash 0.5.1", ] [[package]] @@ -3997,9 +4000,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.56" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" dependencies = [ "unicode-ident", ] @@ -4012,9 +4015,9 @@ checksum = "332cd62e95873ea4f41f3dfd6bbbfc5b52aec892d7e8d534197c4720a0bbbab2" [[package]] name = "quote" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" dependencies = [ "proc-macro2", ] @@ -4061,7 +4064,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", ] [[package]] @@ -4094,19 +4097,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" -[[package]] -name = "rcgen" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd" -dependencies = [ - "pem", - "ring", - "time", - "x509-parser", - "yasna", -] - [[package]] name = "rcgen" version = "0.10.0" @@ -4116,6 +4106,7 @@ dependencies = [ "pem", "ring", "time", + "x509-parser 0.14.0", "yasna", ] @@ -4143,26 +4134,15 @@ dependencies = [ "bitflags", ] -[[package]] -name = "redox_users" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" -dependencies = [ - "getrandom 0.2.9", - "redox_syscall 0.2.16", - "thiserror", -] - [[package]] name = "regex" -version = "1.7.3" +version = "1.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" +checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.7.2", ] [[package]] @@ -4171,7 +4151,7 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "regex-syntax", + "regex-syntax 0.6.29", ] [[package]] @@ -4180,6 +4160,12 @@ version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +[[package]] +name = "regex-syntax" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" + [[package]] name = "renderdoc-sys" version = "0.7.1" @@ -4257,6 +4243,19 @@ dependencies = [ "webrtc-util", ] +[[package]] +name = "rtp" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b728adb99b88d932f2f0622b540bf7ccb196f81e9823b5b0eeb166526c88138c" +dependencies = [ + "bytes", + "rand", + "serde", + "thiserror", + "webrtc-util", +] + [[package]] name = "rustc-demangle" version = "0.1.23" @@ -4289,9 +4288,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.11" +version = "0.37.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85597d61f83914ddeba6a47b3b8ffe7365107221c2e557ed94426489fefb5f77" +checksum = "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0" dependencies = [ "bitflags", "errno", @@ -4332,7 +4331,7 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" dependencies = [ - "base64 0.21.0", + "base64 0.21.2", ] [[package]] @@ -4422,9 +4421,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.160" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" +checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" dependencies = [ "serde_derive", ] @@ -4442,20 +4441,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.160" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" +checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.22", ] [[package]] name = "serde_json" -version = "1.0.96" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" dependencies = [ "itoa", "ryu", @@ -4483,18 +4482,18 @@ checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -4527,7 +4526,7 @@ version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", "rand_core 0.6.4", ] @@ -4660,9 +4659,9 @@ checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" [[package]] name = "symphonia" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3671dd6f64f4f9d5c87179525054cfc1f60de23ba1f193bd6ceab812737403f1" +checksum = "62e48dba70095f265fdb269b99619b95d04c89e619538138383e63310b14d941" dependencies = [ "lazy_static", "symphonia-codec-vorbis", @@ -4673,9 +4672,9 @@ dependencies = [ [[package]] name = "symphonia-codec-vorbis" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfed6f7b6bfa21d7cef1acefc8eae5db80df1608a1aca91871b07cbd28d7b74" +checksum = "3953397e3506aa01350c4205817e4f95b58d476877a42f0458d07b665749e203" dependencies = [ "log", "symphonia-core", @@ -4684,9 +4683,9 @@ dependencies = [ [[package]] name = "symphonia-core" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9567e2d8a5f866b2f94f5d366d811e0c6826babcff6d37de9e1a6690d38869" +checksum = "f7c73eb88fee79705268cc7b742c7bc93a7b76e092ab751d0833866970754142" dependencies = [ "arrayvec", "bitflags", @@ -4697,9 +4696,9 @@ dependencies = [ [[package]] name = "symphonia-format-ogg" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "474df6e86b871dcb56913130bada1440245f483057c4a2d8a2981455494c4439" +checksum = "9bf1a00ccd11452d44048a0368828040f778ae650418dbd9d8765b7ee2574c8d" dependencies = [ "log", "symphonia-core", @@ -4709,9 +4708,9 @@ dependencies = [ [[package]] name = "symphonia-metadata" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acd35c263223ef6161000be79b124a75de3e065eea563bf3ef169b3e94c7bb2e" +checksum = "89c3e1937e31d0e068bbe829f66b2f2bfaa28d056365279e0ef897172c3320c0" dependencies = [ "encoding_rs", "lazy_static", @@ -4721,9 +4720,9 @@ dependencies = [ [[package]] name = "symphonia-utils-xiph" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce340a6c33ac06cb42de01220308ec056e8a2a3d5cc664aaf34567392557136b" +checksum = "a450ca645b80d69aff8b35576cbfdc7f20940b29998202aab910045714c951f8" dependencies = [ "symphonia-core", "symphonia-metadata", @@ -4742,9 +4741,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.15" +version = "2.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" dependencies = [ "proc-macro2", "quote", @@ -4779,9 +4778,9 @@ dependencies = [ [[package]] name = "taffy" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fab62c50c3d17993e7f0c72932e51ceeac5ec2b51c225fda8529d606159c99d8" +checksum = "3540ec65df399929a04a485feb50144475735920cc47eaf8eba09c70b1df4055" dependencies = [ "arrayvec", "num-traits", @@ -4814,7 +4813,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.22", ] [[package]] @@ -4840,9 +4839,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.20" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" +checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" dependencies = [ "itoa", "serde", @@ -4852,15 +4851,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" [[package]] name = "time-macros" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" +checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" dependencies = [ "time-core", ] @@ -4882,9 +4881,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.27.0" +version = "1.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" +checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" dependencies = [ "autocfg", "bytes", @@ -4896,18 +4895,18 @@ dependencies = [ "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.22", ] [[package]] @@ -4921,17 +4920,17 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" [[package]] name = "toml_edit" -version = "0.19.8" +version = "0.19.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" +checksum = "266f016b7f039eec8a1a80dfe6156b633d208b9fccca5e4db1d6775b0c4e34a7" dependencies = [ - "indexmap", + "indexmap 2.0.0", "toml_datetime", "winnow", ] @@ -4950,20 +4949,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ "once_cell", "valuable", @@ -4982,9 +4981,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" dependencies = [ "matchers", "nu-ansi-term", @@ -5011,9 +5010,9 @@ dependencies = [ [[package]] name = "ttf-parser" -version = "0.18.1" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0609f771ad9c6155384897e1df4d948e692667cc0588548b68eb44d052b27633" +checksum = "a464a4b34948a5f67fddd2b823c62d9d92e44be75058b99939eae6c5b6960b33" [[package]] name = "tungstenite" @@ -5055,7 +5054,7 @@ dependencies = [ [[package]] name = "turtle_time" -version = "0.9.0" +version = "0.10.0" dependencies = [ "bevy", "bevy-inspector-egui", @@ -5091,9 +5090,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" [[package]] name = "unicode-normalization" @@ -5128,9 +5127,9 @@ dependencies = [ [[package]] name = "universal-hash" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d3160b73c9a19f7e2939a2fdad446c57c1bbbbf4d919d3213ff1267a580d8b5" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ "crypto-common", "subtle", @@ -5144,21 +5143,15 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] -[[package]] -name = "urlencoding" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" - [[package]] name = "utf-8" version = "0.7.6" @@ -5167,11 +5160,11 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "uuid" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b55a3fef2a1e3b3a00ce878640918820d3c51081576ac657d23af9fc7928fdb" +checksum = "d023da39d1fde5a8a3fe1f3e01ca9632ada0a63e9797de55a879d6e2236277be" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "serde", ] @@ -5183,13 +5176,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.0.0-alpha.9" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" -dependencies = [ - "ctor", - "version_check", -] +checksum = "d92ccd67fb88503048c01b59152a04effd0782d035a83a6d256ce6085f08f4a3" [[package]] name = "varinteger" @@ -5262,9 +5251,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "serde", @@ -5274,24 +5263,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.34" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -5301,9 +5290,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5311,22 +5300,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wayland-scanner" @@ -5341,9 +5330,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -5351,12 +5340,12 @@ dependencies = [ [[package]] name = "webbrowser" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b692165700260bbd40fbc5ff23766c03e339fbaca907aeea5cb77bf0a553ca83" +checksum = "fd222aa310eb7532e3fd427a5d7db7e44bc0b0cf1c1e21139c345325511a85b6" dependencies = [ "core-foundation", - "dirs", + "home", "jni 0.21.1", "log", "ndk-context", @@ -5397,9 +5386,9 @@ dependencies = [ [[package]] name = "webrtc" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a591ec83ec22b073d63fabb499a587224e8cf4d9e33209d48c03473bcee00d7b" +checksum = "072e218dd661ea9074ba20cf80be38b8346729337abe96940800fb4b3ed2692f" dependencies = [ "arc-swap", "async-trait", @@ -5409,11 +5398,11 @@ dependencies = [ "lazy_static", "log", "rand", - "rcgen 0.9.3", + "rcgen", "regex", "ring", "rtcp", - "rtp", + "rtp 0.6.8", "rustls 0.19.1", "sdp", "serde", @@ -5458,7 +5447,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4a00f4242f2db33307347bd5be53263c52a0331c96c14292118c9a6bb48d267" dependencies = [ "aes 0.6.0", - "aes-gcm 0.10.1", + "aes-gcm 0.10.2", "async-trait", "bincode", "block-modes", @@ -5474,7 +5463,7 @@ dependencies = [ "p384", "rand", "rand_core 0.6.4", - "rcgen 0.10.0", + "rcgen", "ring", "rustls 0.19.1", "sec1", @@ -5488,7 +5477,7 @@ dependencies = [ "webpki 0.21.4", "webrtc-util", "x25519-dalek", - "x509-parser", + "x509-parser 0.13.2", ] [[package]] @@ -5530,18 +5519,15 @@ dependencies = [ [[package]] name = "webrtc-media" -version = "0.5.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2a3c157a040324e5049bcbd644ffc9079e6738fa2cfab2bcff64e5cc4c00d7" +checksum = "cd8e3711a321f6a375973144f48065cf705316ab6709672954aace020c668eb6" dependencies = [ "byteorder", "bytes", - "derive_builder", - "displaydoc", "rand", - "rtp", + "rtp 0.8.0", "thiserror", - "webrtc-util", ] [[package]] @@ -5577,7 +5563,7 @@ dependencies = [ "hmac 0.11.0", "log", "rtcp", - "rtp", + "rtp 0.6.8", "sha-1", "subtle", "thiserror", @@ -5934,9 +5920,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winit" -version = "0.28.3" +version = "0.28.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f504e8c117b9015f618774f8d58cd4781f5a479bc41079c064f974cbb253874" +checksum = "866db3f712fffba75d31bf0cdecf357c8aeafd158c5b7ab51dba2a2b2d47f196" dependencies = [ "android-activity", "bitflags", @@ -5964,9 +5950,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.4.1" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" dependencies = [ "memchr", ] @@ -6034,11 +6020,11 @@ dependencies = [ [[package]] name = "x25519-dalek" -version = "2.0.0-rc.2" +version = "2.0.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabd6e16dd08033932fc3265ad4510cc2eab24656058a6dcb107ffe274abcc95" +checksum = "ec7fae07da688e17059d5886712c933bb0520f15eff2e09cfa18e30968f4e63a" dependencies = [ - "curve25519-dalek 4.0.0-rc.2", + "curve25519-dalek 4.0.0-rc.3", "rand_core 0.6.4", "serde", "zeroize", @@ -6056,7 +6042,25 @@ dependencies = [ "der-parser 7.0.0", "lazy_static", "nom", - "oid-registry", + "oid-registry 0.4.0", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "x509-parser" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" +dependencies = [ + "asn1-rs 0.5.2", + "base64 0.13.1", + "data-encoding", + "der-parser 8.2.0", + "lazy_static", + "nom", + "oid-registry 0.6.1", "ring", "rusticata-macros", "thiserror", @@ -6071,9 +6075,9 @@ checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" [[package]] name = "xml-rs" -version = "0.8.4" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" +checksum = "52839dc911083a8ef63efa4d039d1f58b5e409f923e44c80828f206f66e5541c" [[package]] name = "yasna" @@ -6101,5 +6105,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.22", ] diff --git a/Cargo.toml b/Cargo.toml index c06e660..58ebf09 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "turtle_time" -version = "0.9.0" +version = "0.10.0" publish = false authors = ["Mike Eder "] edition = "2021" diff --git a/assets/audio/fireball1.ogg b/assets/audio/fireball1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2e63d5a14b5ca7bcb3fcafd99693e2a0dd5a3e0c GIT binary patch literal 21335 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 literal 0 HcmV?d00001 diff --git a/assets/audio/pickup.ogg b/assets/audio/pickup.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c9892b35b33cf8c1365f869ea2f8b5bb10179367 GIT binary patch literal 7987 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 X>E5CbkzFaujvau79m(d9TETw-bqa!# literal 0 HcmV?d00001 diff --git a/assets/audio/sprinting.ogg b/assets/audio/sprinting.ogg new file mode 100644 index 0000000000000000000000000000000000000000..94242d27f6f39f2d5558627b5e76d1e850daf732 GIT binary patch literal 16436 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 a8n+xX+oz_MZM1bhTL1BY>) -> bool { - match self { - GameControl::Up => { - keyboard_input.pressed(KeyCode::W) || keyboard_input.pressed(KeyCode::Up) - } - GameControl::Down => { - keyboard_input.pressed(KeyCode::S) || keyboard_input.pressed(KeyCode::Down) - } - GameControl::Left => { - keyboard_input.pressed(KeyCode::A) || keyboard_input.pressed(KeyCode::Left) - } - GameControl::Right => { - keyboard_input.pressed(KeyCode::D) || keyboard_input.pressed(KeyCode::Right) - } - } - } -} - -pub fn get_movement(control: GameControl, input: &Res>) -> f32 { - if control.pressed(input) { - 1.0 - } else { - 0.0 - } -} diff --git a/src/actions/mod.rs b/src/actions/mod.rs deleted file mode 100644 index 0cb0570..0000000 --- a/src/actions/mod.rs +++ /dev/null @@ -1,36 +0,0 @@ -use crate::actions::game_control::{get_movement, GameControl}; -use bevy::prelude::*; -use bevy_ggrs::GGRSSchedule; - -mod game_control; - -pub struct ActionsPlugin; - -// This plugin listens for keyboard input and converts the input into Actions -// Actions can then be used as a resource in other systems to act on the player input. -impl Plugin for ActionsPlugin { - fn build(&self, app: &mut App) { - app.init_resource::() - .add_system(set_movement_actions.in_schedule(GGRSSchedule)); - } -} - -#[derive(Default, Resource)] -pub struct Actions { - pub player_movement: Option, -} - -pub fn set_movement_actions(mut actions: ResMut, keyboard_input: Res>) { - let player_movement = Vec2::new( - get_movement(GameControl::Right, &keyboard_input) - - get_movement(GameControl::Left, &keyboard_input), - get_movement(GameControl::Up, &keyboard_input) - - get_movement(GameControl::Down, &keyboard_input), - ); - - if player_movement != Vec2::ZERO { - actions.player_movement = Some(player_movement.normalize()); - } else { - actions.player_movement = None; - } -} diff --git a/src/audio.rs b/src/audio.rs index 3867486..2beee9d 100644 --- a/src/audio.rs +++ b/src/audio.rs @@ -1,8 +1,15 @@ -use crate::actions::{set_movement_actions, Actions}; -use crate::loading::AudioAssets; -use crate::AppState; +use std::time::Duration; + +use crate::player::components::Expired; +use crate::{AppState, FPS}; +use bevy::core::FrameCount; use bevy::prelude::*; +use bevy::utils::{HashMap, HashSet}; +use bevy_ggrs::Rollback; use bevy_kira_audio::prelude::*; +use bevy_kira_audio::{Audio, AudioPlugin}; + +const MAX_SOUND_DELAY_FRAMES: u32 = 10; pub struct InternalAudioPlugin; @@ -10,51 +17,170 @@ pub struct InternalAudioPlugin; impl Plugin for InternalAudioPlugin { fn build(&self, app: &mut App) { app.add_plugin(AudioPlugin) - .add_system(start_audio.in_schedule(OnEnter(AppState::MenuMain))) - .add_system( - control_flying_sound - .after(set_movement_actions) - .in_set(OnUpdate(AppState::RoundOnline)), - ) - .add_system( - control_flying_sound - .after(set_movement_actions) - .in_set(OnUpdate(AppState::RoundLocal)), - ); + .init_resource::() + .add_system(init_audio.in_schedule(OnExit(AppState::Loading))) + .add_system(sync_rollback_sounds) + .add_system(remove_finished_sounds) + .add_system(update_looped_sounds); } } -#[derive(Resource)] -struct FlyingAudio(Handle); +/// Rollback Audio +/// https://johanhelsing.studio/posts/cargo-space-devlog-4 + +#[derive(Component)] +pub struct RollbackSound { + /// the actual sound effect to play + pub clip: Handle, + /// when the sound effect should have started playing + pub start_frame: u32, + /// differentiates several unique instances of the same sound playing at once. + /// for example, two players shooting at the same time + pub sub_key: u32, +} + +impl RollbackSound { + pub fn key(&self) -> (Handle, usize) { + (self.clip.clone(), self.sub_key as usize) + } +} + +#[derive(Bundle)] +pub struct RollbackSoundBundle { + pub sound: RollbackSound, + /// an id to make sure that the entity will be removed in case of rollbacks + pub rollback: Rollback, +} -fn start_audio(mut commands: Commands, audio_assets: Res, audio: Res