pause and play, first step for the time line

This commit is contained in:
2025-07-08 19:05:35 +02:00
parent e76720c0d7
commit 47c41be544
5 changed files with 116 additions and 32 deletions

View File

@@ -12,6 +12,8 @@ pub struct Music {
pub poly_frame: Vec<(f32, PolygonFrame)>,
pub nb_sec_for_rev: f32,
pub file_name: String,
pub length: f32,
teta: f32,
}
impl Music {
@@ -23,7 +25,7 @@ impl Music {
{
&mut self.poly_frame[i].1
} else {
&mut self.poly_frame[0].1
&mut self.poly_frame.last_mut().unwrap().1
}
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~PUBLIC~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -35,15 +37,20 @@ impl Music {
{
&self.poly_frame[i].1
} else {
&self.poly_frame[0].1
&self.poly_frame.last().unwrap().1
}
}
pub fn default() -> Music {
Music {
poly_frame: vec![(0.0, PolygonFrame::default())],
poly_frame: vec![
(0.0, PolygonFrame::default()),
(10.0, PolygonFrame::default()),
],
nb_sec_for_rev: 1.0,
file_name: "Polymusic.json".to_string(),
length: 60.0,
teta: 0.,
}
}
@@ -51,13 +58,20 @@ impl Music {
self.find_poly_frame(delta).update();
}
pub fn fix_teta(&mut self, delta: f32) {
let new_teta = delta % self.nb_sec_for_rev * 2.0 * PI / self.nb_sec_for_rev;
self.teta = new_teta;
}
pub fn apply_tick(&mut self, delta: f32, time_btw: Duration, audio_manager: &mut AudioManager) {
let nb_sec_for_rev = self.nb_sec_for_rev;
let teta_temp = self.teta;
self.teta +=
2.0 * PI * (1.0 / self.nb_sec_for_rev) * (time_btw.as_millis() as f32 / 1_000.0);
self.teta %= 2.0 * PI;
let currrent_teta = self.teta;
let current_frame = self.find_poly_frame(delta);
let teta_temp = current_frame.teta;
current_frame.teta +=
2.0 * PI * (1.0 / nb_sec_for_rev) * (time_btw.as_millis() as f32 / 1_000.0);
current_frame.teta %= 2.0 * PI;
current_frame.teta = currrent_teta;
let sound_to_play = current_frame.all_sound_to_play_btw(teta_temp, current_frame.teta);
for sound in sound_to_play {
audio_manager