Trait maplibre::render::graph::node::Node

source ·
pub trait Node: Downcast + Send + Sync + 'static {
    // Required method
    fn run(
        &self,
        graph: &mut RenderGraphContext<'_>,
        render_context: &mut RenderContext<'_>,
        resources: &RenderResources,
        world: &World
    ) -> Result<(), NodeRunError>;

    // Provided methods
    fn input(&self) -> Vec<SlotInfo> { ... }
    fn output(&self) -> Vec<SlotInfo> { ... }
    fn update(&mut self, _state: &mut RenderResources) { ... }
}
Expand description

A render node that can be added to a RenderGraph.

Nodes are the fundamental part of the graph and used to extend its functionality, by generating draw calls and/or running subgraphs. They are added via the render_graph::add_node(my_node) method.

To determine their position in the graph and ensure that all required dependencies (inputs) are already executed, Edges are used.

A node can produce outputs used as dependencies by other nodes. Those inputs and outputs are called slots and are the default way of passing render data inside the graph. For more information see SlotType.

Required Methods§

source

fn run( &self, graph: &mut RenderGraphContext<'_>, render_context: &mut RenderContext<'_>, resources: &RenderResources, world: &World ) -> Result<(), NodeRunError>

Runs the graph node logic, issues draw calls, updates the output slots and optionally queues up subgraphs for execution. The graph data, input and output values are passed via the RenderGraphContext.

Provided Methods§

source

fn input(&self) -> Vec<SlotInfo>

Specifies the required input slots for this node. They will then be available during the run method inside the RenderGraphContext.

source

fn output(&self) -> Vec<SlotInfo>

Specifies the produced output slots for this node. They can then be passed one inside RenderGraphContext during the run method.

source

fn update(&mut self, _state: &mut RenderResources)

Updates internal node state using the current RenderResources prior to the run method.

Implementations§

source§

impl dyn Node

source

pub fn is<__T: Node>(&self) -> bool

Returns true if the trait object wraps an object of type __T.

source

pub fn downcast<__T: Node>(self: Box<Self>) -> Result<Box<__T>, Box<Self>>

Returns a boxed object from a boxed trait object if the underlying object is of type __T. Returns the original boxed trait if it isn’t.

source

pub fn downcast_rc<__T: Node>(self: Rc<Self>) -> Result<Rc<__T>, Rc<Self>>

Returns an Rc-ed object from an Rc-ed trait object if the underlying object is of type __T. Returns the original Rc-ed trait if it isn’t.

source

pub fn downcast_ref<__T: Node>(&self) -> Option<&__T>

Returns a reference to the object within the trait object if it is of type __T, or None if it isn’t.

source

pub fn downcast_mut<__T: Node>(&mut self) -> Option<&mut __T>

Returns a mutable reference to the object within the trait object if it is of type __T, or None if it isn’t.

Implementors§