aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2018-04-22 00:59:45 +0200
committerShauren <shauren.trinity@gmail.com>2018-04-22 00:59:45 +0200
commita4892d64fe2433814e92c39cfe9b0c425c08aae5 (patch)
tree6bf3ad0d0f59084271c2143f6dbf4b0e2093692b
parent577466bcfd90281bba3d1316a6f17a71e316dede (diff)
Dep/Recast: Fixed area type merges
-rw-r--r--dep/recastnavigation/Recast/Source/RecastRasterization.cpp8
-rw-r--r--dep/recastnavigation/recastnavigation_2_area_merge.diff25
2 files changed, 29 insertions, 4 deletions
diff --git a/dep/recastnavigation/Recast/Source/RecastRasterization.cpp b/dep/recastnavigation/Recast/Source/RecastRasterization.cpp
index a4cef749098..2ffffae8b06 100644
--- a/dep/recastnavigation/Recast/Source/RecastRasterization.cpp
+++ b/dep/recastnavigation/Recast/Source/RecastRasterization.cpp
@@ -122,16 +122,16 @@ static bool addSpan(rcHeightfield& hf, const int x, const int y,
}
else
{
+ // Merge flags.
+ if (rcAbs((int)s->smax - (int)cur->smax) <= flagMergeThr)
+ s->area = rcMax(s->area, cur->area);
+
// Merge spans.
if (cur->smin < s->smin)
s->smin = cur->smin;
if (cur->smax > s->smax)
s->smax = cur->smax;
- // Merge flags.
- if (rcAbs((int)s->smax - (int)cur->smax) <= flagMergeThr)
- s->area = rcMax(s->area, cur->area);
-
// Remove current span.
rcSpan* next = cur->next;
freeSpan(hf, cur);
diff --git a/dep/recastnavigation/recastnavigation_2_area_merge.diff b/dep/recastnavigation/recastnavigation_2_area_merge.diff
new file mode 100644
index 00000000000..9b6bf3424f8
--- /dev/null
+++ b/dep/recastnavigation/recastnavigation_2_area_merge.diff
@@ -0,0 +1,25 @@
+diff --git a/dep/recastnavigation/Recast/Source/RecastRasterization.cpp b/dep/recastnavigation/Recast/Source/RecastRasterization.cpp
+index a4cef74909..2ffffae8b0 100644
+--- a/dep/recastnavigation/Recast/Source/RecastRasterization.cpp
++++ b/dep/recastnavigation/Recast/Source/RecastRasterization.cpp
+@@ -122,16 +122,16 @@ static bool addSpan(rcHeightfield& hf, const int x, const int y,
+ }
+ else
+ {
++ // Merge flags.
++ if (rcAbs((int)s->smax - (int)cur->smax) <= flagMergeThr)
++ s->area = rcMax(s->area, cur->area);
++
+ // Merge spans.
+ if (cur->smin < s->smin)
+ s->smin = cur->smin;
+ if (cur->smax > s->smax)
+ s->smax = cur->smax;
+
+- // Merge flags.
+- if (rcAbs((int)s->smax - (int)cur->smax) <= flagMergeThr)
+- s->area = rcMax(s->area, cur->area);
+-
+ // Remove current span.
+ rcSpan* next = cur->next;
+ freeSpan(hf, cur);