mod draw; mod draw_state; pub use draw::*; pub use draw_state::*; use bevy_ecs::prelude::Query; /// A resource to collect and sort draw requests for specific [`PhaseItems`](PhaseItem). pub struct RenderPhase { pub items: Vec, } impl Default for RenderPhase { fn default() -> Self { Self { items: Vec::new() } } } impl RenderPhase { /// Adds a [`PhaseItem`] to this render phase. #[inline] pub fn add(&mut self, item: I) { self.items.push(item); } /// Sorts all of its [`PhaseItems`](PhaseItem). pub fn sort(&mut self) { self.items.sort_by_key(|d| d.sort_key()); } } /// This system sorts all [`RenderPhases`](RenderPhase) for the [`PhaseItem`] type. pub fn sort_phase_system(mut render_phases: Query<&mut RenderPhase>) { for mut phase in render_phases.iter_mut() { phase.sort(); } }