MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ write_mesh()

void MayaFlux::Buffers::DataWriteProcessor::write_mesh ( Kakshya::MeshData  data,
std::string  slot = {} 
)

Write mesh geometry to the attached buffer's authoritative copy.

A MeshBuffer takes it as its MeshData, and a GeometryBuffer driven by a MeshWriterNode sets it on that node. A MeshNetworkBuffer needs slot to name the slot whose node is set. No transform is applied.

Definition at line 127 of file DataWriteProcessor.cpp.

128{
129 auto mesh = std::make_shared<Kakshya::MeshData>(std::move(data));
130 enqueue_write([mesh, slot = std::move(slot)](DataWriteProcessor&, const std::shared_ptr<VKBuffer>& vk) {
131 if (const auto mesh_buffer = std::dynamic_pointer_cast<MeshBuffer>(vk)) {
132 mesh_buffer->set_mesh_data(std::move(*mesh));
133 return;
134 }
135
136 if (const auto geometry_buffer = std::dynamic_pointer_cast<GeometryBuffer>(vk)) {
137 if (const auto node = std::dynamic_pointer_cast<Nodes::GpuSync::MeshWriterNode>(
138 geometry_buffer->get_geometry_node())) {
139 node->set_mesh(*mesh);
140 return;
141 }
142 }
143
144 if (const auto network_buffer = std::dynamic_pointer_cast<MeshNetworkBuffer>(vk)) {
145 const auto network = network_buffer->get_network();
146 const auto* found = network ? network->find_slot(slot) : nullptr;
147 if (found && found->node) {
148 found->node->set_mesh(*mesh);
149 return;
150 }
151 }
152
154 "DataWriteProcessor write_mesh needs a MeshBuffer, a GeometryBuffer driven by a MeshWriterNode, "
155 "or a MeshNetworkBuffer with a named slot that has a node");
156 });
157}
#define MF_RT_ERROR(comp, ctx,...)
Core::GlobalNetworkConfig network
Definition Config.cpp:43
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Buffers
Buffers, Managers, processors and processing chains.

References MayaFlux::Journal::BufferProcessing, MayaFlux::Journal::Buffers, enqueue_write(), MF_RT_ERROR, and network.

+ Here is the call graph for this function: