feat(audio): add 3D audio playback with source pool and auto-loading

This commit is contained in:
2026-07-06 20:26:20 +08:00
parent 0f60d578fb
commit 765f5ca714
10 changed files with 150 additions and 12 deletions

View File

@@ -2,6 +2,7 @@
#include "Cubed/audio/audio_buffer.hpp"
#include <AL/al.h>
#include <glm/glm.hpp>
namespace Cubed {
enum class AudioState { INITIAL, PLAYING, PAUSED, STOPPED };
@@ -12,9 +13,14 @@ public:
~AudioSource();
void set_buffer_2d(const AudioBuffer& buffer);
void set_buffer_3d(const AudioBuffer& buffer, const glm::vec3& vec3);
void set_loop(bool on = true);
void set_volume(float volume);
void play();
void play_2d(const AudioBuffer& buffer);
void play_3d(const AudioBuffer& buffer, const glm::vec3& pos);
void stop();
void pause();
float duration() const;
@@ -22,9 +28,14 @@ public:
float volume() const;
AudioState state() const;
void mark_in_use();
bool in_use() const;
void reset();
private:
ALuint m_source = 0;
float m_volume = 1.0f;
float m_duration = 0.0f;
bool m_using;
};
} // namespace Cubed