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 bevy_camera::primitives::Aabb;
use bevy_ecs::prelude::*;
use bevy_ecs::query::QueryData;
use bevy_mesh::Mesh3d;
use bevy_pbr::prelude::*;
use bevy_transform::prelude::*;

#[cfg(feature = "avian")]
use avian3d::prelude::*;

#[derive(QueryData)]
#[query_data()]
pub struct CollectableQueryData<T: Material = StandardMaterial> {
    pub entity: Entity,
    pub transform: &'static Transform,
    pub global_transform: &'static GlobalTransform,
    pub o_material: Option<&'static MeshMaterial3d<T>>,
    pub o_mesh: Option<&'static Mesh3d>,
    pub o_aabb: Option<&'static Aabb>,
    pub o_children: Option<&'static Children>,
    pub o_wind_config: Option<&'static WindConfig>,
    pub o_name: Option<&'static Name>,
    pub o_lod: Option<&'static LevelOfDetail>,
    pub o_wind_affected: Option<&'static WindAffected>,

    #[cfg(feature = "avian")]
    pub o_rigid_body: Option<&'static RigidBody>,
    #[cfg(feature = "avian")]
    pub o_collider: Option<&'static Collider>,
    #[cfg(feature = "avian")]
    pub o_scatter_body: Option<&'static ScatterPhysicsBody>,

    pub material_options: MaterialOptionData,
    pub wind_data: WindOptionData<'static>,
}