summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-05-23 00:48:44 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-05-23 00:48:44 -0400
commit10c467f169bf0b678cc906f58c7d97b4961dbff8 (patch)
tree0d7827ffc2ad102c6185fdd735aac99f2b63ea2e
parent2494e4156985bbf15b317f5b0813207683aff9c1 (diff)
downloadsigen-10c467f169bf0b678cc906f58c7d97b4961dbff8.tar.gz
sigen-10c467f169bf0b678cc906f58c7d97b4961dbff8.tar.xz
sigen-10c467f169bf0b678cc906f58c7d97b4961dbff8.zip
Replace destination points with closer ones if found
-rw-r--r--sigmodr/widgets/mapeditor/WorldMapPlacement.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/sigmodr/widgets/mapeditor/WorldMapPlacement.cpp b/sigmodr/widgets/mapeditor/WorldMapPlacement.cpp
index 42911d1f..96eb2fe7 100644
--- a/sigmodr/widgets/mapeditor/WorldMapPlacement.cpp
+++ b/sigmodr/widgets/mapeditor/WorldMapPlacement.cpp
@@ -139,18 +139,22 @@ static CollisionInfo findCollisions(const QPolygon& polygon1, const QPolygon& po
QPoint prevPoint2 = polygon2.last();
foreach (const QPoint& point2, polygon2)
{
+ QPoint target = dummyPoint;
if (nextPoint1 == prevPoint2)
- data[point1] = NextTarget(Include, collinear(point1, nextPoint1, point2) ? point2 : prevPoint2);
+ target = collinear(point1, nextPoint1, point2) ? point2 : prevPoint2;
else if (inOrder(prevPoint2, point1, point2) && inOrder(prevPoint2, nextPoint1, point2))
- data[point1] = NextTarget(Include, point2);
+ target = point2;
else if (inOrder(point1, prevPoint2, nextPoint1) && inOrder(point1, point2, nextPoint1))
- data[point1] = NextTarget(Include, point2);
+ target = point2;
else if (inOrder(prevPoint2, point1, point2))
- data[point1] = NextTarget(Include, point2);
+ target = point2;
else if (inOrder(point1, prevPoint2, nextPoint1))
- data[point1] = NextTarget(Include, prevPoint2);
- if (data.contains(point1))
- break;
+ target = prevPoint2;
+ if (target != dummyPoint)
+ {
+ if (!data.contains(point1) || inOrder(point1, target, data[point1].second))
+ data[point1] = NextTarget(Include, target);
+ }
prevPoint2 = point2;
}
point1 = nextPoint1;