refactored main a bit

This commit is contained in:
Sebastian
2024-10-25 16:41:37 +02:00
parent f2f852e8dc
commit 18f12eb9f3
7 changed files with 438 additions and 233 deletions
+11 -6
View File
@@ -12,11 +12,13 @@
class SignalManager{
public:
SignalManager(AppState *app, ConnectionManager *cm, Midi *midi) : app(app), cm(cm), midi(midi) {}
SignalManager() {}
SignalManager(ConnectionManager *cm, std::mutex *mutex) : mutex(mutex), cm(cm) {}
AppState *app;
Midi midi;
std::mutex *mutex;
ConnectionManager *cm;
Midi *midi;
std::vector<Signal> signals;
@@ -53,10 +55,10 @@ class SignalManager{
void stopSignalThread(){
loop = false;
}
void addSignalAtNode(Node *node){
Color c = {(unsigned char)(232 - (rand() % 120)), (unsigned char)(125 + (int)(rand() % 120)), 62, 255};
signals.emplace(signals.end(), Signal(node->position.x+1, node->position.y+1, 5.0f, app->speed, c)); // position + 1 or else it does not render. why? no idea!
signals.emplace(signals.end(), Signal(node->position.x+1, node->position.y+1, 5.0f, 0, c)); // position + 1 or else it does not render. why? no idea!
signals.back().next = node;
signals.back().last = node;
signals.back().start = node;
@@ -71,6 +73,7 @@ class SignalManager{
while(loop){
std::chrono::duration<double, std::micro> diff = std::chrono::steady_clock::now() - last;
if(diff.count() > 500){
//mutex->lock();
if(play){
for(auto& s : signals){
s.direction = (s.next->position - s.position).norm();
@@ -80,7 +83,7 @@ class SignalManager{
if(n != s.next && n != nullptr) {
for(auto &m : s.next->midi_outs){
if(m.second.enabled) midi->note(m.second.i, s.next->midi_channel, s.next->midi_note, s.next->midi_velocity, s.next->midi_gate);
if(m.second.enabled) midi.note(m.second.i, s.next->midi_channel, s.next->midi_note, s.next->midi_velocity, s.next->midi_gate);
}
s.last = s.next;
s.next = n;
@@ -88,7 +91,9 @@ class SignalManager{
}
}
}
//mutex->unlock();
last = std::chrono::steady_clock::now();
midi.update();
}
}
}