PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
audio.h
1#pragma once
2
3#include "pixelbullet/audio/audio_playback_handle.h"
4#include "pixelbullet/audio/audio_playback_settings.h"
5#include "pixelbullet/audio/audio_spatial_settings.h"
6
7#include <glm/glm.hpp>
8
9#include <functional>
10#include <memory>
11
12namespace pixelbullet
13{
14class Filesystem;
15class VirtualPath;
16namespace audio_internal
17{
18struct AudioState;
19} // namespace audio_internal
20
24class Audio
25{
26public:
27 explicit Audio(Filesystem& filesystem);
28 ~Audio();
29
30 Audio(const Audio&) = delete;
31 Audio& operator=(const Audio&) = delete;
32
34 [[nodiscard]] AudioPlaybackHandle play_sound(const VirtualPath& file_path, AudioPlaybackSettings settings = {});
35 void stop_sound(AudioPlaybackHandle handle);
36 void pause_sound(AudioPlaybackHandle handle);
37 void resume_sound(AudioPlaybackHandle handle);
38 void set_volume(AudioPlaybackHandle handle, float volume);
39 void set_looping(AudioPlaybackHandle handle, bool loop);
40 void set_listener_transform(glm::vec3 position, glm::vec3 forward, glm::vec3 up);
41 void set_spatial_settings(AudioPlaybackHandle handle, AudioSpatialSettings settings);
42 void set_playback_position(AudioPlaybackHandle handle, glm::vec3 position);
43 void stop_all();
44
45private:
47 bool init();
49 void shutdown();
51 bool submit_command(std::function<void()> command);
52
53private:
54 Filesystem& filesystem_;
55 std::unique_ptr<audio_internal::AudioState> state_;
56};
57} // namespace pixelbullet
AudioPlaybackHandle play_sound(const VirtualPath &file_path, AudioPlaybackSettings settings={})
Play a sound given its file path and return a handle that can later control playback.
Definition audio.cc:49
Definition filesystem.h:19
Definition virtual_path.h:10
Definition audio_playback_handle.h:8
Definition audio_playback_settings.h:11
Definition audio_spatial_settings.h:6
Definition audio_internal.h:34