diff options
Diffstat (limited to 'engine/src')
-rw-r--r-- | engine/src/camera/fly.rs | 17 | ||||
-rw-r--r-- | engine/src/renderer/opengl.rs | 29 | ||||
-rw-r--r-- | engine/src/transform.rs | 6 |
3 files changed, 26 insertions, 26 deletions
diff --git a/engine/src/camera/fly.rs b/engine/src/camera/fly.rs index 087f727..254d020 100644 --- a/engine/src/camera/fly.rs +++ b/engine/src/camera/fly.rs @@ -7,7 +7,7 @@ use ecs::{Component, Query}; use crate::camera::{Active as ActiveCamera, Camera}; use crate::delta_time::DeltaTime; use crate::input::{Cursor, CursorFlags, Key, KeyState, Keys}; -use crate::transform::Position; +use crate::transform::WorldPosition; use crate::util::builder; use crate::vector::{Vec2, Vec3}; @@ -75,7 +75,7 @@ pub struct Options } fn update( - camera_query: Query<(&mut Camera, &mut Position, &mut Fly, &ActiveCamera)>, + camera_query: Query<(&mut Camera, &mut WorldPosition, &mut Fly, &ActiveCamera)>, keys: Single<Keys>, cursor: Single<Cursor>, cursor_flags: Single<CursorFlags>, @@ -84,7 +84,7 @@ fn update( options: Local<Options>, ) { - for (mut camera, mut camera_pos, mut fly_camera, _) in &camera_query { + for (mut camera, mut camera_world_pos, mut fly_camera, _) in &camera_query { if cursor.has_moved && cursor_flags.is_first_move.flag { tracing::debug!("First cursor move"); @@ -122,29 +122,30 @@ fn update( camera.global_up = cam_right.cross(&direction).normalize(); if keys.get_key_state(Key::W) == KeyState::Pressed { - camera_pos.position += + camera_world_pos.position += direction * fly_camera.speed * delta_time.as_secs_f32(); } if keys.get_key_state(Key::S) == KeyState::Pressed { - camera_pos.position -= + camera_world_pos.position -= direction * fly_camera.speed * delta_time.as_secs_f32(); } if keys.get_key_state(Key::A) == KeyState::Pressed { let cam_left = -direction.cross(&Vec3::UP).normalize(); - camera_pos.position += cam_left * fly_camera.speed * delta_time.as_secs_f32(); + camera_world_pos.position += + cam_left * fly_camera.speed * delta_time.as_secs_f32(); } if keys.get_key_state(Key::D) == KeyState::Pressed { let cam_right = direction.cross(&Vec3::UP).normalize(); - camera_pos.position += + camera_world_pos.position += cam_right * fly_camera.speed * delta_time.as_secs_f32(); } - camera.target = camera_pos.position + direction; + camera.target = camera_world_pos.position + direction; } } diff --git a/engine/src/renderer/opengl.rs b/engine/src/renderer/opengl.rs index 00ce2f8..858a899 100644 --- a/engine/src/renderer/opengl.rs +++ b/engine/src/renderer/opengl.rs @@ -65,7 +65,7 @@ use crate::projection::{ClipVolume, Projection}; use crate::renderer::opengl::vertex::{AttributeComponentType, Vertex}; use crate::renderer::RENDER_PHASE; use crate::texture::{Id as TextureId, Texture}; -use crate::transform::{Position, Scale}; +use crate::transform::{Scale, WorldPosition}; use crate::util::{defer, Defer, RefOrValue}; use crate::vector::{Vec2, Vec3}; use crate::window::Window; @@ -76,7 +76,7 @@ type RenderableEntity<'a> = ( &'a Mesh, &'a Material, Option<&'a MaterialFlags>, - Option<&'a Position>, + Option<&'a WorldPosition>, Option<&'a Scale>, Option<&'a DrawFlags>, Option<&'a GlObjects>, @@ -137,16 +137,16 @@ fn initialize(window: Single<Window>) #[allow(clippy::too_many_arguments)] fn render( query: Query<RenderableEntity<'_>, (Without<NoDraw>,)>, - point_light_query: Query<(&PointLight, &Position)>, + point_light_query: Query<(&PointLight, &WorldPosition)>, directional_lights: Query<(&DirectionalLight,)>, - camera_query: Query<(&Camera, &Position, &ActiveCamera)>, + camera_query: Query<(&Camera, &WorldPosition, &ActiveCamera)>, window: Single<Window>, global_light: Single<GlobalLight>, mut gl_objects: Local<GlobalGlObjects>, mut actions: Actions, ) { - let Some((camera, camera_pos, _)) = camera_query.iter().next() else { + let Some((camera, camera_world_pos, _)) = camera_query.iter().next() else { tracing::warn!("No current camera. Nothing will be rendered"); return; }; @@ -190,7 +190,7 @@ fn render( }, shader_program, &camera, - &camera_pos, + &camera_world_pos, window.size().expect("Failed to get window size"), ); @@ -205,7 +205,7 @@ fn render( .map(|(dir_light,)| &**dir_light) .collect::<Vec<_>>() .as_slice(), - &camera_pos, + &camera_world_pos, ); for (index, texture) in material.textures.iter().enumerate() { @@ -442,14 +442,14 @@ fn apply_transformation_matrices( transformation: Transformation, gl_shader_program: &mut GlShaderProgram, camera: &Camera, - camera_pos: &Position, + camera_world_pos: &WorldPosition, window_size: Dimens<u32>, ) { gl_shader_program .set_uniform(c"model", &create_transformation_matrix(transformation)); - let view_matrix = create_view_matrix(camera, &camera_pos.position); + let view_matrix = create_view_matrix(camera, &camera_world_pos.position); gl_shader_program.set_uniform(c"view", &view_matrix); @@ -459,9 +459,8 @@ fn apply_transformation_matrices( window_size.width as f32 / window_size.height as f32, ClipVolume::NegOneToOne, ), - Projection::Orthographic(orthographic_proj) => { - orthographic_proj.to_matrix_rh(&camera_pos.position, ClipVolume::NegOneToOne) - } + Projection::Orthographic(orthographic_proj) => orthographic_proj + .to_matrix_rh(&camera_world_pos.position, ClipVolume::NegOneToOne), }; gl_shader_program.set_uniform(c"projection", &proj_matrix); @@ -476,13 +475,13 @@ fn apply_light<'point_light>( impl Iterator< Item = ( ComponentHandle<'point_light, PointLight>, - ComponentHandle<'point_light, Position>, + ComponentHandle<'point_light, WorldPosition>, ), >, usize, ), directional_lights: &[&DirectionalLight], - camera_pos: &Position, + camera_world_pos: &WorldPosition, ) { debug_assert!( @@ -588,7 +587,7 @@ fn apply_light<'point_light>( gl_shader_program.set_uniform(c"material.shininess", &material.shininess); - gl_shader_program.set_uniform(c"view_pos", &camera_pos.position); + gl_shader_program.set_uniform(c"view_pos", &camera_world_pos.position); } fn set_light_attenuation_uniforms( diff --git a/engine/src/transform.rs b/engine/src/transform.rs index 5e5e296..7c0c941 100644 --- a/engine/src/transform.rs +++ b/engine/src/transform.rs @@ -2,14 +2,14 @@ use ecs::Component; use crate::vector::Vec3; -/// A position in 3D space. +/// A position in world space. #[derive(Debug, Default, Clone, Copy, Component)] -pub struct Position +pub struct WorldPosition { pub position: Vec3<f32>, } -impl From<Vec3<f32>> for Position +impl From<Vec3<f32>> for WorldPosition { fn from(position: Vec3<f32>) -> Self { |