From 9f4addb0576d8c0afd884f1c948f491d6e0708bc Mon Sep 17 00:00:00 2001 From: HampusM Date: Tue, 21 Apr 2026 15:46:24 +0200 Subject: feat(engine): add renderer extension --- engine/src/renderer.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'engine/src/renderer.rs') diff --git a/engine/src/renderer.rs b/engine/src/renderer.rs index bdbbe0c..6ef1535 100644 --- a/engine/src/renderer.rs +++ b/engine/src/renderer.rs @@ -63,6 +63,49 @@ declare_entity!( (Phase, Pair::builder().relation::().target_id(*RENDER_PHASE).build()) ); +builder! { +#[builder(name=ExtensionBuilder, derives=(Debug, Clone, Default))] +#[derive(Debug, Clone)] +#[non_exhaustive] +pub struct Extension {} +} + +impl Extension +{ + pub fn builder() -> ExtensionBuilder + { + ExtensionBuilder::default() + } +} + +impl ecs::extension::Extension for Extension +{ + fn collect(self, mut collector: ecs::extension::Collector<'_>) + { + collector.add_declared_entity(&PRE_RENDER_PHASE); + collector.add_declared_entity(&RENDER_PHASE); + collector.add_declared_entity(&POST_RENDER_PHASE); + + let _ = collector.add_sole(RenderPasses::default()); + + collector.add_system(*PRE_RENDER_PHASE, main_render_pass::add_main_render_passes); + + collector.add_system(*RENDER_PHASE, enqueue_commands_from_render_passes); + + collector.add_observer(handle_window_changed); + + opengl::Extension::default().collect(collector); + } +} + +impl Default for Extension +{ + fn default() -> Self + { + Self::builder().build() + } +} + builder! { /// Window graphics properties. #[builder(name=GraphicsPropertiesBuilder, derives=(Debug, Clone))] -- cgit v1.2.3-18-g5258