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

◆ build_field()

bool MayaFlux::Evolve::Impl::build_field ( const std::shared_ptr< Nodes::Network::NodeNetwork > &  network,
const Nodes::Network::SpatialFieldConfig &  spatial,
const FieldBinder &  bind,
const RenderConfig &  render 
) const
inline

Definition at line 217 of file Evolve.cpp.

222 {
223 if (!network) {
225 "evolve: null NodeNetwork");
226 return false;
227 }
228
229 if (!has_target(render)) {
230 return false;
231 }
232
233 if (!network->has_operator()) {
234 auto particles = std::dynamic_pointer_cast<Nodes::Network::ParticleNetwork>(network);
235 if (particles && particles->default_operator_enabled()) {
236 particles->create_operator<Nodes::Network::PhysicsOperator>();
237 }
238 }
239
240 const auto* primary = dynamic_cast<const Nodes::Network::GraphicsOperator*>(network->get_operator());
241 if (!primary) {
243 "evolve: network has no primary GraphicsOperator to read a vertex layout from");
244 return false;
245 }
246
247 auto chain = network->get_operator_chain();
248 auto field = chain->find<Nodes::Network::GpuFieldOperator>();
249 if (!field) {
250 field = chain->emplace<Nodes::Network::GpuFieldOperator>(primary->get_vertex_layout(), spatial);
251 } else {
253 "evolve: network already carries a GpuFieldOperator, its SpatialFieldConfig is kept");
254 }
255
256 if (bind) {
257 bind(field);
258 }
259
261
262 auto buffer = std::make_shared<Buffers::NetworkGeometryBuffer>(network);
264 buffer->setup_rendering(render);
265 return true;
266 }
#define MF_ERROR(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
Core::GlobalNetworkConfig network
Definition Config.cpp:43
std::shared_ptr< NetworkGeometryBuffer > buffer
BufferProcessingChain * chain
@ Init
Engine/subsystem initialization.
@ API
MayaFlux/API Wrapper and convenience functions.
@ VISUAL_RATE
Nodes that process at the visual frame rate.
void register_node_network(const std::shared_ptr< Nodes::Network::NodeNetwork > &network, const Nodes::ProcessingToken &token)
Registers a node network with the default engine's node graph manager.
Definition Graph.cpp:208
void register_graphics_buffer(const std::shared_ptr< Buffers::VKBuffer > &buffer, Buffers::ProcessingToken token)
Registers a VKBuffer with the default engine's buffer manager.
Definition Graph.cpp:250

References MayaFlux::Journal::API, buffer, chain, MayaFlux::Journal::Init, MF_ERROR, MF_WARN, network, MayaFlux::register_graphics_buffer(), MayaFlux::register_node_network(), and MayaFlux::Nodes::VISUAL_RATE.

+ Here is the call graph for this function: