copy/paste partially. z-index experiments, but not working yet.
This commit is contained in:
+27
-1
@@ -3,11 +3,11 @@
|
||||
#include "datatypes.h"
|
||||
#include "graph-manager.h"
|
||||
#include "midi-node.h"
|
||||
#include "node.h"
|
||||
#include "signal.h"
|
||||
#include "midi.h"
|
||||
|
||||
#include <chrono>
|
||||
#include <locale>
|
||||
#include <memory>
|
||||
#include <thread>
|
||||
|
||||
@@ -75,6 +75,32 @@ namespace VISEQ::SIGNAL {
|
||||
signals.back()->start = node;
|
||||
}
|
||||
|
||||
void rerouteSignal(VEC_SPTR_Node nodes, VEC_SPTR_Node adjacent_nodes){
|
||||
auto reroute_signals = signals | RANGE_FILTER([nodes](SIGNAL::SPTR_Signal s){return std::ranges::contains(nodes, s->next);});
|
||||
|
||||
for(auto s : reroute_signals){
|
||||
float dist = 10000000;
|
||||
SPTR_Node next_node;
|
||||
for(auto n : adjacent_nodes){
|
||||
if(n->position.dist(s->position) < dist) {
|
||||
dist = n->position.dist(s->position);
|
||||
next_node = n;
|
||||
}
|
||||
}
|
||||
s->next = next_node;
|
||||
s->last = next_node;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void rebaseSignal(VEC_SPTR_Node nodes){
|
||||
auto rebase_signals = signals | RANGE_FILTER([nodes](SIGNAL::SPTR_Signal s){return std::ranges::contains(nodes, s->start);});
|
||||
|
||||
for(auto s : rebase_signals){
|
||||
s->start = s->next;
|
||||
}
|
||||
}
|
||||
|
||||
void removeSignal(std::shared_ptr<Signal> s){
|
||||
erase_signals.push_back(s);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user