From 34f85be4ef737a05230fe060e77fdd1abe56280d Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Mon, 11 Nov 2024 17:21:36 +0200 Subject: [PATCH] fix(maze): tile wall orientation --- Cargo.lock | 445 +++++++++++++++++++------------------------ Cargo.toml | 6 +- src/lib.rs | 2 +- src/maze/grid.rs | 220 --------------------- src/maze/mod.rs | 2 - src/maze/plugin.rs | 4 +- src/maze/prism.rs | 62 +++--- src/maze/resource.rs | 4 +- src/maze/tile.rs | 55 ------ 9 files changed, 236 insertions(+), 564 deletions(-) delete mode 100644 src/maze/grid.rs delete mode 100644 src/maze/tile.rs diff --git a/Cargo.lock b/Cargo.lock index a54fa34..90d8ee5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "ab_glyph" @@ -147,7 +147,7 @@ dependencies = [ "ndk-context", "ndk-sys 0.6.0+11769913", "num_enum", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -314,9 +314,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bevy" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ece0d8dde51890fb52dcba5b04fd1c657617a4022908c327b2d6e83d173a32" +checksum = "043c9ad4b6fc4ca52d779873a8ca792a4e37842d07fce95363c9e17e36a1d8a0" dependencies = [ "bevy_dylib", "bevy_internal", @@ -363,14 +363,14 @@ checksum = "89f3be3ba88a25445c0c10684709b1ccd07e37f5f6b5d1b8dcf11d34548f1d61" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] name = "bevy_a11y" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d84e0ae7155afa21c4926fb8b89ebe0cbd66239ac817fdb834025327c4089b" +checksum = "ae1a976cb539d6a5a3ff579cdb78187a6bcfbffa7e8224ea28f23d8b983d9389" dependencies = [ "accesskit", "bevy_app", @@ -380,9 +380,9 @@ dependencies = [ [[package]] name = "bevy_animation" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abec61c2d9d19329d8d9f0d7f1ce0188f6ed2c6d74d90412b238efc38c7d7794" +checksum = "93aef7d21a0342c24b05059493aa31d58f1798d34a2236569a8789b74df5a475" dependencies = [ "bevy_app", "bevy_asset", @@ -403,16 +403,16 @@ dependencies = [ "petgraph", "ron", "serde", - "thiserror", + "thiserror 1.0.63", "thread_local", "uuid", ] [[package]] name = "bevy_app" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0af99549f5de61cc91c8c23303b13aa07f97b73fbace39695dee0a0a32cec9d4" +checksum = "a5361d0f8a8677a5d0102cfe7321a7ecd2a8b9a4f887ce0dde1059311cf9cd42" dependencies = [ "bevy_derive", "bevy_ecs", @@ -421,16 +421,16 @@ dependencies = [ "bevy_utils", "console_error_panic_hook", "downcast-rs", - "thiserror", + "thiserror 1.0.63", "wasm-bindgen", "web-sys", ] [[package]] name = "bevy_asset" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6533d17f13b44ea4fb5177f83b0900269ed13c0fd45772ccffd19a69980647ec" +checksum = "60ec5ea257e1ebd3d411f669e29acf60beb715bebc7e1f374c17f49cd3aad46c" dependencies = [ "async-broadcast", "async-fs", @@ -452,7 +452,7 @@ dependencies = [ "parking_lot", "ron", "serde", - "thiserror", + "thiserror 1.0.63", "uuid", "wasm-bindgen", "wasm-bindgen-futures", @@ -461,21 +461,21 @@ dependencies = [ [[package]] name = "bevy_asset_macros" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74b0e132a89e254c0f5c8bc8deebb0f2490f5662f4aa2215a6996701446d6a7b" +checksum = "c9eb05ce838d282f09d83380b4d6432aec7519d421dee8c75cc20e6148237e6e" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] name = "bevy_audio" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3050cb7244560313800b284e4b5eafcf91e833464e44d8407b20ec6c65974fc" +checksum = "8ee31312a0e67f288fe12a1d9aa679dd0ba8a49e1e6fe5fcd2ba1aa1ea34e5ed" dependencies = [ "bevy_app", "bevy_asset", @@ -492,24 +492,24 @@ dependencies = [ [[package]] name = "bevy_color" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82c031f121b8d72e7637c94ef139097613bd32935784d36728f83e77cfdf26f4" +checksum = "04842e9d38a93f0c75ab46f7f404ea24ef57ad83dbd159e5b4b35318b02257bb" dependencies = [ "bevy_math", "bevy_reflect", "bytemuck", "encase", "serde", - "thiserror", + "thiserror 1.0.63", "wgpu-types", ] [[package]] name = "bevy_core" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccc7118a2865267136afb5e6a2c0aed30994e522f298b2ba0b088878e6ddf59" +checksum = "de706862871a1fe99ea619bff2f99d73e43ad82f19ef866a9e19a14c957c8537" dependencies = [ "bevy_app", "bevy_ecs", @@ -521,9 +521,9 @@ dependencies = [ [[package]] name = "bevy_core_pipeline" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "559ad1dc48c3fa6bbace503df2fe44a7de38c8dfe11bee911ec0ffaf93e3e57d" +checksum = "2f6e1e122ada4cd811442e083fb5ad3e325c59a87271d5ef57193f1c2cad7f8c" dependencies = [ "bevy_app", "bevy_asset", @@ -541,25 +541,25 @@ dependencies = [ "radsort", "serde", "smallvec", - "thiserror", + "thiserror 1.0.63", ] [[package]] name = "bevy_derive" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8675f337f374b2b8ae90539982b947d171f9adb302d00c032b823bd5231f8978" +checksum = "3fbfc33a4c6b80760bb8bf850a2cc65a1e031da62fd3ca8b552189104dc98514" dependencies = [ "bevy_macro_utils", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] name = "bevy_dev_tools" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8cc87d018c71ab225cc3535051af5c0a7ade699b820b043a5484ce4097addf2" +checksum = "0abf99960653c5b0827c562e75fd7a6c74ffa517d2c138519c31375f17f12ce8" dependencies = [ "bevy_app", "bevy_asset", @@ -585,9 +585,9 @@ dependencies = [ [[package]] name = "bevy_diagnostic" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdcc1d7ba5797e4285a7867227134d4cabaaf8cabfb7cdc42eb697d3b3db0460" +checksum = "bebb154e0cc78e3bbfbfdb42fb502b14c1cd47e72f16e6d4228dfe6233ba6cbd" dependencies = [ "bevy_app", "bevy_core", @@ -601,18 +601,18 @@ dependencies = [ [[package]] name = "bevy_dylib" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521e5c295b80798b7a886aab4e54d0a92ea1780aa9586cdb17ded1fe34f36504" +checksum = "0c399292fac67682a72666e78872626f3c1c39b34c430b6f02c81d21da91b500" dependencies = [ "bevy_internal", ] [[package]] name = "bevy_ecs" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a3eed7f144811946ebfa1c740da9e3bcd6dd2dd4da844eda085249d29bc9fef" +checksum = "9ee4222406637f3c8e3991a99788cfcde76097bf997c311f1b6297364057483f" dependencies = [ "arrayvec", "bevy_ecs_macros", @@ -626,19 +626,19 @@ dependencies = [ "nonmax", "petgraph", "serde", - "thiserror", + "thiserror 1.0.63", ] [[package]] name = "bevy_ecs_macros" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d523630f2eb9fde6727e6c5ea48fa708079c5345da21ffeb1a4bd8ca761830da" +checksum = "36b573430b67aff7bde8292257494f39343401379bfbda64035ba4918bba7b20" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -665,9 +665,9 @@ dependencies = [ [[package]] name = "bevy_encase_derive" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a20ec101b103f430481112591e280a8fc3f2db6741579f885595372073b749b" +checksum = "d06c9693847a2a6ea61d6b86288dd4d8b6a79f05d4bf6e27b96d4f5c8d552fe4" dependencies = [ "bevy_macro_utils", "encase_derive_impl", @@ -675,9 +675,9 @@ dependencies = [ [[package]] name = "bevy_gilrs" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64d84c2cbc6a027ba2c293752f9508e6777607acb1d98d03c25eb2a80d55372" +checksum = "0422ccb3ce0f79b264100cf064fdc5ef65cef5c7d51bf6378058f9b96fea4183" dependencies = [ "bevy_app", "bevy_ecs", @@ -685,14 +685,14 @@ dependencies = [ "bevy_time", "bevy_utils", "gilrs", - "thiserror", + "thiserror 1.0.63", ] [[package]] name = "bevy_gizmos" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248324352331d719071b0d1545a43e3d63470f4730e75312edee575f210d3a77" +checksum = "dfe32af0666d8d8a7fd6eb6b5e41eceefdc6f2e5441c74b812e8f0902a9d7f52" dependencies = [ "bevy_app", "bevy_asset", @@ -713,21 +713,21 @@ dependencies = [ [[package]] name = "bevy_gizmos_macros" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbe1708bb0e45a1d0fe0f32e998557689231dfe7bdae62083326e8008e97de23" +checksum = "906b052f8cf3f3983f0f6df625fb10cbd9b27d44e362a327dc1ed51300d362bc" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] name = "bevy_gltf" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb57239cb4209e52354268062cd1973892af3a2077ccbdb4d19259cbbc2d2c2d" +checksum = "d6adbd325b90e3c700d0966b5404e226c7deec1b8bda8f36832788d7b435b9b8" dependencies = [ "base64 0.22.1", "bevy_animation", @@ -751,14 +751,14 @@ dependencies = [ "serde", "serde_json", "smallvec", - "thiserror", + "thiserror 1.0.63", ] [[package]] name = "bevy_hierarchy" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb332d2789442ca1577c765977bafefea1dcd4db29479713ec8c6932dfb82cdb" +checksum = "a88b912b37e1bc4dbb2aa40723199f74c8b06c4fbb6da0bb4585131df28ef66e" dependencies = [ "bevy_app", "bevy_core", @@ -770,9 +770,9 @@ dependencies = [ [[package]] name = "bevy_input" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9ce5f27a8729b473205b01927cd6a5c4898a004cb8fcffa7c896e19ba999d98" +checksum = "8dd3a54e67cc3ba17971de7b1a7e64eda84493c1e7bb6bfa11c6cf8ac124377b" dependencies = [ "bevy_app", "bevy_ecs", @@ -780,14 +780,14 @@ dependencies = [ "bevy_reflect", "bevy_utils", "smol_str", - "thiserror", + "thiserror 1.0.63", ] [[package]] name = "bevy_internal" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2463102e46d7d67440dbfe3bc97d34bf529c93191c4f4bb41395f4982062ff3" +checksum = "45d435cac77c568f3aef65f786a5fee0e53c81950c5258182dd2c1d6cd6c4fec" dependencies = [ "bevy_a11y", "bevy_animation", @@ -827,9 +827,9 @@ dependencies = [ [[package]] name = "bevy_log" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f2c0c374af59007396793a51f747f6b10d74ca4acfb080ce0ade267118827b" +checksum = "67240c7596c8f0653e50fce35a60196516817449235193246599facba9002e02" dependencies = [ "android_log-sys", "bevy_app", @@ -842,44 +842,44 @@ dependencies = [ [[package]] name = "bevy_macro_utils" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ec4a585ec2a6dedd4f4143c07219d120ae142121929f0d83e68d82a452cdc9b" +checksum = "bfc65e570012e64a21f3546df68591aaede8349e6174fb500071677f54f06630" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", "toml_edit 0.22.20", ] [[package]] name = "bevy_math" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40253578fe83a5ffe5f4fcb4dfa196b7d9c50f36dc8efaa231a53344bf4b3e57" +checksum = "5421792749dda753ab3718e77d27bfce38443daf1850b836b97530b6245a4581" dependencies = [ "bevy_reflect", "glam", "rand", "serde", "smallvec", - "thiserror", + "thiserror 1.0.63", ] [[package]] name = "bevy_mikktspace" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24a1ad15685c6035e01bdc9d5ea082558ef1438e9d40d69fc552857dd7e83e71" +checksum = "66cf695a264b043f2c4edb92dd5c742e6892180d2b30dac870012d153f8557ea" dependencies = [ "glam", ] [[package]] name = "bevy_pbr" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "588998ba295db4a14dec54e571f272490f2885e5aaac59191fb4fa32a25835d0" +checksum = "4dccaa3c945f19834dcf7cd8eb358236dbf0fc4000dacbc7710564e7856714db" dependencies = [ "bevy_app", "bevy_asset", @@ -902,29 +902,17 @@ dependencies = [ "static_assertions", ] -[[package]] -name = "bevy_prototype_lyon" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a59b46da5bccc6d86c6047cfc81b8e9027f5b98e24b8721e8e1453c1d05371" -dependencies = [ - "bevy", - "lyon_algorithms", - "lyon_tessellation", - "svgtypes", -] - [[package]] name = "bevy_ptr" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ed72afbb6249a6803a3ed7bd2f68ff080d9392f550475e050b34c1e1c1e3e8f" +checksum = "61baa1bdc1f4a7ac2c18217570a7cc04e1cd54d38456e91782f0371c79afe0a8" [[package]] name = "bevy_reflect" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb37e8fc3c61d04da480c95cc8c303aa7781afed6be01dae333b336af493c38e" +checksum = "2508785a4a5809f25a237eec4fee2c91a4dbcf81324b2bbc2d6c52629e603781" dependencies = [ "bevy_ptr", "bevy_reflect_derive", @@ -936,28 +924,28 @@ dependencies = [ "serde", "smallvec", "smol_str", - "thiserror", + "thiserror 1.0.63", "uuid", ] [[package]] name = "bevy_reflect_derive" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc00d5086f5bf534b4c2dbeba549a6b8d3223515f3cb5ba4fdaabe953ec6cea" +checksum = "967d5da1882ec3bb3675353915d3da909cafac033cbf31e58727824a1ad2a288" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", "uuid", ] [[package]] name = "bevy_render" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f570f36154296ae5377587d5ef19e1feb4c5734923785c571f55a9fff091701" +checksum = "836cf8a513db013cbe7d55a331060088efd407e49fd5b05c8404700cd82e7619" dependencies = [ "async-channel", "bevy_app", @@ -995,7 +983,7 @@ dependencies = [ "send_wrapper", "serde", "smallvec", - "thiserror", + "thiserror 1.0.63", "wasm-bindgen", "web-sys", "wgpu", @@ -1003,21 +991,21 @@ dependencies = [ [[package]] name = "bevy_render_macros" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe2d5008c7b4a8a516ef7b58452b8e40e4c2317068fc7505398bedf34e8d45f7" +checksum = "cbc24e0e95061a38a7744218b9c7e52e4c08b53f1499f33480e2b749f3864432" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] name = "bevy_scene" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3910087f6fc45e7833fb62e4de282c36a7012ff381c0584eb2cc84dede02e72f" +checksum = "8ec57a72d75273bdbb6154390688fd07ba79ae9f6f99476d1937f799c736c2da" dependencies = [ "bevy_app", "bevy_asset", @@ -1029,15 +1017,15 @@ dependencies = [ "bevy_transform", "bevy_utils", "serde", - "thiserror", + "thiserror 1.0.63", "uuid", ] [[package]] name = "bevy_sprite" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fffdfb9a18968c8606286b6be83c9323ff9008b5cc043a23a3ecc95ff72fb20c" +checksum = "e045b4d8cc8e7422a4c29b1eadbe224f5cc42f170b88d43e7535892fcede3840" dependencies = [ "bevy_app", "bevy_asset", @@ -1056,14 +1044,14 @@ dependencies = [ "guillotiere", "radsort", "rectangle-pack", - "thiserror", + "thiserror 1.0.63", ] [[package]] name = "bevy_state" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21066e7bb8014d1b1dd4f611f28c0f4ea9c7738cec2325281e4260a65072d509" +checksum = "25335bfa58cc22371182335c3b133017293bc9b6d3308402fd4d1f978b83f937" dependencies = [ "bevy_app", "bevy_ecs", @@ -1075,21 +1063,21 @@ dependencies = [ [[package]] name = "bevy_state_macros" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a449823c420d1cc1fa6cf3d484570b08358e5eeedc1b86de1efcf9c10399b5" +checksum = "dee600b659c739f1911f997a81611fec0a1832cf731727956e5fa4e7532b4dd5" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] name = "bevy_tasks" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f5414c3f49c96e02ceccf5fa12fb6cfbf8b271d2a820902d6f622e9c2fa681" +checksum = "77865f310b1fc48fb05b7c4adbe76607ec01d0c14f8ab4caba4d714c86439946" dependencies = [ "async-channel", "async-executor", @@ -1100,9 +1088,9 @@ dependencies = [ [[package]] name = "bevy_text" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e77dd86def15f5380e6e7c178ec54e5e356b3f464e2ad35794a08d5ecb82e4" +checksum = "b661db828fd423fc41a4ccf43aa4d1b8e50e75057ec40453317d0d761e8ad62d" dependencies = [ "ab_glyph", "bevy_app", @@ -1118,42 +1106,42 @@ dependencies = [ "bevy_window", "glyph_brush_layout", "serde", - "thiserror", + "thiserror 1.0.63", ] [[package]] name = "bevy_time" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3fb18cfac62098e07786e422e84b4f45f469f27ccb5b572b409500bef465f33" +checksum = "f4e4d53ec32a1b16492396951d04de0d2d90e924bf9adcb8d1adacab5ab6c17c" dependencies = [ "bevy_app", "bevy_ecs", "bevy_reflect", "bevy_utils", "crossbeam-channel", - "thiserror", + "thiserror 1.0.63", ] [[package]] name = "bevy_transform" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff09cea0dd0d4e6a3ed5f7dcbd4fbbcec07e518ceb64a4c8a75dedbe294ab60" +checksum = "d5493dce84427d00a9266e8e4386d738a72ee8640423b62dfcecb6dfccbfe0d2" dependencies = [ "bevy_app", "bevy_ecs", "bevy_hierarchy", "bevy_math", "bevy_reflect", - "thiserror", + "thiserror 1.0.63", ] [[package]] name = "bevy_ui" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50684629a03b7d4891b5953e84dd971c7a8bbd290751bab5ce06e119b692220b" +checksum = "56d2cba6603b39a3765f043212ae530e25550af168a7eec6b23b9b93c19bc5f7" dependencies = [ "bevy_a11y", "bevy_app", @@ -1176,14 +1164,14 @@ dependencies = [ "nonmax", "smallvec", "taffy", - "thiserror", + "thiserror 1.0.63", ] [[package]] name = "bevy_utils" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6efbe5a621b56cc4ffa41074929eca84107e242302496b9bb7550675e6bf2e7" +checksum = "ffb0ec333b5965771153bd746f92ffd8aeeb9d008a8620ffd9ed474859381a5e" dependencies = [ "ahash", "bevy_utils_proc_macros", @@ -1196,20 +1184,20 @@ dependencies = [ [[package]] name = "bevy_utils_proc_macros" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36a1e91b4294cad2d08620ac062509395d4f65247b636946d6497eaeccf4dbfd" +checksum = "38f1ab8f2f6f58439d260081d89a42b02690e5fdd64f814edc9417d33fcf2857" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] name = "bevy_window" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba11880f05a3b267ecfa4149fe789b0c046c35fd8418dd8899fad3a4359c986" +checksum = "c89e88a20db64ea8204540afb4699295947c454738fd50293f7b32ab8be857a6" dependencies = [ "bevy_a11y", "bevy_app", @@ -1223,9 +1211,9 @@ dependencies = [ [[package]] name = "bevy_winit" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5aeb4b2e3b1ece189fcf37ea2de625ceab93e6ac2a14d4b15b0393351e4c18b" +checksum = "d0bef8ec3e4b45db943ad4d1c0bf59b09e382ce0651a706e2f33a70fa955303c" dependencies = [ "accesskit_winit", "approx", @@ -1266,7 +1254,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -1363,7 +1351,7 @@ checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -1395,7 +1383,7 @@ dependencies = [ "polling", "rustix", "slab", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -1804,7 +1792,7 @@ dependencies = [ "const_panic", "encase_derive", "glam", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -1824,7 +1812,7 @@ checksum = "fd31dbbd9743684d339f907a87fe212cb7b51d75b9e8e74181fe363199ee9b47" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -1975,12 +1963,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "float_next_after" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" - [[package]] name = "fnv" version = "1.0.7" @@ -2005,7 +1987,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -2184,7 +2166,7 @@ dependencies = [ "inflections", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -2246,7 +2228,7 @@ checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" dependencies = [ "log", "presser", - "thiserror", + "thiserror 1.0.63", "winapi", "windows 0.52.0", ] @@ -2308,7 +2290,7 @@ dependencies = [ "com", "libc", "libloading 0.8.5", - "thiserror", + "thiserror 1.0.63", "widestring", "winapi", ] @@ -2335,6 +2317,19 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" +[[package]] +name = "hexlab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "538df606c368ad8b02f7ce78c3edf0d8b26e5f984e2bc31f063f0b1e34fb6576" +dependencies = [ + "bevy", + "hexx", + "rand", + "rand_chacha", + "thiserror 2.0.3", +] + [[package]] name = "hexx" version = "0.18.0" @@ -2470,7 +2465,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.63", "walkdir", "windows-sys 0.45.0", ] @@ -2551,15 +2546,6 @@ dependencies = [ "bitflags 1.3.2", ] -[[package]] -name = "kurbo" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd85a5776cd9500c2e2059c8c76c3b01528566b7fcbaf8098b55a33fc298849b" -dependencies = [ - "arrayvec", -] - [[package]] name = "lazy_static" version = "1.5.0" @@ -2609,12 +2595,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "libm" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" - [[package]] name = "libredox" version = "0.0.2" @@ -2664,48 +2644,6 @@ version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" -[[package]] -name = "lyon_algorithms" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3bca95f9a4955b3e4a821fbbcd5edfbd9be2a9a50bb5758173e5358bfb4c623" -dependencies = [ - "lyon_path", - "num-traits", -] - -[[package]] -name = "lyon_geom" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edecfb8d234a2b0be031ab02ebcdd9f3b9ee418fb35e265f7a540a48d197bff9" -dependencies = [ - "arrayvec", - "euclid", - "num-traits", -] - -[[package]] -name = "lyon_path" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c08a606c7a59638d6c6aa18ac91a06aa9fb5f765a7efb27e6a4da58700740d7" -dependencies = [ - "lyon_geom", - "num-traits", -] - -[[package]] -name = "lyon_tessellation" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579d42360a4b09846eff2feef28f538696c7d6c7439bfa65874ff3cbe0951b2c" -dependencies = [ - "float_next_after", - "lyon_path", - "num-traits", -] - [[package]] name = "mach2" version = "0.4.2" @@ -2735,11 +2673,11 @@ dependencies = [ [[package]] name = "maze-ascension" -version = "0.0.5" +version = "0.1.0" dependencies = [ "bevy", "bevy-inspector-egui", - "bevy_prototype_lyon", + "hexlab", "hexx", "log", "rand", @@ -2822,7 +2760,7 @@ dependencies = [ "rustc-hash", "spirv", "termcolor", - "thiserror", + "thiserror 1.0.63", "unicode-xid", ] @@ -2841,7 +2779,7 @@ dependencies = [ "regex", "regex-syntax 0.8.4", "rustc-hash", - "thiserror", + "thiserror 1.0.63", "tracing", "unicode-ident", ] @@ -2857,7 +2795,7 @@ dependencies = [ "log", "ndk-sys 0.5.0+25.2.9519653", "num_enum", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -2872,7 +2810,7 @@ dependencies = [ "ndk-sys 0.6.0+11769913", "num_enum", "raw-window-handle", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -2993,7 +2931,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -3003,7 +2941,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", - "libm", ] [[package]] @@ -3024,7 +2961,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -3371,7 +3308,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -3627,7 +3564,7 @@ checksum = "d1fceb9d127d515af1586d8d0cc601e1245bdb0af38e75c865a156290184f5b3" dependencies = [ "cpal", "lewton", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -3734,7 +3671,7 @@ checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -3770,12 +3707,6 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - [[package]] name = "slab" version = "0.4.9" @@ -3814,7 +3745,7 @@ dependencies = [ "log", "memmap2", "rustix", - "thiserror", + "thiserror 1.0.63", "wayland-backend", "wayland-client", "wayland-csd-frame", @@ -3861,16 +3792,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20e16a0f46cf5fd675563ef54f26e83e20f2366bcf027bcb3cc3ed2b98aaf2ca" -[[package]] -name = "svgtypes" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71499ff2d42f59d26edb21369a308ede691421f79ebc0f001e2b1fd3a7c9e52" -dependencies = [ - "kurbo", - "siphasher", -] - [[package]] name = "syn" version = "1.0.109" @@ -3884,9 +3805,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.72" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -3935,7 +3856,16 @@ version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.63", +] + +[[package]] +name = "thiserror" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +dependencies = [ + "thiserror-impl 2.0.3", ] [[package]] @@ -3946,7 +3876,18 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] @@ -4057,7 +3998,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -4247,7 +4188,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -4281,7 +4222,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4492,7 +4433,7 @@ dependencies = [ "raw-window-handle", "rustc-hash", "smallvec", - "thiserror", + "thiserror 1.0.63", "web-sys", "wgpu-hal", "wgpu-types", @@ -4536,7 +4477,7 @@ dependencies = [ "renderdoc-sys", "rustc-hash", "smallvec", - "thiserror", + "thiserror 1.0.63", "wasm-bindgen", "web-sys", "wgpu-types", @@ -4663,7 +4604,7 @@ checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -4674,7 +4615,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -4685,7 +4626,7 @@ checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -4696,7 +4637,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] [[package]] @@ -5098,5 +5039,5 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.87", ] diff --git a/Cargo.toml b/Cargo.toml index 0878cca..e4b23c0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "maze-ascension" authors = ["Kristofers Solo "] -version = "0.0.5" +version = "0.1.0" edition = "2021" [dependencies] @@ -18,7 +18,7 @@ tracing = { version = "0.1", features = [ "release_max_level_warn", ] } hexx = { version = "0.18", features = ["bevy_reflect", "grid"] } -bevy_prototype_lyon = "0.12" +hexlab = { version = "0.1", features = ["bevy"] } bevy-inspector-egui = { version = "0.27", optional = true } @@ -31,7 +31,7 @@ dev = [ # Improve compile times for dev builds by linking Bevy as a dynamic library. "bevy/dynamic_linking", "bevy/bevy_dev_tools", - "bevy-inspector-egui", + "dep:bevy-inspector-egui", ] dev_native = [ "dev", diff --git a/src/lib.rs b/src/lib.rs index 39223ea..9c126f5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -91,7 +91,7 @@ fn spawn_camera(mut commands: Commands) { commands.spawn(( Name::new("Camera"), Camera3dBundle { - transform: Transform::from_xyz(0., 300., 300.).looking_at(Vec3::ZERO, Vec3::Y), + transform: Transform::from_xyz(200., 200., 0.).looking_at(Vec3::ZERO, Vec3::Y), ..default() }, // Render all UI to this camera. diff --git a/src/maze/grid.rs b/src/maze/grid.rs deleted file mode 100644 index babf67b..0000000 --- a/src/maze/grid.rs +++ /dev/null @@ -1,220 +0,0 @@ -use bevy::{ - color::palettes::css::{BLACK, GREEN, RED}, - pbr::wireframe::{WireframeConfig, WireframePlugin}, - prelude::*, - utils::hashbrown::HashMap, -}; -use bevy_prototype_lyon::{ - draw::{Fill, Stroke}, - entity::ShapeBundle, - path::PathBuilder, - plugin::ShapePlugin, -}; -use hexx::{EdgeDirection, Hex}; -use rand::{prelude::SliceRandom, rngs::ThreadRng, thread_rng}; - -use super::{ - resource::{Layout, MazeConfig, HEX_SIZE}, - tile::{Tile, TileBundle, Walls}, -}; - -pub(super) fn plugin(app: &mut App) { - app.add_plugins((ShapePlugin, WireframePlugin)); - app.init_resource::(); - app.init_resource::(); - app.insert_resource(WireframeConfig { - global: false, - ..default() - }); -} - -pub(super) fn _spawn_hex_grid(mut commands: Commands, config: Res) { - let radius = config.radius as i32; - - for q in -radius..=radius { - let r1 = (-radius).max(-q - radius); - let r2 = radius.min(-q + radius); - for r in r1..=r2 { - let tile = Tile::new(q, r); - commands.spawn(( - Name::new(format!("Tile {}", &tile.to_string())), - TileBundle { - hex: tile, - ..default() - }, - )); - } - } -} - -pub(super) fn _generate_maze( - mut commands: Commands, - query: Query<(Entity, &Tile, &Walls)>, - config: Res, -) { - let mut tiles = query - .into_iter() - .map(|(entity, tile, walls)| (tile.hex, (entity, tile.clone(), walls.clone()))) - .collect(); - - let mut rng = thread_rng(); - _recursive_maze(&mut tiles, config.start_pos, &mut rng); - - for (entity, tile, walls) in tiles.values() { - commands - .entity(*entity) - .insert(tile.clone()) - .insert(walls.clone()); - } -} - -fn _recursive_maze( - tiles: &mut HashMap, - current_hex: Hex, - rng: &mut ThreadRng, -) { - { - let (_, tile, _) = tiles.get_mut(¤t_hex).unwrap(); - tile._visit(); - } - - let mut directions = EdgeDirection::ALL_DIRECTIONS; - directions.shuffle(rng); - - for direction in directions.into_iter() { - let neighbor_hex = current_hex + direction; - if let Some((_, neighbor_tile, _)) = tiles.get(&neighbor_hex) { - if !neighbor_tile.visited { - _remove_wall_between(tiles, current_hex, neighbor_hex, direction); - _recursive_maze(tiles, neighbor_hex, rng); - } - } - } -} - -fn _remove_wall_between( - tiles: &mut HashMap, - current_hex: Hex, - neighbor_hex: Hex, - direction: EdgeDirection, -) { - { - let (_, _, walls) = tiles.get_mut(¤t_hex).unwrap(); - walls.0[direction.index() as usize] = false; - } - { - let (_, _, walls) = tiles.get_mut(&neighbor_hex).unwrap(); - walls.0[direction.const_neg().index() as usize] = false; - } -} - -fn _add_hex_tile( - commands: &mut Commands, - position: Vec3, - size: f32, - tile: &Tile, - walls: &Walls, - fill_color: Color, - layout: &Layout, -) { - let hex_points = tile - .hex - .all_vertices() - .into_iter() - .map(|v| { - let mut layout = layout.clone(); - layout.origin = position.xy(); - layout.hex_size = Vec2::splat(size); - layout.hex_to_world_pos(v.origin + v.direction) - }) - .collect::>(); - - let mut path_builder = PathBuilder::new(); - path_builder.move_to(hex_points[0]); - for point in &hex_points[1..] { - path_builder.line_to(*point); - } - path_builder.close(); - let hexagon = path_builder.build(); - - // Create the hexagon fill - commands - .spawn(( - ShapeBundle { - path: hexagon, - spatial: SpatialBundle { - transform: Transform::from_xyz(position.x, position.y, 0.), - ..default() - }, - ..default() - }, - Fill::color(fill_color), - )) - .with_children(|p| { - p.spawn(Text2dBundle { - text: Text { - sections: vec![TextSection { - value: tile.to_string(), - style: TextStyle { - font_size: 16., - color: Color::BLACK, - ..default() - }, - }], - ..default() - }, - transform: Transform::from_xyz(position.x * 2., position.y * 2., 1.), - ..default() - }); - }); - - // Draw walls - for direction in EdgeDirection::iter() { - let idx = direction.index() as usize; - if walls[idx] { - let start = hex_points[idx]; - let end = hex_points[(idx + 1) % 6]; - let mut line_builder = PathBuilder::new(); - line_builder.move_to(start); - line_builder.line_to(end); - let line = line_builder.build(); - - commands.spawn(( - ShapeBundle { - path: line, - spatial: SpatialBundle { - transform: Transform::from_xyz(position.x, position.y, 1.), - ..default() - }, - ..default() - }, - Stroke::new(BLACK, 2.), - )); - } - } -} - -pub(super) fn _render_maze( - mut commands: Commands, - query: Query<(&Tile, &mut Walls)>, - layout: Res, - config: Res, -) { - for (tile, walls) in query.iter() { - let world_pos = layout.hex_to_world_pos(tile.hex).extend(0.); - let fill_color = match tile.hex { - pos if pos == config.start_pos => GREEN.into(), - pos if pos == config.end_pos => RED.into(), - _ => Color::srgb(0.8, 0.8, 0.8), - }; - _add_hex_tile( - &mut commands, - world_pos, - HEX_SIZE, - tile, - walls, - fill_color, - &layout, - ); - } -} diff --git a/src/maze/mod.rs b/src/maze/mod.rs index c3266d1..94f0bdd 100644 --- a/src/maze/mod.rs +++ b/src/maze/mod.rs @@ -1,10 +1,8 @@ use bevy::{ecs::world::Command, prelude::*}; use plugin::MazePlugin; -pub mod grid; pub mod plugin; pub mod prism; pub mod resource; -pub mod tile; pub fn spawn_grid(world: &mut World) { MazePlugin.apply(world); diff --git a/src/maze/plugin.rs b/src/maze/plugin.rs index d59f509..ad31ce9 100644 --- a/src/maze/plugin.rs +++ b/src/maze/plugin.rs @@ -3,7 +3,7 @@ use bevy::{ prelude::*, }; -use super::{grid, prism}; +use super::prism; #[derive(Default)] pub(crate) struct MazePlugin; @@ -11,7 +11,7 @@ pub(crate) struct MazePlugin; impl Plugin for MazePlugin { fn build(&self, app: &mut App) { app.add_plugins(prism::plugin); - app.add_plugins(grid::plugin); + // app.add_plugins(grid::plugin); // app.insert_resource(AmbientLight { // brightness: f32::MAX, // color: Color::WHITE, diff --git a/src/maze/prism.rs b/src/maze/prism.rs index 0310a0a..cc3e7e8 100644 --- a/src/maze/prism.rs +++ b/src/maze/prism.rs @@ -1,13 +1,14 @@ +use super::resource::{Layout, MazeConfig, HEX_SIZE}; use bevy::prelude::*; use core::f32; -use std::f32::consts::{FRAC_PI_2, FRAC_PI_3}; +use hexlab::prelude::*; +use hexx::{HexLayout, HexOrientation}; +use std::f32::consts::{FRAC_PI_2, FRAC_PI_3, FRAC_PI_6}; -use super::{ - resource::{Layout, MazeConfig, HEX_SIZE}, - tile::Tile, -}; - -pub(super) fn plugin(_app: &mut App) {} +pub(super) fn plugin(app: &mut App) { + app.init_resource::(); + app.init_resource::(); +} const WALL_SIZE: f32 = 1.0; pub(super) fn setup( @@ -17,10 +18,14 @@ pub(super) fn setup( config: Res, layout: Res, ) { - let radius = config.radius as i32; + let maze = MazeBuilder::new() + .with_radius(config.radius) + // .with_seed(0) + .with_generator(GeneratorType::RecursiveBacktracking) + .build() + .expect("Something went wrong while creating maze"); let assets = create_base_assets(&mut meshes, &mut materials, &config); - // spawn_single_hex_tile(&mut commands, &assets, &config); commands .spawn(( Name::new("Floor"), @@ -30,44 +35,47 @@ pub(super) fn setup( }, )) .with_children(|parent| { - for q in -radius..=radius { - let r1 = (-radius).max(-q - radius); - let r2 = radius.min(-q + radius); - for r in r1..=r2 { - let tile = Tile::new(q, r); - spawn_single_hex_tile(parent, &tile, &layout, &assets, &config); - } + for tile in maze.values() { + spawn_single_hex_tile(parent, &assets, tile, &layout.0, config.height) } }); } fn spawn_single_hex_tile( parent: &mut ChildBuilder, - tile: &Tile, - layout: &Res, assets: &MazeAssets, - config: &Res, + tile: &HexTile, + layout: &HexLayout, + hex_height: f32, ) { - let pos = tile.to_vec3(layout); + let world_pos = tile.to_vec3(layout); + let rotation = match layout.orientation { + HexOrientation::Pointy => Quat::from_rotation_y(0.0), + HexOrientation::Flat => Quat::from_rotation_y(FRAC_PI_6), // 30 degrees rotation + }; + parent .spawn(( - Name::new(format!("Hex {}", &tile.to_string())), + Name::new(format!("Hex {}", tile.to_string())), PbrBundle { mesh: assets.hex_mesh.clone(), material: assets.hex_material.clone(), - transform: Transform::from_translation(pos), + transform: Transform::from_translation(world_pos).with_rotation(rotation), ..default() }, )) - .with_children(|parent| spawn_walls(parent, assets, config)); + .with_children(|parent| spawn_walls(parent, assets, hex_height / 2., &tile.walls())); } -fn spawn_walls(parent: &mut ChildBuilder, asstets: &MazeAssets, config: &Res) { - let y_offset = config.height / 2.; +fn spawn_walls(parent: &mut ChildBuilder, assets: &MazeAssets, y_offset: f32, walls: &Walls) { let z_rotation = Quat::from_rotation_z(-FRAC_PI_2); for i in 0..6 { - let wall_angle = FRAC_PI_3 * i as f32; + if !walls.contains(i) { + continue; + } + + let wall_angle = -FRAC_PI_3 * i as f32; let x_offset = (HEX_SIZE - WALL_SIZE) * f32::cos(wall_angle); let z_offset = (HEX_SIZE - WALL_SIZE) * f32::sin(wall_angle); @@ -76,7 +84,7 @@ fn spawn_walls(parent: &mut ChildBuilder, asstets: &MazeAssets, config: &Res Self { let mut rng = thread_rng(); - let radius = 11; + let radius = 7; let start_pos = Hex::new( rng.gen_range(-radius..radius), rng.gen_range(-radius..radius), @@ -43,7 +43,7 @@ pub struct Layout(pub HexLayout); impl FromWorld for Layout { fn from_world(_world: &mut World) -> Self { Self(HexLayout { - orientation: HexOrientation::Pointy, + orientation: HexOrientation::Flat, hex_size: Vec2::splat(HEX_SIZE), ..default() }) diff --git a/src/maze/tile.rs b/src/maze/tile.rs deleted file mode 100644 index 7c75af7..0000000 --- a/src/maze/tile.rs +++ /dev/null @@ -1,55 +0,0 @@ -use std::fmt::Display; - -use bevy::prelude::*; -use hexx::{Hex, HexLayout}; - -#[derive(Debug, Reflect, Component, Default, PartialEq, Eq, Hash, Clone)] -#[reflect(Component)] -pub struct Tile { - pub hex: Hex, - pub visited: bool, -} - -#[derive(Debug, Reflect, Component, Deref, DerefMut, Clone)] -#[reflect(Component)] -pub struct Walls(pub [bool; 6]); - -#[derive(Debug, Reflect, Bundle, Default)] -pub struct TileBundle { - pub hex: Tile, - pub walls: Walls, -} - -impl Tile { - pub fn new(q: i32, r: i32) -> Self { - Self { - hex: Hex::new(q, r), - visited: false, - } - } - - pub fn _visit(&mut self) { - self.visited = true; - } - - pub fn to_vec2(&self, layout: &HexLayout) -> Vec2 { - layout.hex_to_world_pos(self.hex) - } - - pub fn to_vec3(&self, layout: &HexLayout) -> Vec3 { - let pos = self.to_vec2(layout); - Vec3::new(pos.x, 0., pos.y) - } -} - -impl Display for Tile { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "({},{})", self.hex.x, self.hex.y) - } -} - -impl Default for Walls { - fn default() -> Self { - Self([true; 6]) - } -}