bevy_feronia 0.8.2

Foliage/grass scattering tools and wind simulation shaders/materials that prioritize visual fidelity/artistic freedom, a declarative api and modularity.
Documentation
use crate::prelude::*;
use crate::scatter::observers::*;
use bevy_ecs::prelude::*;

#[cfg(feature = "trace")]
use tracing::debug;

pub fn on_add_scatter_root<T>(trigger: On<Add, ScatterRoot>, mut cmd: Commands)
where
    T: ScatterMaterial,
{
    let root = trigger.entity;

    #[cfg(feature = "trace")]
    debug!("Added ScatterRoot {root}.");

    cmd.entity(root)
        .insert(HierarchicalScatterState::<T>::default())
        .observe(scatter_root::<T>)
        .observe(hierarchical_scatter::<T>)
        .observe(scatter_observer::<T>);
}