19class AudioWriteProcessor;
20class DataWriteProcessor;
41 std::shared_ptr<Buffers::AudioBuffer>
buf;
42 std::shared_ptr<Buffers::AudioWriteProcessor>
writer;
64 std::shared_ptr<Buffers::VKBuffer>
buf;
65 std::shared_ptr<Buffers::DataWriteProcessor>
writer;
66 std::shared_ptr<Buffers::RenderProcessor>
renderer;
69 std::shared_ptr<Core::Window>
window;
86 std::vector<AudioSink>& sinks,
90 std::string fn_name = {});
99 std::vector<AudioSink>& sinks,
100 Buffers::BufferManager& mgr,
109 std::vector<AudioSink>& sinks,
110 std::span<const double> samples);
119 std::vector<AudioSink>& sinks,
120 const InfluenceContext& ctx);
142 std::vector<RenderSink>& sinks,
143 Buffers::BufferManager& mgr,
144 const Portal::Graphics::RenderConfig& config,
146 std::string fn_name = {},
147 const std::optional<glm::vec3>& initial_position = {});
156 std::vector<RenderSink>& sinks,
157 Buffers::BufferManager& mgr,
158 const std::shared_ptr<Core::Window>& window);
167 std::vector<RenderSink>& sinks,
168 const InfluenceContext& ctx);
Token-based multimodal buffer management system for unified data stream processing.
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.
std::function< void(const InfluenceContext &)> RenderFn
void remove_render_sink(std::vector< RenderSink > &sinks, Buffers::BufferManager &mgr, const std::shared_ptr< Core::Window > &window)
Unregister and destroy the render sink targeting window.
void dispatch_render_sinks(std::vector< RenderSink > &sinks, const InfluenceContext &ctx)
For each sink that has a producer fn, call it and push the result.
void push_audio_data(std::vector< AudioSink > &sinks, std::span< const double > samples)
Push samples to every audio sink in sinks.
void dispatch_audio_sinks(std::vector< AudioSink > &sinks, const InfluenceContext &ctx)
For each sink that has a producer fn, call it and push the result.
void add_audio_sink(std::vector< AudioSink > &sinks, Buffers::BufferManager &mgr, uint32_t channel, std::function< Kakshya::DataVariant(const InfluenceContext &)> fn, std::string fn_name)
Create and register an audio sink on channel.
void add_render_sink(std::vector< RenderSink > &sinks, Buffers::BufferManager &mgr, const Portal::Graphics::RenderConfig &config, RenderFn fn, std::string fn_name, const std::optional< glm::vec3 > &initial_position)
Create and register a render sink targeting window.
void remove_audio_sink(std::vector< AudioSink > &sinks, Buffers::BufferManager &mgr, uint32_t channel)
Unregister and destroy the audio sink on channel.
std::function< Kakshya::DataVariant(const InfluenceContext &)> fn
std::shared_ptr< Buffers::AudioWriteProcessor > writer
std::shared_ptr< Buffers::AudioBuffer > buf
Holds the plumbing for one audio output registered from a Nexus object.
Data passed to an Emitter or Agent influence function on each commit.
std::shared_ptr< Buffers::RenderProcessor > renderer
std::shared_ptr< Buffers::DataWriteProcessor > writer
std::shared_ptr< Core::Window > window
std::shared_ptr< Buffers::VKBuffer > buf
Holds the plumbing for one graphics output registered from a Nexus object.