VoxelEngine
 
Loading...
Searching...
No Matches
AudioManager.h
1#pragma once
2
3#include <soloud.h>
4
5#include "Audio.h"
6#include "AudioSettings.h"
7
8#include <string>
9#include <unordered_map>
10
11
12namespace engine {
13
15 public:
17
18 static AudioManager& Get() {
19 static AudioManager instance;
20 return instance;
21 }
22
29 bool preload(const std::string& path, const std::string& key, AudioType type);
30
36 Audio playEffect(const std::string& key, AudioSettings settings = AudioSettings());
37
44 [[nodiscard]] Audio playMusic(
45 const std::string& key, AudioSettings settings = AudioSettings()
46 );
47
48 void destroyAll();
49 void updatePositionalAudio(
50 glm::vec3 listenerPos, glm::vec3 listenerDir, glm::vec3 listenerVel
51 );
52
53 private:
54 friend class Audio;
56 SoLoud::Soloud m_soloud;
57
58 // The SoLoud handle index wraps around 1 million (0xfffff).
59 // TODO check if its possible to wrap when playing for long time.
60 // std::unordered_map<std::string, Audio> m_audio;
61 std::unordered_map<std::string, SoLoud::WavStream> m_music;
62 std::unordered_map<std::string, SoLoud::Wav> m_effects;
63 };
64} // namespace engine
Definition AudioManager.h:14
bool preload(const std::string &path, const std::string &key, AudioType type)
Preloads an audio file for future use.
Definition AudioManager.cpp:23
Audio playMusic(const std::string &key, AudioSettings settings=AudioSettings())
Plays a music track. Music tracks are long, and in case of background repeating sounds.
Definition AudioManager.cpp:69
Audio playEffect(const std::string &key, AudioSettings settings=AudioSettings())
Plays a sound effect. Sound effects are short, one-off sounds.
Definition AudioManager.cpp:53
Definition Audio.h:24
Definition AudioSettings.h:9