Merge pull request #48921 from timothyqiu/polypartition-stl
Fix STL to Godot type convertion of polypartition
This commit is contained in:
commit
8c2beeea90
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/thirdparty/misc/polypartition.cpp b/thirdparty/misc/polypartition.cpp
|
diff --git a/thirdparty/misc/polypartition.cpp b/thirdparty/misc/polypartition.cpp
|
||||||
index 3a8a6efa8319..4f1b6dcb21d8 100644
|
index 3a8a6efa83..5e94793b79 100644
|
||||||
--- a/thirdparty/misc/polypartition.cpp
|
--- a/thirdparty/misc/polypartition.cpp
|
||||||
+++ b/thirdparty/misc/polypartition.cpp
|
+++ b/thirdparty/misc/polypartition.cpp
|
||||||
@@ -23,10 +23,7 @@
|
@@ -23,10 +23,7 @@
|
||||||
|
@ -510,7 +510,7 @@ index 3a8a6efa8319..4f1b6dcb21d8 100644
|
||||||
- return 0;
|
- return 0;
|
||||||
- }
|
- }
|
||||||
- numvertices += iter->GetNumPoints();
|
- numvertices += iter->GetNumPoints();
|
||||||
+ for (iter = inpolys->front(); iter; iter++) {
|
+ for (iter = inpolys->front(); iter; iter = iter->next()) {
|
||||||
+ numvertices += iter->get().GetNumPoints();
|
+ numvertices += iter->get().GetNumPoints();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,7 +521,7 @@ index 3a8a6efa8319..4f1b6dcb21d8 100644
|
||||||
polystartindex = 0;
|
polystartindex = 0;
|
||||||
- for (iter = inpolys->begin(); iter != inpolys->end(); iter++) {
|
- for (iter = inpolys->begin(); iter != inpolys->end(); iter++) {
|
||||||
- poly = &(*iter);
|
- poly = &(*iter);
|
||||||
+ for (iter = inpolys->front(); iter; iter++) {
|
+ for (iter = inpolys->front(); iter; iter = iter->next()) {
|
||||||
+ poly = &(iter->get());
|
+ poly = &(iter->get());
|
||||||
polyendindex = polystartindex + poly->GetNumPoints() - 1;
|
polyendindex = polystartindex + poly->GetNumPoints() - 1;
|
||||||
for (i = 0; i < poly->GetNumPoints(); i++) {
|
for (i = 0; i < poly->GetNumPoints(); i++) {
|
||||||
|
@ -569,7 +569,7 @@ index 3a8a6efa8319..4f1b6dcb21d8 100644
|
||||||
newedge.p2 = v->p;
|
newedge.p2 = v->p;
|
||||||
edgeIter = edgeTree.lower_bound(newedge);
|
edgeIter = edgeTree.lower_bound(newedge);
|
||||||
- if (edgeIter == edgeTree.begin()) {
|
- if (edgeIter == edgeTree.begin()) {
|
||||||
+ if (edgeIter == edgeTree.front()) {
|
+ if (edgeIter == nullptr || edgeIter == edgeTree.front()) {
|
||||||
error = true;
|
error = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -606,7 +606,7 @@ index 3a8a6efa8319..4f1b6dcb21d8 100644
|
||||||
newedge.p2 = v->p;
|
newedge.p2 = v->p;
|
||||||
edgeIter = edgeTree.lower_bound(newedge);
|
edgeIter = edgeTree.lower_bound(newedge);
|
||||||
- if (edgeIter == edgeTree.begin()) {
|
- if (edgeIter == edgeTree.begin()) {
|
||||||
+ if (edgeIter == edgeTree.front()) {
|
+ if (edgeIter == nullptr || edgeIter == edgeTree.front()) {
|
||||||
error = true;
|
error = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -648,7 +648,7 @@ index 3a8a6efa8319..4f1b6dcb21d8 100644
|
||||||
newedge.p2 = v->p;
|
newedge.p2 = v->p;
|
||||||
edgeIter = edgeTree.lower_bound(newedge);
|
edgeIter = edgeTree.lower_bound(newedge);
|
||||||
- if (edgeIter == edgeTree.begin()) {
|
- if (edgeIter == edgeTree.begin()) {
|
||||||
+ if (edgeIter == edgeTree.front()) {
|
+ if (edgeIter == nullptr || edgeIter == edgeTree.front()) {
|
||||||
error = true;
|
error = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -716,7 +716,7 @@ index 3a8a6efa8319..4f1b6dcb21d8 100644
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
diff --git a/thirdparty/misc/polypartition.h b/thirdparty/misc/polypartition.h
|
diff --git a/thirdparty/misc/polypartition.h b/thirdparty/misc/polypartition.h
|
||||||
index f163f5d2173f..b2d905a3ef76 100644
|
index f163f5d217..b2d905a3ef 100644
|
||||||
--- a/thirdparty/misc/polypartition.h
|
--- a/thirdparty/misc/polypartition.h
|
||||||
+++ b/thirdparty/misc/polypartition.h
|
+++ b/thirdparty/misc/polypartition.h
|
||||||
@@ -24,8 +24,9 @@
|
@@ -24,8 +24,9 @@
|
||||||
|
|
10
thirdparty/misc/polypartition.cpp
vendored
10
thirdparty/misc/polypartition.cpp
vendored
|
@ -1289,7 +1289,7 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||||
bool error = false;
|
bool error = false;
|
||||||
|
|
||||||
numvertices = 0;
|
numvertices = 0;
|
||||||
for (iter = inpolys->front(); iter; iter++) {
|
for (iter = inpolys->front(); iter; iter = iter->next()) {
|
||||||
numvertices += iter->get().GetNumPoints();
|
numvertices += iter->get().GetNumPoints();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1298,7 +1298,7 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||||
newnumvertices = numvertices;
|
newnumvertices = numvertices;
|
||||||
|
|
||||||
polystartindex = 0;
|
polystartindex = 0;
|
||||||
for (iter = inpolys->front(); iter; iter++) {
|
for (iter = inpolys->front(); iter; iter = iter->next()) {
|
||||||
poly = &(iter->get());
|
poly = &(iter->get());
|
||||||
polyendindex = polystartindex + poly->GetNumPoints() - 1;
|
polyendindex = polystartindex + poly->GetNumPoints() - 1;
|
||||||
for (i = 0; i < poly->GetNumPoints(); i++) {
|
for (i = 0; i < poly->GetNumPoints(); i++) {
|
||||||
|
@ -1408,7 +1408,7 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||||
newedge.p1 = v->p;
|
newedge.p1 = v->p;
|
||||||
newedge.p2 = v->p;
|
newedge.p2 = v->p;
|
||||||
edgeIter = edgeTree.lower_bound(newedge);
|
edgeIter = edgeTree.lower_bound(newedge);
|
||||||
if (edgeIter == edgeTree.front()) {
|
if (edgeIter == nullptr || edgeIter == edgeTree.front()) {
|
||||||
error = true;
|
error = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1449,7 +1449,7 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||||
newedge.p1 = v->p;
|
newedge.p1 = v->p;
|
||||||
newedge.p2 = v->p;
|
newedge.p2 = v->p;
|
||||||
edgeIter = edgeTree.lower_bound(newedge);
|
edgeIter = edgeTree.lower_bound(newedge);
|
||||||
if (edgeIter == edgeTree.front()) {
|
if (edgeIter == nullptr || edgeIter == edgeTree.front()) {
|
||||||
error = true;
|
error = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1494,7 +1494,7 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||||
newedge.p1 = v->p;
|
newedge.p1 = v->p;
|
||||||
newedge.p2 = v->p;
|
newedge.p2 = v->p;
|
||||||
edgeIter = edgeTree.lower_bound(newedge);
|
edgeIter = edgeTree.lower_bound(newedge);
|
||||||
if (edgeIter == edgeTree.front()) {
|
if (edgeIter == nullptr || edgeIter == edgeTree.front()) {
|
||||||
error = true;
|
error = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue