Files
m2dev-client-src/src/MilesLib/SoundStream.cpp
2025-08-19 00:20:40 +02:00

67 lines
1.2 KiB
C++

#include "Stdafx.h"
#include "SoundStream.hpp"
#include <algorithm>
SoundStream::SoundStream(HSTREAM stream)
: m_stream(stream)
{
}
SoundStream::~SoundStream()
{
if (m_stream)
{
AIL_close_stream(m_stream);
m_stream = nullptr;
}
}
bool SoundStream::IsDone() const
{
return AIL_stream_status(m_stream) == -1;
}
void SoundStream::Play(int loopCount) const
{
AIL_set_stream_loop_count(m_stream, loopCount);
AIL_start_stream(m_stream);
}
void SoundStream::Pause() const
{
AIL_pause_stream(m_stream, 1);
}
void SoundStream::Resume() const
{
AIL_pause_stream(m_stream, 0);
}
void SoundStream::Stop()
{
AIL_close_stream(m_stream);
m_stream = NULL;
}
float SoundStream::GetVolume() const
{
const auto sample = AIL_stream_sample_handle(m_stream);
if (!sample)
return 0.0f;
F32 volume;
AIL_sample_volume_pan(sample, &volume, nullptr);
return volume;
}
void SoundStream::SetVolume(float volume) const
{
const auto sample = AIL_stream_sample_handle(m_stream);
if (!sample)
return;
volume = std::max<float>(0.0f, std::min<float>(1.0f, volume));
AIL_set_sample_volume_pan(sample, volume, 0.5f);
}