1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
#include "Music.h"
#include "Sound.h"
#include "SoundSource.h"
MusicChannel::MusicChannel() : current(NULL)
{
}
MusicChannel::~MusicChannel()
{
}
void MusicChannel::SetVolume(float newvolume)
{
volume = newvolume;
if (current)
current->SetVolume(volume); // OpenAL is threadsafe enought so no lock needed
}
void MusicChannel::Enable(bool newState)
{
enabled = newState;
if (!enabled)
{
Stop();
}
}
void MusicChannel::Play(const std::string& path, float _volume, bool enqueue)
{
if (!enabled)
{
return;
}
if (!current)
current = sound->GetNextBestSource(); // may return 0 if no sources available
if (current)
current->PlayStream(path, volume * _volume, enqueue);
}
void MusicChannel::Pause()
{
if (current)
current->StreamPause();
}
void MusicChannel::Stop()
{
if (current)
{
current->StreamStop();
current = NULL;
}
}
float MusicChannel::GetTime()
{
if (current)
return current->GetStreamTime();
else
return 0;
}
float MusicChannel::GetPlayTime()
{
if (current)
return current->GetStreamPlayTime();
else
return 0;
}
namespace Channels
{
MusicChannel BGMusic;
}
|