Connector shared_ptr keeps one owner and i don't know where it is!

This commit is contained in:
Sebastian
2024-12-01 00:55:59 +01:00
parent c63ee3eabe
commit b6a049ea0d
4 changed files with 13 additions and 9 deletions
+2 -1
View File
@@ -3,9 +3,10 @@
#include "draggable.h" #include "draggable.h"
#include "vmath.h" #include "vmath.h"
#include <memory> #include <memory>
#include <vector>
namespace VISEQ::BASE { namespace VISEQ::BASE {
class Connectable : public Draggable{ class Connectable : public Draggable {
public: public:
Connectable() {} Connectable() {}
Connectable(Vec2Df position) : Draggable(position) {} Connectable(Vec2Df position) : Draggable(position) {}
+3 -3
View File
@@ -64,9 +64,9 @@ namespace VISEQ::GRAPH {
BASE::Connectable::draw(); BASE::Connectable::draw();
float opacity = 150.0f - Clamp(position.dist(SCREEN_MOUSE), 0.0f, 150.0f); float opacity = 150.0f - Clamp(position.dist(SCREEN_MOUSE), 0.0f, 150.0f);
/*if(partner){*/ if(partner){
/* DrawLineV(position, partner->position, VS_COLOR_RED);*/ DrawLineV(position, partner->position, VS_COLOR_RED);
/*}*/ }
if(hovering()){ if(hovering()){
DrawCircle(position.x, position.y, 8.0f, (Color){108, 203, 237, 255}); DrawCircle(position.x, position.y, 8.0f, (Color){108, 203, 237, 255});
+7 -2
View File
@@ -71,10 +71,10 @@ namespace VISEQ::GRAPH {
edges.emplace_back(std::make_shared<Edge>()); edges.emplace_back(std::make_shared<Edge>());
edges.back()->start = from; edges.back()->start = from;
edges.back()->end = to; 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()->start_conn = from->connectors.back();
edges.back()->end_conn = to->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(){ void removeEdges(){
for(auto edge : remove_edges){ 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->start->connectors, edge->start_conn);
std::erase(edge->end->connectors, edge->end_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->start->connections, edge);
std::erase(edge->end->connections, edge); std::erase(edge->end->connections, edge);
std::erase(edges, edge); std::erase(edges, edge);
-2
View File
@@ -41,8 +41,6 @@ namespace VISEQ::GRAPH::NODES {
std::vector<std::shared_ptr<Node>> neighbors; std::vector<std::shared_ptr<Node>> neighbors;
std::vector<std::shared_ptr<VISEQ::GRAPH::EDGES::Edge>> connections; std::vector<std::shared_ptr<VISEQ::GRAPH::EDGES::Edge>> connections;
std::vector<std::shared_ptr<Node>> connected_nodes; //TODO: change from node->edge->node to node->node with edge being edge[node->node]
std::vector<std::shared_ptr<Connector>> connectors; std::vector<std::shared_ptr<Connector>> connectors;
Distribution distributionMode = Distribution::GEOMETRIC; Distribution distributionMode = Distribution::GEOMETRIC;