diff --git a/src/connectable.h b/src/connectable.h index 2395499..8559d9d 100644 --- a/src/connectable.h +++ b/src/connectable.h @@ -3,9 +3,10 @@ #include "draggable.h" #include "vmath.h" #include +#include namespace VISEQ::BASE { - class Connectable : public Draggable{ + class Connectable : public Draggable { public: Connectable() {} Connectable(Vec2Df position) : Draggable(position) {} @@ -21,7 +22,7 @@ namespace VISEQ::BASE { virtual void init() { connectables.emplace_back(this); } - + virtual void drag(Vec2Df new_position) override { connecting = true; connecting_position = new_position; diff --git a/src/connector.h b/src/connector.h index 2abafc9..505a7aa 100644 --- a/src/connector.h +++ b/src/connector.h @@ -64,9 +64,9 @@ namespace VISEQ::GRAPH { BASE::Connectable::draw(); float opacity = 150.0f - Clamp(position.dist(SCREEN_MOUSE), 0.0f, 150.0f); - /*if(partner){*/ - /* DrawLineV(position, partner->position, VS_COLOR_RED);*/ - /*}*/ + if(partner){ + DrawLineV(position, partner->position, VS_COLOR_RED); + } if(hovering()){ DrawCircle(position.x, position.y, 8.0f, (Color){108, 203, 237, 255}); diff --git a/src/graph-manager.h b/src/graph-manager.h index 4a71d53..b6e6a91 100644 --- a/src/graph-manager.h +++ b/src/graph-manager.h @@ -71,10 +71,10 @@ namespace VISEQ::GRAPH { edges.emplace_back(std::make_shared()); edges.back()->start = from; edges.back()->end = to; - from->connections.push_back(edges.back()); - to->connections.push_back(edges.back()); edges.back()->start_conn = from->connectors.back(); edges.back()->end_conn = to->connectors.back(); + from->connections.push_back(edges.back()); + to->connections.push_back(edges.back()); } } @@ -222,9 +222,14 @@ namespace VISEQ::GRAPH { } void removeEdges(){ + for(auto edge : remove_edges){ + std::cout << "connectors size: " << edge->start->connectors.size() << std::endl; + std::cout << "use count: " << edge->start_conn.use_count() << std::endl; std::erase(edge->start->connectors, edge->start_conn); std::erase(edge->end->connectors, edge->end_conn); + std::cout << "connectors size: " << edge->start->connectors.size() << std::endl; + std::cout << "use count: " << edge->start_conn.use_count() << std::endl; std::erase(edge->start->connections, edge); std::erase(edge->end->connections, edge); std::erase(edges, edge); diff --git a/src/node.h b/src/node.h index 4398902..ad3eee3 100644 --- a/src/node.h +++ b/src/node.h @@ -41,8 +41,6 @@ namespace VISEQ::GRAPH::NODES { std::vector> neighbors; std::vector> connections; - std::vector> connected_nodes; //TODO: change from node->edge->node to node->node with edge being edge[node->node] - std::vector> connectors; Distribution distributionMode = Distribution::GEOMETRIC;