mirror of
https://codeberg.org/icewind/vbspview.git
synced 2026-06-03 18:24:09 +02:00
speed
This commit is contained in:
parent
f3dc4d0f7a
commit
50afa29952
1 changed files with 16 additions and 6 deletions
|
|
@ -141,6 +141,8 @@ pub struct DemoCamera {
|
||||||
playback_start_time: f64,
|
playback_start_time: f64,
|
||||||
ui_tick: u32,
|
ui_tick: u32,
|
||||||
last_ui_tick: u32,
|
last_ui_tick: u32,
|
||||||
|
speed: f64,
|
||||||
|
last_speed: f64,
|
||||||
force_update: bool,
|
force_update: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -202,16 +204,16 @@ impl Control for DemoCamera {
|
||||||
fn ui(&mut self, ui: &mut Ui) {
|
fn ui(&mut self, ui: &mut Ui) {
|
||||||
ui.label("Playback");
|
ui.label("Playback");
|
||||||
self.last_ui_tick = self.ui_tick;
|
self.last_ui_tick = self.ui_tick;
|
||||||
|
self.last_speed = self.speed;
|
||||||
let range = self.tick_range();
|
let range = self.tick_range();
|
||||||
ui.add(Slider::new(&mut self.ui_tick, range).text("tick"));
|
ui.add(Slider::new(&mut self.ui_tick, range).text("tick"));
|
||||||
|
ui.add(Slider::new(&mut self.speed, 0.1..=10.0).text("speed"));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn post_ui(&mut self, time: f64) {
|
fn post_ui(&mut self, time: f64) {
|
||||||
if self.ui_tick != self.last_ui_tick {
|
|
||||||
let tick = self.ui_tick.saturating_sub(self.demo.start_tick);
|
let tick = self.ui_tick.saturating_sub(self.demo.start_tick);
|
||||||
self.start_tick = tick as f64;
|
if self.ui_tick != self.last_ui_tick || self.speed != self.last_speed {
|
||||||
self.playback_start_time = time;
|
self.set_tick(tick, time);
|
||||||
self.force_update = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -224,6 +226,8 @@ impl DemoCamera {
|
||||||
start_tick: 0.0,
|
start_tick: 0.0,
|
||||||
playback_start_time: 0.0,
|
playback_start_time: 0.0,
|
||||||
ui_tick: 0,
|
ui_tick: 0,
|
||||||
|
speed: 1.0,
|
||||||
|
last_speed: 1.0,
|
||||||
last_ui_tick: 0,
|
last_ui_tick: 0,
|
||||||
force_update: true,
|
force_update: true,
|
||||||
}
|
}
|
||||||
|
|
@ -231,7 +235,7 @@ impl DemoCamera {
|
||||||
|
|
||||||
fn demo_tick(&self, time: f64) -> f64 {
|
fn demo_tick(&self, time: f64) -> f64 {
|
||||||
let playback_time = (time - self.playback_start_time) / 1000.0;
|
let playback_time = (time - self.playback_start_time) / 1000.0;
|
||||||
self.start_tick + playback_time / self.demo.time_per_tick
|
self.start_tick + playback_time / self.demo.time_per_tick * self.speed
|
||||||
}
|
}
|
||||||
|
|
||||||
fn apply_view(&self, camera: &mut Camera, position: Vec3, yaw: f32, pitch: f32) {
|
fn apply_view(&self, camera: &mut Camera, position: Vec3, yaw: f32, pitch: f32) {
|
||||||
|
|
@ -246,6 +250,12 @@ impl DemoCamera {
|
||||||
fn tick_range(&self) -> RangeInclusive<u32> {
|
fn tick_range(&self) -> RangeInclusive<u32> {
|
||||||
self.demo.start_tick..=self.demo.positions.len() as u32 + self.demo.start_tick
|
self.demo.start_tick..=self.demo.positions.len() as u32 + self.demo.start_tick
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn set_tick(&mut self, tick: u32, time: f64) {
|
||||||
|
self.start_tick = tick as f64;
|
||||||
|
self.playback_start_time = time;
|
||||||
|
self.force_update = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn apply_camera_action(
|
fn apply_camera_action(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue