|
MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
|
Object that acts on existing MayaFlux objects when committed. More...
#include <Emitter.hpp>
Collaboration diagram for MayaFlux::Nexus::Emitter:Public Types | |
| using | InfluenceFn = std::function< void(const InfluenceContext &)> |
Public Member Functions | |
| const std::vector< AudioSink > & | audio_sinks () const |
| void | clear_color () |
| Clear the color, resetting it to an unset state. | |
| void | clear_influence_target () |
| Disconnect from the current influence target. | |
| void | clear_position () |
| Clear the position, removing this object from spatial queries. | |
| void | clear_size () |
| Clear the size, resetting it to an unset state. | |
| const std::optional< glm::vec3 > & | color () const |
| Get the current color, if set. | |
| Emitter (InfluenceFn fn) | |
| Construct with an influence function. | |
| Emitter (std::string fn_name, InfluenceFn fn) | |
| Construct with a named influence function. | |
| const InfluenceFn & | fn () const |
| The influence function itself. | |
| const std::string & | fn_name () const |
| Identifier assigned to the influence function, empty if anonymous. | |
| std::shared_ptr< Buffers::RenderProcessor > | get_render_processor (const std::shared_ptr< Core::Window > &window) const |
| uint32_t | id () const |
| Return the stable object id assigned by Fabric. | |
| std::weak_ptr< Buffers::RenderProcessor > | influence_target () const |
| Return the current influence target, if set. | |
| float | intensity () const |
| Get the current intensity. | |
| void | invoke (const InfluenceContext &ctx) const |
| Invoke the influence function with the supplied context. | |
| const std::optional< glm::vec3 > & | position () const |
| Return the current position, if set. | |
| float | radius () const |
| Get the current radius. | |
| void | remove_audio_sink (Buffers::BufferManager &mgr, uint32_t channel) |
Unregister the audio sink on channel. | |
| void | remove_render (Buffers::BufferManager &mgr, const std::shared_ptr< Core::Window > &window) |
Unregister the render sink targeting window. | |
| void | render (Buffers::BufferManager &mgr, const Portal::Graphics::RenderConfig &config) |
Register a render output targeting window. | |
| void | render (Buffers::BufferManager &mgr, const Portal::Graphics::RenderConfig &config, std::string fn_name, RenderFn fn) |
Register a render output targeting window with a producer function. | |
| const std::vector< RenderSink > & | render_sinks () const |
| void | set_audio_data (std::span< const double > samples) |
Push samples to all registered audio sinks. | |
| void | set_color (const glm::vec3 &c) |
| Set the color, a general-purpose parameter for influence functions. | |
| void | set_fn_name (std::string name) |
| Set or replace the influence function's identifier. | |
| void | set_influence_target (std::shared_ptr< Buffers::RenderProcessor > proc) |
| Set the render processor to target for GPU-side influence delivery. | |
| void | set_intensity (float i) |
| Set the intensity, a general-purpose parameter for influence functions. | |
| void | set_position (const glm::vec3 &p) |
| Set the position, enabling spatial indexing for this object. | |
| void | set_radius (float r) |
| Set the radius, a general-purpose parameter for influence functions. | |
| void | set_size (float s) |
| Set the size, a general-purpose parameter for influence functions. | |
| void | set_vertices (const void *data, size_t byte_count, const Kakshya::VertexLayout &layout) |
| Push pre-resolved vertex bytes to all registered render sinks. | |
| template<typename T > | |
| void | set_vertices (std::span< const T > vertices) |
| Push typed vertex data to all registered render sinks. | |
| void | sink_audio (Buffers::BufferManager &mgr, uint32_t channel) |
Register an audio output on channel. | |
| void | sink_audio (Buffers::BufferManager &mgr, uint32_t channel, std::function< Kakshya::DataVariant(const InfluenceContext &)> fn, std::string fn_name="") |
Register an audio output on channel with a producer function. | |
| const std::optional< float > & | size () const |
| Get the current size, if set. | |
Private Member Functions | |
| void | upload_influence_ubo (const InfluenceContext &ctx) const |
Private Attributes | |
| std::vector< AudioSink > | m_audio_sinks |
| std::optional< glm::vec3 > | m_color |
| InfluenceFn | m_fn |
| std::string | m_fn_name |
| uint32_t | m_id {} |
| std::shared_ptr< Buffers::RenderProcessor > | m_influence_target |
| std::shared_ptr< Buffers::VKBuffer > | m_influence_ubo |
| float | m_intensity { 1.0F } |
| std::optional< glm::vec3 > | m_position |
| float | m_radius { 1.0F } |
| std::vector< RenderSink > | m_render_sinks |
| std::optional< float > | m_size |
Friends | |
| class | Fabric |
Object that acts on existing MayaFlux objects when committed.
Constructed with only an influence function. Position is optional: call set_position before registering with Fabric if spatial indexing is required. Entities without a position are committed normally but are not inserted into the spatial index.
The id is assigned by Fabric::wire and is stable for the object's lifetime. It is zero until the object has been registered.
Definition at line 26 of file Emitter.hpp.