From 9254ac2de3fd60cf5ff56f5bd6a9af0dfd93363e Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Tue, 26 Dec 2023 16:24:43 +0100 Subject: [PATCH] Recast: fix:rcBuildLayerRegions missing areaType Merge recastnavitagion/recastnavitagion@ddaa361b0893ddc7602a3bd5c20ad2cfd0a8df7c --- src/thirdparty/recast/Recast/Source/RecastRegion.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/thirdparty/recast/Recast/Source/RecastRegion.cpp b/src/thirdparty/recast/Recast/Source/RecastRegion.cpp index 72651c44..0230a25b 100644 --- a/src/thirdparty/recast/Recast/Source/RecastRegion.cpp +++ b/src/thirdparty/recast/Recast/Source/RecastRegion.cpp @@ -1073,11 +1073,13 @@ static bool mergeAndFilterLayerRegions(rcContext* ctx, int minRegionArea, for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i) { const rcCompactSpan& s = chf.spans[i]; + const unsigned char area = chf.areas[i]; const unsigned short ri = srcReg[i]; if (ri == 0 || ri >= nreg) continue; rcRegion& reg = regions[ri]; reg.spanCount++; + reg.areaType = area; reg.zmin = rcMin(reg.zmin, s.z); reg.zmax = rcMax(reg.zmax, s.z); @@ -1158,6 +1160,9 @@ static bool mergeAndFilterLayerRegions(rcContext* ctx, int minRegionArea, // Skip already visited. if (regn.id != 0) continue; + // Skip if different area type, do not connect regions with different area type. + if (reg.areaType != regn.areaType) + continue; // Skip if the neighbour is overlapping root region. bool overlap = false; for (int k = 0; k < root.floors.size(); k++)