summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-07-19 23:13:10 +0200
committerHampusM <hampus@hampusmat.com>2026-07-19 23:13:41 +0200
commitd094b413b1960e45e16ff2a2247439357ed517bf (patch)
tree836f926ba49884e05d00495667398f1e4b6f455f
parent69964aeed30af9d39735f229f660be94ce581d0f (diff)
refactor(engine): replace DeltaTime with Time from engine-ecs crate
-rw-r--r--engine/src/camera/fly.rs16
-rw-r--r--engine/src/delta_time.rs36
-rw-r--r--engine/src/lib.rs14
-rw-r--r--engine/src/ui/dear_imgui.rs7
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);