summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/src/renderer.rs43
-rw-r--r--engine/src/renderer/opengl.rs15
2 files changed, 43 insertions, 15 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)]
diff --git a/engine/src/renderer/opengl.rs b/engine/src/renderer/opengl.rs
index 1cd46b2..4e865fb 100644
--- a/engine/src/renderer/opengl.rs
+++ b/engine/src/renderer/opengl.rs
@@ -94,9 +94,7 @@ use crate::renderer::{
DrawPropertiesUpdateFlags,
GraphicsProperties,
POST_RENDER_PHASE,
- PRE_RENDER_PHASE,
RENDER_PHASE,
- RenderPasses,
SurfaceId,
SurfaceSpec,
WindowUsingRendererCtx,
@@ -161,24 +159,11 @@ 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,
- crate::renderer::main_render_pass::add_main_render_passes,
- );
-
- collector.add_system(*RENDER_PHASE, super::enqueue_commands_from_render_passes);
collector.add_system(*RENDER_PHASE, handle_commands);
collector.add_system(*POST_RENDER_PHASE, prepare_windows);
collector.add_system(*POST_RENDER_PHASE, init_window_graphics);
- collector.add_observer(super::handle_window_changed);
collector.add_observer(handle_window_removed);
}
}