summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/src/draw_flags.rs4
-rw-r--r--engine/src/renderer/opengl.rs24
2 files changed, 18 insertions, 10 deletions
diff --git a/engine/src/draw_flags.rs b/engine/src/draw_flags.rs
index c8c11c9..23ea22f 100644
--- a/engine/src/draw_flags.rs
+++ b/engine/src/draw_flags.rs
@@ -47,3 +47,7 @@ pub enum PolygonModeFace
#[default]
FrontAndBack,
}
+
+/// Component that makes a object not be drawn.
+#[derive(Debug, Clone, Copy, Component)]
+pub struct NoDraw;
diff --git a/engine/src/renderer/opengl.rs b/engine/src/renderer/opengl.rs
index 108c504..911f0df 100644
--- a/engine/src/renderer/opengl.rs
+++ b/engine/src/renderer/opengl.rs
@@ -7,6 +7,7 @@ use std::process::abort;
use cstr::cstr;
use ecs::component::local::Local;
+use ecs::query::options::{Not, With};
use ecs::sole::Single;
use ecs::system::{Into as _, System};
use ecs::{Component, Query};
@@ -14,7 +15,7 @@ use ecs::{Component, Query};
use crate::camera::Camera;
use crate::color::Color;
use crate::data_types::dimens::Dimens;
-use crate::draw_flags::{DrawFlags, PolygonModeConfig};
+use crate::draw_flags::{DrawFlags, NoDraw, PolygonModeConfig};
use crate::event::{Present as PresentEvent, Start as StartEvent};
use crate::lighting::{DirectionalLight, GlobalLight, PointLight};
use crate::material::{Flags as MaterialFlags, Material};
@@ -96,15 +97,18 @@ fn initialize(window: Single<Window>)
}
fn render(
- query: Query<(
- Mesh,
- ShaderProgram,
- Material,
- Option<MaterialFlags>,
- Option<Position>,
- Option<Scale>,
- Option<DrawFlags>,
- )>,
+ query: Query<
+ (
+ Mesh,
+ ShaderProgram,
+ Material,
+ Option<MaterialFlags>,
+ Option<Position>,
+ Option<Scale>,
+ Option<DrawFlags>,
+ ),
+ Not<With<NoDraw>>,
+ >,
point_light_query: Query<(PointLight,)>,
directional_lights: Query<(DirectionalLight,)>,
camera_query: Query<(Camera,)>,