summaryrefslogtreecommitdiff
path: root/engine/src/renderer.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-04-21 15:46:24 +0200
committerHampusM <hampus@hampusmat.com>2026-04-21 15:46:24 +0200
commit9f4addb0576d8c0afd884f1c948f491d6e0708bc (patch)
tree8941b3c7010c529840c2574dd0b15e82f5709b49 /engine/src/renderer.rs
parentac3fedba0239632b350a252b74e520b42912e6e2 (diff)
feat(engine): add renderer extension
Diffstat (limited to 'engine/src/renderer.rs')
-rw-r--r--engine/src/renderer.rs43
1 files changed, 43 insertions, 0 deletions
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
@@ -64,6 +64,49 @@ declare_entity!(
);
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))]
#[derive(Debug, Clone, Component)]