diff --git a/examples/boids_spatial3D/src/main.cu b/examples/boids_spatial3D/src/main.cu index 4cff832b8..a4c55c656 100644 --- a/examples/boids_spatial3D/src/main.cu +++ b/examples/boids_spatial3D/src/main.cu @@ -361,29 +361,28 @@ int main(int argc, const char ** argv) { message.newVariable("fy"); message.newVariable("fz"); } - { // Boid agent - flamegpu::AgentDescription &agent = model.newAgent("Boid"); - agent.newVariable("x"); - agent.newVariable("y"); - agent.newVariable("z"); - agent.newVariable("fx"); - agent.newVariable("fy"); - agent.newVariable("fz"); - agent.newFunction("outputdata", outputdata).setMessageOutput("location"); - agent.newFunction("inputdata", inputdata).setMessageInput("location"); - } - /** - * Control flow - */ - { // Layer #1 - flamegpu::LayerDescription &layer = model.newLayer(); - layer.addAgentFunction(outputdata); - } - { // Layer #2 - flamegpu::LayerDescription &layer = model.newLayer(); - layer.addAgentFunction(inputdata); - } + // Boid agent + flamegpu::AgentDescription &agent = model.newAgent("Boid"); + agent.newVariable("x"); + agent.newVariable("y"); + agent.newVariable("z"); + agent.newVariable("fx"); + agent.newVariable("fy"); + agent.newVariable("fz"); + flamegpu::AgentFunctionDescription& outputdataDescription = agent.newFunction("outputdata", outputdata); + outputdataDescription.setMessageOutput("location"); + flamegpu::AgentFunctionDescription& inputdataDescription = agent.newFunction("inputdata", inputdata); + inputdataDescription.setMessageInput("location"); + + // Dependency specification + inputdataDescription.dependsOn(outputdataDescription); + + // Identify the root of execution + model.addExecutionRoot(outputdataDescription); + + // Build the execution graph + model.generateLayers(); /**