Files
viseq/src/connection-manager.h
T

45 lines
882 B
C++
Raw Normal View History

#pragma once
#include "connection.h"
#include <map>
class ConnectionManager{
public:
ConnectionManager() {}
std::vector<Connection> connections;
std::map<Node*, int> counter;
Node* next(Node* current){
std::vector<Connection*> paths;
for(auto& p : connections){
if((p.v1 == current && p.v1_v2) || (p.v2 == current && p.v2_v1)) {
p.active = false;
paths.push_back(&p);
}
}
if(paths.empty()) return nullptr;
int return_path = 0;
if(counter.find(current) == counter.end()) {
counter[current] = 0;
} else {
counter[current] = (counter[current] + 1) % paths.size();
return_path = counter[current];
}
paths[return_path]->active = true;
return paths[return_path]->v1 == current ? paths[return_path]->v2 : paths[return_path]->v1;
}
void draw(){
for(auto& c : connections){
c.draw();
}
}
};