15 _state(true, true, true, true),
27 assert(
_api ==
nullptr &&
"SFXDevice error: initAudioAPI called twice!");
48 return _api->initAudioAPI();
55 if (
_api !=
nullptr) {
56 _api->closeAudioAPI();
70 _api->musicFinished();
85 DIVIDE_ASSERT(
_api !=
nullptr,
"SFXDevice error: playSound called without init!");
87 _api->playSound(sound);
92 songs.push_back(music);
97 const MusicPlaylists::iterator it =
_musicPlaylists.find(playlistEntry);
108 if (!playlist.second.empty()) {
120 _api->playMusic(music);
124 DIVIDE_ASSERT(
_api !=
nullptr,
"SFXDevice error: pauseMusic called without init!");
130 DIVIDE_ASSERT(
_api !=
nullptr,
"SFXDevice error: stopMusic called without init!");
136 DIVIDE_ASSERT(
_api !=
nullptr,
"SFXDevice error: stopAllSounds called without init!");
138 _api->stopAllSounds();
142 DIVIDE_ASSERT(
_api !=
nullptr,
"SFXDevice error: setMusicVolume called without init!");
144 _api->setMusicVolume(value);
148 DIVIDE_ASSERT(
_api !=
nullptr,
"SFXDevice error: setSoundVolume called without init!");
150 _api->setSoundVolume(value);
#define PROFILE_SCOPE_AUTO(CATEGORY)
Audio Programming Interface.
std::pair< U32, vector< Handle< AudioDescriptor > > > MusicPlaylist
PlatformContext & _context
AudioAPIWrapper_uptr _api
void addMusic(U32 playlistEntry, Handle< AudioDescriptor > music)
void playMusic(Handle< AudioDescriptor > music) override
MusicPlaylist _currentPlaylist
void setMusicVolume(I8 value) override
void playSound(Handle< AudioDescriptor > sound) override
ErrorCode initAudioAPI() override
void stopMusic() override
std::atomic_bool _playNextInPlaylist
bool frameStarted(const FrameEvent &evt) override
MusicPlaylists _musicPlaylists
void stopAllSounds() override
void pauseMusic() override
void musicFinished() noexcept override
void setSoundVolume(I8 value) override
void closeAudioAPI() override
constexpr Optick::Category::Type Sound
Handle console commands that start with a forward slash.
static NO_INLINE void errorfn(const char *format, T &&... args)