summaryrefslogtreecommitdiffstats
path: root/ToolAddPolygon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ToolAddPolygon.cpp')
-rw-r--r--ToolAddPolygon.cpp28
1 files changed, 21 insertions, 7 deletions
diff --git a/ToolAddPolygon.cpp b/ToolAddPolygon.cpp
index 3c63fb7..8e68939 100644
--- a/ToolAddPolygon.cpp
+++ b/ToolAddPolygon.cpp
@@ -20,6 +20,7 @@ void ToolAddPolygon::activate() {
}
void ToolAddPolygon::deactivate() {
+ newRoom.close();
editManager->addRoom(newRoom);
}
@@ -52,13 +53,26 @@ bool ToolAddPolygon::buttonPress(unsigned int button, const Vertex *v) {
if(button != 1)
return false;
- if(!v)
- return false;
-
- if(!editManager->vertexOk(*v, &newRoom))
- return false;
-
- newRoom.addVertex(*v);
+ if(editManager->getHoveredObject() && editManager->getHoveredObject()->isOfType("LevelVertex")) {
+ LevelVertex *vertex = (LevelVertex*)editManager->getHoveredObject();
+
+ if(!vertex->canConnect())
+ return false;
+
+ if(!editManager->vertexOk(**vertex, &newRoom))
+ return false;
+
+ newRoom.addVertex(*vertex);
+ }
+ else {
+ if(!v)
+ return false;
+
+ if(!editManager->vertexOk(*v, &newRoom))
+ return false;
+
+ newRoom.addVertex(*v);
+ }
editManager->redraw();
sidebar.update();