diff options
| author | HampusM <hampus@hampusmat.com> | 2026-07-19 23:13:10 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-07-19 23:13:41 +0200 |
| commit | d094b413b1960e45e16ff2a2247439357ed517bf (patch) | |
| tree | 836f926ba49884e05d00495667398f1e4b6f455f /engine | |
| parent | 69964aeed30af9d39735f229f660be94ce581d0f (diff) | |
refactor(engine): replace DeltaTime with Time from engine-ecs crate
Diffstat (limited to 'engine')
| -rw-r--r-- | engine/src/camera/fly.rs | 16 | ||||
| -rw-r--r-- | engine/src/delta_time.rs | 36 | ||||
| -rw-r--r-- | engine/src/lib.rs | 14 | ||||
| -rw-r--r-- | engine/src/ui/dear_imgui.rs | 7 |
4 files changed, 10 insertions, 63 deletions
diff --git a/engine/src/camera/fly.rs b/engine/src/camera/fly.rs index 18afcb8..166f4fb 100644 --- a/engine/src/camera/fly.rs +++ b/engine/src/camera/fly.rs @@ -1,6 +1,7 @@ +use ecs::time::Time; + use crate::builder; use crate::camera::{Active as ActiveCamera, Camera, Controllable as ControllableCamera}; -use crate::delta_time::DeltaTime; use crate::ecs::actions::Actions; use crate::ecs::component::local::Local; use crate::ecs::phase::UPDATE as UPDATE_PHASE; @@ -85,14 +86,13 @@ fn update( >, keyboard: Single<Keyboard>, mouse: Single<Mouse>, - delta_time: Single<DeltaTime>, + time: Single<Time>, options: Local<Options>, mut actions: Actions, ) -> Result<(), crate::Error> { let keyboard = keyboard.get()?; let mouse = mouse.get()?; - let delta_time = delta_time.get()?; for ( camera_ent_id, @@ -107,8 +107,6 @@ fn update( actions.add_components(camera_ent_id, (ControllableCamera::default(),)); } - let delta_time = delta_time.duration; - if mouse.curr_tick_position_delta != (Vec2 { x: 0.0, y: 0.0 }) { let x_offset = mouse.curr_tick_position_delta.x * f64::from(options.mouse_sensitivity); @@ -139,26 +137,26 @@ fn update( if keyboard.pressed(Key::W) { camera_world_pos.position += - direction * fly_camera.speed * delta_time.as_secs_f32(); + direction * fly_camera.speed * time.delta_time.as_secs_f32(); } if keyboard.pressed(Key::S) { camera_world_pos.position -= - direction * fly_camera.speed * delta_time.as_secs_f32(); + direction * fly_camera.speed * time.delta_time.as_secs_f32(); } if keyboard.pressed(Key::A) { let cam_left = -direction.cross(&Vec3::UP).normalize(); camera_world_pos.position += - cam_left * fly_camera.speed * delta_time.as_secs_f32(); + cam_left * fly_camera.speed * time.delta_time.as_secs_f32(); } if keyboard.pressed(Key::D) { let cam_right = direction.cross(&Vec3::UP).normalize(); camera_world_pos.position += - cam_right * fly_camera.speed * delta_time.as_secs_f32(); + cam_right * fly_camera.speed * time.delta_time.as_secs_f32(); } camera.target = camera_world_pos.position + direction; diff --git a/engine/src/delta_time.rs b/engine/src/delta_time.rs deleted file mode 100644 index a26007d..0000000 --- a/engine/src/delta_time.rs +++ /dev/null @@ -1,36 +0,0 @@ -use std::time::{Duration, Instant}; - -use crate::ecs::component::local::Local; -use crate::ecs::sole::Single; -use crate::ecs::{Component, Sole}; - -#[derive(Debug, Clone, Default, Sole)] -pub struct DeltaTime -{ - pub duration: Duration, -} - -#[derive(Debug, Clone, Default, Component)] -pub struct LastUpdate -{ - pub time: Option<Instant>, -} - -/// Updates the current delta time. -/// -/// # Panics -/// Will panic if no delta time component exists. -pub fn update(mut delta_time: Single<DeltaTime>, mut last_update: Local<LastUpdate>) -{ - let Ok(delta_time) = delta_time.get_mut() else { - unreachable!(); - }; - - let current_time = Instant::now(); - - if let Some(last_update_time) = last_update.time { - delta_time.duration = current_time.duration_since(last_update_time); - } - - last_update.time = Some(current_time); -} diff --git a/engine/src/lib.rs b/engine/src/lib.rs index db20917..7181543 100644 --- a/engine/src/lib.rs +++ b/engine/src/lib.rs @@ -2,12 +2,8 @@ #![allow(clippy::needless_pass_by_value)] use crate::asset::{Assets, Extension as AssetExtension}; -use crate::delta_time::{update as update_delta_time, DeltaTime, LastUpdate}; use crate::ecs::error::HandlerFn as ErrorHandlerFn; use crate::ecs::extension::Extension; -use crate::ecs::phase::PRE_UPDATE as PRE_UPDATE_PHASE; -use crate::ecs::system::initializable::Initializable; -use crate::ecs::system::Into; use crate::ecs::World; mod util; @@ -17,7 +13,6 @@ pub mod asset; pub mod camera; pub mod collision; pub mod data_types; -pub mod delta_time; pub mod draw_flags; pub mod file_format; pub mod image; @@ -58,15 +53,6 @@ impl Engine { let mut world = World::new(); - world.add_sole(DeltaTime::default()).ok(); - - world.register_system( - *PRE_UPDATE_PHASE, - update_delta_time - .into_system() - .initialize((LastUpdate::default(),)), - ); - let mut assets = Assets::with_capacity(INITIAL_ASSET_CAPACITY); crate::model::asset::add_importers(&mut assets); diff --git a/engine/src/ui/dear_imgui.rs b/engine/src/ui/dear_imgui.rs index 1e2a3fd..c710784 100644 --- a/engine/src/ui/dear_imgui.rs +++ b/engine/src/ui/dear_imgui.rs @@ -16,12 +16,12 @@ use ecs::sole::Single; use ecs::system::initializable::Initializable; use ecs::system::observer::Observe; use ecs::system::Into; +use ecs::time::Time; use ecs::{Component, Query, Sole}; use crate::asset::{Assets, Handle as AssetHandle, Label as AssetLabel}; use crate::data_types::color::Rgba; use crate::data_types::dimens::Dimens; -use crate::delta_time::DeltaTime; use crate::image::{ Image, PixelBuffer as ImagePixelBuffer, @@ -212,7 +212,7 @@ fn handle_window_changed( fn update( target_window_query: Query<(&Window, &SurfaceSpec), (With<TargetWindow>,)>, mut context: Single<Context>, - delta_time: Single<DeltaTime>, + time: Single<Time>, mut assets: Single<Assets>, mut render_passes: Single<RenderPasses>, shader_context: Single<ShaderContext>, @@ -226,7 +226,6 @@ fn update( unreachable!(); }; - let delta_time = delta_time.get()?; let assets = assets.get_mut()?; let render_passes = render_passes.get_mut()?; let shader_context = shader_context.get()?; @@ -267,7 +266,7 @@ fn update( context .ctx .get_io_mut() - .set_delta_time(delta_time.duration.as_secs_f32()); + .set_delta_time(time.delta_time.as_secs_f32()); update_inputs(context, &window, keyboard, mouse, mouse_buttons); |
