3#include "miniaudio/miniaudio.h"
80 static std::unique_ptr<Sound>
Create(ma_engine* engine,
const std::string& filepath,
AudioGroup* group =
nullptr);
90 Sound(ma_engine* engine,
const std::string& filepath,
AudioGroup* group);
Controls multiple sounds as a single unit.
Definition audio_group.h:24
Central manager for all audio functionality.
Definition audio_manager.h:179
Low-level audio system that interfaces directly with miniaudio.
Definition audio_system.h:32
Manages a collection of synchronized audio layers.
Definition audio_track.h:32
Represents an audio file that can be played multiple times simultaneously.
Definition sound.h:51
~Sound()
Destructor.
Definition sound.cpp:46
float GetMaxDistance() const
Get the maximum distance.
Definition sound.h:210
bool IsSpatializationEnabled() const
Check if spatialization is enabled.
Definition sound.h:241
float GetVolume() const
Gets the current volume level.
Definition sound.h:255
void SetSpatializationEnabled(bool enabled)
Enable or disable spatialization for this sound.
Definition sound.cpp:233
void SetVolume(float volume)
Sets volume for all instances.
Definition sound.cpp:146
bool IsPlaying() const
Checks if any instance of this sound is playing.
Definition sound.cpp:166
void Stop()
Stops all instances of this sound.
Definition sound.cpp:128
static std::unique_ptr< Sound > Create(ma_engine *engine, const std::string &filepath, AudioGroup *group=nullptr)
Factory method for creating Sound instances.
Definition sound.cpp:12
Vec3 position_
3D position of the sound
Definition sound.h:290
std::string filepath_
Path to the audio file.
Definition sound.h:283
float volume_
Current volume level.
Definition sound.h:285
bool looping_
Whether new instances should loop.
Definition sound.h:284
void SetMaxDistance(float maxDistance)
Set the maximum distance for distance attenuation.
Definition sound.cpp:203
ma_engine * engine_
Pointer to miniaudio engine.
Definition sound.h:281
float min_distance_
Minimum distance for attenuation.
Definition sound.h:291
std::vector< std::unique_ptr< SoundInstance > > sound_instances_
Collection of playing instances.
Definition sound.h:280
void CleanupFinishedInstances()
Removes and deletes finished instances.
Definition sound.cpp:50
float pitch_
Pitch for next instance (1.0 = normal)
Definition sound.h:286
void SetRolloff(float rolloff)
Set the rolloff factor for distance attenuation.
Definition sound.cpp:218
void SetLooping(bool should_loop)
Sets whether new instances should loop.
Definition sound.cpp:137
ma_sound_group * group_
Pointer to parent sound group (if any)
Definition sound.h:282
void Play()
Starts a new instance of the sound.
Definition sound.cpp:62
void SetPitch(float pitch)
Sets pitch for the next instance to be played.
Definition sound.cpp:159
void SetPosition(const Vec3 &position)
Set the 3D position of the sound.
Definition sound.cpp:177
Vec3 GetPosition() const
Get the 3D position of the sound.
Definition sound.h:177
float GetRolloff() const
Get the rolloff factor.
Definition sound.h:227
float GetMinDistance() const
Get the minimum distance.
Definition sound.h:194
void SetMinDistance(float minDistance)
Set the minimum distance for distance attenuation.
Definition sound.cpp:188
bool spatialization_enabled_
Whether spatialization is enabled.
Definition sound.h:294
float rolloff_
Rolloff factor for distance attenuation.
Definition sound.h:293
bool IsLooping() const
Checks if this sound is set to loop.
Definition sound.h:262
float max_distance_
Maximum distance for attenuation.
Definition sound.h:292
Definition audio_group.cpp:7
Represents a single instance of a playing sound.
Definition sound.h:26
~SoundInstance()
Destructor.
Definition sound.cpp:25
ma_sound * sound
Pointer to miniaudio sound.
Definition sound.h:27
SoundInstance()
Constructor.
Definition sound.cpp:23
bool finished
Flag indicating if this instance has finished playing.
Definition sound.h:28
3D vector for spatial audio positioning
Definition vec3.h:46
3D vector class for spatial audio positioning