├── .cargo └── config.toml ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── README.md ├── assets └── fonts │ └── FiraSans-Bold.ttf ├── img └── demo.gif └── src ├── grid.rs ├── gui.rs ├── input.rs ├── main.rs ├── physics.rs ├── render.rs └── util.rs /.cargo/config.toml: -------------------------------------------------------------------------------- 1 | # Rename this file to `config.toml` to enable "fast build" configuration. Please read the notes below. 2 | 3 | # NOTE: For maximum performance, build using a nightly compiler 4 | # If you are using rust stable, remove the "-Zshare-generics=y" below. 5 | 6 | [target.x86_64-unknown-linux-gnu] 7 | linker = "/usr/bin/clang" 8 | rustflags = ["-Clink-arg=-fuse-ld=lld"] 9 | 10 | # NOTE: you must manually install https://github.com/michaeleisel/zld on mac. you can easily do this with the "brew" package manager: 11 | # `brew install michaeleisel/zld/zld` 12 | [target.x86_64-apple-darwin] 13 | rustflags = ["-C", "link-arg=-fuse-ld=/usr/local/bin/zld", "-Zshare-generics=y"] 14 | 15 | [target.x86_64-pc-windows-msvc] 16 | linker = "rust-lld.exe" 17 | rustflags = ["-Zshare-generics=y"] 18 | 19 | # Optional: Uncommenting the following improves compile times, but reduces the amount of debug info to 'line number tables only' 20 | # In most cases the gains are negligible, but if you are on macos and have slow compile times you should see significant gains. 21 | [profile.dev] 22 | debug = 1 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /target 3 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "Inflector" 5 | version = "0.11.4" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" 8 | 9 | [[package]] 10 | name = "ab_glyph" 11 | version = "0.2.6" 12 | source = "registry+https://github.com/rust-lang/crates.io-index" 13 | checksum = "26a685fe66654266f321a8b572660953f4df36a2135706503a4c89981d76e1a2" 14 | dependencies = [ 15 | "ab_glyph_rasterizer", 16 | "owned_ttf_parser", 17 | ] 18 | 19 | [[package]] 20 | name = "ab_glyph_rasterizer" 21 | version = "0.1.4" 22 | source = "registry+https://github.com/rust-lang/crates.io-index" 23 | checksum = "d9fe5e32de01730eb1f6b7f5b51c17e03e2325bf40a74f754f04f130043affff" 24 | 25 | [[package]] 26 | name = "addr2line" 27 | version = "0.14.0" 28 | source = "registry+https://github.com/rust-lang/crates.io-index" 29 | checksum = "7c0929d69e78dd9bf5408269919fcbcaeb2e35e5d43e5815517cdc6a8e11a423" 30 | dependencies = [ 31 | "gimli", 32 | ] 33 | 34 | [[package]] 35 | name = "adler" 36 | version = "0.2.3" 37 | source = "registry+https://github.com/rust-lang/crates.io-index" 38 | checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" 39 | 40 | [[package]] 41 | name = "adler32" 42 | version = "1.2.0" 43 | source = "registry+https://github.com/rust-lang/crates.io-index" 44 | checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" 45 | 46 | [[package]] 47 | name = "ahash" 48 | version = "0.5.6" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | checksum = "b2deff5792519f5985c9cdd5a0399df3ca3419114841d282bae646acadbf0a99" 51 | dependencies = [ 52 | "getrandom 0.2.0", 53 | "lazy_static", 54 | ] 55 | 56 | [[package]] 57 | name = "aho-corasick" 58 | version = "0.7.15" 59 | source = "registry+https://github.com/rust-lang/crates.io-index" 60 | checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" 61 | dependencies = [ 62 | "memchr", 63 | ] 64 | 65 | [[package]] 66 | name = "alsa" 67 | version = "0.4.2" 68 | source = "registry+https://github.com/rust-lang/crates.io-index" 69 | checksum = "44581add1add74ade32aca327b550342359ec00191672c23c1caa3d492b85930" 70 | dependencies = [ 71 | "alsa-sys", 72 | "bitflags", 73 | "libc", 74 | "nix 0.15.0", 75 | ] 76 | 77 | [[package]] 78 | name = "alsa-sys" 79 | version = "0.3.0" 80 | source = "registry+https://github.com/rust-lang/crates.io-index" 81 | checksum = "d5a0559bcd3f7a482690d98be41c08a43e92f669b179433e95ddf5e8b8fd36a3" 82 | dependencies = [ 83 | "libc", 84 | "pkg-config", 85 | ] 86 | 87 | [[package]] 88 | name = "android_log-sys" 89 | version = "0.1.2" 90 | source = "registry+https://github.com/rust-lang/crates.io-index" 91 | checksum = "b8052e2d8aabbb8d556d6abbcce2a22b9590996c5f849b9c7ce4544a2e3b984e" 92 | 93 | [[package]] 94 | name = "android_log-sys" 95 | version = "0.2.0" 96 | source = "registry+https://github.com/rust-lang/crates.io-index" 97 | checksum = "85965b6739a430150bdd138e2374a98af0c3ee0d030b3bb7fc3bddff58d0102e" 98 | 99 | [[package]] 100 | name = "android_logger" 101 | version = "0.8.6" 102 | source = "registry+https://github.com/rust-lang/crates.io-index" 103 | checksum = "8cbd542dd180566fad88fd2729a53a62a734843c626638006a9d63ec0688484e" 104 | dependencies = [ 105 | "android_log-sys 0.1.2", 106 | "env_logger", 107 | "lazy_static", 108 | "log", 109 | ] 110 | 111 | [[package]] 112 | name = "android_logger" 113 | version = "0.9.0" 114 | source = "registry+https://github.com/rust-lang/crates.io-index" 115 | checksum = "5027a747b8132dc36dc894415a300aab31d6489ee788e9ba07bc99558b1278ca" 116 | dependencies = [ 117 | "android_log-sys 0.2.0", 118 | "env_logger", 119 | "lazy_static", 120 | "log", 121 | ] 122 | 123 | [[package]] 124 | name = "anyhow" 125 | version = "1.0.33" 126 | source = "registry+https://github.com/rust-lang/crates.io-index" 127 | checksum = "a1fd36ffbb1fb7c834eac128ea8d0e310c5aeb635548f9d58861e1308d46e71c" 128 | 129 | [[package]] 130 | name = "anymap" 131 | version = "0.12.1" 132 | source = "registry+https://github.com/rust-lang/crates.io-index" 133 | checksum = "33954243bd79057c2de7338850b85983a44588021f8a5fee574a8888c6de4344" 134 | 135 | [[package]] 136 | name = "arrayvec" 137 | version = "0.5.2" 138 | source = "registry+https://github.com/rust-lang/crates.io-index" 139 | checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" 140 | 141 | [[package]] 142 | name = "ascii" 143 | version = "0.9.3" 144 | source = "registry+https://github.com/rust-lang/crates.io-index" 145 | checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" 146 | 147 | [[package]] 148 | name = "ash" 149 | version = "0.31.0" 150 | source = "registry+https://github.com/rust-lang/crates.io-index" 151 | checksum = "c69a8137596e84c22d57f3da1b5de1d4230b1742a710091c85f4d7ce50f00f38" 152 | dependencies = [ 153 | "libloading 0.6.5", 154 | ] 155 | 156 | [[package]] 157 | name = "async-channel" 158 | version = "1.5.1" 159 | source = "registry+https://github.com/rust-lang/crates.io-index" 160 | checksum = "59740d83946db6a5af71ae25ddf9562c2b176b2ca42cf99a455f09f4a220d6b9" 161 | dependencies = [ 162 | "concurrent-queue", 163 | "event-listener", 164 | "futures-core", 165 | ] 166 | 167 | [[package]] 168 | name = "async-executor" 169 | version = "1.3.0" 170 | source = "registry+https://github.com/rust-lang/crates.io-index" 171 | checksum = "d373d78ded7d0b3fa8039375718cde0aace493f2e34fb60f51cbf567562ca801" 172 | dependencies = [ 173 | "async-task", 174 | "concurrent-queue", 175 | "fastrand", 176 | "futures-lite", 177 | "once_cell", 178 | "vec-arena", 179 | ] 180 | 181 | [[package]] 182 | name = "async-task" 183 | version = "4.0.3" 184 | source = "registry+https://github.com/rust-lang/crates.io-index" 185 | checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" 186 | 187 | [[package]] 188 | name = "autocfg" 189 | version = "1.0.1" 190 | source = "registry+https://github.com/rust-lang/crates.io-index" 191 | checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" 192 | 193 | [[package]] 194 | name = "backtrace" 195 | version = "0.3.54" 196 | source = "registry+https://github.com/rust-lang/crates.io-index" 197 | checksum = "2baad346b2d4e94a24347adeee9c7a93f412ee94b9cc26e5b59dea23848e9f28" 198 | dependencies = [ 199 | "addr2line", 200 | "cfg-if 1.0.0", 201 | "libc", 202 | "miniz_oxide 0.4.3", 203 | "object", 204 | "rustc-demangle", 205 | ] 206 | 207 | [[package]] 208 | name = "base-x" 209 | version = "0.2.6" 210 | source = "registry+https://github.com/rust-lang/crates.io-index" 211 | checksum = "1b20b618342cf9891c292c4f5ac2cde7287cc5c87e87e9c769d617793607dec1" 212 | 213 | [[package]] 214 | name = "base64" 215 | version = "0.10.1" 216 | source = "registry+https://github.com/rust-lang/crates.io-index" 217 | checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" 218 | dependencies = [ 219 | "byteorder", 220 | ] 221 | 222 | [[package]] 223 | name = "base64" 224 | version = "0.11.0" 225 | source = "registry+https://github.com/rust-lang/crates.io-index" 226 | checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" 227 | 228 | [[package]] 229 | name = "base64" 230 | version = "0.12.3" 231 | source = "registry+https://github.com/rust-lang/crates.io-index" 232 | checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" 233 | 234 | [[package]] 235 | name = "bevy" 236 | version = "0.3.0" 237 | source = "registry+https://github.com/rust-lang/crates.io-index" 238 | checksum = "f8de175e156277bf382d5212e4f580e74caaa62917b5554e12ab2addd87ae789" 239 | dependencies = [ 240 | "android_logger 0.9.0", 241 | "bevy_app", 242 | "bevy_asset", 243 | "bevy_audio", 244 | "bevy_core", 245 | "bevy_diagnostic", 246 | "bevy_dynamic_plugin", 247 | "bevy_ecs", 248 | "bevy_gilrs", 249 | "bevy_gltf", 250 | "bevy_input", 251 | "bevy_math", 252 | "bevy_pbr", 253 | "bevy_property", 254 | "bevy_render", 255 | "bevy_scene", 256 | "bevy_sprite", 257 | "bevy_tasks", 258 | "bevy_text", 259 | "bevy_transform", 260 | "bevy_type_registry", 261 | "bevy_ui", 262 | "bevy_utils", 263 | "bevy_wgpu", 264 | "bevy_window", 265 | "bevy_winit", 266 | "ndk-glue", 267 | ] 268 | 269 | [[package]] 270 | name = "bevy-glsl-to-spirv" 271 | version = "0.2.0" 272 | source = "registry+https://github.com/rust-lang/crates.io-index" 273 | checksum = "d0b37e032266000f7b62b75b562cdcdccdd655294d26042460fd757daf3a5f82" 274 | 275 | [[package]] 276 | name = "bevy_app" 277 | version = "0.3.0" 278 | source = "registry+https://github.com/rust-lang/crates.io-index" 279 | checksum = "93cdf694a6d588bf46a2a7ae5623f176fc5c4ee4d0d71281fdc25bd263136a14" 280 | dependencies = [ 281 | "bevy_derive", 282 | "bevy_ecs", 283 | "bevy_utils", 284 | "instant", 285 | "log", 286 | "serde", 287 | "wasm-bindgen", 288 | "web-sys", 289 | ] 290 | 291 | [[package]] 292 | name = "bevy_asset" 293 | version = "0.3.0" 294 | source = "registry+https://github.com/rust-lang/crates.io-index" 295 | checksum = "76ed5c0dcf4262387a3917dcf4cd1a7bf9539bac843a6c9653bb56e9d5ef723c" 296 | dependencies = [ 297 | "anyhow", 298 | "bevy_app", 299 | "bevy_ecs", 300 | "bevy_property", 301 | "bevy_tasks", 302 | "bevy_type_registry", 303 | "bevy_utils", 304 | "crossbeam-channel", 305 | "downcast-rs", 306 | "js-sys", 307 | "log", 308 | "ndk-glue", 309 | "notify", 310 | "parking_lot 0.11.0", 311 | "rand", 312 | "ron", 313 | "serde", 314 | "thiserror", 315 | "uuid", 316 | "wasm-bindgen", 317 | "wasm-bindgen-futures", 318 | "web-sys", 319 | ] 320 | 321 | [[package]] 322 | name = "bevy_audio" 323 | version = "0.3.0" 324 | source = "registry+https://github.com/rust-lang/crates.io-index" 325 | checksum = "b6198d842cc25f77dc828d0ba0ae9b313fd864e18af29f60e9d5319d056f8166" 326 | dependencies = [ 327 | "anyhow", 328 | "bevy_app", 329 | "bevy_asset", 330 | "bevy_ecs", 331 | "bevy_type_registry", 332 | "bevy_utils", 333 | "parking_lot 0.11.0", 334 | "rodio", 335 | ] 336 | 337 | [[package]] 338 | name = "bevy_core" 339 | version = "0.3.0" 340 | source = "registry+https://github.com/rust-lang/crates.io-index" 341 | checksum = "2bbe690bd67ba93067651604a3da5b314ec4de5417547ad0f1fbd93da541ea30" 342 | dependencies = [ 343 | "bevy_app", 344 | "bevy_derive", 345 | "bevy_ecs", 346 | "bevy_math", 347 | "bevy_property", 348 | "bevy_tasks", 349 | "bevy_type_registry", 350 | "bevy_utils", 351 | "instant", 352 | "log", 353 | ] 354 | 355 | [[package]] 356 | name = "bevy_derive" 357 | version = "0.3.0" 358 | source = "registry+https://github.com/rust-lang/crates.io-index" 359 | checksum = "9c18d8de3b2f1c66dbac70fbf82bce0dcbeceecf2356eb1b542c735d5c17e0a0" 360 | dependencies = [ 361 | "Inflector", 362 | "proc-macro-crate", 363 | "proc-macro2", 364 | "quote", 365 | "syn", 366 | "uuid", 367 | ] 368 | 369 | [[package]] 370 | name = "bevy_diagnostic" 371 | version = "0.3.0" 372 | source = "registry+https://github.com/rust-lang/crates.io-index" 373 | checksum = "5e98868df99533447a6ad202e6826fe24cecab80c163c1dcac56b811ea69a9f7" 374 | dependencies = [ 375 | "bevy_app", 376 | "bevy_core", 377 | "bevy_ecs", 378 | "bevy_utils", 379 | "instant", 380 | "parking_lot 0.11.0", 381 | "uuid", 382 | ] 383 | 384 | [[package]] 385 | name = "bevy_dynamic_plugin" 386 | version = "0.3.0" 387 | source = "registry+https://github.com/rust-lang/crates.io-index" 388 | checksum = "cc5672a27be1e38e11b6f2f1e1290fde2aa4f074628aad33303953ce881a5a78" 389 | dependencies = [ 390 | "bevy_app", 391 | "libloading 0.6.5", 392 | "log", 393 | ] 394 | 395 | [[package]] 396 | name = "bevy_ecs" 397 | version = "0.3.0" 398 | source = "registry+https://github.com/rust-lang/crates.io-index" 399 | checksum = "1ad8a73ad248ed6c16b1ca53eaedd76ae5aa284aa5c4527f8cf3526b5e3a7fce" 400 | dependencies = [ 401 | "bevy_hecs", 402 | "bevy_tasks", 403 | "bevy_utils", 404 | "downcast-rs", 405 | "fixedbitset", 406 | "log", 407 | "parking_lot 0.11.0", 408 | "rand", 409 | "thiserror", 410 | ] 411 | 412 | [[package]] 413 | name = "bevy_gilrs" 414 | version = "0.3.0" 415 | source = "registry+https://github.com/rust-lang/crates.io-index" 416 | checksum = "255ceb467ab2982a0bd1ef0c49ae557704f99fe11ab990a11492cea2e6d7fd7f" 417 | dependencies = [ 418 | "bevy_app", 419 | "bevy_ecs", 420 | "bevy_input", 421 | "gilrs", 422 | "log", 423 | ] 424 | 425 | [[package]] 426 | name = "bevy_gltf" 427 | version = "0.3.0" 428 | source = "registry+https://github.com/rust-lang/crates.io-index" 429 | checksum = "44dfa912e7fb0ac140b46e2cdf4f6f5e66e6def8049dc8cee69de9a9bafd1836" 430 | dependencies = [ 431 | "anyhow", 432 | "base64 0.12.3", 433 | "bevy_app", 434 | "bevy_asset", 435 | "bevy_ecs", 436 | "bevy_math", 437 | "bevy_pbr", 438 | "bevy_render", 439 | "bevy_scene", 440 | "bevy_transform", 441 | "bevy_type_registry", 442 | "gltf", 443 | "image", 444 | "thiserror", 445 | ] 446 | 447 | [[package]] 448 | name = "bevy_hecs" 449 | version = "0.3.0" 450 | source = "registry+https://github.com/rust-lang/crates.io-index" 451 | checksum = "18661dc92bcb6cc1f2f5ad630f3f3eae7b23942860ea6845a2a775b5a1f7564f" 452 | dependencies = [ 453 | "bevy_hecs_macros", 454 | "bevy_utils", 455 | "lazy_static", 456 | "serde", 457 | ] 458 | 459 | [[package]] 460 | name = "bevy_hecs_macros" 461 | version = "0.3.0" 462 | source = "registry+https://github.com/rust-lang/crates.io-index" 463 | checksum = "3a85e43b7043183821aa62f09c91164a0aa6de771c5397a7a0d0eaf754cc042a" 464 | dependencies = [ 465 | "proc-macro-crate", 466 | "proc-macro2", 467 | "quote", 468 | "syn", 469 | ] 470 | 471 | [[package]] 472 | name = "bevy_input" 473 | version = "0.3.0" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | checksum = "069dc814211aaf691c9aca9ce97210d3238c19e599dfc2bc50b183fe925f0a00" 476 | dependencies = [ 477 | "bevy_app", 478 | "bevy_ecs", 479 | "bevy_math", 480 | "bevy_utils", 481 | ] 482 | 483 | [[package]] 484 | name = "bevy_math" 485 | version = "0.3.0" 486 | source = "registry+https://github.com/rust-lang/crates.io-index" 487 | checksum = "71ff845326919ef68a796ae4740e33356683020756bc1d23b552b9b31a106fd3" 488 | dependencies = [ 489 | "glam", 490 | ] 491 | 492 | [[package]] 493 | name = "bevy_pbr" 494 | version = "0.3.0" 495 | source = "registry+https://github.com/rust-lang/crates.io-index" 496 | checksum = "34e4185bf49b2cfd31a0aec90722b3e898b37de5d61ec4cc53e5df9ecae19d71" 497 | dependencies = [ 498 | "bevy_app", 499 | "bevy_asset", 500 | "bevy_core", 501 | "bevy_derive", 502 | "bevy_ecs", 503 | "bevy_math", 504 | "bevy_property", 505 | "bevy_render", 506 | "bevy_transform", 507 | "bevy_type_registry", 508 | "bevy_window", 509 | ] 510 | 511 | [[package]] 512 | name = "bevy_property" 513 | version = "0.3.0" 514 | source = "registry+https://github.com/rust-lang/crates.io-index" 515 | checksum = "0bd127fa915b12581aab82cf77ade4a29c1a7b00c19672b88c187c14d111227c" 516 | dependencies = [ 517 | "bevy_ecs", 518 | "bevy_math", 519 | "bevy_property_derive", 520 | "bevy_utils", 521 | "erased-serde", 522 | "ron", 523 | "serde", 524 | "smallvec 1.4.2", 525 | ] 526 | 527 | [[package]] 528 | name = "bevy_property_derive" 529 | version = "0.3.0" 530 | source = "registry+https://github.com/rust-lang/crates.io-index" 531 | checksum = "a3c7a3bc30a90561dc05e662597d595d29a9a7171fb7e5fc34fdb09e4c60c10f" 532 | dependencies = [ 533 | "proc-macro-crate", 534 | "proc-macro2", 535 | "quote", 536 | "syn", 537 | ] 538 | 539 | [[package]] 540 | name = "bevy_render" 541 | version = "0.3.0" 542 | source = "registry+https://github.com/rust-lang/crates.io-index" 543 | checksum = "1c1e99851a90fba39994aa26887da114cb53388e1ba7324b60cea4156351ad23" 544 | dependencies = [ 545 | "anyhow", 546 | "bevy-glsl-to-spirv", 547 | "bevy_app", 548 | "bevy_asset", 549 | "bevy_core", 550 | "bevy_derive", 551 | "bevy_ecs", 552 | "bevy_math", 553 | "bevy_property", 554 | "bevy_transform", 555 | "bevy_type_registry", 556 | "bevy_utils", 557 | "bevy_window", 558 | "bitflags", 559 | "downcast-rs", 560 | "hex", 561 | "hexasphere", 562 | "image", 563 | "log", 564 | "once_cell", 565 | "parking_lot 0.11.0", 566 | "serde", 567 | "shaderc", 568 | "smallvec 1.4.2", 569 | "spirv-reflect", 570 | "thiserror", 571 | "uuid", 572 | ] 573 | 574 | [[package]] 575 | name = "bevy_scene" 576 | version = "0.3.0" 577 | source = "registry+https://github.com/rust-lang/crates.io-index" 578 | checksum = "7d00a586fa10ea919800eda837f98396b49b99a84ee1fc8d6ad4ede151d3b9e4" 579 | dependencies = [ 580 | "anyhow", 581 | "bevy_app", 582 | "bevy_asset", 583 | "bevy_ecs", 584 | "bevy_property", 585 | "bevy_type_registry", 586 | "bevy_utils", 587 | "parking_lot 0.11.0", 588 | "ron", 589 | "serde", 590 | "thiserror", 591 | "uuid", 592 | ] 593 | 594 | [[package]] 595 | name = "bevy_sprite" 596 | version = "0.3.0" 597 | source = "registry+https://github.com/rust-lang/crates.io-index" 598 | checksum = "15eb21af28740fcaf9bd4cec1df90a3015ffab1d33d51022ebc9f106f55210d8" 599 | dependencies = [ 600 | "bevy_app", 601 | "bevy_asset", 602 | "bevy_core", 603 | "bevy_ecs", 604 | "bevy_math", 605 | "bevy_render", 606 | "bevy_transform", 607 | "bevy_type_registry", 608 | "bevy_utils", 609 | "guillotiere", 610 | "rectangle-pack", 611 | "thiserror", 612 | ] 613 | 614 | [[package]] 615 | name = "bevy_tasks" 616 | version = "0.3.0" 617 | source = "registry+https://github.com/rust-lang/crates.io-index" 618 | checksum = "6c39e34a30611a1c4a80a30d252f0c53afa27e9500fa73dae1dca2e41c85c765" 619 | dependencies = [ 620 | "async-channel", 621 | "async-executor", 622 | "event-listener", 623 | "futures-lite", 624 | "num_cpus", 625 | "wasm-bindgen-futures", 626 | ] 627 | 628 | [[package]] 629 | name = "bevy_text" 630 | version = "0.3.0" 631 | source = "registry+https://github.com/rust-lang/crates.io-index" 632 | checksum = "61b128707cbbc841fa8aa3b41e29362d4a7ba38fb4450b7766d3ff9884389766" 633 | dependencies = [ 634 | "ab_glyph", 635 | "anyhow", 636 | "bevy_app", 637 | "bevy_asset", 638 | "bevy_core", 639 | "bevy_math", 640 | "bevy_render", 641 | "bevy_sprite", 642 | "bevy_type_registry", 643 | "bevy_utils", 644 | ] 645 | 646 | [[package]] 647 | name = "bevy_transform" 648 | version = "0.3.0" 649 | source = "registry+https://github.com/rust-lang/crates.io-index" 650 | checksum = "cf4b3c44fc53eb744fc16edc923655a50a01fd0e8e6edfe6f3b3065997e913f5" 651 | dependencies = [ 652 | "bevy_app", 653 | "bevy_ecs", 654 | "bevy_math", 655 | "bevy_property", 656 | "bevy_type_registry", 657 | "bevy_utils", 658 | "log", 659 | "smallvec 1.4.2", 660 | ] 661 | 662 | [[package]] 663 | name = "bevy_type_registry" 664 | version = "0.3.0" 665 | source = "registry+https://github.com/rust-lang/crates.io-index" 666 | checksum = "4aac65e5c297e547844cb5986da14975181a352f532c8d6fe95f7b62e5a40d32" 667 | dependencies = [ 668 | "bevy_app", 669 | "bevy_derive", 670 | "bevy_ecs", 671 | "bevy_property", 672 | "bevy_utils", 673 | "parking_lot 0.11.0", 674 | "serde", 675 | "uuid", 676 | ] 677 | 678 | [[package]] 679 | name = "bevy_ui" 680 | version = "0.3.0" 681 | source = "registry+https://github.com/rust-lang/crates.io-index" 682 | checksum = "2994737dd6413028a2bcda7315ab6cbe8c30c1dab809fb3de4b1e1a8e2fbfabc" 683 | dependencies = [ 684 | "bevy_app", 685 | "bevy_asset", 686 | "bevy_core", 687 | "bevy_derive", 688 | "bevy_ecs", 689 | "bevy_input", 690 | "bevy_math", 691 | "bevy_render", 692 | "bevy_sprite", 693 | "bevy_text", 694 | "bevy_transform", 695 | "bevy_type_registry", 696 | "bevy_utils", 697 | "bevy_window", 698 | "stretch", 699 | ] 700 | 701 | [[package]] 702 | name = "bevy_utils" 703 | version = "0.3.0" 704 | source = "registry+https://github.com/rust-lang/crates.io-index" 705 | checksum = "554cd4eba4b278f6cc0fe5da0b7dbe8deba51613e6769f93b0d5a8a32eac54b6" 706 | dependencies = [ 707 | "ahash", 708 | "getrandom 0.2.0", 709 | ] 710 | 711 | [[package]] 712 | name = "bevy_wgpu" 713 | version = "0.3.0" 714 | source = "registry+https://github.com/rust-lang/crates.io-index" 715 | checksum = "5ba8d9ae1409735ddc2b83426849ba819699288d0ff1166b9caa352511300a1d" 716 | dependencies = [ 717 | "bevy_app", 718 | "bevy_asset", 719 | "bevy_core", 720 | "bevy_diagnostic", 721 | "bevy_ecs", 722 | "bevy_render", 723 | "bevy_utils", 724 | "bevy_window", 725 | "bevy_winit", 726 | "crossbeam-channel", 727 | "crossbeam-utils", 728 | "futures-lite", 729 | "log", 730 | "parking_lot 0.11.0", 731 | "wgpu", 732 | ] 733 | 734 | [[package]] 735 | name = "bevy_window" 736 | version = "0.3.0" 737 | source = "registry+https://github.com/rust-lang/crates.io-index" 738 | checksum = "f15434d9c46bfc96d449a121e01139489ddc9e79b879edee73c58f90b6b2bbb3" 739 | dependencies = [ 740 | "bevy_app", 741 | "bevy_ecs", 742 | "bevy_math", 743 | "bevy_utils", 744 | "uuid", 745 | "web-sys", 746 | ] 747 | 748 | [[package]] 749 | name = "bevy_winit" 750 | version = "0.3.0" 751 | source = "registry+https://github.com/rust-lang/crates.io-index" 752 | checksum = "6fd72a8a4b42e975c2cac508500471b468568f042d6bbaf6f200844eba3192b0" 753 | dependencies = [ 754 | "bevy_app", 755 | "bevy_ecs", 756 | "bevy_input", 757 | "bevy_math", 758 | "bevy_utils", 759 | "bevy_window", 760 | "log", 761 | "wasm-bindgen", 762 | "web-sys", 763 | "winit", 764 | ] 765 | 766 | [[package]] 767 | name = "bindgen" 768 | version = "0.53.3" 769 | source = "registry+https://github.com/rust-lang/crates.io-index" 770 | checksum = "c72a978d268b1d70b0e963217e60fdabd9523a941457a6c42a7315d15c7e89e5" 771 | dependencies = [ 772 | "bitflags", 773 | "cexpr", 774 | "cfg-if 0.1.10", 775 | "clang-sys", 776 | "lazy_static", 777 | "lazycell", 778 | "peeking_take_while", 779 | "proc-macro2", 780 | "quote", 781 | "regex", 782 | "rustc-hash", 783 | "shlex", 784 | ] 785 | 786 | [[package]] 787 | name = "bit-set" 788 | version = "0.5.2" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de" 791 | dependencies = [ 792 | "bit-vec", 793 | ] 794 | 795 | [[package]] 796 | name = "bit-vec" 797 | version = "0.6.2" 798 | source = "registry+https://github.com/rust-lang/crates.io-index" 799 | checksum = "5f0dc55f2d8a1a85650ac47858bb001b4c0dd73d79e3c455a842925e68d29cd3" 800 | 801 | [[package]] 802 | name = "bitflags" 803 | version = "1.2.1" 804 | source = "registry+https://github.com/rust-lang/crates.io-index" 805 | checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" 806 | 807 | [[package]] 808 | name = "block" 809 | version = "0.1.6" 810 | source = "registry+https://github.com/rust-lang/crates.io-index" 811 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 812 | 813 | [[package]] 814 | name = "bumpalo" 815 | version = "3.4.0" 816 | source = "registry+https://github.com/rust-lang/crates.io-index" 817 | checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" 818 | 819 | [[package]] 820 | name = "bytemuck" 821 | version = "1.4.1" 822 | source = "registry+https://github.com/rust-lang/crates.io-index" 823 | checksum = "41aa2ec95ca3b5c54cf73c91acf06d24f4495d5f1b1c12506ae3483d646177ac" 824 | 825 | [[package]] 826 | name = "byteorder" 827 | version = "1.3.4" 828 | source = "registry+https://github.com/rust-lang/crates.io-index" 829 | checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" 830 | 831 | [[package]] 832 | name = "bytes" 833 | version = "0.5.6" 834 | source = "registry+https://github.com/rust-lang/crates.io-index" 835 | checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" 836 | 837 | [[package]] 838 | name = "cache-padded" 839 | version = "1.1.1" 840 | source = "registry+https://github.com/rust-lang/crates.io-index" 841 | checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" 842 | 843 | [[package]] 844 | name = "cc" 845 | version = "1.0.61" 846 | source = "registry+https://github.com/rust-lang/crates.io-index" 847 | checksum = "ed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985d" 848 | dependencies = [ 849 | "jobserver", 850 | ] 851 | 852 | [[package]] 853 | name = "cesu8" 854 | version = "1.1.0" 855 | source = "registry+https://github.com/rust-lang/crates.io-index" 856 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 857 | 858 | [[package]] 859 | name = "cexpr" 860 | version = "0.4.0" 861 | source = "registry+https://github.com/rust-lang/crates.io-index" 862 | checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27" 863 | dependencies = [ 864 | "nom", 865 | ] 866 | 867 | [[package]] 868 | name = "cfg-if" 869 | version = "0.1.10" 870 | source = "registry+https://github.com/rust-lang/crates.io-index" 871 | checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 872 | 873 | [[package]] 874 | name = "cfg-if" 875 | version = "1.0.0" 876 | source = "registry+https://github.com/rust-lang/crates.io-index" 877 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 878 | 879 | [[package]] 880 | name = "chunked_transfer" 881 | version = "1.3.0" 882 | source = "registry+https://github.com/rust-lang/crates.io-index" 883 | checksum = "7477065d45a8fe57167bf3cf8bcd3729b54cfcb81cca49bda2d038ea89ae82ca" 884 | 885 | [[package]] 886 | name = "clang-sys" 887 | version = "0.29.3" 888 | source = "registry+https://github.com/rust-lang/crates.io-index" 889 | checksum = "fe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10a" 890 | dependencies = [ 891 | "glob", 892 | "libc", 893 | "libloading 0.5.2", 894 | ] 895 | 896 | [[package]] 897 | name = "cloudabi" 898 | version = "0.0.3" 899 | source = "registry+https://github.com/rust-lang/crates.io-index" 900 | checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 901 | dependencies = [ 902 | "bitflags", 903 | ] 904 | 905 | [[package]] 906 | name = "cloudabi" 907 | version = "0.1.0" 908 | source = "registry+https://github.com/rust-lang/crates.io-index" 909 | checksum = "4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467" 910 | dependencies = [ 911 | "bitflags", 912 | ] 913 | 914 | [[package]] 915 | name = "cmake" 916 | version = "0.1.44" 917 | source = "registry+https://github.com/rust-lang/crates.io-index" 918 | checksum = "0e56268c17a6248366d66d4a47a3381369d068cce8409bb1716ed77ea32163bb" 919 | dependencies = [ 920 | "cc", 921 | ] 922 | 923 | [[package]] 924 | name = "cocoa" 925 | version = "0.23.0" 926 | source = "registry+https://github.com/rust-lang/crates.io-index" 927 | checksum = "c54201c07dcf3a5ca33fececb8042aed767ee4bfd5a0235a8ceabcda956044b2" 928 | dependencies = [ 929 | "bitflags", 930 | "block", 931 | "cocoa-foundation", 932 | "core-foundation 0.9.1", 933 | "core-graphics 0.22.1", 934 | "foreign-types", 935 | "libc", 936 | "objc", 937 | ] 938 | 939 | [[package]] 940 | name = "cocoa-foundation" 941 | version = "0.1.0" 942 | source = "registry+https://github.com/rust-lang/crates.io-index" 943 | checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" 944 | dependencies = [ 945 | "bitflags", 946 | "block", 947 | "core-foundation 0.9.1", 948 | "core-graphics-types", 949 | "foreign-types", 950 | "libc", 951 | "objc", 952 | ] 953 | 954 | [[package]] 955 | name = "color_quant" 956 | version = "1.1.0" 957 | source = "registry+https://github.com/rust-lang/crates.io-index" 958 | checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" 959 | 960 | [[package]] 961 | name = "combine" 962 | version = "3.8.1" 963 | source = "registry+https://github.com/rust-lang/crates.io-index" 964 | checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" 965 | dependencies = [ 966 | "ascii", 967 | "byteorder", 968 | "either", 969 | "memchr", 970 | "unreachable", 971 | ] 972 | 973 | [[package]] 974 | name = "combine" 975 | version = "4.3.2" 976 | source = "registry+https://github.com/rust-lang/crates.io-index" 977 | checksum = "2809f67365382d65fd2b6d9c22577231b954ed27400efeafbe687bda75abcc0b" 978 | dependencies = [ 979 | "bytes", 980 | "memchr", 981 | "pin-project-lite", 982 | ] 983 | 984 | [[package]] 985 | name = "concurrent-queue" 986 | version = "1.2.2" 987 | source = "registry+https://github.com/rust-lang/crates.io-index" 988 | checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" 989 | dependencies = [ 990 | "cache-padded", 991 | ] 992 | 993 | [[package]] 994 | name = "cookie" 995 | version = "0.12.0" 996 | source = "registry+https://github.com/rust-lang/crates.io-index" 997 | checksum = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5" 998 | dependencies = [ 999 | "time", 1000 | "url 1.7.2", 1001 | ] 1002 | 1003 | [[package]] 1004 | name = "copyless" 1005 | version = "0.1.5" 1006 | source = "registry+https://github.com/rust-lang/crates.io-index" 1007 | checksum = "a2df960f5d869b2dd8532793fde43eb5427cceb126c929747a26823ab0eeb536" 1008 | 1009 | [[package]] 1010 | name = "core-foundation" 1011 | version = "0.6.4" 1012 | source = "registry+https://github.com/rust-lang/crates.io-index" 1013 | checksum = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" 1014 | dependencies = [ 1015 | "core-foundation-sys 0.6.2", 1016 | "libc", 1017 | ] 1018 | 1019 | [[package]] 1020 | name = "core-foundation" 1021 | version = "0.7.0" 1022 | source = "registry+https://github.com/rust-lang/crates.io-index" 1023 | checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" 1024 | dependencies = [ 1025 | "core-foundation-sys 0.7.0", 1026 | "libc", 1027 | ] 1028 | 1029 | [[package]] 1030 | name = "core-foundation" 1031 | version = "0.9.1" 1032 | source = "registry+https://github.com/rust-lang/crates.io-index" 1033 | checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" 1034 | dependencies = [ 1035 | "core-foundation-sys 0.8.2", 1036 | "libc", 1037 | ] 1038 | 1039 | [[package]] 1040 | name = "core-foundation-sys" 1041 | version = "0.6.2" 1042 | source = "registry+https://github.com/rust-lang/crates.io-index" 1043 | checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" 1044 | 1045 | [[package]] 1046 | name = "core-foundation-sys" 1047 | version = "0.7.0" 1048 | source = "registry+https://github.com/rust-lang/crates.io-index" 1049 | checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" 1050 | 1051 | [[package]] 1052 | name = "core-foundation-sys" 1053 | version = "0.8.2" 1054 | source = "registry+https://github.com/rust-lang/crates.io-index" 1055 | checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" 1056 | 1057 | [[package]] 1058 | name = "core-graphics" 1059 | version = "0.19.2" 1060 | source = "registry+https://github.com/rust-lang/crates.io-index" 1061 | checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" 1062 | dependencies = [ 1063 | "bitflags", 1064 | "core-foundation 0.7.0", 1065 | "foreign-types", 1066 | "libc", 1067 | ] 1068 | 1069 | [[package]] 1070 | name = "core-graphics" 1071 | version = "0.22.1" 1072 | source = "registry+https://github.com/rust-lang/crates.io-index" 1073 | checksum = "fc239bba52bab96649441699533a68de294a101533b0270b2d65aa402b29a7f9" 1074 | dependencies = [ 1075 | "bitflags", 1076 | "core-foundation 0.9.1", 1077 | "core-graphics-types", 1078 | "foreign-types", 1079 | "libc", 1080 | ] 1081 | 1082 | [[package]] 1083 | name = "core-graphics-types" 1084 | version = "0.1.1" 1085 | source = "registry+https://github.com/rust-lang/crates.io-index" 1086 | checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" 1087 | dependencies = [ 1088 | "bitflags", 1089 | "core-foundation 0.9.1", 1090 | "foreign-types", 1091 | "libc", 1092 | ] 1093 | 1094 | [[package]] 1095 | name = "core-video-sys" 1096 | version = "0.1.4" 1097 | source = "registry+https://github.com/rust-lang/crates.io-index" 1098 | checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" 1099 | dependencies = [ 1100 | "cfg-if 0.1.10", 1101 | "core-foundation-sys 0.7.0", 1102 | "core-graphics 0.19.2", 1103 | "libc", 1104 | "objc", 1105 | ] 1106 | 1107 | [[package]] 1108 | name = "coreaudio-rs" 1109 | version = "0.9.1" 1110 | source = "registry+https://github.com/rust-lang/crates.io-index" 1111 | checksum = "f229761965dad3e9b11081668a6ea00f1def7aa46062321b5ec245b834f6e491" 1112 | dependencies = [ 1113 | "bitflags", 1114 | "coreaudio-sys", 1115 | ] 1116 | 1117 | [[package]] 1118 | name = "coreaudio-sys" 1119 | version = "0.2.5" 1120 | source = "registry+https://github.com/rust-lang/crates.io-index" 1121 | checksum = "d6570ee6e089131e928d5ec9236db9e818aa3cf850f48b0eec6ef700571271d4" 1122 | dependencies = [ 1123 | "bindgen", 1124 | ] 1125 | 1126 | [[package]] 1127 | name = "cpal" 1128 | version = "0.13.0" 1129 | source = "registry+https://github.com/rust-lang/crates.io-index" 1130 | checksum = "4919d30839e3924b45b84319997a554db1a56918bc5b2a08a6c29886e65e2dca" 1131 | dependencies = [ 1132 | "alsa", 1133 | "core-foundation-sys 0.6.2", 1134 | "coreaudio-rs", 1135 | "jni 0.17.0", 1136 | "js-sys", 1137 | "lazy_static", 1138 | "libc", 1139 | "mach 0.3.2", 1140 | "ndk", 1141 | "ndk-glue", 1142 | "nix 0.15.0", 1143 | "oboe", 1144 | "parking_lot 0.9.0", 1145 | "stdweb 0.1.3", 1146 | "thiserror", 1147 | "web-sys", 1148 | "winapi 0.3.9", 1149 | ] 1150 | 1151 | [[package]] 1152 | name = "crc32fast" 1153 | version = "1.2.1" 1154 | source = "registry+https://github.com/rust-lang/crates.io-index" 1155 | checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" 1156 | dependencies = [ 1157 | "cfg-if 1.0.0", 1158 | ] 1159 | 1160 | [[package]] 1161 | name = "crossbeam-channel" 1162 | version = "0.4.4" 1163 | source = "registry+https://github.com/rust-lang/crates.io-index" 1164 | checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" 1165 | dependencies = [ 1166 | "crossbeam-utils", 1167 | "maybe-uninit", 1168 | ] 1169 | 1170 | [[package]] 1171 | name = "crossbeam-utils" 1172 | version = "0.7.2" 1173 | source = "registry+https://github.com/rust-lang/crates.io-index" 1174 | checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" 1175 | dependencies = [ 1176 | "autocfg", 1177 | "cfg-if 0.1.10", 1178 | "lazy_static", 1179 | ] 1180 | 1181 | [[package]] 1182 | name = "d3d12" 1183 | version = "0.3.2" 1184 | source = "registry+https://github.com/rust-lang/crates.io-index" 1185 | checksum = "d0a60cceb22c7c53035f8980524fdc7f17cf49681a3c154e6757d30afbec6ec4" 1186 | dependencies = [ 1187 | "bitflags", 1188 | "libloading 0.6.5", 1189 | "winapi 0.3.9", 1190 | ] 1191 | 1192 | [[package]] 1193 | name = "darling" 1194 | version = "0.10.2" 1195 | source = "registry+https://github.com/rust-lang/crates.io-index" 1196 | checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" 1197 | dependencies = [ 1198 | "darling_core", 1199 | "darling_macro", 1200 | ] 1201 | 1202 | [[package]] 1203 | name = "darling_core" 1204 | version = "0.10.2" 1205 | source = "registry+https://github.com/rust-lang/crates.io-index" 1206 | checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" 1207 | dependencies = [ 1208 | "fnv", 1209 | "ident_case", 1210 | "proc-macro2", 1211 | "quote", 1212 | "strsim", 1213 | "syn", 1214 | ] 1215 | 1216 | [[package]] 1217 | name = "darling_macro" 1218 | version = "0.10.2" 1219 | source = "registry+https://github.com/rust-lang/crates.io-index" 1220 | checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" 1221 | dependencies = [ 1222 | "darling_core", 1223 | "quote", 1224 | "syn", 1225 | ] 1226 | 1227 | [[package]] 1228 | name = "deflate" 1229 | version = "0.8.6" 1230 | source = "registry+https://github.com/rust-lang/crates.io-index" 1231 | checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" 1232 | dependencies = [ 1233 | "adler32", 1234 | "byteorder", 1235 | ] 1236 | 1237 | [[package]] 1238 | name = "derivative" 1239 | version = "2.1.1" 1240 | source = "registry+https://github.com/rust-lang/crates.io-index" 1241 | checksum = "cb582b60359da160a9477ee80f15c8d784c477e69c217ef2cdd4169c24ea380f" 1242 | dependencies = [ 1243 | "proc-macro2", 1244 | "quote", 1245 | "syn", 1246 | ] 1247 | 1248 | [[package]] 1249 | name = "discard" 1250 | version = "1.0.4" 1251 | source = "registry+https://github.com/rust-lang/crates.io-index" 1252 | checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" 1253 | 1254 | [[package]] 1255 | name = "dispatch" 1256 | version = "0.2.0" 1257 | source = "registry+https://github.com/rust-lang/crates.io-index" 1258 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 1259 | 1260 | [[package]] 1261 | name = "downcast-rs" 1262 | version = "1.2.0" 1263 | source = "registry+https://github.com/rust-lang/crates.io-index" 1264 | checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" 1265 | 1266 | [[package]] 1267 | name = "either" 1268 | version = "1.6.1" 1269 | source = "registry+https://github.com/rust-lang/crates.io-index" 1270 | checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" 1271 | 1272 | [[package]] 1273 | name = "env_logger" 1274 | version = "0.7.1" 1275 | source = "registry+https://github.com/rust-lang/crates.io-index" 1276 | checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" 1277 | dependencies = [ 1278 | "log", 1279 | "regex", 1280 | ] 1281 | 1282 | [[package]] 1283 | name = "erased-serde" 1284 | version = "0.3.12" 1285 | source = "registry+https://github.com/rust-lang/crates.io-index" 1286 | checksum = "6ca8b296792113e1500fd935ae487be6e00ce318952a6880555554824d6ebf38" 1287 | dependencies = [ 1288 | "serde", 1289 | ] 1290 | 1291 | [[package]] 1292 | name = "error-chain" 1293 | version = "0.12.4" 1294 | source = "registry+https://github.com/rust-lang/crates.io-index" 1295 | checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" 1296 | dependencies = [ 1297 | "backtrace", 1298 | "version_check", 1299 | ] 1300 | 1301 | [[package]] 1302 | name = "euclid" 1303 | version = "0.22.1" 1304 | source = "registry+https://github.com/rust-lang/crates.io-index" 1305 | checksum = "5337024b8293bdce5265dc9570ef6e608a34bfacbbc87fe1a5dcb5f1dac2f4e2" 1306 | dependencies = [ 1307 | "num-traits", 1308 | ] 1309 | 1310 | [[package]] 1311 | name = "event-listener" 1312 | version = "2.5.1" 1313 | source = "registry+https://github.com/rust-lang/crates.io-index" 1314 | checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" 1315 | 1316 | [[package]] 1317 | name = "fastrand" 1318 | version = "1.4.0" 1319 | source = "registry+https://github.com/rust-lang/crates.io-index" 1320 | checksum = "ca5faf057445ce5c9d4329e382b2ce7ca38550ef3b73a5348362d5f24e0c7fe3" 1321 | dependencies = [ 1322 | "instant", 1323 | ] 1324 | 1325 | [[package]] 1326 | name = "fetch_unroll" 1327 | version = "0.2.1" 1328 | source = "registry+https://github.com/rust-lang/crates.io-index" 1329 | checksum = "b5c55005e95bbe15f5f72a73b6597d0dc82ddc97ffe2ca097a99dcd591fefbca" 1330 | dependencies = [ 1331 | "libflate", 1332 | "tar", 1333 | "ureq", 1334 | ] 1335 | 1336 | [[package]] 1337 | name = "filetime" 1338 | version = "0.2.12" 1339 | source = "registry+https://github.com/rust-lang/crates.io-index" 1340 | checksum = "3ed85775dcc68644b5c950ac06a2b23768d3bc9390464151aaf27136998dcf9e" 1341 | dependencies = [ 1342 | "cfg-if 0.1.10", 1343 | "libc", 1344 | "redox_syscall", 1345 | "winapi 0.3.9", 1346 | ] 1347 | 1348 | [[package]] 1349 | name = "fixedbitset" 1350 | version = "0.3.1" 1351 | source = "registry+https://github.com/rust-lang/crates.io-index" 1352 | checksum = "4e08c8bc7575d7e091fe0706963bd22e2a4be6a64da995f03b2a5a57d66ad015" 1353 | 1354 | [[package]] 1355 | name = "fnv" 1356 | version = "1.0.7" 1357 | source = "registry+https://github.com/rust-lang/crates.io-index" 1358 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 1359 | 1360 | [[package]] 1361 | name = "foreign-types" 1362 | version = "0.3.2" 1363 | source = "registry+https://github.com/rust-lang/crates.io-index" 1364 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1365 | dependencies = [ 1366 | "foreign-types-shared", 1367 | ] 1368 | 1369 | [[package]] 1370 | name = "foreign-types-shared" 1371 | version = "0.1.1" 1372 | source = "registry+https://github.com/rust-lang/crates.io-index" 1373 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1374 | 1375 | [[package]] 1376 | name = "fsevent" 1377 | version = "2.0.2" 1378 | source = "registry+https://github.com/rust-lang/crates.io-index" 1379 | checksum = "97f347202c95c98805c216f9e1df210e8ebaec9fdb2365700a43c10797a35e63" 1380 | dependencies = [ 1381 | "bitflags", 1382 | "fsevent-sys", 1383 | ] 1384 | 1385 | [[package]] 1386 | name = "fsevent-sys" 1387 | version = "3.0.2" 1388 | source = "registry+https://github.com/rust-lang/crates.io-index" 1389 | checksum = "77a29c77f1ca394c3e73a9a5d24cfcabb734682d9634fc398f2204a63c994120" 1390 | dependencies = [ 1391 | "libc", 1392 | ] 1393 | 1394 | [[package]] 1395 | name = "fuchsia-zircon" 1396 | version = "0.3.3" 1397 | source = "registry+https://github.com/rust-lang/crates.io-index" 1398 | checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 1399 | dependencies = [ 1400 | "bitflags", 1401 | "fuchsia-zircon-sys", 1402 | ] 1403 | 1404 | [[package]] 1405 | name = "fuchsia-zircon-sys" 1406 | version = "0.3.3" 1407 | source = "registry+https://github.com/rust-lang/crates.io-index" 1408 | checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 1409 | 1410 | [[package]] 1411 | name = "futures" 1412 | version = "0.3.7" 1413 | source = "registry+https://github.com/rust-lang/crates.io-index" 1414 | checksum = "95314d38584ffbfda215621d723e0a3906f032e03ae5551e650058dac83d4797" 1415 | dependencies = [ 1416 | "futures-channel", 1417 | "futures-core", 1418 | "futures-executor", 1419 | "futures-io", 1420 | "futures-sink", 1421 | "futures-task", 1422 | "futures-util", 1423 | ] 1424 | 1425 | [[package]] 1426 | name = "futures-channel" 1427 | version = "0.3.7" 1428 | source = "registry+https://github.com/rust-lang/crates.io-index" 1429 | checksum = "0448174b01148032eed37ac4aed28963aaaa8cfa93569a08e5b479bbc6c2c151" 1430 | dependencies = [ 1431 | "futures-core", 1432 | "futures-sink", 1433 | ] 1434 | 1435 | [[package]] 1436 | name = "futures-core" 1437 | version = "0.3.7" 1438 | source = "registry+https://github.com/rust-lang/crates.io-index" 1439 | checksum = "18eaa56102984bed2c88ea39026cff3ce3b4c7f508ca970cedf2450ea10d4e46" 1440 | 1441 | [[package]] 1442 | name = "futures-executor" 1443 | version = "0.3.7" 1444 | source = "registry+https://github.com/rust-lang/crates.io-index" 1445 | checksum = "f5f8e0c9258abaea85e78ebdda17ef9666d390e987f006be6080dfe354b708cb" 1446 | dependencies = [ 1447 | "futures-core", 1448 | "futures-task", 1449 | "futures-util", 1450 | ] 1451 | 1452 | [[package]] 1453 | name = "futures-io" 1454 | version = "0.3.7" 1455 | source = "registry+https://github.com/rust-lang/crates.io-index" 1456 | checksum = "6e1798854a4727ff944a7b12aa999f58ce7aa81db80d2dfaaf2ba06f065ddd2b" 1457 | 1458 | [[package]] 1459 | name = "futures-lite" 1460 | version = "1.11.2" 1461 | source = "registry+https://github.com/rust-lang/crates.io-index" 1462 | checksum = "5e6c079abfac3ab269e2927ec048dabc89d009ebfdda6b8ee86624f30c689658" 1463 | dependencies = [ 1464 | "fastrand", 1465 | "futures-core", 1466 | "futures-io", 1467 | "memchr", 1468 | "parking", 1469 | "pin-project-lite", 1470 | "waker-fn", 1471 | ] 1472 | 1473 | [[package]] 1474 | name = "futures-macro" 1475 | version = "0.3.7" 1476 | source = "registry+https://github.com/rust-lang/crates.io-index" 1477 | checksum = "e36fccf3fc58563b4a14d265027c627c3b665d7fed489427e88e7cc929559efe" 1478 | dependencies = [ 1479 | "proc-macro-hack", 1480 | "proc-macro2", 1481 | "quote", 1482 | "syn", 1483 | ] 1484 | 1485 | [[package]] 1486 | name = "futures-sink" 1487 | version = "0.3.7" 1488 | source = "registry+https://github.com/rust-lang/crates.io-index" 1489 | checksum = "0e3ca3f17d6e8804ae5d3df7a7d35b2b3a6fe89dac84b31872720fc3060a0b11" 1490 | 1491 | [[package]] 1492 | name = "futures-task" 1493 | version = "0.3.7" 1494 | source = "registry+https://github.com/rust-lang/crates.io-index" 1495 | checksum = "96d502af37186c4fef99453df03e374683f8a1eec9dcc1e66b3b82dc8278ce3c" 1496 | dependencies = [ 1497 | "once_cell", 1498 | ] 1499 | 1500 | [[package]] 1501 | name = "futures-util" 1502 | version = "0.3.7" 1503 | source = "registry+https://github.com/rust-lang/crates.io-index" 1504 | checksum = "abcb44342f62e6f3e8ac427b8aa815f724fd705dfad060b18ac7866c15bb8e34" 1505 | dependencies = [ 1506 | "futures-channel", 1507 | "futures-core", 1508 | "futures-io", 1509 | "futures-macro", 1510 | "futures-sink", 1511 | "futures-task", 1512 | "memchr", 1513 | "pin-project", 1514 | "pin-utils", 1515 | "proc-macro-hack", 1516 | "proc-macro-nested", 1517 | "slab", 1518 | ] 1519 | 1520 | [[package]] 1521 | name = "fxhash" 1522 | version = "0.2.1" 1523 | source = "registry+https://github.com/rust-lang/crates.io-index" 1524 | checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 1525 | dependencies = [ 1526 | "byteorder", 1527 | ] 1528 | 1529 | [[package]] 1530 | name = "getrandom" 1531 | version = "0.1.15" 1532 | source = "registry+https://github.com/rust-lang/crates.io-index" 1533 | checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" 1534 | dependencies = [ 1535 | "cfg-if 0.1.10", 1536 | "libc", 1537 | "wasi 0.9.0+wasi-snapshot-preview1", 1538 | "wasm-bindgen", 1539 | ] 1540 | 1541 | [[package]] 1542 | name = "getrandom" 1543 | version = "0.2.0" 1544 | source = "registry+https://github.com/rust-lang/crates.io-index" 1545 | checksum = "ee8025cf36f917e6a52cce185b7c7177689b838b7ec138364e50cc2277a56cf4" 1546 | dependencies = [ 1547 | "cfg-if 0.1.10", 1548 | "libc", 1549 | "stdweb 0.4.20", 1550 | "wasi 0.9.0+wasi-snapshot-preview1", 1551 | "wasm-bindgen", 1552 | ] 1553 | 1554 | [[package]] 1555 | name = "gfx-auxil" 1556 | version = "0.7.0" 1557 | source = "registry+https://github.com/rust-lang/crates.io-index" 1558 | checksum = "07cd956b592970f08545b9325b87580eb95a51843b6f39da27b8667fec1a1216" 1559 | dependencies = [ 1560 | "fxhash", 1561 | "gfx-hal", 1562 | "spirv_cross", 1563 | ] 1564 | 1565 | [[package]] 1566 | name = "gfx-backend-dx11" 1567 | version = "0.6.11" 1568 | source = "registry+https://github.com/rust-lang/crates.io-index" 1569 | checksum = "b0105746c65b502f6629b7e1acc3610a7726a2f8b37229119fb774d48af174dd" 1570 | dependencies = [ 1571 | "arrayvec", 1572 | "bitflags", 1573 | "gfx-auxil", 1574 | "gfx-hal", 1575 | "libloading 0.6.5", 1576 | "log", 1577 | "parking_lot 0.11.0", 1578 | "range-alloc", 1579 | "raw-window-handle", 1580 | "smallvec 1.4.2", 1581 | "spirv_cross", 1582 | "thunderdome", 1583 | "winapi 0.3.9", 1584 | "wio", 1585 | ] 1586 | 1587 | [[package]] 1588 | name = "gfx-backend-dx12" 1589 | version = "0.6.11" 1590 | source = "registry+https://github.com/rust-lang/crates.io-index" 1591 | checksum = "018a08a0703ef8765ed25ecd48ec77b4d728233364d85b22b8ce24bcd5f71dda" 1592 | dependencies = [ 1593 | "arrayvec", 1594 | "bit-set", 1595 | "bitflags", 1596 | "d3d12", 1597 | "gfx-auxil", 1598 | "gfx-hal", 1599 | "log", 1600 | "range-alloc", 1601 | "raw-window-handle", 1602 | "smallvec 1.4.2", 1603 | "spirv_cross", 1604 | "winapi 0.3.9", 1605 | ] 1606 | 1607 | [[package]] 1608 | name = "gfx-backend-empty" 1609 | version = "0.6.0" 1610 | source = "registry+https://github.com/rust-lang/crates.io-index" 1611 | checksum = "2085227c12b78f6657a900c829f2d0deb46a9be3eaf86844fde263cdc218f77c" 1612 | dependencies = [ 1613 | "gfx-hal", 1614 | "log", 1615 | "raw-window-handle", 1616 | ] 1617 | 1618 | [[package]] 1619 | name = "gfx-backend-metal" 1620 | version = "0.6.4" 1621 | source = "registry+https://github.com/rust-lang/crates.io-index" 1622 | checksum = "60ba1c77c112e7d35786dbd49ed26f2a76ce53a44bc09fe964935e4e35ed7f2b" 1623 | dependencies = [ 1624 | "arrayvec", 1625 | "bitflags", 1626 | "block", 1627 | "cocoa-foundation", 1628 | "copyless", 1629 | "foreign-types", 1630 | "gfx-auxil", 1631 | "gfx-hal", 1632 | "lazy_static", 1633 | "log", 1634 | "metal", 1635 | "objc", 1636 | "parking_lot 0.11.0", 1637 | "range-alloc", 1638 | "raw-window-handle", 1639 | "smallvec 1.4.2", 1640 | "spirv_cross", 1641 | "storage-map", 1642 | ] 1643 | 1644 | [[package]] 1645 | name = "gfx-backend-vulkan" 1646 | version = "0.6.5" 1647 | source = "registry+https://github.com/rust-lang/crates.io-index" 1648 | checksum = "3a3a63cf61067a09b7d1ac480af3cb2ae0c5ede5bed294607bbd814cb1666c45" 1649 | dependencies = [ 1650 | "arrayvec", 1651 | "ash", 1652 | "byteorder", 1653 | "core-graphics-types", 1654 | "gfx-hal", 1655 | "inplace_it", 1656 | "lazy_static", 1657 | "log", 1658 | "objc", 1659 | "raw-window-handle", 1660 | "smallvec 1.4.2", 1661 | "winapi 0.3.9", 1662 | "x11", 1663 | ] 1664 | 1665 | [[package]] 1666 | name = "gfx-descriptor" 1667 | version = "0.2.0" 1668 | source = "registry+https://github.com/rust-lang/crates.io-index" 1669 | checksum = "cd8c7afcd000f279d541a490e27117e61037537279b9342279abf4938fe60c6b" 1670 | dependencies = [ 1671 | "arrayvec", 1672 | "fxhash", 1673 | "gfx-hal", 1674 | "log", 1675 | ] 1676 | 1677 | [[package]] 1678 | name = "gfx-hal" 1679 | version = "0.6.0" 1680 | source = "registry+https://github.com/rust-lang/crates.io-index" 1681 | checksum = "18d0754f5b7a43915fd7466883b2d1bb0800d7cc4609178d0b27bf143b9e5123" 1682 | dependencies = [ 1683 | "bitflags", 1684 | "raw-window-handle", 1685 | ] 1686 | 1687 | [[package]] 1688 | name = "gfx-memory" 1689 | version = "0.2.2" 1690 | source = "registry+https://github.com/rust-lang/crates.io-index" 1691 | checksum = "dccdda5d2b39412f4ca2cb15c70b5a82783a86b0606f5e985342754c8ed88f05" 1692 | dependencies = [ 1693 | "bit-set", 1694 | "fxhash", 1695 | "gfx-hal", 1696 | "log", 1697 | "slab", 1698 | ] 1699 | 1700 | [[package]] 1701 | name = "gilrs" 1702 | version = "0.8.0" 1703 | source = "registry+https://github.com/rust-lang/crates.io-index" 1704 | checksum = "3b64ac678e1174eb012be1cfd409ff2483f23cb79bc880ce4737147245b0fbff" 1705 | dependencies = [ 1706 | "fnv", 1707 | "gilrs-core", 1708 | "log", 1709 | "stdweb 0.4.20", 1710 | "uuid", 1711 | "vec_map", 1712 | ] 1713 | 1714 | [[package]] 1715 | name = "gilrs-core" 1716 | version = "0.3.0" 1717 | source = "registry+https://github.com/rust-lang/crates.io-index" 1718 | checksum = "1024d4046c5c67d2adb8c90f6ed235163b58e05d35a63bf699b53f0cceeba2c6" 1719 | dependencies = [ 1720 | "core-foundation 0.6.4", 1721 | "io-kit-sys", 1722 | "libc", 1723 | "libudev-sys", 1724 | "log", 1725 | "nix 0.18.0", 1726 | "rusty-xinput", 1727 | "stdweb 0.4.20", 1728 | "uuid", 1729 | "vec_map", 1730 | "winapi 0.3.9", 1731 | ] 1732 | 1733 | [[package]] 1734 | name = "gimli" 1735 | version = "0.23.0" 1736 | source = "registry+https://github.com/rust-lang/crates.io-index" 1737 | checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" 1738 | 1739 | [[package]] 1740 | name = "glam" 1741 | version = "0.9.5" 1742 | source = "registry+https://github.com/rust-lang/crates.io-index" 1743 | checksum = "8637c7ec4fd0776c51eeab3e0d5d1aa7e440ece3fc2ee7d674e13c957287bfc1" 1744 | dependencies = [ 1745 | "serde", 1746 | ] 1747 | 1748 | [[package]] 1749 | name = "glob" 1750 | version = "0.3.0" 1751 | source = "registry+https://github.com/rust-lang/crates.io-index" 1752 | checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" 1753 | 1754 | [[package]] 1755 | name = "gltf" 1756 | version = "0.15.2" 1757 | source = "registry+https://github.com/rust-lang/crates.io-index" 1758 | checksum = "d6fb0d1d772daf10ea74528c3aeb12215f6d5b820adf2ecfc93a6578d6779c3c" 1759 | dependencies = [ 1760 | "byteorder", 1761 | "gltf-json", 1762 | "lazy_static", 1763 | ] 1764 | 1765 | [[package]] 1766 | name = "gltf-derive" 1767 | version = "0.15.2" 1768 | source = "registry+https://github.com/rust-lang/crates.io-index" 1769 | checksum = "f6636de7bf52227363554f1ca2d9cd180fc666129ddd0933097e1f227dfa7293" 1770 | dependencies = [ 1771 | "inflections", 1772 | "proc-macro2", 1773 | "quote", 1774 | "syn", 1775 | ] 1776 | 1777 | [[package]] 1778 | name = "gltf-json" 1779 | version = "0.15.2" 1780 | source = "registry+https://github.com/rust-lang/crates.io-index" 1781 | checksum = "e3fc3deb81e6fa04bf808f6be7c3983229552a95b77f687ad96af00f6d3e7d6c" 1782 | dependencies = [ 1783 | "gltf-derive", 1784 | "serde", 1785 | "serde_derive", 1786 | "serde_json", 1787 | ] 1788 | 1789 | [[package]] 1790 | name = "guillotiere" 1791 | version = "0.6.0" 1792 | source = "registry+https://github.com/rust-lang/crates.io-index" 1793 | checksum = "bc7cccefbf418f663e11e9500326f46a44273dc598210bbedc8bbe95e696531f" 1794 | dependencies = [ 1795 | "euclid", 1796 | "svg_fmt", 1797 | ] 1798 | 1799 | [[package]] 1800 | name = "hermit-abi" 1801 | version = "0.1.17" 1802 | source = "registry+https://github.com/rust-lang/crates.io-index" 1803 | checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" 1804 | dependencies = [ 1805 | "libc", 1806 | ] 1807 | 1808 | [[package]] 1809 | name = "hex" 1810 | version = "0.4.2" 1811 | source = "registry+https://github.com/rust-lang/crates.io-index" 1812 | checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" 1813 | 1814 | [[package]] 1815 | name = "hexasphere" 1816 | version = "1.0.0" 1817 | source = "registry+https://github.com/rust-lang/crates.io-index" 1818 | checksum = "00ad921775e70efb68429688766ca130de39af65d5201db760b0e6558bfa8175" 1819 | dependencies = [ 1820 | "glam", 1821 | "lazy_static", 1822 | ] 1823 | 1824 | [[package]] 1825 | name = "ident_case" 1826 | version = "1.0.1" 1827 | source = "registry+https://github.com/rust-lang/crates.io-index" 1828 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 1829 | 1830 | [[package]] 1831 | name = "idna" 1832 | version = "0.1.5" 1833 | source = "registry+https://github.com/rust-lang/crates.io-index" 1834 | checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" 1835 | dependencies = [ 1836 | "matches", 1837 | "unicode-bidi", 1838 | "unicode-normalization", 1839 | ] 1840 | 1841 | [[package]] 1842 | name = "idna" 1843 | version = "0.2.0" 1844 | source = "registry+https://github.com/rust-lang/crates.io-index" 1845 | checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" 1846 | dependencies = [ 1847 | "matches", 1848 | "unicode-bidi", 1849 | "unicode-normalization", 1850 | ] 1851 | 1852 | [[package]] 1853 | name = "image" 1854 | version = "0.23.11" 1855 | source = "registry+https://github.com/rust-lang/crates.io-index" 1856 | checksum = "b4f0a8345b33b082aedec2f4d7d4a926b845cee184cbe78b703413066564431b" 1857 | dependencies = [ 1858 | "bytemuck", 1859 | "byteorder", 1860 | "color_quant", 1861 | "num-iter", 1862 | "num-rational", 1863 | "num-traits", 1864 | "png", 1865 | "scoped_threadpool", 1866 | ] 1867 | 1868 | [[package]] 1869 | name = "inflections" 1870 | version = "1.1.1" 1871 | source = "registry+https://github.com/rust-lang/crates.io-index" 1872 | checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" 1873 | 1874 | [[package]] 1875 | name = "inotify" 1876 | version = "0.8.3" 1877 | source = "registry+https://github.com/rust-lang/crates.io-index" 1878 | checksum = "46dd0a94b393c730779ccfd2a872b67b1eb67be3fc33082e733bdb38b5fde4d4" 1879 | dependencies = [ 1880 | "bitflags", 1881 | "inotify-sys", 1882 | "libc", 1883 | ] 1884 | 1885 | [[package]] 1886 | name = "inotify-sys" 1887 | version = "0.1.3" 1888 | source = "registry+https://github.com/rust-lang/crates.io-index" 1889 | checksum = "e74a1aa87c59aeff6ef2cc2fa62d41bc43f54952f55652656b18a02fd5e356c0" 1890 | dependencies = [ 1891 | "libc", 1892 | ] 1893 | 1894 | [[package]] 1895 | name = "inplace_it" 1896 | version = "0.3.2" 1897 | source = "registry+https://github.com/rust-lang/crates.io-index" 1898 | checksum = "dd01a2a73f2f399df96b22dc88ea687ef4d76226284e7531ae3c7ee1dc5cb534" 1899 | 1900 | [[package]] 1901 | name = "instant" 1902 | version = "0.1.8" 1903 | source = "registry+https://github.com/rust-lang/crates.io-index" 1904 | checksum = "cb1fc4429a33e1f80d41dc9fea4d108a88bec1de8053878898ae448a0b52f613" 1905 | dependencies = [ 1906 | "cfg-if 1.0.0", 1907 | "js-sys", 1908 | "wasm-bindgen", 1909 | "web-sys", 1910 | ] 1911 | 1912 | [[package]] 1913 | name = "io-kit-sys" 1914 | version = "0.1.0" 1915 | source = "registry+https://github.com/rust-lang/crates.io-index" 1916 | checksum = "f21dcc74995dd4cd090b147e79789f8d65959cbfb5f0b118002db869ea3bd0a0" 1917 | dependencies = [ 1918 | "core-foundation-sys 0.6.2", 1919 | "mach 0.2.3", 1920 | ] 1921 | 1922 | [[package]] 1923 | name = "iovec" 1924 | version = "0.1.4" 1925 | source = "registry+https://github.com/rust-lang/crates.io-index" 1926 | checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" 1927 | dependencies = [ 1928 | "libc", 1929 | ] 1930 | 1931 | [[package]] 1932 | name = "itoa" 1933 | version = "0.4.6" 1934 | source = "registry+https://github.com/rust-lang/crates.io-index" 1935 | checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" 1936 | 1937 | [[package]] 1938 | name = "jni" 1939 | version = "0.14.0" 1940 | source = "registry+https://github.com/rust-lang/crates.io-index" 1941 | checksum = "1981310da491a4f0f815238097d0d43d8072732b5ae5f8bd0d8eadf5bf245402" 1942 | dependencies = [ 1943 | "cesu8", 1944 | "combine 3.8.1", 1945 | "error-chain", 1946 | "jni-sys", 1947 | "log", 1948 | "walkdir", 1949 | ] 1950 | 1951 | [[package]] 1952 | name = "jni" 1953 | version = "0.17.0" 1954 | source = "registry+https://github.com/rust-lang/crates.io-index" 1955 | checksum = "36bcc950632e48b86da402c5c077590583da5ac0d480103611d5374e7c967a3c" 1956 | dependencies = [ 1957 | "cesu8", 1958 | "combine 4.3.2", 1959 | "error-chain", 1960 | "jni-sys", 1961 | "log", 1962 | "walkdir", 1963 | ] 1964 | 1965 | [[package]] 1966 | name = "jni-sys" 1967 | version = "0.3.0" 1968 | source = "registry+https://github.com/rust-lang/crates.io-index" 1969 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 1970 | 1971 | [[package]] 1972 | name = "jobserver" 1973 | version = "0.1.21" 1974 | source = "registry+https://github.com/rust-lang/crates.io-index" 1975 | checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" 1976 | dependencies = [ 1977 | "libc", 1978 | ] 1979 | 1980 | [[package]] 1981 | name = "js-sys" 1982 | version = "0.3.45" 1983 | source = "registry+https://github.com/rust-lang/crates.io-index" 1984 | checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" 1985 | dependencies = [ 1986 | "wasm-bindgen", 1987 | ] 1988 | 1989 | [[package]] 1990 | name = "kernel32-sys" 1991 | version = "0.2.2" 1992 | source = "registry+https://github.com/rust-lang/crates.io-index" 1993 | checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 1994 | dependencies = [ 1995 | "winapi 0.2.8", 1996 | "winapi-build", 1997 | ] 1998 | 1999 | [[package]] 2000 | name = "lazy_static" 2001 | version = "1.4.0" 2002 | source = "registry+https://github.com/rust-lang/crates.io-index" 2003 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 2004 | dependencies = [ 2005 | "spin", 2006 | ] 2007 | 2008 | [[package]] 2009 | name = "lazycell" 2010 | version = "1.3.0" 2011 | source = "registry+https://github.com/rust-lang/crates.io-index" 2012 | checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" 2013 | 2014 | [[package]] 2015 | name = "libc" 2016 | version = "0.2.80" 2017 | source = "registry+https://github.com/rust-lang/crates.io-index" 2018 | checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614" 2019 | 2020 | [[package]] 2021 | name = "libflate" 2022 | version = "0.1.27" 2023 | source = "registry+https://github.com/rust-lang/crates.io-index" 2024 | checksum = "d9135df43b1f5d0e333385cb6e7897ecd1a43d7d11b91ac003f4d2c2d2401fdd" 2025 | dependencies = [ 2026 | "adler32", 2027 | "crc32fast", 2028 | "rle-decode-fast", 2029 | "take_mut", 2030 | ] 2031 | 2032 | [[package]] 2033 | name = "libloading" 2034 | version = "0.5.2" 2035 | source = "registry+https://github.com/rust-lang/crates.io-index" 2036 | checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" 2037 | dependencies = [ 2038 | "cc", 2039 | "winapi 0.3.9", 2040 | ] 2041 | 2042 | [[package]] 2043 | name = "libloading" 2044 | version = "0.6.5" 2045 | source = "registry+https://github.com/rust-lang/crates.io-index" 2046 | checksum = "1090080fe06ec2648d0da3881d9453d97e71a45f00eb179af7fdd7e3f686fdb0" 2047 | dependencies = [ 2048 | "cfg-if 1.0.0", 2049 | "winapi 0.3.9", 2050 | ] 2051 | 2052 | [[package]] 2053 | name = "libm" 2054 | version = "0.1.4" 2055 | source = "registry+https://github.com/rust-lang/crates.io-index" 2056 | checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" 2057 | 2058 | [[package]] 2059 | name = "libudev-sys" 2060 | version = "0.1.4" 2061 | source = "registry+https://github.com/rust-lang/crates.io-index" 2062 | checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" 2063 | dependencies = [ 2064 | "libc", 2065 | "pkg-config", 2066 | ] 2067 | 2068 | [[package]] 2069 | name = "lock_api" 2070 | version = "0.3.4" 2071 | source = "registry+https://github.com/rust-lang/crates.io-index" 2072 | checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" 2073 | dependencies = [ 2074 | "scopeguard", 2075 | ] 2076 | 2077 | [[package]] 2078 | name = "lock_api" 2079 | version = "0.4.1" 2080 | source = "registry+https://github.com/rust-lang/crates.io-index" 2081 | checksum = "28247cc5a5be2f05fbcd76dd0cf2c7d3b5400cb978a28042abcd4fa0b3f8261c" 2082 | dependencies = [ 2083 | "scopeguard", 2084 | ] 2085 | 2086 | [[package]] 2087 | name = "log" 2088 | version = "0.4.11" 2089 | source = "registry+https://github.com/rust-lang/crates.io-index" 2090 | checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" 2091 | dependencies = [ 2092 | "cfg-if 0.1.10", 2093 | ] 2094 | 2095 | [[package]] 2096 | name = "mach" 2097 | version = "0.2.3" 2098 | source = "registry+https://github.com/rust-lang/crates.io-index" 2099 | checksum = "86dd2487cdfea56def77b88438a2c915fb45113c5319bfe7e14306ca4cd0b0e1" 2100 | dependencies = [ 2101 | "libc", 2102 | ] 2103 | 2104 | [[package]] 2105 | name = "mach" 2106 | version = "0.3.2" 2107 | source = "registry+https://github.com/rust-lang/crates.io-index" 2108 | checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" 2109 | dependencies = [ 2110 | "libc", 2111 | ] 2112 | 2113 | [[package]] 2114 | name = "malloc_buf" 2115 | version = "0.0.6" 2116 | source = "registry+https://github.com/rust-lang/crates.io-index" 2117 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 2118 | dependencies = [ 2119 | "libc", 2120 | ] 2121 | 2122 | [[package]] 2123 | name = "matches" 2124 | version = "0.1.8" 2125 | source = "registry+https://github.com/rust-lang/crates.io-index" 2126 | checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" 2127 | 2128 | [[package]] 2129 | name = "maybe-uninit" 2130 | version = "2.0.0" 2131 | source = "registry+https://github.com/rust-lang/crates.io-index" 2132 | checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" 2133 | 2134 | [[package]] 2135 | name = "memchr" 2136 | version = "2.3.3" 2137 | source = "registry+https://github.com/rust-lang/crates.io-index" 2138 | checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" 2139 | 2140 | [[package]] 2141 | name = "metal" 2142 | version = "0.20.0" 2143 | source = "registry+https://github.com/rust-lang/crates.io-index" 2144 | checksum = "5c4e8a431536529327e28c9ba6992f2cb0c15d4222f0602a16e6d7695ff3bccf" 2145 | dependencies = [ 2146 | "bitflags", 2147 | "block", 2148 | "cocoa-foundation", 2149 | "foreign-types", 2150 | "log", 2151 | "objc", 2152 | ] 2153 | 2154 | [[package]] 2155 | name = "minimp3" 2156 | version = "0.5.0" 2157 | source = "registry+https://github.com/rust-lang/crates.io-index" 2158 | checksum = "9684a8c55935322fdab159b5d7a6163b33f6e7d32c4a8a54fe53d1bcfad738db" 2159 | dependencies = [ 2160 | "minimp3-sys", 2161 | "slice-deque", 2162 | ] 2163 | 2164 | [[package]] 2165 | name = "minimp3-sys" 2166 | version = "0.3.2" 2167 | source = "registry+https://github.com/rust-lang/crates.io-index" 2168 | checksum = "e21c73734c69dc95696c9ed8926a2b393171d98b3f5f5935686a26a487ab9b90" 2169 | dependencies = [ 2170 | "cc", 2171 | ] 2172 | 2173 | [[package]] 2174 | name = "miniz_oxide" 2175 | version = "0.3.7" 2176 | source = "registry+https://github.com/rust-lang/crates.io-index" 2177 | checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" 2178 | dependencies = [ 2179 | "adler32", 2180 | ] 2181 | 2182 | [[package]] 2183 | name = "miniz_oxide" 2184 | version = "0.4.3" 2185 | source = "registry+https://github.com/rust-lang/crates.io-index" 2186 | checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" 2187 | dependencies = [ 2188 | "adler", 2189 | "autocfg", 2190 | ] 2191 | 2192 | [[package]] 2193 | name = "mio" 2194 | version = "0.6.22" 2195 | source = "registry+https://github.com/rust-lang/crates.io-index" 2196 | checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" 2197 | dependencies = [ 2198 | "cfg-if 0.1.10", 2199 | "fuchsia-zircon", 2200 | "fuchsia-zircon-sys", 2201 | "iovec", 2202 | "kernel32-sys", 2203 | "libc", 2204 | "log", 2205 | "miow", 2206 | "net2", 2207 | "slab", 2208 | "winapi 0.2.8", 2209 | ] 2210 | 2211 | [[package]] 2212 | name = "mio-extras" 2213 | version = "2.0.6" 2214 | source = "registry+https://github.com/rust-lang/crates.io-index" 2215 | checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" 2216 | dependencies = [ 2217 | "lazycell", 2218 | "log", 2219 | "mio", 2220 | "slab", 2221 | ] 2222 | 2223 | [[package]] 2224 | name = "miow" 2225 | version = "0.2.1" 2226 | source = "registry+https://github.com/rust-lang/crates.io-index" 2227 | checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 2228 | dependencies = [ 2229 | "kernel32-sys", 2230 | "net2", 2231 | "winapi 0.2.8", 2232 | "ws2_32-sys", 2233 | ] 2234 | 2235 | [[package]] 2236 | name = "naga" 2237 | version = "0.2.0" 2238 | source = "registry+https://github.com/rust-lang/crates.io-index" 2239 | checksum = "0873deb76cf44b7454fba7b2ba6a89d3de70c08aceffd2c489379b3d9d08e661" 2240 | dependencies = [ 2241 | "bitflags", 2242 | "fxhash", 2243 | "log", 2244 | "num-traits", 2245 | "spirv_headers", 2246 | "thiserror", 2247 | ] 2248 | 2249 | [[package]] 2250 | name = "ndk" 2251 | version = "0.2.1" 2252 | source = "registry+https://github.com/rust-lang/crates.io-index" 2253 | checksum = "5eb167c1febed0a496639034d0c76b3b74263636045db5489eee52143c246e73" 2254 | dependencies = [ 2255 | "jni-sys", 2256 | "ndk-sys", 2257 | "num_enum", 2258 | "thiserror", 2259 | ] 2260 | 2261 | [[package]] 2262 | name = "ndk-glue" 2263 | version = "0.2.1" 2264 | source = "registry+https://github.com/rust-lang/crates.io-index" 2265 | checksum = "bdf399b8b7a39c6fb153c4ec32c72fd5fe789df24a647f229c239aa7adb15241" 2266 | dependencies = [ 2267 | "android_logger 0.8.6", 2268 | "lazy_static", 2269 | "libc", 2270 | "log", 2271 | "ndk", 2272 | "ndk-macro", 2273 | "ndk-sys", 2274 | ] 2275 | 2276 | [[package]] 2277 | name = "ndk-macro" 2278 | version = "0.2.0" 2279 | source = "registry+https://github.com/rust-lang/crates.io-index" 2280 | checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" 2281 | dependencies = [ 2282 | "darling", 2283 | "proc-macro-crate", 2284 | "proc-macro2", 2285 | "quote", 2286 | "syn", 2287 | ] 2288 | 2289 | [[package]] 2290 | name = "ndk-sys" 2291 | version = "0.2.1" 2292 | source = "registry+https://github.com/rust-lang/crates.io-index" 2293 | checksum = "c44922cb3dbb1c70b5e5f443d63b64363a898564d739ba5198e3a9138442868d" 2294 | 2295 | [[package]] 2296 | name = "net2" 2297 | version = "0.2.35" 2298 | source = "registry+https://github.com/rust-lang/crates.io-index" 2299 | checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853" 2300 | dependencies = [ 2301 | "cfg-if 0.1.10", 2302 | "libc", 2303 | "winapi 0.3.9", 2304 | ] 2305 | 2306 | [[package]] 2307 | name = "nix" 2308 | version = "0.15.0" 2309 | source = "registry+https://github.com/rust-lang/crates.io-index" 2310 | checksum = "3b2e0b4f3320ed72aaedb9a5ac838690a8047c7b275da22711fddff4f8a14229" 2311 | dependencies = [ 2312 | "bitflags", 2313 | "cc", 2314 | "cfg-if 0.1.10", 2315 | "libc", 2316 | "void", 2317 | ] 2318 | 2319 | [[package]] 2320 | name = "nix" 2321 | version = "0.18.0" 2322 | source = "registry+https://github.com/rust-lang/crates.io-index" 2323 | checksum = "83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055" 2324 | dependencies = [ 2325 | "bitflags", 2326 | "cc", 2327 | "cfg-if 0.1.10", 2328 | "libc", 2329 | ] 2330 | 2331 | [[package]] 2332 | name = "nom" 2333 | version = "5.1.2" 2334 | source = "registry+https://github.com/rust-lang/crates.io-index" 2335 | checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" 2336 | dependencies = [ 2337 | "memchr", 2338 | "version_check", 2339 | ] 2340 | 2341 | [[package]] 2342 | name = "notify" 2343 | version = "5.0.0-pre.3" 2344 | source = "registry+https://github.com/rust-lang/crates.io-index" 2345 | checksum = "77d03607cf88b4b160ba0e9ed425fff3cee3b55ac813f0c685b3a3772da37d0e" 2346 | dependencies = [ 2347 | "anymap", 2348 | "bitflags", 2349 | "crossbeam-channel", 2350 | "filetime", 2351 | "fsevent", 2352 | "fsevent-sys", 2353 | "inotify", 2354 | "libc", 2355 | "mio", 2356 | "mio-extras", 2357 | "walkdir", 2358 | "winapi 0.3.9", 2359 | ] 2360 | 2361 | [[package]] 2362 | name = "num-derive" 2363 | version = "0.3.3" 2364 | source = "registry+https://github.com/rust-lang/crates.io-index" 2365 | checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" 2366 | dependencies = [ 2367 | "proc-macro2", 2368 | "quote", 2369 | "syn", 2370 | ] 2371 | 2372 | [[package]] 2373 | name = "num-integer" 2374 | version = "0.1.43" 2375 | source = "registry+https://github.com/rust-lang/crates.io-index" 2376 | checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" 2377 | dependencies = [ 2378 | "autocfg", 2379 | "num-traits", 2380 | ] 2381 | 2382 | [[package]] 2383 | name = "num-iter" 2384 | version = "0.1.41" 2385 | source = "registry+https://github.com/rust-lang/crates.io-index" 2386 | checksum = "7a6e6b7c748f995c4c29c5f5ae0248536e04a5739927c74ec0fa564805094b9f" 2387 | dependencies = [ 2388 | "autocfg", 2389 | "num-integer", 2390 | "num-traits", 2391 | ] 2392 | 2393 | [[package]] 2394 | name = "num-rational" 2395 | version = "0.3.0" 2396 | source = "registry+https://github.com/rust-lang/crates.io-index" 2397 | checksum = "a5b4d7360f362cfb50dde8143501e6940b22f644be75a4cc90b2d81968908138" 2398 | dependencies = [ 2399 | "autocfg", 2400 | "num-integer", 2401 | "num-traits", 2402 | ] 2403 | 2404 | [[package]] 2405 | name = "num-traits" 2406 | version = "0.2.12" 2407 | source = "registry+https://github.com/rust-lang/crates.io-index" 2408 | checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" 2409 | dependencies = [ 2410 | "autocfg", 2411 | ] 2412 | 2413 | [[package]] 2414 | name = "num_cpus" 2415 | version = "1.13.0" 2416 | source = "registry+https://github.com/rust-lang/crates.io-index" 2417 | checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" 2418 | dependencies = [ 2419 | "hermit-abi", 2420 | "libc", 2421 | ] 2422 | 2423 | [[package]] 2424 | name = "num_enum" 2425 | version = "0.4.3" 2426 | source = "registry+https://github.com/rust-lang/crates.io-index" 2427 | checksum = "ca565a7df06f3d4b485494f25ba05da1435950f4dc263440eda7a6fa9b8e36e4" 2428 | dependencies = [ 2429 | "derivative", 2430 | "num_enum_derive", 2431 | ] 2432 | 2433 | [[package]] 2434 | name = "num_enum_derive" 2435 | version = "0.4.3" 2436 | source = "registry+https://github.com/rust-lang/crates.io-index" 2437 | checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d" 2438 | dependencies = [ 2439 | "proc-macro-crate", 2440 | "proc-macro2", 2441 | "quote", 2442 | "syn", 2443 | ] 2444 | 2445 | [[package]] 2446 | name = "objc" 2447 | version = "0.2.7" 2448 | source = "registry+https://github.com/rust-lang/crates.io-index" 2449 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 2450 | dependencies = [ 2451 | "malloc_buf", 2452 | "objc_exception", 2453 | ] 2454 | 2455 | [[package]] 2456 | name = "objc_exception" 2457 | version = "0.1.2" 2458 | source = "registry+https://github.com/rust-lang/crates.io-index" 2459 | checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" 2460 | dependencies = [ 2461 | "cc", 2462 | ] 2463 | 2464 | [[package]] 2465 | name = "object" 2466 | version = "0.22.0" 2467 | source = "registry+https://github.com/rust-lang/crates.io-index" 2468 | checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397" 2469 | 2470 | [[package]] 2471 | name = "oboe" 2472 | version = "0.3.0" 2473 | source = "registry+https://github.com/rust-lang/crates.io-index" 2474 | checksum = "d6a13c9fe73346ff3cee5530b8dd9da1ce3e13cb663be210af3938a2a1dd3eab" 2475 | dependencies = [ 2476 | "jni 0.14.0", 2477 | "ndk", 2478 | "ndk-glue", 2479 | "num-derive", 2480 | "num-traits", 2481 | "oboe-sys", 2482 | ] 2483 | 2484 | [[package]] 2485 | name = "oboe-sys" 2486 | version = "0.3.0" 2487 | source = "registry+https://github.com/rust-lang/crates.io-index" 2488 | checksum = "68ff7a51600eabe34e189eec5c995a62f151d8d97e5fbca39e87ca738bb99b82" 2489 | dependencies = [ 2490 | "fetch_unroll", 2491 | ] 2492 | 2493 | [[package]] 2494 | name = "once_cell" 2495 | version = "1.4.1" 2496 | source = "registry+https://github.com/rust-lang/crates.io-index" 2497 | checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad" 2498 | 2499 | [[package]] 2500 | name = "owned_ttf_parser" 2501 | version = "0.8.0" 2502 | source = "registry+https://github.com/rust-lang/crates.io-index" 2503 | checksum = "fb477c7fd2a3a6e04e1dc6ca2e4e9b04f2df702021dc5a5d1cf078c587dc59f7" 2504 | dependencies = [ 2505 | "ttf-parser", 2506 | ] 2507 | 2508 | [[package]] 2509 | name = "parking" 2510 | version = "2.0.0" 2511 | source = "registry+https://github.com/rust-lang/crates.io-index" 2512 | checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" 2513 | 2514 | [[package]] 2515 | name = "parking_lot" 2516 | version = "0.9.0" 2517 | source = "registry+https://github.com/rust-lang/crates.io-index" 2518 | checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" 2519 | dependencies = [ 2520 | "lock_api 0.3.4", 2521 | "parking_lot_core 0.6.2", 2522 | "rustc_version", 2523 | ] 2524 | 2525 | [[package]] 2526 | name = "parking_lot" 2527 | version = "0.11.0" 2528 | source = "registry+https://github.com/rust-lang/crates.io-index" 2529 | checksum = "a4893845fa2ca272e647da5d0e46660a314ead9c2fdd9a883aabc32e481a8733" 2530 | dependencies = [ 2531 | "instant", 2532 | "lock_api 0.4.1", 2533 | "parking_lot_core 0.8.0", 2534 | ] 2535 | 2536 | [[package]] 2537 | name = "parking_lot_core" 2538 | version = "0.6.2" 2539 | source = "registry+https://github.com/rust-lang/crates.io-index" 2540 | checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" 2541 | dependencies = [ 2542 | "cfg-if 0.1.10", 2543 | "cloudabi 0.0.3", 2544 | "libc", 2545 | "redox_syscall", 2546 | "rustc_version", 2547 | "smallvec 0.6.13", 2548 | "winapi 0.3.9", 2549 | ] 2550 | 2551 | [[package]] 2552 | name = "parking_lot_core" 2553 | version = "0.8.0" 2554 | source = "registry+https://github.com/rust-lang/crates.io-index" 2555 | checksum = "c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b" 2556 | dependencies = [ 2557 | "cfg-if 0.1.10", 2558 | "cloudabi 0.1.0", 2559 | "instant", 2560 | "libc", 2561 | "redox_syscall", 2562 | "smallvec 1.4.2", 2563 | "winapi 0.3.9", 2564 | ] 2565 | 2566 | [[package]] 2567 | name = "peeking_take_while" 2568 | version = "0.1.2" 2569 | source = "registry+https://github.com/rust-lang/crates.io-index" 2570 | checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" 2571 | 2572 | [[package]] 2573 | name = "percent-encoding" 2574 | version = "1.0.1" 2575 | source = "registry+https://github.com/rust-lang/crates.io-index" 2576 | checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 2577 | 2578 | [[package]] 2579 | name = "percent-encoding" 2580 | version = "2.1.0" 2581 | source = "registry+https://github.com/rust-lang/crates.io-index" 2582 | checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 2583 | 2584 | [[package]] 2585 | name = "pin-project" 2586 | version = "1.0.1" 2587 | source = "registry+https://github.com/rust-lang/crates.io-index" 2588 | checksum = "ee41d838744f60d959d7074e3afb6b35c7456d0f61cad38a24e35e6553f73841" 2589 | dependencies = [ 2590 | "pin-project-internal", 2591 | ] 2592 | 2593 | [[package]] 2594 | name = "pin-project-internal" 2595 | version = "1.0.1" 2596 | source = "registry+https://github.com/rust-lang/crates.io-index" 2597 | checksum = "81a4ffa594b66bff340084d4081df649a7dc049ac8d7fc458d8e628bfbbb2f86" 2598 | dependencies = [ 2599 | "proc-macro2", 2600 | "quote", 2601 | "syn", 2602 | ] 2603 | 2604 | [[package]] 2605 | name = "pin-project-lite" 2606 | version = "0.1.11" 2607 | source = "registry+https://github.com/rust-lang/crates.io-index" 2608 | checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b" 2609 | 2610 | [[package]] 2611 | name = "pin-utils" 2612 | version = "0.1.0" 2613 | source = "registry+https://github.com/rust-lang/crates.io-index" 2614 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2615 | 2616 | [[package]] 2617 | name = "pkg-config" 2618 | version = "0.3.19" 2619 | source = "registry+https://github.com/rust-lang/crates.io-index" 2620 | checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" 2621 | 2622 | [[package]] 2623 | name = "png" 2624 | version = "0.16.7" 2625 | source = "registry+https://github.com/rust-lang/crates.io-index" 2626 | checksum = "dfe7f9f1c730833200b134370e1d5098964231af8450bce9b78ee3ab5278b970" 2627 | dependencies = [ 2628 | "bitflags", 2629 | "crc32fast", 2630 | "deflate", 2631 | "miniz_oxide 0.3.7", 2632 | ] 2633 | 2634 | [[package]] 2635 | name = "ppv-lite86" 2636 | version = "0.2.9" 2637 | source = "registry+https://github.com/rust-lang/crates.io-index" 2638 | checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20" 2639 | 2640 | [[package]] 2641 | name = "proc-macro-crate" 2642 | version = "0.1.5" 2643 | source = "registry+https://github.com/rust-lang/crates.io-index" 2644 | checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" 2645 | dependencies = [ 2646 | "toml", 2647 | ] 2648 | 2649 | [[package]] 2650 | name = "proc-macro-hack" 2651 | version = "0.5.19" 2652 | source = "registry+https://github.com/rust-lang/crates.io-index" 2653 | checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" 2654 | 2655 | [[package]] 2656 | name = "proc-macro-nested" 2657 | version = "0.1.6" 2658 | source = "registry+https://github.com/rust-lang/crates.io-index" 2659 | checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" 2660 | 2661 | [[package]] 2662 | name = "proc-macro2" 2663 | version = "1.0.24" 2664 | source = "registry+https://github.com/rust-lang/crates.io-index" 2665 | checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" 2666 | dependencies = [ 2667 | "unicode-xid", 2668 | ] 2669 | 2670 | [[package]] 2671 | name = "qstring" 2672 | version = "0.7.2" 2673 | source = "registry+https://github.com/rust-lang/crates.io-index" 2674 | checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" 2675 | dependencies = [ 2676 | "percent-encoding 2.1.0", 2677 | ] 2678 | 2679 | [[package]] 2680 | name = "quote" 2681 | version = "1.0.7" 2682 | source = "registry+https://github.com/rust-lang/crates.io-index" 2683 | checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" 2684 | dependencies = [ 2685 | "proc-macro2", 2686 | ] 2687 | 2688 | [[package]] 2689 | name = "rand" 2690 | version = "0.7.3" 2691 | source = "registry+https://github.com/rust-lang/crates.io-index" 2692 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 2693 | dependencies = [ 2694 | "getrandom 0.1.15", 2695 | "libc", 2696 | "rand_chacha", 2697 | "rand_core", 2698 | "rand_hc", 2699 | ] 2700 | 2701 | [[package]] 2702 | name = "rand_chacha" 2703 | version = "0.2.2" 2704 | source = "registry+https://github.com/rust-lang/crates.io-index" 2705 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 2706 | dependencies = [ 2707 | "ppv-lite86", 2708 | "rand_core", 2709 | ] 2710 | 2711 | [[package]] 2712 | name = "rand_core" 2713 | version = "0.5.1" 2714 | source = "registry+https://github.com/rust-lang/crates.io-index" 2715 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 2716 | dependencies = [ 2717 | "getrandom 0.1.15", 2718 | ] 2719 | 2720 | [[package]] 2721 | name = "rand_hc" 2722 | version = "0.2.0" 2723 | source = "registry+https://github.com/rust-lang/crates.io-index" 2724 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 2725 | dependencies = [ 2726 | "rand_core", 2727 | ] 2728 | 2729 | [[package]] 2730 | name = "range-alloc" 2731 | version = "0.1.1" 2732 | source = "registry+https://github.com/rust-lang/crates.io-index" 2733 | checksum = "a871f1e45a3a3f0c73fb60343c811238bb5143a81642e27c2ac7aac27ff01a63" 2734 | 2735 | [[package]] 2736 | name = "raw-window-handle" 2737 | version = "0.3.3" 2738 | source = "registry+https://github.com/rust-lang/crates.io-index" 2739 | checksum = "0a441a7a6c80ad6473bd4b74ec1c9a4c951794285bf941c2126f607c72e48211" 2740 | dependencies = [ 2741 | "libc", 2742 | ] 2743 | 2744 | [[package]] 2745 | name = "rectangle-pack" 2746 | version = "0.2.0" 2747 | source = "registry+https://github.com/rust-lang/crates.io-index" 2748 | checksum = "e509b8eba9ca1884760ad1e2161cece724d4fd2b4cb47ddc01706920c6500cd7" 2749 | 2750 | [[package]] 2751 | name = "redox_syscall" 2752 | version = "0.1.57" 2753 | source = "registry+https://github.com/rust-lang/crates.io-index" 2754 | checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" 2755 | 2756 | [[package]] 2757 | name = "regex" 2758 | version = "1.4.1" 2759 | source = "registry+https://github.com/rust-lang/crates.io-index" 2760 | checksum = "8963b85b8ce3074fecffde43b4b0dded83ce2f367dc8d363afc56679f3ee820b" 2761 | dependencies = [ 2762 | "aho-corasick", 2763 | "memchr", 2764 | "regex-syntax", 2765 | "thread_local", 2766 | ] 2767 | 2768 | [[package]] 2769 | name = "regex-syntax" 2770 | version = "0.6.20" 2771 | source = "registry+https://github.com/rust-lang/crates.io-index" 2772 | checksum = "8cab7a364d15cde1e505267766a2d3c4e22a843e1a601f0fa7564c0f82ced11c" 2773 | 2774 | [[package]] 2775 | name = "ring" 2776 | version = "0.16.15" 2777 | source = "registry+https://github.com/rust-lang/crates.io-index" 2778 | checksum = "952cd6b98c85bbc30efa1ba5783b8abf12fec8b3287ffa52605b9432313e34e4" 2779 | dependencies = [ 2780 | "cc", 2781 | "libc", 2782 | "once_cell", 2783 | "spin", 2784 | "untrusted", 2785 | "web-sys", 2786 | "winapi 0.3.9", 2787 | ] 2788 | 2789 | [[package]] 2790 | name = "rle-decode-fast" 2791 | version = "1.0.1" 2792 | source = "registry+https://github.com/rust-lang/crates.io-index" 2793 | checksum = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac" 2794 | 2795 | [[package]] 2796 | name = "rodio" 2797 | version = "0.13.0" 2798 | source = "registry+https://github.com/rust-lang/crates.io-index" 2799 | checksum = "c9683532495146e98878d4948fa1a1953f584cd923f2a5f5c26b7a8701b56943" 2800 | dependencies = [ 2801 | "cpal", 2802 | "minimp3", 2803 | ] 2804 | 2805 | [[package]] 2806 | name = "ron" 2807 | version = "0.6.2" 2808 | source = "registry+https://github.com/rust-lang/crates.io-index" 2809 | checksum = "f8a58080b7bb83b2ea28c3b7a9a994fd5e310330b7c8ca5258d99b98128ecfe4" 2810 | dependencies = [ 2811 | "base64 0.12.3", 2812 | "bitflags", 2813 | "serde", 2814 | ] 2815 | 2816 | [[package]] 2817 | name = "rustc-demangle" 2818 | version = "0.1.18" 2819 | source = "registry+https://github.com/rust-lang/crates.io-index" 2820 | checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" 2821 | 2822 | [[package]] 2823 | name = "rustc-hash" 2824 | version = "1.1.0" 2825 | source = "registry+https://github.com/rust-lang/crates.io-index" 2826 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 2827 | 2828 | [[package]] 2829 | name = "rustc_version" 2830 | version = "0.2.3" 2831 | source = "registry+https://github.com/rust-lang/crates.io-index" 2832 | checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 2833 | dependencies = [ 2834 | "semver", 2835 | ] 2836 | 2837 | [[package]] 2838 | name = "rustls" 2839 | version = "0.16.0" 2840 | source = "registry+https://github.com/rust-lang/crates.io-index" 2841 | checksum = "b25a18b1bf7387f0145e7f8324e700805aade3842dd3db2e74e4cdeb4677c09e" 2842 | dependencies = [ 2843 | "base64 0.10.1", 2844 | "log", 2845 | "ring", 2846 | "sct", 2847 | "webpki", 2848 | ] 2849 | 2850 | [[package]] 2851 | name = "rusty-xinput" 2852 | version = "1.2.0" 2853 | source = "registry+https://github.com/rust-lang/crates.io-index" 2854 | checksum = "d2aa654bc32eb9ca14cce1a084abc9dfe43949a4547c35269a094c39272db3bb" 2855 | dependencies = [ 2856 | "lazy_static", 2857 | "log", 2858 | "winapi 0.3.9", 2859 | ] 2860 | 2861 | [[package]] 2862 | name = "ryu" 2863 | version = "1.0.5" 2864 | source = "registry+https://github.com/rust-lang/crates.io-index" 2865 | checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" 2866 | 2867 | [[package]] 2868 | name = "same-file" 2869 | version = "1.0.6" 2870 | source = "registry+https://github.com/rust-lang/crates.io-index" 2871 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2872 | dependencies = [ 2873 | "winapi-util", 2874 | ] 2875 | 2876 | [[package]] 2877 | name = "scoped_threadpool" 2878 | version = "0.1.9" 2879 | source = "registry+https://github.com/rust-lang/crates.io-index" 2880 | checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" 2881 | 2882 | [[package]] 2883 | name = "scopeguard" 2884 | version = "1.1.0" 2885 | source = "registry+https://github.com/rust-lang/crates.io-index" 2886 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 2887 | 2888 | [[package]] 2889 | name = "sct" 2890 | version = "0.6.0" 2891 | source = "registry+https://github.com/rust-lang/crates.io-index" 2892 | checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" 2893 | dependencies = [ 2894 | "ring", 2895 | "untrusted", 2896 | ] 2897 | 2898 | [[package]] 2899 | name = "semver" 2900 | version = "0.9.0" 2901 | source = "registry+https://github.com/rust-lang/crates.io-index" 2902 | checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 2903 | dependencies = [ 2904 | "semver-parser", 2905 | ] 2906 | 2907 | [[package]] 2908 | name = "semver-parser" 2909 | version = "0.7.0" 2910 | source = "registry+https://github.com/rust-lang/crates.io-index" 2911 | checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 2912 | 2913 | [[package]] 2914 | name = "serde" 2915 | version = "1.0.117" 2916 | source = "registry+https://github.com/rust-lang/crates.io-index" 2917 | checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a" 2918 | dependencies = [ 2919 | "serde_derive", 2920 | ] 2921 | 2922 | [[package]] 2923 | name = "serde_derive" 2924 | version = "1.0.117" 2925 | source = "registry+https://github.com/rust-lang/crates.io-index" 2926 | checksum = "cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e" 2927 | dependencies = [ 2928 | "proc-macro2", 2929 | "quote", 2930 | "syn", 2931 | ] 2932 | 2933 | [[package]] 2934 | name = "serde_json" 2935 | version = "1.0.59" 2936 | source = "registry+https://github.com/rust-lang/crates.io-index" 2937 | checksum = "dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95" 2938 | dependencies = [ 2939 | "itoa", 2940 | "ryu", 2941 | "serde", 2942 | ] 2943 | 2944 | [[package]] 2945 | name = "sha1" 2946 | version = "0.6.0" 2947 | source = "registry+https://github.com/rust-lang/crates.io-index" 2948 | checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" 2949 | 2950 | [[package]] 2951 | name = "shaderc" 2952 | version = "0.6.3" 2953 | source = "registry+https://github.com/rust-lang/crates.io-index" 2954 | checksum = "50b8aeaae10b9bda5cba66736a7e265f67698e912e1cc6a4678acba286e22be9" 2955 | dependencies = [ 2956 | "libc", 2957 | "shaderc-sys", 2958 | ] 2959 | 2960 | [[package]] 2961 | name = "shaderc-sys" 2962 | version = "0.6.3" 2963 | source = "registry+https://github.com/rust-lang/crates.io-index" 2964 | checksum = "5b12d7c62d6732884c9dfab587503fa3a795b108df152415a89da23812d4737e" 2965 | dependencies = [ 2966 | "cmake", 2967 | "libc", 2968 | ] 2969 | 2970 | [[package]] 2971 | name = "shlex" 2972 | version = "0.1.1" 2973 | source = "registry+https://github.com/rust-lang/crates.io-index" 2974 | checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" 2975 | 2976 | [[package]] 2977 | name = "sio2" 2978 | version = "0.1.0" 2979 | dependencies = [ 2980 | "bevy", 2981 | "fxhash", 2982 | "lazy_static", 2983 | "rand", 2984 | ] 2985 | 2986 | [[package]] 2987 | name = "slab" 2988 | version = "0.4.2" 2989 | source = "registry+https://github.com/rust-lang/crates.io-index" 2990 | checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 2991 | 2992 | [[package]] 2993 | name = "slice-deque" 2994 | version = "0.3.0" 2995 | source = "registry+https://github.com/rust-lang/crates.io-index" 2996 | checksum = "31ef6ee280cdefba6d2d0b4b78a84a1c1a3f3a4cec98c2d4231c8bc225de0f25" 2997 | dependencies = [ 2998 | "libc", 2999 | "mach 0.3.2", 3000 | "winapi 0.3.9", 3001 | ] 3002 | 3003 | [[package]] 3004 | name = "smallvec" 3005 | version = "0.6.13" 3006 | source = "registry+https://github.com/rust-lang/crates.io-index" 3007 | checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" 3008 | dependencies = [ 3009 | "maybe-uninit", 3010 | ] 3011 | 3012 | [[package]] 3013 | name = "smallvec" 3014 | version = "1.4.2" 3015 | source = "registry+https://github.com/rust-lang/crates.io-index" 3016 | checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252" 3017 | dependencies = [ 3018 | "serde", 3019 | ] 3020 | 3021 | [[package]] 3022 | name = "spin" 3023 | version = "0.5.2" 3024 | source = "registry+https://github.com/rust-lang/crates.io-index" 3025 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 3026 | 3027 | [[package]] 3028 | name = "spirv-reflect" 3029 | version = "0.2.3" 3030 | source = "registry+https://github.com/rust-lang/crates.io-index" 3031 | checksum = "cecc7af6a7d3ca6d15f4d6b5077df89c77ad1f4b314d0cabee221656d041dad7" 3032 | dependencies = [ 3033 | "bitflags", 3034 | "cc", 3035 | "num-traits", 3036 | "serde", 3037 | "serde_derive", 3038 | "spirv_headers", 3039 | ] 3040 | 3041 | [[package]] 3042 | name = "spirv_cross" 3043 | version = "0.22.0" 3044 | source = "registry+https://github.com/rust-lang/crates.io-index" 3045 | checksum = "d8221f4aebf53a4447aebd4fe29ebff2c66dd2c2821e63675e09e85bd21c8633" 3046 | dependencies = [ 3047 | "cc", 3048 | "js-sys", 3049 | "wasm-bindgen", 3050 | ] 3051 | 3052 | [[package]] 3053 | name = "spirv_headers" 3054 | version = "1.5.0" 3055 | source = "registry+https://github.com/rust-lang/crates.io-index" 3056 | checksum = "1f5b132530b1ac069df335577e3581765995cba5a13995cdbbdbc8fb057c532c" 3057 | dependencies = [ 3058 | "bitflags", 3059 | "num-traits", 3060 | ] 3061 | 3062 | [[package]] 3063 | name = "stdweb" 3064 | version = "0.1.3" 3065 | source = "registry+https://github.com/rust-lang/crates.io-index" 3066 | checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e" 3067 | 3068 | [[package]] 3069 | name = "stdweb" 3070 | version = "0.4.20" 3071 | source = "registry+https://github.com/rust-lang/crates.io-index" 3072 | checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" 3073 | dependencies = [ 3074 | "discard", 3075 | "rustc_version", 3076 | "serde", 3077 | "serde_json", 3078 | "stdweb-derive", 3079 | "stdweb-internal-macros", 3080 | "stdweb-internal-runtime", 3081 | "wasm-bindgen", 3082 | ] 3083 | 3084 | [[package]] 3085 | name = "stdweb-derive" 3086 | version = "0.5.3" 3087 | source = "registry+https://github.com/rust-lang/crates.io-index" 3088 | checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" 3089 | dependencies = [ 3090 | "proc-macro2", 3091 | "quote", 3092 | "serde", 3093 | "serde_derive", 3094 | "syn", 3095 | ] 3096 | 3097 | [[package]] 3098 | name = "stdweb-internal-macros" 3099 | version = "0.2.9" 3100 | source = "registry+https://github.com/rust-lang/crates.io-index" 3101 | checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" 3102 | dependencies = [ 3103 | "base-x", 3104 | "proc-macro2", 3105 | "quote", 3106 | "serde", 3107 | "serde_derive", 3108 | "serde_json", 3109 | "sha1", 3110 | "syn", 3111 | ] 3112 | 3113 | [[package]] 3114 | name = "stdweb-internal-runtime" 3115 | version = "0.1.5" 3116 | source = "registry+https://github.com/rust-lang/crates.io-index" 3117 | checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" 3118 | 3119 | [[package]] 3120 | name = "storage-map" 3121 | version = "0.3.0" 3122 | source = "registry+https://github.com/rust-lang/crates.io-index" 3123 | checksum = "418bb14643aa55a7841d5303f72cf512cfb323b8cc221d51580500a1ca75206c" 3124 | dependencies = [ 3125 | "lock_api 0.4.1", 3126 | ] 3127 | 3128 | [[package]] 3129 | name = "stretch" 3130 | version = "0.3.2" 3131 | source = "registry+https://github.com/rust-lang/crates.io-index" 3132 | checksum = "7b0dc6d20ce137f302edf90f9cd3d278866fd7fb139efca6f246161222ad6d87" 3133 | dependencies = [ 3134 | "lazy_static", 3135 | "libm", 3136 | ] 3137 | 3138 | [[package]] 3139 | name = "strsim" 3140 | version = "0.9.3" 3141 | source = "registry+https://github.com/rust-lang/crates.io-index" 3142 | checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" 3143 | 3144 | [[package]] 3145 | name = "svg_fmt" 3146 | version = "0.4.1" 3147 | source = "registry+https://github.com/rust-lang/crates.io-index" 3148 | checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" 3149 | 3150 | [[package]] 3151 | name = "syn" 3152 | version = "1.0.48" 3153 | source = "registry+https://github.com/rust-lang/crates.io-index" 3154 | checksum = "cc371affeffc477f42a221a1e4297aedcea33d47d19b61455588bd9d8f6b19ac" 3155 | dependencies = [ 3156 | "proc-macro2", 3157 | "quote", 3158 | "unicode-xid", 3159 | ] 3160 | 3161 | [[package]] 3162 | name = "take_mut" 3163 | version = "0.2.2" 3164 | source = "registry+https://github.com/rust-lang/crates.io-index" 3165 | checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" 3166 | 3167 | [[package]] 3168 | name = "tar" 3169 | version = "0.4.30" 3170 | source = "registry+https://github.com/rust-lang/crates.io-index" 3171 | checksum = "489997b7557e9a43e192c527face4feacc78bfbe6eed67fd55c4c9e381cba290" 3172 | dependencies = [ 3173 | "filetime", 3174 | "libc", 3175 | "redox_syscall", 3176 | "xattr", 3177 | ] 3178 | 3179 | [[package]] 3180 | name = "thiserror" 3181 | version = "1.0.21" 3182 | source = "registry+https://github.com/rust-lang/crates.io-index" 3183 | checksum = "318234ffa22e0920fe9a40d7b8369b5f649d490980cf7aadcf1eb91594869b42" 3184 | dependencies = [ 3185 | "thiserror-impl", 3186 | ] 3187 | 3188 | [[package]] 3189 | name = "thiserror-impl" 3190 | version = "1.0.21" 3191 | source = "registry+https://github.com/rust-lang/crates.io-index" 3192 | checksum = "cae2447b6282786c3493999f40a9be2a6ad20cb8bd268b0a0dbf5a065535c0ab" 3193 | dependencies = [ 3194 | "proc-macro2", 3195 | "quote", 3196 | "syn", 3197 | ] 3198 | 3199 | [[package]] 3200 | name = "thread_local" 3201 | version = "1.0.1" 3202 | source = "registry+https://github.com/rust-lang/crates.io-index" 3203 | checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" 3204 | dependencies = [ 3205 | "lazy_static", 3206 | ] 3207 | 3208 | [[package]] 3209 | name = "thunderdome" 3210 | version = "0.3.0" 3211 | source = "registry+https://github.com/rust-lang/crates.io-index" 3212 | checksum = "7572415bd688d401c52f6e36f4c8e805b9ae1622619303b9fa835d531db0acae" 3213 | 3214 | [[package]] 3215 | name = "time" 3216 | version = "0.1.44" 3217 | source = "registry+https://github.com/rust-lang/crates.io-index" 3218 | checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" 3219 | dependencies = [ 3220 | "libc", 3221 | "wasi 0.10.0+wasi-snapshot-preview1", 3222 | "winapi 0.3.9", 3223 | ] 3224 | 3225 | [[package]] 3226 | name = "tinyvec" 3227 | version = "0.3.4" 3228 | source = "registry+https://github.com/rust-lang/crates.io-index" 3229 | checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117" 3230 | 3231 | [[package]] 3232 | name = "toml" 3233 | version = "0.5.7" 3234 | source = "registry+https://github.com/rust-lang/crates.io-index" 3235 | checksum = "75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645" 3236 | dependencies = [ 3237 | "serde", 3238 | ] 3239 | 3240 | [[package]] 3241 | name = "tracing" 3242 | version = "0.1.21" 3243 | source = "registry+https://github.com/rust-lang/crates.io-index" 3244 | checksum = "b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27" 3245 | dependencies = [ 3246 | "cfg-if 0.1.10", 3247 | "pin-project-lite", 3248 | "tracing-core", 3249 | ] 3250 | 3251 | [[package]] 3252 | name = "tracing-core" 3253 | version = "0.1.17" 3254 | source = "registry+https://github.com/rust-lang/crates.io-index" 3255 | checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" 3256 | dependencies = [ 3257 | "lazy_static", 3258 | ] 3259 | 3260 | [[package]] 3261 | name = "ttf-parser" 3262 | version = "0.8.2" 3263 | source = "registry+https://github.com/rust-lang/crates.io-index" 3264 | checksum = "d973cfa0e6124166b50a1105a67c85de40bbc625082f35c0f56f84cb1fb0a827" 3265 | 3266 | [[package]] 3267 | name = "typed-arena" 3268 | version = "2.0.1" 3269 | source = "registry+https://github.com/rust-lang/crates.io-index" 3270 | checksum = "0685c84d5d54d1c26f7d3eb96cd41550adb97baed141a761cf335d3d33bcd0ae" 3271 | 3272 | [[package]] 3273 | name = "unicode-bidi" 3274 | version = "0.3.4" 3275 | source = "registry+https://github.com/rust-lang/crates.io-index" 3276 | checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 3277 | dependencies = [ 3278 | "matches", 3279 | ] 3280 | 3281 | [[package]] 3282 | name = "unicode-normalization" 3283 | version = "0.1.13" 3284 | source = "registry+https://github.com/rust-lang/crates.io-index" 3285 | checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977" 3286 | dependencies = [ 3287 | "tinyvec", 3288 | ] 3289 | 3290 | [[package]] 3291 | name = "unicode-xid" 3292 | version = "0.2.1" 3293 | source = "registry+https://github.com/rust-lang/crates.io-index" 3294 | checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" 3295 | 3296 | [[package]] 3297 | name = "unreachable" 3298 | version = "1.0.0" 3299 | source = "registry+https://github.com/rust-lang/crates.io-index" 3300 | checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" 3301 | dependencies = [ 3302 | "void", 3303 | ] 3304 | 3305 | [[package]] 3306 | name = "untrusted" 3307 | version = "0.7.1" 3308 | source = "registry+https://github.com/rust-lang/crates.io-index" 3309 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 3310 | 3311 | [[package]] 3312 | name = "ureq" 3313 | version = "0.11.4" 3314 | source = "registry+https://github.com/rust-lang/crates.io-index" 3315 | checksum = "801125e6d1ba6864cf3a5a92cfb2f0b0a3ee73e40602a0cd206ad2f3c040aa96" 3316 | dependencies = [ 3317 | "base64 0.11.0", 3318 | "chunked_transfer", 3319 | "cookie", 3320 | "lazy_static", 3321 | "qstring", 3322 | "rustls", 3323 | "url 2.1.1", 3324 | "webpki", 3325 | "webpki-roots", 3326 | ] 3327 | 3328 | [[package]] 3329 | name = "url" 3330 | version = "1.7.2" 3331 | source = "registry+https://github.com/rust-lang/crates.io-index" 3332 | checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" 3333 | dependencies = [ 3334 | "idna 0.1.5", 3335 | "matches", 3336 | "percent-encoding 1.0.1", 3337 | ] 3338 | 3339 | [[package]] 3340 | name = "url" 3341 | version = "2.1.1" 3342 | source = "registry+https://github.com/rust-lang/crates.io-index" 3343 | checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" 3344 | dependencies = [ 3345 | "idna 0.2.0", 3346 | "matches", 3347 | "percent-encoding 2.1.0", 3348 | ] 3349 | 3350 | [[package]] 3351 | name = "uuid" 3352 | version = "0.8.1" 3353 | source = "registry+https://github.com/rust-lang/crates.io-index" 3354 | checksum = "9fde2f6a4bea1d6e007c4ad38c6839fa71cbb63b6dbf5b595aa38dc9b1093c11" 3355 | dependencies = [ 3356 | "rand", 3357 | "serde", 3358 | ] 3359 | 3360 | [[package]] 3361 | name = "vec-arena" 3362 | version = "1.0.0" 3363 | source = "registry+https://github.com/rust-lang/crates.io-index" 3364 | checksum = "eafc1b9b2dfc6f5529177b62cf806484db55b32dc7c9658a118e11bbeb33061d" 3365 | 3366 | [[package]] 3367 | name = "vec_map" 3368 | version = "0.8.2" 3369 | source = "registry+https://github.com/rust-lang/crates.io-index" 3370 | checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 3371 | 3372 | [[package]] 3373 | name = "version_check" 3374 | version = "0.9.2" 3375 | source = "registry+https://github.com/rust-lang/crates.io-index" 3376 | checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" 3377 | 3378 | [[package]] 3379 | name = "void" 3380 | version = "1.0.2" 3381 | source = "registry+https://github.com/rust-lang/crates.io-index" 3382 | checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 3383 | 3384 | [[package]] 3385 | name = "waker-fn" 3386 | version = "1.1.0" 3387 | source = "registry+https://github.com/rust-lang/crates.io-index" 3388 | checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" 3389 | 3390 | [[package]] 3391 | name = "walkdir" 3392 | version = "2.3.1" 3393 | source = "registry+https://github.com/rust-lang/crates.io-index" 3394 | checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" 3395 | dependencies = [ 3396 | "same-file", 3397 | "winapi 0.3.9", 3398 | "winapi-util", 3399 | ] 3400 | 3401 | [[package]] 3402 | name = "wasi" 3403 | version = "0.9.0+wasi-snapshot-preview1" 3404 | source = "registry+https://github.com/rust-lang/crates.io-index" 3405 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 3406 | 3407 | [[package]] 3408 | name = "wasi" 3409 | version = "0.10.0+wasi-snapshot-preview1" 3410 | source = "registry+https://github.com/rust-lang/crates.io-index" 3411 | checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" 3412 | 3413 | [[package]] 3414 | name = "wasm-bindgen" 3415 | version = "0.2.68" 3416 | source = "registry+https://github.com/rust-lang/crates.io-index" 3417 | checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" 3418 | dependencies = [ 3419 | "cfg-if 0.1.10", 3420 | "wasm-bindgen-macro", 3421 | ] 3422 | 3423 | [[package]] 3424 | name = "wasm-bindgen-backend" 3425 | version = "0.2.68" 3426 | source = "registry+https://github.com/rust-lang/crates.io-index" 3427 | checksum = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68" 3428 | dependencies = [ 3429 | "bumpalo", 3430 | "lazy_static", 3431 | "log", 3432 | "proc-macro2", 3433 | "quote", 3434 | "syn", 3435 | "wasm-bindgen-shared", 3436 | ] 3437 | 3438 | [[package]] 3439 | name = "wasm-bindgen-futures" 3440 | version = "0.4.18" 3441 | source = "registry+https://github.com/rust-lang/crates.io-index" 3442 | checksum = "b7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171da" 3443 | dependencies = [ 3444 | "cfg-if 0.1.10", 3445 | "js-sys", 3446 | "wasm-bindgen", 3447 | "web-sys", 3448 | ] 3449 | 3450 | [[package]] 3451 | name = "wasm-bindgen-macro" 3452 | version = "0.2.68" 3453 | source = "registry+https://github.com/rust-lang/crates.io-index" 3454 | checksum = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038" 3455 | dependencies = [ 3456 | "quote", 3457 | "wasm-bindgen-macro-support", 3458 | ] 3459 | 3460 | [[package]] 3461 | name = "wasm-bindgen-macro-support" 3462 | version = "0.2.68" 3463 | source = "registry+https://github.com/rust-lang/crates.io-index" 3464 | checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" 3465 | dependencies = [ 3466 | "proc-macro2", 3467 | "quote", 3468 | "syn", 3469 | "wasm-bindgen-backend", 3470 | "wasm-bindgen-shared", 3471 | ] 3472 | 3473 | [[package]] 3474 | name = "wasm-bindgen-shared" 3475 | version = "0.2.68" 3476 | source = "registry+https://github.com/rust-lang/crates.io-index" 3477 | checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" 3478 | 3479 | [[package]] 3480 | name = "web-sys" 3481 | version = "0.3.45" 3482 | source = "registry+https://github.com/rust-lang/crates.io-index" 3483 | checksum = "4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d" 3484 | dependencies = [ 3485 | "js-sys", 3486 | "wasm-bindgen", 3487 | ] 3488 | 3489 | [[package]] 3490 | name = "webpki" 3491 | version = "0.21.3" 3492 | source = "registry+https://github.com/rust-lang/crates.io-index" 3493 | checksum = "ab146130f5f790d45f82aeeb09e55a256573373ec64409fc19a6fb82fb1032ae" 3494 | dependencies = [ 3495 | "ring", 3496 | "untrusted", 3497 | ] 3498 | 3499 | [[package]] 3500 | name = "webpki-roots" 3501 | version = "0.18.0" 3502 | source = "registry+https://github.com/rust-lang/crates.io-index" 3503 | checksum = "91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4" 3504 | dependencies = [ 3505 | "webpki", 3506 | ] 3507 | 3508 | [[package]] 3509 | name = "wgpu" 3510 | version = "0.6.0" 3511 | source = "registry+https://github.com/rust-lang/crates.io-index" 3512 | checksum = "549160f188eef412ac978499ddf0ceadad4c9159bb1160f9e6b9d4cc8ee977dc" 3513 | dependencies = [ 3514 | "arrayvec", 3515 | "futures", 3516 | "gfx-backend-vulkan", 3517 | "js-sys", 3518 | "objc", 3519 | "parking_lot 0.11.0", 3520 | "raw-window-handle", 3521 | "smallvec 1.4.2", 3522 | "tracing", 3523 | "typed-arena", 3524 | "wasm-bindgen", 3525 | "wasm-bindgen-futures", 3526 | "web-sys", 3527 | "wgpu-core", 3528 | "wgpu-types", 3529 | ] 3530 | 3531 | [[package]] 3532 | name = "wgpu-core" 3533 | version = "0.6.5" 3534 | source = "registry+https://github.com/rust-lang/crates.io-index" 3535 | checksum = "ea487deeae90e06d77eb8e6cef945247774e7c0a0a226d238b31e90633594365" 3536 | dependencies = [ 3537 | "arrayvec", 3538 | "bitflags", 3539 | "copyless", 3540 | "fxhash", 3541 | "gfx-backend-dx11", 3542 | "gfx-backend-dx12", 3543 | "gfx-backend-empty", 3544 | "gfx-backend-metal", 3545 | "gfx-backend-vulkan", 3546 | "gfx-descriptor", 3547 | "gfx-hal", 3548 | "gfx-memory", 3549 | "naga", 3550 | "parking_lot 0.11.0", 3551 | "raw-window-handle", 3552 | "smallvec 1.4.2", 3553 | "thiserror", 3554 | "tracing", 3555 | "wgpu-types", 3556 | ] 3557 | 3558 | [[package]] 3559 | name = "wgpu-types" 3560 | version = "0.6.1" 3561 | source = "registry+https://github.com/rust-lang/crates.io-index" 3562 | checksum = "1e3529528e608b54838ee618c3923b0f46e6db0334cfc6c42a16cf4ceb3bdb57" 3563 | dependencies = [ 3564 | "bitflags", 3565 | ] 3566 | 3567 | [[package]] 3568 | name = "winapi" 3569 | version = "0.2.8" 3570 | source = "registry+https://github.com/rust-lang/crates.io-index" 3571 | checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 3572 | 3573 | [[package]] 3574 | name = "winapi" 3575 | version = "0.3.9" 3576 | source = "registry+https://github.com/rust-lang/crates.io-index" 3577 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 3578 | dependencies = [ 3579 | "winapi-i686-pc-windows-gnu", 3580 | "winapi-x86_64-pc-windows-gnu", 3581 | ] 3582 | 3583 | [[package]] 3584 | name = "winapi-build" 3585 | version = "0.1.1" 3586 | source = "registry+https://github.com/rust-lang/crates.io-index" 3587 | checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 3588 | 3589 | [[package]] 3590 | name = "winapi-i686-pc-windows-gnu" 3591 | version = "0.4.0" 3592 | source = "registry+https://github.com/rust-lang/crates.io-index" 3593 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 3594 | 3595 | [[package]] 3596 | name = "winapi-util" 3597 | version = "0.1.5" 3598 | source = "registry+https://github.com/rust-lang/crates.io-index" 3599 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 3600 | dependencies = [ 3601 | "winapi 0.3.9", 3602 | ] 3603 | 3604 | [[package]] 3605 | name = "winapi-x86_64-pc-windows-gnu" 3606 | version = "0.4.0" 3607 | source = "registry+https://github.com/rust-lang/crates.io-index" 3608 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3609 | 3610 | [[package]] 3611 | name = "winit" 3612 | version = "0.23.0" 3613 | source = "registry+https://github.com/rust-lang/crates.io-index" 3614 | checksum = "b5bc559da567d8aa671bbcd08304d49e982c7bf2cb91e10288b9188931c1b772" 3615 | dependencies = [ 3616 | "bitflags", 3617 | "cocoa", 3618 | "core-foundation 0.9.1", 3619 | "core-graphics 0.22.1", 3620 | "core-video-sys", 3621 | "dispatch", 3622 | "instant", 3623 | "lazy_static", 3624 | "libc", 3625 | "log", 3626 | "mio", 3627 | "mio-extras", 3628 | "ndk", 3629 | "ndk-glue", 3630 | "ndk-sys", 3631 | "objc", 3632 | "parking_lot 0.11.0", 3633 | "percent-encoding 2.1.0", 3634 | "raw-window-handle", 3635 | "wasm-bindgen", 3636 | "web-sys", 3637 | "winapi 0.3.9", 3638 | "x11-dl", 3639 | ] 3640 | 3641 | [[package]] 3642 | name = "wio" 3643 | version = "0.2.2" 3644 | source = "registry+https://github.com/rust-lang/crates.io-index" 3645 | checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" 3646 | dependencies = [ 3647 | "winapi 0.3.9", 3648 | ] 3649 | 3650 | [[package]] 3651 | name = "ws2_32-sys" 3652 | version = "0.2.1" 3653 | source = "registry+https://github.com/rust-lang/crates.io-index" 3654 | checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 3655 | dependencies = [ 3656 | "winapi 0.2.8", 3657 | "winapi-build", 3658 | ] 3659 | 3660 | [[package]] 3661 | name = "x11" 3662 | version = "2.18.2" 3663 | source = "registry+https://github.com/rust-lang/crates.io-index" 3664 | checksum = "77ecd092546cb16f25783a5451538e73afc8d32e242648d54f4ae5459ba1e773" 3665 | dependencies = [ 3666 | "libc", 3667 | "pkg-config", 3668 | ] 3669 | 3670 | [[package]] 3671 | name = "x11-dl" 3672 | version = "2.18.5" 3673 | source = "registry+https://github.com/rust-lang/crates.io-index" 3674 | checksum = "2bf981e3a5b3301209754218f962052d4d9ee97e478f4d26d4a6eced34c1fef8" 3675 | dependencies = [ 3676 | "lazy_static", 3677 | "libc", 3678 | "maybe-uninit", 3679 | "pkg-config", 3680 | ] 3681 | 3682 | [[package]] 3683 | name = "xattr" 3684 | version = "0.2.2" 3685 | source = "registry+https://github.com/rust-lang/crates.io-index" 3686 | checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" 3687 | dependencies = [ 3688 | "libc", 3689 | ] 3690 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sio2" 3 | version = "0.1.0" 4 | authors = ["Dmitriy Shmilo "] 5 | edition = "2018" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [dependencies] 10 | bevy = "0.3.0" 11 | rand = "0.7.2" 12 | lazy_static = "1.4.0" 13 | fxhash = "0.2.1" 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SiO2 # 2 | 3 | ![demo](img/demo.gif) 4 | 5 | A simple powder toy clone written in rust with [bevy](https://bevyengine.org/). 6 | 7 | ## Controls ## 8 | 9 | - `1` - static concrete 10 | - `2` - sand 11 | - `3` - water 12 | - `0` - eraser 13 | - `+` - increase brush size 14 | - `-` - decrease brush size 15 | 16 | ## Building ## 17 | 18 | Install and configure nightly rust: 19 | 20 | ``` 21 | rustup toolchain install nightly 22 | cd path/to/sio2 23 | rustup override set nightly 24 | ``` 25 | 26 | Install LLD/ZLD: 27 | 28 | ``` 29 | # Ubuntu: 30 | sudo apt-get install lld 31 | 32 | # Windows: 33 | cargo install -f cargo-binutils 34 | rustup component add llvm-tools-preview 35 | 36 | # Mac OS: 37 | brew install michaeleisel/zld/zld 38 | ``` 39 | 40 | Build and run SiO2: 41 | 42 | ``` 43 | cd path/to/sio2 44 | cargo run --release 45 | ``` -------------------------------------------------------------------------------- /assets/fonts/FiraSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriy-shmilo/sio2/9655e42dbe834998cfcc8eafdcd0a7d8470b764c/assets/fonts/FiraSans-Bold.ttf -------------------------------------------------------------------------------- /img/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriy-shmilo/sio2/9655e42dbe834998cfcc8eafdcd0a7d8470b764c/img/demo.gif -------------------------------------------------------------------------------- /src/grid.rs: -------------------------------------------------------------------------------- 1 | use crate::{ 2 | util::wrap, FIELD_HEIGHT, FIELD_HEIGHT_F32, FIELD_WIDTH, FIELD_WIDTH_F32, TEXTURE_STRIDE, 3 | TEXTURE_TYPE, 4 | }; 5 | 6 | use bevy::prelude::*; 7 | use bevy::render::texture::Texture; 8 | pub struct Grid { 9 | particles: Vec>, 10 | pub xsize: usize, 11 | pub ysize: usize, 12 | pub background_color: [u8; 4], 13 | pub texture: Texture, 14 | } 15 | 16 | fn color_to_bytes(color: Color) -> [u8; 4] { 17 | [ 18 | (color.r() * 255.99) as u8, 19 | (color.g() * 255.99) as u8, 20 | (color.b() * 255.99) as u8, 21 | (color.a() * 255.99) as u8, 22 | ] 23 | } 24 | 25 | impl Default for Grid { 26 | fn default() -> Self { 27 | let bg = color_to_bytes(Color::rgb(0.11, 0.11, 0.11)); 28 | Self { 29 | particles: { vec![None; FIELD_WIDTH * FIELD_HEIGHT] }, 30 | xsize: FIELD_WIDTH, 31 | ysize: FIELD_HEIGHT, 32 | background_color: bg, 33 | texture: Texture::new_fill( 34 | Vec2::new(FIELD_WIDTH_F32, FIELD_HEIGHT_F32), 35 | &bg, 36 | TEXTURE_TYPE, 37 | ), 38 | } 39 | } 40 | } 41 | 42 | impl Grid { 43 | pub fn wrap_x(&self, x: i32) -> usize { 44 | wrap(x, 0, self.xsize as i32) as usize 45 | } 46 | pub fn wrap_y(&self, y: i32) -> usize { 47 | wrap(y, 0, self.ysize as i32) as usize 48 | } 49 | pub fn wrap_xy(&self, x: i32, y: i32) -> (usize, usize) { 50 | ( 51 | wrap(x, 0, self.xsize as i32) as usize, 52 | wrap(y, 0, self.ysize as i32) as usize, 53 | ) 54 | } 55 | pub fn grid_index(&self, idx: (usize, usize)) -> usize { 56 | let (x, y) = idx; 57 | y * self.ysize + x 58 | } 59 | pub fn texture_offset(&self, idx: (usize, usize)) -> usize { 60 | let (x, y) = idx; 61 | (x + (self.ysize - y - 1) * self.xsize) * TEXTURE_STRIDE 62 | } 63 | fn get_direct(&self, idx: (usize, usize)) -> Option { 64 | self.particles[self.grid_index(idx)] 65 | } 66 | pub fn get(&self, x: i32, y: i32) -> Option { 67 | self.particles[self.grid_index(self.wrap_xy(x, y))] 68 | } 69 | pub fn copy_into_texture(&mut self, idx: (usize, usize), src: [u8; 4]) { 70 | let offset = self.texture_offset(idx); 71 | self.texture.data[offset..(offset + 4)].copy_from_slice(&src); 72 | } 73 | pub fn set(&mut self, x: i32, y: i32, e: Entity, color: Color) { 74 | let idx = self.wrap_xy(x, y); 75 | self.copy_into_texture(idx, color_to_bytes(color)); 76 | let gidx = self.grid_index(idx); 77 | self.particles[gidx] = Some(e); 78 | } 79 | pub fn remove(&mut self, x: i32, y: i32) -> Option { 80 | let idx = self.wrap_xy(x, y); 81 | self.copy_into_texture(idx, self.background_color); 82 | let gidx = self.grid_index(idx); 83 | self.particles[gidx].take() 84 | } 85 | 86 | pub fn swap(&mut self, x1: i32, y1: i32, x2: i32, y2: i32) { 87 | let (idx1, idx2) = (self.wrap_xy(x1, y1), self.wrap_xy(x2, y2)); 88 | let (gidx1, gidx2) = (self.grid_index(idx1), self.grid_index(idx2)); 89 | self.particles.swap(gidx1, gidx2); 90 | let (off1, off2) = (self.texture_offset(idx1), self.texture_offset(idx2)); 91 | self.texture.data.swap(off1, off2); 92 | self.texture.data.swap(off1 + 1, off2 + 1); 93 | self.texture.data.swap(off1 + 2, off2 + 2); 94 | self.texture.data.swap(off1 + 3, off2 + 3); 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /src/gui.rs: -------------------------------------------------------------------------------- 1 | use bevy::{ 2 | diagnostic::{Diagnostics, FrameTimeDiagnosticsPlugin}, 3 | prelude::*, 4 | }; 5 | 6 | pub struct FpsState { 7 | pub is_visible: bool, 8 | } 9 | 10 | impl Default for FpsState { 11 | fn default() -> Self { 12 | FpsState { is_visible: false } 13 | } 14 | } 15 | 16 | pub fn display_framerate( 17 | diagnostics: Res, 18 | mut query: Query<(&mut Text, &mut Draw, &FpsState)>, 19 | ) { 20 | let mut average_fps = None; 21 | if let Some(fps) = diagnostics.get(FrameTimeDiagnosticsPlugin::FPS) { 22 | average_fps = fps.average(); 23 | } 24 | 25 | for (mut text, mut draw, state) in &mut query.iter_mut() { 26 | if let Some(average_fps) = average_fps { 27 | text.value = format!("FPS: {:.2}", average_fps); 28 | draw.is_visible = state.is_visible; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/input.rs: -------------------------------------------------------------------------------- 1 | use crate::{ 2 | grid::Grid, 3 | gui::FpsState, 4 | physics::{Behavior, Particle, Position}, 5 | FIELD_HEIGHT_F32, FIELD_WIDTH_F32, 6 | }; 7 | use bevy::{ 8 | input::{keyboard::KeyboardInput, mouse::MouseButtonInput, ElementState}, 9 | prelude::*, 10 | }; 11 | use lazy_static::lazy_static; 12 | use rand::seq::SliceRandom; 13 | use std::cmp::{max, min}; 14 | 15 | #[derive(Copy, Clone, PartialEq, Debug)] 16 | pub enum Tool { 17 | None, 18 | Concrete, 19 | Sand, 20 | Water, 21 | Eraser, 22 | } 23 | 24 | #[derive(Default)] 25 | pub struct InputState { 26 | mouse_button: EventReader, 27 | mouse_move: EventReader, 28 | keyboard: EventReader, 29 | } 30 | 31 | #[derive(Debug)] 32 | pub struct ToolState { 33 | pub current_tool: Tool, 34 | pub tool_size: i32, 35 | pub is_spawning: bool, 36 | pub grid_x: usize, 37 | pub grid_y: usize, 38 | } 39 | 40 | impl Default for ToolState { 41 | fn default() -> Self { 42 | ToolState { 43 | current_tool: Tool::None, 44 | tool_size: 0, 45 | is_spawning: false, 46 | grid_x: 0, 47 | grid_y: 0, 48 | } 49 | } 50 | } 51 | 52 | pub fn handle_input( 53 | mut tool_state: ResMut, 54 | mut input: ResMut, 55 | windows: Res, 56 | cursor_moved: Res>, 57 | mouse_button: Res>, 58 | key_pressed: Res>, 59 | mut fps_state: Query<&mut FpsState>, 60 | ) { 61 | let window = windows.get_primary().unwrap(); 62 | let scale = if window.width() < window.height() { 63 | window.width() as f32 / FIELD_WIDTH_F32 64 | } else { 65 | window.height() as f32 / FIELD_HEIGHT_F32 66 | }; 67 | let (gw, gh) = (scale * FIELD_WIDTH_F32, scale * FIELD_HEIGHT_F32); 68 | let (pw, ph) = ( 69 | (window.width() as f32 - gw) / 2., 70 | (window.height() as f32 - gh) / 2., 71 | ); 72 | 73 | let (left, top, right, bottom) = ( 74 | pw, 75 | window.height() as f32 - ph, 76 | window.width() as f32 - pw, 77 | ph, 78 | ); 79 | 80 | for event in input.mouse_button.iter(&mouse_button) { 81 | tool_state.is_spawning = event.state == ElementState::Pressed; 82 | } 83 | 84 | for event in input.mouse_move.iter(&cursor_moved) { 85 | let x = event.position.x(); 86 | let y = event.position.y(); 87 | if x > left && x < right && y > bottom && y < top { 88 | let x = ((event.position.x() - left) / scale) as usize; 89 | let y = ((event.position.y() - bottom) / scale) as usize; 90 | tool_state.grid_x = x; 91 | tool_state.grid_y = y; 92 | } else { 93 | tool_state.is_spawning = false; 94 | } 95 | } 96 | 97 | for event in input.keyboard.iter(&key_pressed) { 98 | if event.state.is_pressed() { 99 | if event.key_code == Some(KeyCode::Equals) { 100 | tool_state.tool_size = min(tool_state.tool_size + 1, 3); 101 | continue; 102 | } 103 | 104 | if event.key_code == Some(KeyCode::Minus) { 105 | tool_state.tool_size = max(tool_state.tool_size - 1, 0); 106 | continue; 107 | } 108 | 109 | tool_state.current_tool = match event.key_code { 110 | Some(k) if k == KeyCode::Key1 => Tool::Concrete, 111 | Some(k) if k == KeyCode::Key2 => Tool::Sand, 112 | Some(k) if k == KeyCode::Key3 => Tool::Water, 113 | Some(k) if k == KeyCode::Key0 => Tool::Eraser, 114 | _ => tool_state.current_tool, 115 | }; 116 | 117 | // toggle FPS when H key is pressed 118 | for mut fps_state in fps_state.iter_mut() { 119 | fps_state.is_visible = match event.key_code { 120 | Some(k) if k == KeyCode::H => !fps_state.is_visible, 121 | _ => fps_state.is_visible, 122 | } 123 | } 124 | } 125 | } 126 | } 127 | 128 | pub fn spawn_particle(mut commands: Commands, mut grid: ResMut, tool: Res) { 129 | if tool.is_spawning && tool.current_tool != Tool::None { 130 | let (cx, cy) = (tool.grid_x as i32, tool.grid_y as i32); 131 | 132 | for x in cx - tool.tool_size..=cx + tool.tool_size { 133 | for y in cy - tool.tool_size..=cy + tool.tool_size { 134 | if tool.current_tool == Tool::Eraser { 135 | if let Some(e) = grid.remove(x, y) { 136 | commands.despawn(e); 137 | } 138 | continue; 139 | } 140 | 141 | add_particle( 142 | &mut commands, 143 | &mut grid, 144 | Particle { 145 | behavior: match tool.current_tool { 146 | Tool::Concrete => Behavior::Static, 147 | Tool::Water => Behavior::Liquid, 148 | _ => Behavior::Solid, 149 | }, 150 | ..Default::default() 151 | }, 152 | get_color(tool.current_tool), 153 | x, 154 | y, 155 | ); 156 | } 157 | } 158 | } 159 | } 160 | 161 | lazy_static! { 162 | static ref SAND_COLORS: Vec = vec![ 163 | Color::rgb(0.96, 0.74, 0.53), 164 | Color::rgb(0.95, 0.89, 0.5), 165 | Color::rgb(0.92, 0.91, 0.72) 166 | ]; 167 | static ref WATER_COLORS: Vec = 168 | vec![Color::rgb(0.21, 0.58, 0.74), Color::rgb(0.3, 0.67, 0.81)]; 169 | } 170 | 171 | fn get_color(tool: Tool) -> Color { 172 | let mut rng = rand::thread_rng(); 173 | match tool { 174 | Tool::Concrete => Color::rgb(0.58, 0.6, 0.59), 175 | Tool::Water => *WATER_COLORS.choose(&mut rng).unwrap(), 176 | _ => *SAND_COLORS.choose(&mut rng).unwrap(), 177 | } 178 | } 179 | 180 | fn add_particle( 181 | commands: &mut Commands, 182 | grid: &mut Grid, 183 | particle: Particle, 184 | color: Color, 185 | x: i32, 186 | y: i32, 187 | ) { 188 | if grid.get(x, y) != None { 189 | return; 190 | } 191 | 192 | commands.spawn((particle, color, Position::new(x as f32, y as f32))); 193 | if let Some(e) = commands.current_entity() { 194 | grid.set(x, y, e, color); 195 | } 196 | } 197 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | mod grid; 2 | mod gui; 3 | mod input; 4 | mod physics; 5 | mod render; 6 | mod util; 7 | 8 | use crate::{ 9 | grid::Grid, 10 | gui::{display_framerate, FpsState}, 11 | input::{handle_input, spawn_particle, InputState, Tool, ToolState}, 12 | physics::grid_update, 13 | render::{grid_render, grid_scale, GridTexture}, 14 | util::window_size_to_scale, 15 | }; 16 | 17 | use bevy::{diagnostic::FrameTimeDiagnosticsPlugin, prelude::*, render::texture::TextureFormat}; 18 | 19 | const WINDOW_HEIGHT: u32 = 800; 20 | const WINDOW_WIDTH: u32 = 800; 21 | const FIELD_WIDTH: usize = 200; 22 | const FIELD_HEIGHT: usize = 200; 23 | const FIELD_WIDTH_F32: f32 = FIELD_WIDTH as f32; 24 | const FIELD_HEIGHT_F32: f32 = FIELD_HEIGHT as f32; 25 | const TEXTURE_TYPE: TextureFormat = TextureFormat::Rgba8Unorm; 26 | const TEXTURE_STRIDE: usize = 4; 27 | 28 | fn main() { 29 | App::build() 30 | .add_resource(WindowDescriptor { 31 | title: "SiO2".to_string(), 32 | width: WINDOW_HEIGHT, 33 | height: WINDOW_WIDTH, 34 | ..Default::default() 35 | }) 36 | .add_plugins(DefaultPlugins) 37 | .add_plugin(FrameTimeDiagnosticsPlugin::default()) 38 | .add_startup_system(setup.system()) 39 | .add_system(grid_render.system()) 40 | .add_system(grid_scale.system()) 41 | .add_system(grid_update.system()) 42 | .add_system(display_framerate.system()) 43 | .add_system(handle_input.system()) 44 | .add_system(spawn_particle.system()) 45 | .run(); 46 | } 47 | 48 | fn setup( 49 | mut commands: Commands, 50 | asset_server: Res, 51 | mut materials: ResMut>, 52 | mut textures: ResMut>, 53 | ) { 54 | let font = asset_server.load("fonts/FiraSans-Bold.ttf"); 55 | 56 | let texture = Texture::new_fill( 57 | Vec2::new(FIELD_WIDTH_F32, FIELD_HEIGHT_F32), 58 | &[0, 0, 0, 0], 59 | TEXTURE_TYPE, 60 | ); 61 | let th = textures.add(texture); 62 | 63 | let scale = Vec3::splat(window_size_to_scale( 64 | WINDOW_WIDTH as usize, 65 | WINDOW_HEIGHT as usize, 66 | )); 67 | 68 | commands 69 | .spawn(Camera2dComponents::default()) 70 | .spawn(UiCameraComponents::default()) 71 | .spawn(TextComponents { 72 | style: Style { 73 | align_self: AlignSelf::FlexEnd, 74 | ..Default::default() 75 | }, 76 | text: Text { 77 | value: "FPS:".to_string(), 78 | font, 79 | style: TextStyle { 80 | font_size: 30.0, 81 | color: Color::WHITE, 82 | }, 83 | }, 84 | ..Default::default() 85 | }) 86 | .with(FpsState::default()) 87 | .insert_resource(Grid::default()) 88 | .insert_resource(ToolState { 89 | current_tool: Tool::Sand, 90 | ..Default::default() 91 | }) 92 | .insert_resource(InputState::default()) 93 | .spawn(SpriteComponents { 94 | material: materials.add(th.into()), 95 | transform: Transform { 96 | scale, 97 | ..Default::default() 98 | }, 99 | ..Default::default() 100 | }) 101 | .with(GridTexture); 102 | } 103 | -------------------------------------------------------------------------------- /src/physics.rs: -------------------------------------------------------------------------------- 1 | use crate::{grid::Grid, FIELD_HEIGHT_F32, FIELD_WIDTH_F32}; 2 | use bevy::prelude::*; 3 | 4 | #[derive(PartialEq)] 5 | pub enum Behavior { 6 | Static, 7 | Solid, 8 | Liquid, 9 | } 10 | 11 | pub struct Particle { 12 | pub behavior: Behavior, 13 | pub v: Vec2, 14 | } 15 | 16 | pub struct Position { 17 | pub pos: Vec2, 18 | } 19 | 20 | const GRAVITY: Vec2 = bevy::math::const_vec2!([0., -2. / 60.]); 21 | const MAX_V: Vec2 = bevy::math::const_vec2!([0., 8.]); 22 | 23 | impl Position { 24 | pub fn new(x: f32, y: f32) -> Self { 25 | Position { 26 | pos: Vec2::new(x, y), 27 | } 28 | } 29 | } 30 | 31 | impl Default for Particle { 32 | fn default() -> Self { 33 | Particle { 34 | behavior: Behavior::Static, 35 | v: Vec2::zero(), 36 | } 37 | } 38 | } 39 | 40 | impl Default for Position { 41 | fn default() -> Self { 42 | Position { 43 | pos: Vec2::new(f32::NAN, f32::NAN), 44 | } 45 | } 46 | } 47 | 48 | pub fn grid_update( 49 | mut grid: ResMut, 50 | mut particles: Query<(&mut Particle, &mut Position, Entity)>, 51 | ) { 52 | let grid = &mut *grid; 53 | 54 | for (mut particle, mut position, _) in particles.iter_mut() { 55 | if particle.behavior == Behavior::Static { 56 | continue; 57 | } 58 | 59 | // floating point position for smooth falling 60 | let mut pos = position.pos; 61 | let mut v = particle.v; 62 | 63 | // source grid coordinates 64 | let (sx, sy) = (pos.x().round() as i32, pos.y().round() as i32); 65 | 66 | v += GRAVITY; 67 | 68 | if v.y() < -MAX_V.y() { 69 | v.set_y(-MAX_V.y()); 70 | } else if v.y() > MAX_V.y() { 71 | v.set_y(MAX_V.y()); 72 | } 73 | 74 | pos += particle.v; 75 | 76 | // target grid coordinates, where the particle wants to go 77 | let (_tx, ty) = (pos.x().round() as i32, pos.y().round() as i32); 78 | // current grid coordinates, where the particle will actually end up 79 | let (mut cx, mut cy) = (sx, ty); 80 | 81 | // fall down, but check if there are any obstacles on the way 82 | // TODO: implement upward movement 83 | let mut obstacle = None; 84 | for y in (ty..sy).rev() { 85 | if let Some(e) = grid.get(sx, y) { 86 | obstacle = Some(e); 87 | cy = y + 1; 88 | break; 89 | } 90 | } 91 | 92 | if obstacle != None { 93 | // attempt to drop diagonally 94 | if grid.get(cx - 1, cy - 1) == None { 95 | cx -= 1; 96 | cy -= 1; 97 | } else if grid.get(cx + 1, cy - 1) == None { 98 | cx += 1; 99 | cy -= 1; 100 | } else if particle.behavior == Behavior::Liquid { 101 | // TODO: find a way to read and modify obstacle's velocity 102 | v = Vec2::zero(); 103 | 104 | // liquids can attempt to move sideways 105 | if grid.get(cx - 1, cy) == None { 106 | cx -= 1; 107 | } else if grid.get(cx + 1, cy) == None { 108 | cx += 1; 109 | } 110 | } else { 111 | // TODO: find a way to read and modify obstacle's velocity 112 | v = Vec2::zero(); 113 | } 114 | 115 | pos.set_x(cx as f32); 116 | pos.set_y(cy as f32); 117 | } else { 118 | if pos.x() < 0.0 { 119 | pos.set_x(FIELD_WIDTH_F32 + pos.x()); 120 | } else if pos.x() > FIELD_WIDTH_F32 { 121 | pos.set_x(pos.x() - FIELD_WIDTH_F32); 122 | } 123 | 124 | if pos.y() < 0.0 { 125 | pos.set_y(FIELD_HEIGHT_F32 + pos.y()); 126 | } else if pos.y() > FIELD_HEIGHT_F32 { 127 | pos.set_y(pos.y() - FIELD_HEIGHT_F32); 128 | } 129 | } 130 | 131 | particle.v = v; 132 | position.pos = pos; 133 | grid.swap(sx, sy, cx, cy); 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /src/render.rs: -------------------------------------------------------------------------------- 1 | use crate::{ 2 | grid::Grid, 3 | input::{Tool, ToolState}, 4 | physics::Particle, 5 | util::wrap, 6 | }; 7 | use crate::{window_size_to_scale, FIELD_HEIGHT, FIELD_WIDTH}; 8 | use bevy::{prelude::*, window::WindowResized}; 9 | use lazy_static::lazy_static; 10 | 11 | lazy_static! { 12 | static ref BACKGROUND_COLOR: Color = Color::rgb(0.11, 0.11, 0.11); 13 | } 14 | 15 | pub struct GridTexture; 16 | 17 | pub fn grid_render( 18 | grid: Res, 19 | tool: Res, 20 | materials: Res>, 21 | mut textures: ResMut>, 22 | particle_query: Query<(&Color, &Particle)>, 23 | texture_query: Query<(&GridTexture, &Handle)>, 24 | ) { 25 | let mut handle = None; 26 | for (_, material) in &mut texture_query.iter() { 27 | if let Some(material) = materials.get(material) { 28 | if let Some(texture_handle) = &material.texture { 29 | handle = Some(texture_handle); 30 | break; 31 | } 32 | } 33 | } 34 | 35 | let field_texture = textures.get_mut(handle.unwrap()).unwrap(); 36 | 37 | field_texture.data.copy_from_slice(&grid.texture.data); 38 | 39 | if tool.current_tool != Tool::None { 40 | let (cx, cy) = (tool.grid_x as i32, tool.grid_y as i32); 41 | 42 | for x in cx - tool.tool_size..=cx + tool.tool_size { 43 | for y in cy - tool.tool_size..=cy + tool.tool_size { 44 | let x = wrap(x, 0, FIELD_WIDTH as i32) as usize; 45 | let y = wrap(y, 0, FIELD_HEIGHT as i32) as usize; 46 | let offset = (x + (FIELD_HEIGHT - y - 1) * FIELD_WIDTH) * 4; 47 | 48 | for o in offset..offset + 3 { 49 | field_texture.data[o] /= 2; 50 | } 51 | } 52 | } 53 | } 54 | } 55 | 56 | pub fn grid_scale( 57 | resize_event: Res>, 58 | mut query: Query<(&Sprite, &mut Transform)>, 59 | ) { 60 | let window_resize = resize_event 61 | .get_reader() 62 | .iter(&resize_event) 63 | .map(|event| (event.width, event.height)) 64 | .last(); 65 | 66 | if let Some((width, height)) = window_resize { 67 | let scale = Vec3::splat(window_size_to_scale(width, height)); 68 | for (_, mut trans) in &mut query.iter_mut() { 69 | trans.scale = scale; 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /src/util.rs: -------------------------------------------------------------------------------- 1 | // Fits `i` into `lower..upper` range, wrapping its value around 2 | // if necessary. 3 | // See https://stackoverflow.com/a/707426/575979 4 | use crate::{FIELD_HEIGHT_F32, FIELD_WIDTH_F32}; 5 | 6 | #[inline] 7 | pub fn wrap(mut i: i32, lower: i32, upper: i32) -> i32 { 8 | let range_size = upper - lower; 9 | 10 | if i < lower { 11 | i += range_size * ((lower - i) / range_size + 1); 12 | } 13 | 14 | lower + (i - lower) % range_size 15 | } 16 | 17 | #[inline] 18 | pub fn window_size_to_scale(width: usize, height: usize) -> f32 { 19 | if width == 0 || height == 0 { 20 | 1. 21 | } else if width < height { 22 | width as f32 / FIELD_WIDTH_F32 23 | } else { 24 | height as f32 / FIELD_HEIGHT_F32 25 | } 26 | } 27 | 28 | #[cfg(test)] 29 | mod tests { 30 | use super::*; 31 | 32 | #[test] 33 | fn test_negative_wrap() { 34 | assert_eq!(wrap(-1, 0, 100), 99); 35 | } 36 | 37 | #[test] 38 | fn test_positive_wrap() { 39 | assert_eq!(wrap(100, 0, 100), 0); 40 | } 41 | 42 | #[test] 43 | fn test_no_wrap() { 44 | assert_eq!(wrap(10, 0, 100), 10); 45 | } 46 | } 47 | --------------------------------------------------------------------------------