diff options
Diffstat (limited to 'ToolAddPolygon.cpp')
-rw-r--r-- | ToolAddPolygon.cpp | 28 |
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(); |