fishy loss of changes here...

This commit is contained in:
Sebastian
2024-10-30 14:55:24 +01:00
parent c0f5138765
commit f7a13e48b7
8 changed files with 241 additions and 60 deletions
+14 -17
View File
@@ -1,10 +1,8 @@
#pragma once
#include "connection-manager.h"
#include "datatypes.h"
#include "node-manager.h"
#include "graph-manager.h"
#include "signal.h"
#include "node.h"
#include "midi.h"
#include <chrono>
@@ -14,13 +12,12 @@ class SignalManager{
public:
SignalManager() {}
SignalManager(NodeManager *nm, ConnectionManager *cm, std::mutex *mutex) : mutex(mutex), cm(cm), nm(nm) {}
SignalManager(GraphManager *gm, std::mutex *mutex) : mutex(mutex), gm(gm), nm(nm) {}
Midi midi;
std::mutex *mutex;
ConnectionManager *cm;
NodeManager *nm;
GraphManager *gm;
std::vector<Signal> signals;
@@ -42,11 +39,11 @@ class SignalManager{
void reset(){
for(auto &s : signals){
s.position = nm->nodes[s.start].position + Vec2D<float>{0.1, 0.1};
s.position = gm->nodes[s.start].position + Vec2D<float>{0.1, 0.1};
s.next = s.start;
s.last = s.start;
}
cm->reset();
gm->reset();
}
void startSignalThread(){
@@ -60,7 +57,7 @@ class SignalManager{
void addSignalAtNode(int node_id){
Color c = {(unsigned char)(20 + (rand() % 200)), 100, (unsigned char)(20 + (int)(rand() % 200)), 200};
signals.emplace(signals.end(), Signal(nm->nodes[node_id].position.x+1, nm->nodes[node_id].position.y+1, 8.0f, 0, c)); // position + 1 or else it does not render. why? no idea!
signals.emplace(signals.end(), Signal(gm->nodes[node_id].position.x+1, gm->nodes[node_id].position.y+1, 8.0f, 0, c)); // position + 1 or else it does not render. why? no idea!
signals.back().next = node_id;
signals.back().last = node_id;
signals.back().start = node_id;
@@ -78,18 +75,18 @@ class SignalManager{
mutex->lock();
if(play){
for(auto& s : signals){
s.direction = (nm->nodes[s.next].position - s.position).norm();
s.direction = (gm->node(s.next).position - s.position).norm();
s.update(diff.count());
if(s.position.dist(&nm->nodes[s.next].position) < 0.6f) {
int n = cm->next(s.next, s.last);
nm->nodes[s.next].trigger();
if(s.position.dist(&gm->nodes[s.next].position) < 0.6f) {
int n = gm->next(s.next, s.last);
gm->triggerNode(s.next);
if(n != s.next && n != -1) {
for(auto &m : nm->nodes[s.next].midi_outs){
for(auto &m : gm->nodes[s.next].midi_outs){
if(m.second.enabled) {
if(nm->nodes[s.next].send_note) midi.note(m.second.i, nm->nodes[s.next].midi_note_channel, nm->nodes[s.next].midi_note, nm->nodes[s.next].midi_velocity, nm->nodes[s.next].midi_gate);
if(nm->nodes[s.next].send_cc) midi.cc(m.second.i, nm->nodes[s.next].midi_cc_channel, nm->nodes[s.next].midi_cc, nm->nodes[s.next].midi_cc_value);
if(nm->nodes[s.next].send_pitch_bend) midi.pitch_bend(m.second.i, nm->nodes[s.next].midi_pitch_bend_channel, nm->nodes[s.next].midi_pitch_bend);
if(gm->nodes[s.next].send_note) midi.note(m.second.i, gm->nodes[s.next].midi_note_channel, gm->nodes[s.next].midi_note, gm->nodes[s.next].midi_velocity, gm->nodes[s.next].midi_gate);
if(gm->nodes[s.next].send_cc) midi.cc(m.second.i, gm->nodes[s.next].midi_cc_channel, gm->nodes[s.next].midi_cc, gm->nodes[s.next].midi_cc_value);
if(gm->nodes[s.next].send_pitch_bend) midi.pitch_bend(m.second.i, gm->nodes[s.next].midi_pitch_bend_channel, gm->nodes[s.next].midi_pitch_bend);
}
}
s.last = s.next;