From 4a1f0e3ac2f1f6bbe4f77d4e81884cf318b9f9b2 Mon Sep 17 00:00:00 2001 From: andriyDev Date: Sat, 21 Feb 2026 12:36:27 -0800 Subject: [PATCH 1/4] Flip polygons in `bevy_mesh_to_landmass_nav_mesh` for flipped coordinate systems. --- crates/bevy_landmass/src/nav_mesh.rs | 12 ++++++++---- crates/bevy_landmass/src/nav_mesh_test.rs | 14 ++++++++------ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/crates/bevy_landmass/src/nav_mesh.rs b/crates/bevy_landmass/src/nav_mesh.rs index 17bc346d..3361e964 100644 --- a/crates/bevy_landmass/src/nav_mesh.rs +++ b/crates/bevy_landmass/src/nav_mesh.rs @@ -45,10 +45,12 @@ pub fn bevy_mesh_to_landmass_nav_mesh( assert!(indices.len() % 3 == 0); let mut polygons = Vec::with_capacity(indices.len() / 3); for i in (0..indices.len()).step_by(3) { + let (b, c) = + if CS::FLIP_POLYGONS { (i + 2, i + 1) } else { (i + 1, i + 2) }; polygons.push(vec![ indices[i] as usize, - indices[i + 1] as usize, - indices[i + 2] as usize, + indices[b] as usize, + indices[c] as usize, ]); } polygons @@ -57,10 +59,12 @@ pub fn bevy_mesh_to_landmass_nav_mesh( assert!(indices.len() % 3 == 0); let mut polygons = Vec::with_capacity(indices.len() / 3); for i in (0..indices.len()).step_by(3) { + let (b, c) = + if CS::FLIP_POLYGONS { (i + 2, i + 1) } else { (i + 1, i + 2) }; polygons.push(vec![ indices[i] as usize, - indices[i + 1] as usize, - indices[i + 2] as usize, + indices[b] as usize, + indices[c] as usize, ]); } polygons diff --git a/crates/bevy_landmass/src/nav_mesh_test.rs b/crates/bevy_landmass/src/nav_mesh_test.rs index 77b94908..2c0e4b34 100644 --- a/crates/bevy_landmass/src/nav_mesh_test.rs +++ b/crates/bevy_landmass/src/nav_mesh_test.rs @@ -105,15 +105,17 @@ fn converts_u32_indices() { ] ); + // ThreeD sets `FLIP_POLYGONS`, so the polygons end up flipped here (and then + // flipped back during validation). assert_eq!( nav_mesh.polygons, vec![ - vec![0, 1, 2], - vec![2, 3, 0], - vec![3, 2, 4], - vec![3, 4, 5], - vec![4, 2, 6], - vec![4, 6, 7], + vec![0, 2, 1], + vec![2, 0, 3], + vec![3, 4, 2], + vec![3, 5, 4], + vec![4, 6, 2], + vec![4, 7, 6], ] ); } From 77f94ffb52a8d87a35ea1811b3b487f0fc74eac4 Mon Sep 17 00:00:00 2001 From: andriyDev Date: Sat, 21 Feb 2026 13:12:27 -0800 Subject: [PATCH 2/4] Fix the playground example using the wrong winding order for nav mesh. --- crates/bevy_landmass/assets/playground.glb | Bin 13452 -> 13452 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/crates/bevy_landmass/assets/playground.glb b/crates/bevy_landmass/assets/playground.glb index fa831d810606d3e05768bb0270282cbb196dc1ab..52658190336c710541971389bdd0a5dea3787047 100644 GIT binary patch delta 852 zcmb7?xlRIM6orp4ERF*XqJTS_h=Rx>D2q^8*;^YMLt|%+4}ggVAHdqq*z1E?=r<%p zjAC#m=bM|{`R}=hq2KLy?@qkcLa|UT-Jh<`6rV3`Gt@aae|QzwtNVIb4;}-N!BfC; zbmla^T9axGV_%rz3_^(&TkNs6&Ox|QHWBZ@= zk1z9b6);@Auokq4=C!W4HsPi=WXPi!j47%urImphwKapO7kU*@Ui&J*g7#EYMP*o4 zNr$S*f|lmEEd^mv0WE7qYj91g>S#wfnCod5^RN;yp(Lx!%LQF>vqDHVw1;a5+bA-) z-SiFQVdSz*Xlj=AQ}RRqFh-Jj>nJXtmYCr~AswqlkYki4f>*s9j~v_NNl}9}Hm@+u zgeG~GI9P!d(&bgx5j-OKhMH=?1}1gbgiShrmT18iCRuIsn`Kc(RUP0`Mb3Zw=FRzf NT!VMpe)+I(Q=iV~n=k+X delta 1188 zcmb`F-7-Q^7>3_|Ws5dSp;Ue%JCS}Q$&n*B;mmaC!0~ngnPIpQ(|KK(1D?u|nbI~| zGwbPFYt8!J_g(E)v($ z%N_{-_Pn3zJH6X~sGWV(?b~^m+YV_-VdkK0$gCVs&&O-Tx+_}zAR|j$|An0G)!Y6ERWpK ztq{^Nnb6cCcD%?&nWFM>?qzytH7f%eG)`eX00Y`0Mv8t3=B8%2Z$eWMof9GhGpZ9M zE8F77B2Ny-6<8rvksJmzXdWR|5f*8XBWV>@b;?^MRD(60v8wiY#wtMbI;>-2519sR ZXjf&@W?@z(B7A*w&u^yLem5VsJ^&WTuG0Vj From 4a65db814798060140226e8eded4632306be8f08 Mon Sep 17 00:00:00 2001 From: andriyDev Date: Sat, 21 Feb 2026 13:21:13 -0800 Subject: [PATCH 3/4] Update the changelog. --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e98b27c..bbabf19a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ ### Migration Guide +## `bevy_landmass` [0.11.1] - 2026-02-21 + +### Fixes + +- `bevy_mesh_to_landmass_nav_mesh` now correctly orients faces. + ## `bevy_landmass` [0.11.0] / `landmass_rerecast` [0.2.0] - 2026-01-29 ### Migration Guide From 43ea56f2b396279fef521212ef951070b3d3939b Mon Sep 17 00:00:00 2001 From: andriyDev Date: Sat, 21 Feb 2026 13:21:31 -0800 Subject: [PATCH 4/4] Bump bevy_landmass version to 0.11.1. --- crates/bevy_landmass/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/bevy_landmass/Cargo.toml b/crates/bevy_landmass/Cargo.toml index 4f79b57e..6cfdc0ef 100644 --- a/crates/bevy_landmass/Cargo.toml +++ b/crates/bevy_landmass/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_landmass" -version = "0.11.0" +version = "0.11.1" edition = "2024" description = "A plugin for Bevy to handle navigation of AI characters."