From b8addef21d21af004fdf200554a256e932a9de69 Mon Sep 17 00:00:00 2001 From: Turanszki Janos Date: Sat, 9 Nov 2019 22:51:46 +0000 Subject: [PATCH] audio update: loop region --- Editor/SoundWindow.cpp | 2 +- WickedEngine/wiAudio.cpp | 2 ++ WickedEngine/wiAudio.h | 7 +++++++ WickedEngine/wiVersion.cpp | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Editor/SoundWindow.cpp b/Editor/SoundWindow.cpp index 8bd89cbb4..d554c3836 100644 --- a/Editor/SoundWindow.cpp +++ b/Editor/SoundWindow.cpp @@ -142,7 +142,7 @@ SoundWindow::SoundWindow(wiGUI* gui) : GUI(gui) loopedCheckbox->SetEnabled(false); volumeSlider = new wiSlider(0, 1, 1, 1000, "Volume: "); - volumeSlider->SetTooltip("Enable looping for the selected sound instance."); + volumeSlider->SetTooltip("Set volume level for the selected sound instance."); volumeSlider->SetPos(XMFLOAT2(x + 60, y += step)); volumeSlider->SetSize(XMFLOAT2(240, 30)); volumeSlider->OnSlide([&](wiEventArgs args) { diff --git a/WickedEngine/wiAudio.cpp b/WickedEngine/wiAudio.cpp index bc9f7b500..2a84aa488 100644 --- a/WickedEngine/wiAudio.cpp +++ b/WickedEngine/wiAudio.cpp @@ -302,6 +302,8 @@ namespace wiAudio instanceinternal->buffer.pAudioData = soundinternal->audioData.data(); instanceinternal->buffer.Flags = XAUDIO2_END_OF_STREAM; instanceinternal->buffer.LoopCount = XAUDIO2_LOOP_INFINITE; + instanceinternal->buffer.LoopBegin = UINT32(instance->loop_begin * masteringVoiceDetails.InputSampleRate); + instanceinternal->buffer.LoopLength = UINT32(instance->loop_length * masteringVoiceDetails.InputSampleRate); hr = instanceinternal->sourceVoice->SubmitSourceBuffer(&instanceinternal->buffer); if (FAILED(hr)) diff --git a/WickedEngine/wiAudio.h b/WickedEngine/wiAudio.h index 07a052c62..dbbea570b 100644 --- a/WickedEngine/wiAudio.h +++ b/WickedEngine/wiAudio.h @@ -41,12 +41,17 @@ namespace wiAudio struct SoundInstance { SUBMIX_TYPE type = SUBMIX_TYPE_SOUNDEFFECT; + float loop_begin = 0; // loop region begin in seconds (0 = from beginning) + float loop_length = 0; // loop region legth in seconds (0 = until the end) wiCPUHandle handle = WI_NULL_HANDLE; void operator=(SoundInstance&& other) { type = other.type; + loop_begin = other.loop_begin; + loop_length = other.loop_length; handle = other.handle; + other.handle = WI_NULL_HANDLE; } @@ -54,6 +59,8 @@ namespace wiAudio SoundInstance(SoundInstance&& other) { type = other.type; + loop_begin = other.loop_begin; + loop_length = other.loop_length; handle = other.handle; other.handle = WI_NULL_HANDLE; diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index ad43b63c1..86f0b467b 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wiVersion // minor features, major updates const int minor = 31; // minor bug fixes, alterations, refactors, updates - const int revision = 7; + const int revision = 8; long GetVersion()