[INFO] cloning repository https://github.com/a-kuz/sas
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/a-kuz/sas" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fa-kuz%2Fsas", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fa-kuz%2Fsas'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] b0d5010ffbd7cd484b298f53a14f421fa7b21f3b
[INFO] checking a-kuz/sas against master#377656d3dd3f9c23a9c8713e163f4365a5261a84 for pr-146470-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fa-kuz%2Fsas" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/a-kuz/sas
[INFO] finished tweaking git repo https://github.com/a-kuz/sas
[INFO] tweaked toml for git repo https://github.com/a-kuz/sas written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/a-kuz/sas on toolchain 377656d3dd3f9c23a9c8713e163f4365a5261a84
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+377656d3dd3f9c23a9c8713e163f4365a5261a84" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+377656d3dd3f9c23a9c8713e163f4365a5261a84" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 139 packages to latest compatible versions
[INFO] [stderr]       Adding bincode v1.3.3 (available: v3.0.0)
[INFO] [stderr]       Adding glam v0.24.2 (available: v0.30.10)
[INFO] [stderr]       Adding image v0.24.9 (available: v0.25.9)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+377656d3dd3f9c23a9c8713e163f4365a5261a84" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded dasp_frame v0.11.0
[INFO] [stderr]   Downloaded maybe-uninit v2.0.0
[INFO] [stderr]   Downloaded smallvec v0.6.14
[INFO] [stderr]   Downloaded ogg v0.7.1
[INFO] [stderr]   Downloaded lewton v0.9.4
[INFO] [stderr]   Downloaded quad-rand v0.2.3
[INFO] [stderr]   Downloaded macroquad_macro v0.1.8
[INFO] [stderr]   Downloaded objc-rs v0.2.8
[INFO] [stderr]   Downloaded audir-sles v0.1.0
[INFO] [stderr]   Downloaded quad-alsa-sys v0.3.2
[INFO] [stderr]   Downloaded audrey v0.3.0
[INFO] [stderr]   Downloaded miniquad v0.4.8
[INFO] [stderr]   Downloaded ndk-sys v0.2.2
[INFO] [stderr]   Downloaded macroquad v0.4.14
[INFO] [stderr]   Downloaded quad-snd v0.2.8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+377656d3dd3f9c23a9c8713e163f4365a5261a84" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 63f8ec7f3268104123e6048d24a0af9dadbb1042b14368ae4b080e13f5c551a7
[INFO] running `Command { std: "docker" "start" "-a" "63f8ec7f3268104123e6048d24a0af9dadbb1042b14368ae4b080e13f5c551a7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "63f8ec7f3268104123e6048d24a0af9dadbb1042b14368ae4b080e13f5c551a7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "63f8ec7f3268104123e6048d24a0af9dadbb1042b14368ae4b080e13f5c551a7", kill_on_drop: false }`
[INFO] [stdout] 63f8ec7f3268104123e6048d24a0af9dadbb1042b14368ae4b080e13f5c551a7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+377656d3dd3f9c23a9c8713e163f4365a5261a84" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2245ad6f66c5f4dd97748099ffa526d5b1a52230fef4f5a77fdada886f311c30
[INFO] running `Command { std: "docker" "start" "-a" "2245ad6f66c5f4dd97748099ffa526d5b1a52230fef4f5a77fdada886f311c30", kill_on_drop: false }`
[INFO] [stderr]     Checking cfg-if v1.0.4
[INFO] [stderr]     Checking simd-adler32 v0.3.8
[INFO] [stderr]     Checking adler2 v2.0.1
[INFO] [stderr]    Compiling maybe-uninit v2.0.0
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling libc v0.2.179
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling zerocopy v0.8.33
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling quad-alsa-sys v0.3.2
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking dasp_sample v0.11.0
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]     Checking weezl v0.1.12
[INFO] [stderr]     Checking ogg v0.7.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking smallvec v0.6.14
[INFO] [stderr]     Checking dasp_frame v0.11.0
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]    Compiling miniquad v0.4.8
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking pin-project-lite v0.2.16
[INFO] [stderr]     Checking lewton v0.9.4
[INFO] [stderr]     Checking slab v0.4.11
[INFO] [stderr]     Checking futures-task v0.3.31
[INFO] [stderr]     Checking flate2 v1.1.5
[INFO] [stderr]     Checking lebe v0.5.3
[INFO] [stderr]     Checking color_quant v1.1.0
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]     Checking bitflags v1.3.2
[INFO] [stderr]    Compiling zmij v1.0.12
[INFO] [stderr]     Checking allocator-api2 v0.2.21
[INFO] [stderr]    Compiling quad-snd v0.2.8
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]     Checking hound v3.5.1
[INFO] [stderr]     Checking pxfm v0.1.27
[INFO] [stderr]     Checking pin-utils v0.1.0
[INFO] [stderr]     Checking equivalent v1.0.2
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]     Checking bit_field v0.10.3
[INFO] [stderr]     Checking png v0.18.0
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking gif v0.13.3
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking byteorder-lite v0.1.0
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]     Checking x11rb-protocol v0.13.2
[INFO] [stderr]     Checking audrey v0.3.0
[INFO] [stderr]     Checking ttf-parser v0.21.1
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking itoa v1.0.17
[INFO] [stderr]     Checking glam v0.27.0
[INFO] [stderr]     Checking quad-rand v0.2.3
[INFO] [stderr]     Checking log v0.4.29
[INFO] [stderr]    Compiling macroquad_macro v0.1.8
[INFO] [stderr]     Checking glam v0.24.2
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking moxcms v0.7.11
[INFO] [stderr]    Compiling zerocopy-derive v0.8.33
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]     Checking fontdue v0.9.3
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking exr v1.74.0
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking image v0.25.9
[INFO] [stderr]     Checking arboard v3.6.1
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]     Checking macroquad v0.4.14
[INFO] [stderr]     Checking sas3 v0.1.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: value assigned to `vy` is never read
[INFO] [stdout]     --> src/game/md3_render.rs:2674:17
[INFO] [stdout]      |
[INFO] [stdout] 2674 |                 vy = vy_rot;
[INFO] [stdout]      |                 ^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `vy` is never read
[INFO] [stdout]     --> src/game/md3_render.rs:2674:17
[INFO] [stdout]      |
[INFO] [stdout] 2674 |                 vy = vy_rot;
[INFO] [stdout]      |                 ^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/player_model.rs:456:13
[INFO] [stdout]     |
[INFO] [stdout] 456 |         let mut torso_orientation = torso_orientation_opt.unwrap_or_else(|| {
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `weapon_yaw`
[INFO] [stdout]    --> src/game/player_model.rs:392:13
[INFO] [stdout]     |
[INFO] [stdout] 392 |         let weapon_yaw = legs_yaw * 0.4;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_weapon_yaw`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lower_frame_idx`
[INFO] [stdout]    --> src/game/player_model.rs:471:17
[INFO] [stdout]     |
[INFO] [stdout] 471 |             let lower_frame_idx = lower_frame.min(lower.tags.len().saturating_sub(1));
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_lower_frame_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `legs_anim_name` is assigned to, but never used
[INFO] [stdout]    --> src/game/player_model.rs:987:13
[INFO] [stdout]     |
[INFO] [stdout] 987 |         let legs_anim_name;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_legs_anim_name` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `torso_anim_name` is assigned to, but never used
[INFO] [stdout]     --> src/game/player_model.rs:1017:13
[INFO] [stdout]      |
[INFO] [stdout] 1017 |         let torso_anim_name;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_torso_anim_name` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]    --> src/game/player_model.rs:995:13
[INFO] [stdout]     |
[INFO] [stdout] 995 |             legs_anim_name = "LEGS_JUMP";
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1013:13
[INFO] [stdout]      |
[INFO] [stdout] 1013 |             legs_anim_name = "LEGS_IDLE";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1010:13
[INFO] [stdout]      |
[INFO] [stdout] 1010 |             legs_anim_name = "LEGS_RUN";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1007:13
[INFO] [stdout]      |
[INFO] [stdout] 1007 |             legs_anim_name = "LEGS_IDLECR";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1004:13
[INFO] [stdout]      |
[INFO] [stdout] 1004 |             legs_anim_name = "LEGS_WALKCR";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1001:13
[INFO] [stdout]      |
[INFO] [stdout] 1001 |             legs_anim_name = "LEGS_BACK";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]    --> src/game/player_model.rs:998:13
[INFO] [stdout]     |
[INFO] [stdout] 998 |             legs_anim_name = "LEGS_WALKCR (backward)";
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]    --> src/game/player_model.rs:992:13
[INFO] [stdout]     |
[INFO] [stdout] 992 |             legs_anim_name = "LEGS_LAND";
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]    --> src/game/player_model.rs:989:13
[INFO] [stdout]     |
[INFO] [stdout] 989 |             legs_anim_name = "BOTH_DEATH1";
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `torso_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1028:13
[INFO] [stdout]      |
[INFO] [stdout] 1028 |             torso_anim_name = "TORSO_STAND";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `torso_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1025:13
[INFO] [stdout]      |
[INFO] [stdout] 1025 |             torso_anim_name = "TORSO_ATTACK";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `torso_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1022:13
[INFO] [stdout]      |
[INFO] [stdout] 1022 |             torso_anim_name = "TORSO_RAISE";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `torso_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1019:13
[INFO] [stdout]      |
[INFO] [stdout] 1019 |             torso_anim_name = "BOTH_DEATH1";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/player_model.rs:456:13
[INFO] [stdout]     |
[INFO] [stdout] 456 |         let mut torso_orientation = torso_orientation_opt.unwrap_or_else(|| {
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `weapon_yaw`
[INFO] [stdout]    --> src/game/player_model.rs:392:13
[INFO] [stdout]     |
[INFO] [stdout] 392 |         let weapon_yaw = legs_yaw * 0.4;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_weapon_yaw`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lower_frame_idx`
[INFO] [stdout]    --> src/game/player_model.rs:471:17
[INFO] [stdout]     |
[INFO] [stdout] 471 |             let lower_frame_idx = lower_frame.min(lower.tags.len().saturating_sub(1));
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_lower_frame_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `legs_anim_name` is assigned to, but never used
[INFO] [stdout]    --> src/game/player_model.rs:987:13
[INFO] [stdout]     |
[INFO] [stdout] 987 |         let legs_anim_name;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_legs_anim_name` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `torso_anim_name` is assigned to, but never used
[INFO] [stdout]     --> src/game/player_model.rs:1017:13
[INFO] [stdout]      |
[INFO] [stdout] 1017 |         let torso_anim_name;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_torso_anim_name` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]    --> src/game/player_model.rs:995:13
[INFO] [stdout]     |
[INFO] [stdout] 995 |             legs_anim_name = "LEGS_JUMP";
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1013:13
[INFO] [stdout]      |
[INFO] [stdout] 1013 |             legs_anim_name = "LEGS_IDLE";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1010:13
[INFO] [stdout]      |
[INFO] [stdout] 1010 |             legs_anim_name = "LEGS_RUN";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1007:13
[INFO] [stdout]      |
[INFO] [stdout] 1007 |             legs_anim_name = "LEGS_IDLECR";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1004:13
[INFO] [stdout]      |
[INFO] [stdout] 1004 |             legs_anim_name = "LEGS_WALKCR";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1001:13
[INFO] [stdout]      |
[INFO] [stdout] 1001 |             legs_anim_name = "LEGS_BACK";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]    --> src/game/player_model.rs:998:13
[INFO] [stdout]     |
[INFO] [stdout] 998 |             legs_anim_name = "LEGS_WALKCR (backward)";
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]    --> src/game/player_model.rs:992:13
[INFO] [stdout]     |
[INFO] [stdout] 992 |             legs_anim_name = "LEGS_LAND";
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `legs_anim_name` is never read
[INFO] [stdout]    --> src/game/player_model.rs:989:13
[INFO] [stdout]     |
[INFO] [stdout] 989 |             legs_anim_name = "BOTH_DEATH1";
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `torso_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1028:13
[INFO] [stdout]      |
[INFO] [stdout] 1028 |             torso_anim_name = "TORSO_STAND";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `torso_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1025:13
[INFO] [stdout]      |
[INFO] [stdout] 1025 |             torso_anim_name = "TORSO_ATTACK";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `torso_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1022:13
[INFO] [stdout]      |
[INFO] [stdout] 1022 |             torso_anim_name = "TORSO_RAISE";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `torso_anim_name` is never read
[INFO] [stdout]     --> src/game/player_model.rs:1019:13
[INFO] [stdout]      |
[INFO] [stdout] 1019 |             torso_anim_name = "BOTH_DEATH1";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_id`
[INFO] [stdout]    --> src/game/mod.rs:401:17
[INFO] [stdout]     |
[INFO] [stdout] 401 |                 player_id,
[INFO] [stdout]     |                 ^^^^^^^^^ help: try ignoring the field: `player_id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `interp_time`
[INFO] [stdout]    --> src/game/mod.rs:621:17
[INFO] [stdout]     |
[INFO] [stdout] 621 |             let interp_time = net_client.get_interpolation_time();
[INFO] [stdout]     |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interp_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_id`
[INFO] [stdout]    --> src/game/mod.rs:401:17
[INFO] [stdout]     |
[INFO] [stdout] 401 |                 player_id,
[INFO] [stdout]     |                 ^^^^^^^^^ help: try ignoring the field: `player_id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `interp_time`
[INFO] [stdout]    --> src/game/mod.rs:621:17
[INFO] [stdout]     |
[INFO] [stdout] 621 |             let interp_time = net_client.get_interpolation_time();
[INFO] [stdout]     |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interp_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `corpse_hit_idx` is assigned to, but never used
[INFO] [stdout]     --> src/game/mod.rs:2183:25
[INFO] [stdout]      |
[INFO] [stdout] 2183 |                     let mut corpse_hit_idx = None;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_corpse_hit_idx` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `corpse_hit_idx` is never read
[INFO] [stdout]     --> src/game/mod.rs:2196:29
[INFO] [stdout]      |
[INFO] [stdout] 2196 | ...                   corpse_hit_idx = Some(idx);
[INFO] [stdout]      |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `corpse_hit_idx` is assigned to, but never used
[INFO] [stdout]     --> src/game/mod.rs:2183:25
[INFO] [stdout]      |
[INFO] [stdout] 2183 |                     let mut corpse_hit_idx = None;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_corpse_hit_idx` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `corpse_hit_idx` is never read
[INFO] [stdout]     --> src/game/mod.rs:2196:29
[INFO] [stdout]      |
[INFO] [stdout] 2196 | ...                   corpse_hit_idx = Some(idx);
[INFO] [stdout]      |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `client_id`
[INFO] [stdout]    --> src/network/server.rs:366:9
[INFO] [stdout]     |
[INFO] [stdout] 366 |         client_id: u16,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_client_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/network/interpolation.rs:282:13
[INFO] [stdout]     |
[INFO] [stdout] 282 |         let t1 = super::super::get_network_time();
[INFO] [stdout]     |             ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/network/interpolation.rs:293:13
[INFO] [stdout]     |
[INFO] [stdout] 293 |         let t2 = super::super::get_network_time();
[INFO] [stdout]     |             ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `client_id`
[INFO] [stdout]    --> src/network/server.rs:366:9
[INFO] [stdout]     |
[INFO] [stdout] 366 |         client_id: u16,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_client_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `md3_render::ShaderType` is more private than the item `MD3OrientationBatchItem::shader_type`
[INFO] [stdout]   --> src/game/md3_render.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub shader_type: ShaderType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `MD3OrientationBatchItem::shader_type` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `md3_render::ShaderType` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/game/md3_render.rs:53:1
[INFO] [stdout]    |
[INFO] [stdout] 53 | enum ShaderType {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `create_corpse` is never used
[INFO] [stdout]    --> src/game/mod.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 138 | impl GameState {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 148 |     fn create_corpse(&mut self, player: &player::Player) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `OVERLAY_LIGHTING_MATERIAL` is never used
[INFO] [stdout]   --> src/game/deferred_renderer.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | static OVERLAY_LIGHTING_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_overlay_lighting_material` is never used
[INFO] [stdout]   --> src/game/deferred_renderer.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn get_overlay_lighting_material() -> &'static Material {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Default` is never constructed
[INFO] [stdout]   --> src/game/md3_render.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | enum ShaderType {
[INFO] [stdout]    |      ---------- variant in this enum
[INFO] [stdout] 54 |     Default,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ShaderType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_batch_group` is never used
[INFO] [stdout]    --> src/game/md3_render.rs:569:8
[INFO] [stdout]     |
[INFO] [stdout] 330 | impl MD3OrientationBatch {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 569 |     fn draw_batch_group(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_SPEED_GROUND` is never used
[INFO] [stdout]  --> src/game/nav_graph_generator.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const MAX_SPEED_GROUND: f32 = 5.0;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINE_CHECK_STEP` is never used
[INFO] [stdout]   --> src/game/nav_graph_generator.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const LINE_CHECK_STEP: f32 = 8.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `has_clear_edge`, `has_ground_below`, and `can_jump_gap` are never used
[INFO] [stdout]    --> src/game/nav_graph_generator.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl NavGraphGenerator {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn has_clear_edge(&self, x1: f32, y1: f32, x2: f32, y2: f32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     fn has_ground_below(&self, x: f32, y: f32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 704 |     fn can_jump_gap(&self, x1: f32, y1: f32, x2: f32, y2: f32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SIMPLE_RECT_LIT_MATERIAL` is never used
[INFO] [stdout]  --> src/game/shader.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | static SIMPLE_RECT_LIT_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WASM_ADDITIVE_LIGHTING_MATERIAL` is never used
[INFO] [stdout]  --> src/game/shader.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | static WASM_ADDITIVE_LIGHTING_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tick` is never read
[INFO] [stdout]   --> src/network/interpolation.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct SnapshotEntry {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 12 |     pub tick: u32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SnapshotEntry` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `color` is never read
[INFO] [stdout]   --> src/console.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct ConChar {
[INFO] [stdout]    |        ------- field in this struct
[INFO] [stdout] 44 |     ch: u8,
[INFO] [stdout] 45 |     color: u8,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConChar` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/game/md3_render.rs:779:12
[INFO] [stdout]     |
[INFO] [stdout] 779 |         if LIGHT_CACHE.get().is_none() {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/game/md3_render.rs:780:21
[INFO] [stdout]     |
[INFO] [stdout] 780 |             let _ = LIGHT_CACHE.set(HashMap::with_capacity(256));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/game/md3_render.rs:782:9
[INFO] [stdout]     |
[INFO] [stdout] 782 |         LIGHT_CACHE.get_mut().unwrap()
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/game/md3_render.rs:790:34
[INFO] [stdout]     |
[INFO] [stdout] 790 |             if let Some(cache) = LIGHT_CACHE.get_mut() {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `md3_render::ShaderType` is more private than the item `MD3OrientationBatchItem::shader_type`
[INFO] [stdout]   --> src/game/md3_render.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub shader_type: ShaderType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `MD3OrientationBatchItem::shader_type` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `md3_render::ShaderType` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/game/md3_render.rs:53:1
[INFO] [stdout]    |
[INFO] [stdout] 53 | enum ShaderType {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `create_corpse` is never used
[INFO] [stdout]    --> src/game/mod.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 138 | impl GameState {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 148 |     fn create_corpse(&mut self, player: &player::Player) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `OVERLAY_LIGHTING_MATERIAL` is never used
[INFO] [stdout]   --> src/game/deferred_renderer.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | static OVERLAY_LIGHTING_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_overlay_lighting_material` is never used
[INFO] [stdout]   --> src/game/deferred_renderer.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn get_overlay_lighting_material() -> &'static Material {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Default` is never constructed
[INFO] [stdout]   --> src/game/md3_render.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | enum ShaderType {
[INFO] [stdout]    |      ---------- variant in this enum
[INFO] [stdout] 54 |     Default,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ShaderType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_batch_group` is never used
[INFO] [stdout]    --> src/game/md3_render.rs:569:8
[INFO] [stdout]     |
[INFO] [stdout] 330 | impl MD3OrientationBatch {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 569 |     fn draw_batch_group(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_SPEED_GROUND` is never used
[INFO] [stdout]  --> src/game/nav_graph_generator.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const MAX_SPEED_GROUND: f32 = 5.0;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINE_CHECK_STEP` is never used
[INFO] [stdout]   --> src/game/nav_graph_generator.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const LINE_CHECK_STEP: f32 = 8.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `has_clear_edge`, `has_ground_below`, and `can_jump_gap` are never used
[INFO] [stdout]    --> src/game/nav_graph_generator.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl NavGraphGenerator {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn has_clear_edge(&self, x1: f32, y1: f32, x2: f32, y2: f32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     fn has_ground_below(&self, x: f32, y: f32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 704 |     fn can_jump_gap(&self, x1: f32, y1: f32, x2: f32, y2: f32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SIMPLE_RECT_LIT_MATERIAL` is never used
[INFO] [stdout]  --> src/game/shader.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | static SIMPLE_RECT_LIT_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WASM_ADDITIVE_LIGHTING_MATERIAL` is never used
[INFO] [stdout]  --> src/game/shader.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | static WASM_ADDITIVE_LIGHTING_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tick` is never read
[INFO] [stdout]   --> src/network/interpolation.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct SnapshotEntry {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 12 |     pub tick: u32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SnapshotEntry` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `color` is never read
[INFO] [stdout]   --> src/console.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct ConChar {
[INFO] [stdout]    |        ------- field in this struct
[INFO] [stdout] 44 |     ch: u8,
[INFO] [stdout] 45 |     color: u8,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConChar` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/game/md3_render.rs:779:12
[INFO] [stdout]     |
[INFO] [stdout] 779 |         if LIGHT_CACHE.get().is_none() {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/game/md3_render.rs:780:21
[INFO] [stdout]     |
[INFO] [stdout] 780 |             let _ = LIGHT_CACHE.set(HashMap::with_capacity(256));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/game/md3_render.rs:782:9
[INFO] [stdout]     |
[INFO] [stdout] 782 |         LIGHT_CACHE.get_mut().unwrap()
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/game/md3_render.rs:790:34
[INFO] [stdout]     |
[INFO] [stdout] 790 |             if let Some(cache) = LIGHT_CACHE.get_mut() {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `simulate_physics` and `get_player_position` are never used
[INFO] [stdout]    --> tests/common/mod.rs:238:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl TestServer {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn simulate_physics(&mut self, dt: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn get_player_position(&self, client_id: u16) -> Option<(f32, f32)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_player_position` is never used
[INFO] [stdout]    --> tests/common/mod.rs:294:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl TestServer {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn get_player_position(&self, client_id: u16) -> Option<(f32, f32)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExplosionFlash` is never constructed
[INFO] [stdout]  --> tools/../src/game/light.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ExplosionFlash {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, and `render` are never used
[INFO] [stdout]   --> tools/../src/game/light.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl ExplosionFlash {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new(x: f32, y: f32, radius: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn update(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn render(&self, camera_x: f32, camera_y: f32) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LightPulse` is never constructed
[INFO] [stdout]   --> tools/../src/game/light.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct LightPulse {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_explosion_flash`, `from_weapon`, and `update` are never used
[INFO] [stdout]   --> tools/../src/game/light.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | impl LightPulse {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 65 |     pub fn new(x: f32, y: f32, radius: f32, color: Color, max_life_ms: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn new_explosion_flash(x: f32, y: f32, _radius: f32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn from_weapon(x: f32, y: f32, weapon_id: u8) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn update(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_base_color_pub` is never used
[INFO] [stdout]    --> tools/../src/game/procedural_tiles.rs:373:8
[INFO] [stdout]     |
[INFO] [stdout] 373 | pub fn get_base_color_pub(texture_id: u16) -> Color {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_procedural_tile_simple` is never used
[INFO] [stdout]    --> tools/../src/game/procedural_tiles.rs:377:8
[INFO] [stdout]     |
[INFO] [stdout] 377 | pub fn render_procedural_tile_simple(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `MODEL_ADDITIVE_MATERIAL` is never used
[INFO] [stdout]  --> tools/../src/game/shader.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | static MODEL_ADDITIVE_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SIMPLE_RECT_LIT_MATERIAL` is never used
[INFO] [stdout]  --> tools/../src/game/shader.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | static SIMPLE_RECT_LIT_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `OVERLAY_LIGHTING_MATERIAL` is never used
[INFO] [stdout]  --> tools/../src/game/shader.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | static OVERLAY_LIGHTING_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WASM_COMBINED_LIGHTING_MATERIAL` is never used
[INFO] [stdout]  --> tools/../src/game/shader.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | static WASM_COMBINED_LIGHTING_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WASM_ADDITIVE_LIGHTING_MATERIAL` is never used
[INFO] [stdout]  --> tools/../src/game/shader.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | static WASM_ADDITIVE_LIGHTING_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `QUAD_DAMAGE_OUTLINE_MATERIAL` is never used
[INFO] [stdout]   --> tools/../src/game/shader.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | static QUAD_DAMAGE_OUTLINE_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_model_additive_material` is never used
[INFO] [stdout]   --> tools/../src/game/shader.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn create_model_additive_material() -> &'static Material {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_muzzle_flash_material` is never used
[INFO] [stdout]   --> tools/../src/game/shader.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub fn create_muzzle_flash_material() -> Material {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_deferred_lighting_material` is never used
[INFO] [stdout]    --> tools/../src/game/shader.rs:188:8
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub fn create_deferred_lighting_material() -> Material {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_hybrid_lighting_material` is never used
[INFO] [stdout]    --> tools/../src/game/shader.rs:356:8
[INFO] [stdout]     |
[INFO] [stdout] 356 | pub fn create_hybrid_lighting_material() -> Material {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_model_lit_material` is never used
[INFO] [stdout]    --> tools/../src/game/shader.rs:586:8
[INFO] [stdout]     |
[INFO] [stdout] 586 | pub fn create_model_lit_material() -> Material {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_railgun_beam_material` is never used
[INFO] [stdout]    --> tools/../src/game/shader.rs:699:8
[INFO] [stdout]     |
[INFO] [stdout] 699 | pub fn create_railgun_beam_material() -> Material {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_overlay_lighting_material` is never used
[INFO] [stdout]    --> tools/../src/game/shader.rs:825:8
[INFO] [stdout]     |
[INFO] [stdout] 825 | pub fn create_overlay_lighting_material() -> &'static Material {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_wasm_combined_lighting_material` is never used
[INFO] [stdout]     --> tools/../src/game/shader.rs:1076:8
[INFO] [stdout]      |
[INFO] [stdout] 1076 | pub fn create_wasm_combined_lighting_material() -> &'static Material {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CARTOON_SHADER_MATERIAL` is never used
[INFO] [stdout]     --> tools/../src/game/shader.rs:1332:8
[INFO] [stdout]      |
[INFO] [stdout] 1332 | static CARTOON_SHADER_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_cartoon_shader_material` is never used
[INFO] [stdout]     --> tools/../src/game/shader.rs:1334:8
[INFO] [stdout]      |
[INFO] [stdout] 1334 | pub fn create_cartoon_shader_material() -> &'static Material {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_quad_damage_outline_material` is never used
[INFO] [stdout]     --> tools/../src/game/shader.rs:1427:8
[INFO] [stdout]      |
[INFO] [stdout] 1427 | pub fn create_quad_damage_outline_material() -> &'static Material {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `LIQUID_BLOOD_MATERIAL` is never used
[INFO] [stdout]     --> tools/../src/game/shader.rs:1527:8
[INFO] [stdout]      |
[INFO] [stdout] 1527 | static LIQUID_BLOOD_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_liquid_blood_material` is never used
[INFO] [stdout]     --> tools/../src/game/shader.rs:1529:8
[INFO] [stdout]      |
[INFO] [stdout] 1529 | pub fn create_liquid_blood_material() -> &'static Material {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update`, `can_activate`, `activate`, `check_collision`, and `render` are never used
[INFO] [stdout]    --> tools/../src/game/map.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  90 | impl JumpPad {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout]  91 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn can_activate(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn activate(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn check_collision(&self, px: f32, py: f32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn render(&self, camera_x: f32, camera_y: f32) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LinearLight` is never constructed
[INFO] [stdout]    --> tools/../src/game/map.rs:190:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub struct LinearLight {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> tools/../src/game/map.rs:225:12
[INFO] [stdout]      |
[INFO] [stdout]  224 | impl Map {
[INFO] [stdout]      | -------- associated items in this implementation
[INFO] [stdout]  225 |     pub fn new(name: &str) -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  233 |     pub async fn new_async(name: &str) -> Self {
[INFO] [stdout]      |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  252 |     pub async fn load_from_file_async(name: &str) -> Result<Self, Box<dyn std::error::Error>> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  259 |     pub fn soldat_map() -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  434 |     pub fn q3dm6() -> Self {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1007 |     pub fn is_solid(&self, tile_x: i32, tile_y: i32) -> bool {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1014 |     pub fn map_width(&self) -> usize {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1018 |     pub fn map_height(&self) -> usize {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1022 |     pub fn has_line_of_sight(&self, x1: f32, y1: f32, x2: f32, y2: f32) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1050 |     pub fn get_floor_below(&self, x: f32, start_y: f32) -> f32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1067 |     pub fn find_safe_spawn_position(&self) -> (f32, f32) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1075 |     pub fn render(&self, camera_x: f32, camera_y: f32, _lights: &[super::light::LightPulse]) {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1080 |     pub fn render_background(&self, _camera_x: f32, _camera_y: f32) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1084 |     pub fn render_tiles(&self, camera_x: f32, camera_y: f32) {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_file_bytes` is never used
[INFO] [stdout]  --> tools/../src/game/file_loader.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub async fn load_file_bytes(path: &str) -> Result<Vec<u8>, String> {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_file_string` is never used
[INFO] [stdout]   --> tools/../src/game/file_loader.rs:16:14
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub async fn load_file_string(path: &str) -> Result<String, String> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_dir` is never used
[INFO] [stdout]   --> tools/../src/game/file_loader.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn read_dir(path: &str) -> Result<Vec<String>, String> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load_from_file_async` is never used
[INFO] [stdout]    --> tools/../src/game/map_loader.rs:107:18
[INFO] [stdout]     |
[INFO] [stdout]  91 | impl MapFile {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub async fn load_from_file_async(path: &str) -> Result<Self, Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_path`, `heuristic`, `reconstruct_path`, `find_nearest_node`, `render`, and `render_path` are never used
[INFO] [stdout]    --> tools/../src/game/nav_graph.rs:95:12
[INFO] [stdout]     |
[INFO] [stdout]  49 | impl NavGraph {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn find_path(&self, start_node: usize, goal_node: usize) -> Option<Vec<usize>> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     fn heuristic(&self, from: usize, to: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     fn reconstruct_path(&self, came_from: HashMap<usize, usize>, current: usize) -> Vec<usize> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn find_nearest_node(&self, x: f32, y: f32) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn render(&self, camera_x: f32, camera_y: f32, show_edges: bool) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn render_path(&self, path: &[usize], camera_x: f32, camera_y: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_SPEED_GROUND` is never used
[INFO] [stdout]  --> tools/../src/game/nav_graph_generator.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const MAX_SPEED_GROUND: f32 = 5.0;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINE_CHECK_STEP` is never used
[INFO] [stdout]   --> tools/../src/game/nav_graph_generator.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const LINE_CHECK_STEP: f32 = 8.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `has_clear_edge`, `has_ground_below`, and `can_jump_gap` are never used
[INFO] [stdout]    --> tools/../src/game/nav_graph_generator.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl NavGraphGenerator {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn has_clear_edge(&self, x1: f32, y1: f32, x2: f32, y2: f32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     fn has_ground_below(&self, x: f32, y: f32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 704 |     fn can_jump_gap(&self, x1: f32, y1: f32, x2: f32, y2: f32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExplosionFlash` is never constructed
[INFO] [stdout]  --> tools/../src/game/light.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ExplosionFlash {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, and `render` are never used
[INFO] [stdout]   --> tools/../src/game/light.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl ExplosionFlash {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new(x: f32, y: f32, radius: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn update(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn render(&self, camera_x: f32, camera_y: f32) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LightPulse` is never constructed
[INFO] [stdout]   --> tools/../src/game/light.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct LightPulse {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_explosion_flash`, `from_weapon`, and `update` are never used
[INFO] [stdout]   --> tools/../src/game/light.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | impl LightPulse {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 65 |     pub fn new(x: f32, y: f32, radius: f32, color: Color, max_life_ms: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn new_explosion_flash(x: f32, y: f32, _radius: f32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn from_weapon(x: f32, y: f32, weapon_id: u8) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn update(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_base_color_pub` is never used
[INFO] [stdout]    --> tools/../src/game/procedural_tiles.rs:373:8
[INFO] [stdout]     |
[INFO] [stdout] 373 | pub fn get_base_color_pub(texture_id: u16) -> Color {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_procedural_tile_simple` is never used
[INFO] [stdout]    --> tools/../src/game/procedural_tiles.rs:377:8
[INFO] [stdout]     |
[INFO] [stdout] 377 | pub fn render_procedural_tile_simple(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `MODEL_ADDITIVE_MATERIAL` is never used
[INFO] [stdout]  --> tools/../src/game/shader.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | static MODEL_ADDITIVE_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SIMPLE_RECT_LIT_MATERIAL` is never used
[INFO] [stdout]  --> tools/../src/game/shader.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | static SIMPLE_RECT_LIT_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `OVERLAY_LIGHTING_MATERIAL` is never used
[INFO] [stdout]  --> tools/../src/game/shader.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | static OVERLAY_LIGHTING_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WASM_COMBINED_LIGHTING_MATERIAL` is never used
[INFO] [stdout]  --> tools/../src/game/shader.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | static WASM_COMBINED_LIGHTING_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WASM_ADDITIVE_LIGHTING_MATERIAL` is never used
[INFO] [stdout]  --> tools/../src/game/shader.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | static WASM_ADDITIVE_LIGHTING_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `QUAD_DAMAGE_OUTLINE_MATERIAL` is never used
[INFO] [stdout]   --> tools/../src/game/shader.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | static QUAD_DAMAGE_OUTLINE_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_model_additive_material` is never used
[INFO] [stdout]   --> tools/../src/game/shader.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn create_model_additive_material() -> &'static Material {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_muzzle_flash_material` is never used
[INFO] [stdout]   --> tools/../src/game/shader.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub fn create_muzzle_flash_material() -> Material {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_deferred_lighting_material` is never used
[INFO] [stdout]    --> tools/../src/game/shader.rs:188:8
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub fn create_deferred_lighting_material() -> Material {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_hybrid_lighting_material` is never used
[INFO] [stdout]    --> tools/../src/game/shader.rs:356:8
[INFO] [stdout]     |
[INFO] [stdout] 356 | pub fn create_hybrid_lighting_material() -> Material {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_model_lit_material` is never used
[INFO] [stdout]    --> tools/../src/game/shader.rs:586:8
[INFO] [stdout]     |
[INFO] [stdout] 586 | pub fn create_model_lit_material() -> Material {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_railgun_beam_material` is never used
[INFO] [stdout]    --> tools/../src/game/shader.rs:699:8
[INFO] [stdout]     |
[INFO] [stdout] 699 | pub fn create_railgun_beam_material() -> Material {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_overlay_lighting_material` is never used
[INFO] [stdout]    --> tools/../src/game/shader.rs:825:8
[INFO] [stdout]     |
[INFO] [stdout] 825 | pub fn create_overlay_lighting_material() -> &'static Material {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_wasm_combined_lighting_material` is never used
[INFO] [stdout]     --> tools/../src/game/shader.rs:1076:8
[INFO] [stdout]      |
[INFO] [stdout] 1076 | pub fn create_wasm_combined_lighting_material() -> &'static Material {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CARTOON_SHADER_MATERIAL` is never used
[INFO] [stdout]     --> tools/../src/game/shader.rs:1332:8
[INFO] [stdout]      |
[INFO] [stdout] 1332 | static CARTOON_SHADER_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_cartoon_shader_material` is never used
[INFO] [stdout]     --> tools/../src/game/shader.rs:1334:8
[INFO] [stdout]      |
[INFO] [stdout] 1334 | pub fn create_cartoon_shader_material() -> &'static Material {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_quad_damage_outline_material` is never used
[INFO] [stdout]     --> tools/../src/game/shader.rs:1427:8
[INFO] [stdout]      |
[INFO] [stdout] 1427 | pub fn create_quad_damage_outline_material() -> &'static Material {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `LIQUID_BLOOD_MATERIAL` is never used
[INFO] [stdout]     --> tools/../src/game/shader.rs:1527:8
[INFO] [stdout]      |
[INFO] [stdout] 1527 | static LIQUID_BLOOD_MATERIAL: OnceLock<Material> = OnceLock::new();
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_liquid_blood_material` is never used
[INFO] [stdout]     --> tools/../src/game/shader.rs:1529:8
[INFO] [stdout]      |
[INFO] [stdout] 1529 | pub fn create_liquid_blood_material() -> &'static Material {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update`, `can_activate`, `activate`, `check_collision`, and `render` are never used
[INFO] [stdout]    --> tools/../src/game/map.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  90 | impl JumpPad {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout]  91 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn can_activate(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn activate(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn check_collision(&self, px: f32, py: f32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn render(&self, camera_x: f32, camera_y: f32) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LinearLight` is never constructed
[INFO] [stdout]    --> tools/../src/game/map.rs:190:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub struct LinearLight {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> tools/../src/game/map.rs:225:12
[INFO] [stdout]      |
[INFO] [stdout]  224 | impl Map {
[INFO] [stdout]      | -------- associated items in this implementation
[INFO] [stdout]  225 |     pub fn new(name: &str) -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  233 |     pub async fn new_async(name: &str) -> Self {
[INFO] [stdout]      |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  252 |     pub async fn load_from_file_async(name: &str) -> Result<Self, Box<dyn std::error::Error>> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  259 |     pub fn soldat_map() -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  434 |     pub fn q3dm6() -> Self {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1007 |     pub fn is_solid(&self, tile_x: i32, tile_y: i32) -> bool {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1014 |     pub fn map_width(&self) -> usize {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1018 |     pub fn map_height(&self) -> usize {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1022 |     pub fn has_line_of_sight(&self, x1: f32, y1: f32, x2: f32, y2: f32) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1050 |     pub fn get_floor_below(&self, x: f32, start_y: f32) -> f32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1067 |     pub fn find_safe_spawn_position(&self) -> (f32, f32) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1075 |     pub fn render(&self, camera_x: f32, camera_y: f32, _lights: &[super::light::LightPulse]) {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1080 |     pub fn render_background(&self, _camera_x: f32, _camera_y: f32) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1084 |     pub fn render_tiles(&self, camera_x: f32, camera_y: f32) {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_file_bytes` is never used
[INFO] [stdout]  --> tools/../src/game/file_loader.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub async fn load_file_bytes(path: &str) -> Result<Vec<u8>, String> {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_file_string` is never used
[INFO] [stdout]   --> tools/../src/game/file_loader.rs:16:14
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub async fn load_file_string(path: &str) -> Result<String, String> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_dir` is never used
[INFO] [stdout]   --> tools/../src/game/file_loader.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn read_dir(path: &str) -> Result<Vec<String>, String> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load_from_file_async` is never used
[INFO] [stdout]    --> tools/../src/game/map_loader.rs:107:18
[INFO] [stdout]     |
[INFO] [stdout]  91 | impl MapFile {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub async fn load_from_file_async(path: &str) -> Result<Self, Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_path`, `heuristic`, `reconstruct_path`, `find_nearest_node`, `render`, and `render_path` are never used
[INFO] [stdout]    --> tools/../src/game/nav_graph.rs:95:12
[INFO] [stdout]     |
[INFO] [stdout]  49 | impl NavGraph {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn find_path(&self, start_node: usize, goal_node: usize) -> Option<Vec<usize>> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     fn heuristic(&self, from: usize, to: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     fn reconstruct_path(&self, came_from: HashMap<usize, usize>, current: usize) -> Vec<usize> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn find_nearest_node(&self, x: f32, y: f32) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn render(&self, camera_x: f32, camera_y: f32, show_edges: bool) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn render_path(&self, path: &[usize], camera_x: f32, camera_y: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_SPEED_GROUND` is never used
[INFO] [stdout]  --> tools/../src/game/nav_graph_generator.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const MAX_SPEED_GROUND: f32 = 5.0;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINE_CHECK_STEP` is never used
[INFO] [stdout]   --> tools/../src/game/nav_graph_generator.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const LINE_CHECK_STEP: f32 = 8.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `has_clear_edge`, `has_ground_below`, and `can_jump_gap` are never used
[INFO] [stdout]    --> tools/../src/game/nav_graph_generator.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl NavGraphGenerator {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn has_clear_edge(&self, x1: f32, y1: f32, x2: f32, y2: f32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     fn has_ground_below(&self, x: f32, y: f32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 704 |     fn can_jump_gap(&self, x1: f32, y1: f32, x2: f32, y2: f32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `y` is never read
[INFO] [stdout]   --> tools/map_editor/help.rs:45:21
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let mut y = panel_y + 30.0 - self.scroll_offset;
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `y` is never read
[INFO] [stdout]   --> tools/map_editor/help.rs:45:21
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let mut y = panel_y + 30.0 - self.scroll_offset;
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [optimized + debuginfo] target(s) in 22.77s
[INFO] running `Command { std: "docker" "inspect" "2245ad6f66c5f4dd97748099ffa526d5b1a52230fef4f5a77fdada886f311c30", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2245ad6f66c5f4dd97748099ffa526d5b1a52230fef4f5a77fdada886f311c30", kill_on_drop: false }`
[INFO] [stdout] 2245ad6f66c5f4dd97748099ffa526d5b1a52230fef4f5a77fdada886f311c30
