Files
viseq/src/signal-manager.h
T

59 lines
1.4 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)
2026-01-12 00:16:36 +01:00
friend void from_json(const json& j, std::shared_ptr<SignalManager>& G);
friend void to_json(json& j, const std::shared_ptr<SignalManager>& G);
2024-11-03 03:48:49 +01:00
};
}