cangine
Loading...
Searching...
No Matches
audiomanager.hpp
Go to the documentation of this file.
1#pragma once
2#include <miniaudio.h>
3
4#include <cassert>
5#include <iostream>
6#include <string>
7#include <utility>
8#include <vector>
9
10#include "sound.hpp"
11
12namespace cangine {
13
21 private:
22 std::vector<Sound> sounds;
23 std::vector<std::pair<ma_sound*, std::string>> activeSounds;
24 ma_engine engine{};
25 bool initialized = false;
27
30
31 public:
34
39 static AudioManager* getInstance();
40
45 void add(const Sound& sound);
46
51 void add(const std::string& path);
52
58 void add(const std::string& path, const std::string& name);
59
65 void play(const std::string& name, bool loop = false);
66
72 void play(const Sound& sound, bool loop = false);
73
78 void stop(const std::string& name);
79
81 void stopAll();
82
87 void pause(const std::string& name);
88
90 void pauseAll();
91
96 void resume(const std::string& name);
97
99 void resumeAll();
100
106 void setVolume(const std::string& name, float volume);
107
112 void setVolumeAll(float volume);
113
119 bool isPlaying(const std::string& name);
120
126 bool isPaused(const std::string& name);
127
133 float getDuration(const std::string& name);
134
140 float getPosition(const std::string& name);
141
147 void seek(const std::string& name, float seconds);
148 };
149
150}
Singleton class that manages audio playback.
Definition audiomanager.hpp:20
std::vector< Sound > sounds
Loaded sound objects.
Definition audiomanager.hpp:22
void pauseAll()
Pauses all currently playing sounds.
Definition audiomanager.cpp:128
bool isPlaying(const std::string &name)
Checks whether a sound is currently playing.
Definition audiomanager.cpp:157
void setVolumeAll(float volume)
Sets the volume of all sounds.
Definition audiomanager.cpp:150
AudioManager()
Definition audiomanager.cpp:9
void stop(const std::string &name)
Stops a sound by name.
Definition audiomanager.cpp:99
void add(const Sound &sound)
Adds a Sound object to the manager.
Definition audiomanager.cpp:49
void setVolume(const std::string &name, float volume)
Sets the volume of a sound by name.
Definition audiomanager.cpp:145
static AudioManager * getInstance()
Returns the singleton instance of AudioManager.
Definition audiomanager.cpp:28
static AudioManager * instance
Singleton instance.
Definition audiomanager.hpp:26
ma_engine engine
miniaudio engine instance
Definition audiomanager.hpp:24
~AudioManager()
Definition audiomanager.cpp:21
void stopAll()
Stops all currently playing sounds.
Definition audiomanager.cpp:112
void seek(const std::string &name, float seconds)
Seeks to a specific position in a sound.
Definition audiomanager.cpp:191
void cleanupFinishedSounds()
Removes sounds that have finished playing from memory.
Definition audiomanager.cpp:34
void resumeAll()
Resumes all paused sounds.
Definition audiomanager.cpp:138
void resume(const std::string &name)
Resumes a paused sound by name.
Definition audiomanager.cpp:133
void play(const std::string &name, bool loop=false)
Plays a sound by name.
Definition audiomanager.cpp:69
float getDuration(const std::string &name)
Returns the total duration of a sound.
Definition audiomanager.cpp:169
bool initialized
Whether the engine has been initialized.
Definition audiomanager.hpp:25
void pause(const std::string &name)
Pauses a sound by name.
Definition audiomanager.cpp:123
float getPosition(const std::string &name)
Returns the current playback position of a sound.
Definition audiomanager.cpp:180
bool isPaused(const std::string &name)
Checks whether a sound is currently paused.
Definition audiomanager.cpp:163
std::vector< std::pair< ma_sound *, std::string > > activeSounds
Currently active sounds (handle, name)
Definition audiomanager.hpp:23
Definition audiomanager.cpp:4
Describes an audio source: its file path, name and volume.
Definition sound.hpp:11