18 std::string name, std::shared_ptr<GpuSync::GeometryWriterNode> node)
21 error<std::invalid_argument>(
23 std::source_location::current(),
24 "InstanceNetwork::add_slot: null GeometryWriterNode for slot '{}'", name);
27 const auto idx =
static_cast<uint32_t
>(
m_slots.size());
31 m_slots.push_back({ .index = idx, .name = std::move(name), .node = std::move(node) });
40 auto it = std::ranges::find_if(
42 return it !=
m_slots.end() ? &*it :
nullptr;
47 auto it = std::ranges::find_if(
49 return it !=
m_slots.end() ? &*it :
nullptr;
62 for (
unsigned int frame = 0; frame < num_samples; ++frame) {
78 for (
const auto& slot :
m_slots) {
80 slot.node->compute_frame();
87 slot.transform = glm::mat4(1.0F);
96 return static_cast<double>(index);
102 meta[
"slot_count"] = std::to_string(
m_slots.size());
GeometrySlot * find_slot(std::string_view name)
uint32_t add_slot(std::string name, std::shared_ptr< GpuSync::GeometryWriterNode > node)
void reset() override
Reset network to initial state.
std::vector< GeometrySlot > m_slots
std::optional< double > get_node_output(size_t index) const override
Get output of specific internal node (for ONE_TO_ONE mapping)
void process_batch(unsigned int num_samples) override
Process the network for the given number of samples.
std::unordered_map< std::string, std::string > get_metadata() const override
Get network metadata for debugging/visualization.
std::shared_ptr< NetworkOperator > m_operator
GeometrySlot & get_slot(uint32_t index)
void set_operator(std::shared_ptr< NetworkOperator > op)
Abstract base for operators that process InstanceNetwork slots.
bool is_enabled() const
Check if network is enabled.
std::shared_ptr< OperatorChain > m_operator_chain
virtual std::unordered_map< std::string, std::string > get_metadata() const
Get network metadata for debugging/visualization.
void set_output_mode(OutputMode mode)
Set the network's output routing mode.
@ Init
Engine/subsystem initialization.
@ Nodes
DSP Generator and Filter Nodes, graph pipeline, node management.
@ GRAPHICS_BIND
State available for visualization (read-only)
std::string short_dynamic_type_name(const T &obj) noexcept
Returns the unqualified dynamic type name of obj.
Peer unit within an InstanceNetwork.