Files
viseq/src/signal-manager.h
T

56 lines
1.2 KiB
C++
Raw Normal View History

#pragma once
2024-10-30 14:55:24 +01:00
#include "graph-manager.h"
#include "node.h"
#include "signal.h"
#include "midi.h"
#include <memory>
2024-11-03 03:48:49 +01:00
using namespace VISEQ::GRAPH;
2024-11-03 03:48:49 +01:00
namespace VISEQ::SIGNAL {
typedef std::shared_ptr<Signal> SPTR_Signal;
typedef std::vector<SPTR_Signal> VEC_SPTR_Signal;
class SignalManager : public std::enable_shared_from_this<SignalManager>{
2024-11-03 03:48:49 +01:00
public:
SignalManager() {}
SignalManager(std::shared_ptr<GraphManager> gm, std::mutex *mutex) : mutex(mutex), gm(gm) {}
2024-11-03 03:48:49 +01:00
std::shared_ptr<SignalManager> getPtr(){
return shared_from_this();
}
2024-11-03 03:48:49 +01:00
VISEQ::MIDI::Midi midi;
std::mutex *mutex;
std::shared_ptr<GraphManager> gm;
2024-11-03 03:48:49 +01:00
VEC_SPTR_Signal signals;
VEC_SPTR_Signal erase_signals;
2024-11-03 03:48:49 +01:00
bool loop = true;
bool play = false;
2026-01-05 02:56:30 +01:00
void pause();
void stop();
void start();
void reset();
void startSignalThread();
void stopSignalThread();
void addSignalAtNode(WPTR_Node node);
void rerouteSignal(VEC_SPTR_Node nodes, VEC_WPTR_Node adjacent_nodes);
void rebaseSignal(VEC_SPTR_Node nodes);
void removeSignal(std::shared_ptr<Signal> s);
void updateSignals();
void drawSignals(Vec2Df mouse_pos, Camera2D camera);
NLOHMANN_DEFINE_TYPE_INTRUSIVE(SignalManager, signals)
2024-11-07 00:56:33 +01:00
2024-11-03 03:48:49 +01:00
};
}