diff options
author | HampusM <hampus@hampusmat.com> | 2024-08-20 19:44:23 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2024-08-20 19:44:23 +0200 |
commit | 8b724c9f988289c69c46071f46260b6b7aebd812 (patch) | |
tree | d62ffea29390e25ba2fcc66675c262b98fdff375 | |
parent | 681e6f98b6dc21208f702dd33d268e95dae05732 (diff) |
refactor(engine): replace Camera current field with Active component
-rw-r--r-- | engine/src/camera.rs | 6 | ||||
-rw-r--r-- | engine/src/renderer/opengl.rs | 8 |
2 files changed, 7 insertions, 7 deletions
diff --git a/engine/src/camera.rs b/engine/src/camera.rs index 46b7293..66150af 100644 --- a/engine/src/camera.rs +++ b/engine/src/camera.rs @@ -10,7 +10,6 @@ pub struct Camera { pub target: Vec3<f32>, pub global_up: Vec3<f32>, - pub current: bool, pub projection: Projection, } @@ -21,8 +20,11 @@ impl Default for Camera Self { target: Vec3::default(), global_up: Vec3::UP, - current: false, projection: Projection::Perspective(Perspective::default()), } } } + +/// Marker component for cameras that are active. +#[derive(Debug, Default, Clone, Copy, Component)] +pub struct Active; diff --git a/engine/src/renderer/opengl.rs b/engine/src/renderer/opengl.rs index a90c069..292fd94 100644 --- a/engine/src/renderer/opengl.rs +++ b/engine/src/renderer/opengl.rs @@ -13,7 +13,7 @@ use ecs::sole::Single; use ecs::system::{Into as _, System}; use ecs::{Component, Query}; -use crate::camera::Camera; +use crate::camera::{Active as ActiveCamera, Camera}; use crate::color::Color; use crate::data_types::dimens::Dimens; use crate::draw_flags::{DrawFlags, NoDraw, PolygonModeConfig}; @@ -115,16 +115,14 @@ fn render( query: Query<RenderableEntity, Not<With<NoDraw>>>, point_light_query: Query<(PointLight,)>, directional_lights: Query<(DirectionalLight,)>, - camera_query: Query<(Camera, Position)>, + camera_query: Query<(Camera, Position, ActiveCamera)>, window: Single<Window>, global_light: Single<GlobalLight>, mut gl_objects: Local<GlobalGlObjects>, mut actions: Actions, ) { - let Some((camera, camera_pos)) = - camera_query.iter().find(|(camera, _)| camera.current) - else { + let Some((camera, camera_pos, _)) = camera_query.iter().next() else { #[cfg(feature = "debug")] tracing::warn!("No current camera. Nothing will be rendered"); return; |