From 87bc5c9fff2ac58ec94b4bbd5491ef0ee9fecc35 Mon Sep 17 00:00:00 2001 From: minenice55 Date: Sun, 20 Mar 2022 19:46:12 -0400 Subject: [PATCH] extend multisound with pitch, volume, looping, offset in seconds --- Assets/Scripts/Conductor.cs | 6 ++++++ Assets/Scripts/Util/MultiSound.cs | 18 +++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Assets/Scripts/Conductor.cs b/Assets/Scripts/Conductor.cs index 9fd63ec0..d92b874e 100644 --- a/Assets/Scripts/Conductor.cs +++ b/Assets/Scripts/Conductor.cs @@ -234,6 +234,12 @@ namespace HeavenStudio return secPerBeat * beat; } + // convert real seconds to beats + public float GetRestFromRealTime(float seconds) + { + return seconds/secPerBeat; + } + public void SetBpm(float bpm) { this.songBpm = bpm; diff --git a/Assets/Scripts/Util/MultiSound.cs b/Assets/Scripts/Util/MultiSound.cs index 09709f70..cf7db59a 100644 --- a/Assets/Scripts/Util/MultiSound.cs +++ b/Assets/Scripts/Util/MultiSound.cs @@ -17,11 +17,19 @@ namespace HeavenStudio.Util { public string name { get; set; } public float beat { get; set; } + public float pitch { get; set; } + public float volume { get; set; } + public bool looping { get; set; } + public float offset { get; set; } - public Sound(string name, float beat) + public Sound(string name, float beat, float pitch = 1f, float volume = 1f, bool looping = false, float offset = 0f) { this.name = name; this.beat = beat; + this.pitch = pitch; + this.volume = volume; + this.looping = looping; + this.offset = offset; } } @@ -47,18 +55,18 @@ namespace HeavenStudio.Util for (int i = 0; i < sounds.Count; i++) { - if (songPositionInBeats >= sounds[i].beat && index == i) + if (songPositionInBeats >= sounds[i].beat - Conductor.instance.GetRestFromRealTime(sounds[i].offset) && index == i) { if (game) - Jukebox.PlayOneShotGame(sounds[i].name, forcePlay:forcePlay); + Jukebox.PlayOneShotGame(sounds[i].name, sounds[i].beat, sounds[i].pitch, sounds[i].volume, sounds[i].looping, forcePlay); else - Jukebox.PlayOneShot(sounds[i].name); + Jukebox.PlayOneShot(sounds[i].name, sounds[i].beat, sounds[i].pitch, sounds[i].volume, sounds[i].looping); index++; } } - if (songPositionInBeats >= (sounds[sounds.Count - 1].beat)) + if (songPositionInBeats >= (sounds[sounds.Count - 1].beat - Conductor.instance.GetRestFromRealTime(sounds[sounds.Count - 1].offset))) { Delete(); }