Skip to content

Commit bdbb7c8

Browse files
Merge pull request o3de#17534 from Porcupine-Factory/feature/miniaudio-pause-play
MiniAudio: Add a pause method for the Playback component
2 parents 1ecb164 + 6c2e1d4 commit bdbb7c8

File tree

6 files changed

+26
-4
lines changed

6 files changed

+26
-4
lines changed

Gems/MiniAudio/Code/Include/MiniAudio/MiniAudioPlaybackBus.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ namespace MiniAudio
2222

2323
virtual void Play() = 0;
2424
virtual void Stop() = 0;
25+
virtual void Pause() = 0;
2526
virtual void SetLooping(bool loop) = 0;
2627
virtual bool IsLooping() const = 0;
2728
virtual void SetSoundAsset(AZ::Data::Asset<SoundAsset> soundAsset) = 0;

Gems/MiniAudio/Code/Source/Clients/MiniAudioPlaybackComponent.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ namespace MiniAudio
8585
->Attribute(AZ::Script::Attributes::Category, "MiniAudio Playback")
8686
->Event("Play", &MiniAudioPlaybackRequests::Play)
8787
->Event("Stop", &MiniAudioPlaybackRequests::Stop)
88+
->Event("Pause", &MiniAudioPlaybackRequests::Pause)
8889
->Event("SetLooping", &MiniAudioPlaybackRequests::SetLooping)
8990
->Event("IsLooping", &MiniAudioPlaybackRequests::IsLooping)
9091
->Event("GetSoundAsset", &MiniAudioPlaybackRequests::GetSoundAssetRef)

Gems/MiniAudio/Code/Source/Clients/MiniAudioPlaybackComponentController.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,20 @@ namespace MiniAudio
8585
{
8686
if (m_sound)
8787
{
88-
ma_sound_seek_to_pcm_frame(m_sound.get(), 0);
8988
ma_sound_start(m_sound.get());
9089
}
9190
}
9291

9392
void MiniAudioPlaybackComponentController::Stop()
93+
{
94+
if (m_sound)
95+
{
96+
ma_sound_stop(m_sound.get());
97+
ma_sound_seek_to_pcm_frame(m_sound.get(), 0);
98+
}
99+
}
100+
101+
void MiniAudioPlaybackComponentController::Pause()
94102
{
95103
if (m_sound)
96104
{
@@ -100,7 +108,7 @@ namespace MiniAudio
100108

101109
float MiniAudioPlaybackComponentController::GetVolumePercentage() const
102110
{
103-
return ma_sound_get_volume(m_sound.get());
111+
return ma_sound_get_volume(m_sound.get()) * 100.f;
104112
}
105113

106114
void MiniAudioPlaybackComponentController::SetVolumePercentage(float volume)

Gems/MiniAudio/Code/Source/Clients/MiniAudioPlaybackComponentController.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ namespace MiniAudio
4545
// MiniAudioPlaybackRequestBus
4646
void Play() override;
4747
void Stop() override;
48+
void Pause() override;
4849
void SetVolumePercentage(float volume) override;
4950
float GetVolumePercentage() const override;
5051
void SetVolumeDecibels(float volumeDecibels) override;

Gems/MiniAudio/Code/Source/Tools/EditorMiniAudioPlaybackComponent.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,12 @@ namespace MiniAudio
4444
->UIElement(AZ::Edit::UIHandlers::Button, "Stop Sound", "Stops playing the sound")
4545
->Attribute(AZ::Edit::Attributes::NameLabelOverride, "")
4646
->Attribute(AZ::Edit::Attributes::ButtonText, "Stop Sound")
47-
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorMiniAudioPlaybackComponent::StopSoundInEditor);
47+
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorMiniAudioPlaybackComponent::StopSoundInEditor)
48+
49+
->UIElement(AZ::Edit::UIHandlers::Button, "Pause Sound", "Pause playing the sound")
50+
->Attribute(AZ::Edit::Attributes::NameLabelOverride, "")
51+
->Attribute(AZ::Edit::Attributes::ButtonText, "Pause Sound")
52+
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorMiniAudioPlaybackComponent::PauseSoundInEditor);
4853

4954
editContext->Class<MiniAudioPlaybackComponentController>("MiniAudioPlaybackComponentController", "")
5055
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
@@ -186,7 +191,6 @@ namespace MiniAudio
186191

187192
AZ::Crc32 EditorMiniAudioPlaybackComponent::PlaySoundInEditor()
188193
{
189-
m_controller.Stop();
190194
m_controller.Play();
191195
return AZ::Edit::PropertyRefreshLevels::None;
192196
}
@@ -197,6 +201,12 @@ namespace MiniAudio
197201
return AZ::Edit::PropertyRefreshLevels::None;
198202
}
199203

204+
AZ::Crc32 EditorMiniAudioPlaybackComponent::PauseSoundInEditor()
205+
{
206+
m_controller.Pause();
207+
return AZ::Edit::PropertyRefreshLevels::None;
208+
}
209+
200210
AZ::Crc32 EditorMiniAudioPlaybackComponent::OnVolumeChanged()
201211
{
202212
m_controller.SetVolumePercentage(m_controller.GetConfiguration().m_volume / 100.f);

Gems/MiniAudio/Code/Source/Tools/EditorMiniAudioPlaybackComponent.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ namespace MiniAudio
3737

3838
AZ::Crc32 PlaySoundInEditor();
3939
AZ::Crc32 StopSoundInEditor();
40+
AZ::Crc32 PauseSoundInEditor();
4041
AZ::Crc32 OnVolumeChanged();
4142
};
4243

0 commit comments

Comments
 (0)