NcEngine
NcAudio.h
Go to the documentation of this file.
1
5#pragma once
6
11#include "ncengine/type/EngineId.h"
13
14#include <limits>
15
16namespace nc
17{
18class Transform;
19
20namespace config
21{
22struct AudioSettings;
23} // namespace config
24
26using AudioDeviceId = uint32_t;
27
29constexpr auto DefaultAudioDeviceId = std::numeric_limits<AudioDeviceId>::max();
30
33
36{
37 std::string name = "UnknownDevice";
39};
40
51struct NcAudio : public Module
52{
53 explicit NcAudio() noexcept
54 : Module{NcAudioId} {}
55
65 virtual void RegisterListener(Entity entity) noexcept = 0;
66
74 virtual auto GetStreamTime() const noexcept -> double = 0;
75
80 virtual void SetStreamTime(double time) noexcept = 0;
81
90 virtual auto EnumerateOutputDevices() noexcept -> std::vector<AudioDevice> = 0;
91
98 virtual auto GetOutputDevice() const noexcept -> const AudioDevice& = 0;
99
108 virtual auto SetOutputDevice(AudioDeviceId deviceId = DefaultAudioDeviceId) noexcept -> bool = 0;
109
116 virtual auto OnChangeOutputDevice() noexcept -> Signal<const AudioDevice&>& = 0;
117};
118
120auto BuildAudioModule(const config::AudioSettings& settings, ecs::ExplicitEcs<Entity, Transform, AudioSource> gameState) -> std::unique_ptr<NcAudio>;
121} // namespace nc
constexpr auto DefaultAudioDeviceId
Id representing a system's default audio device.
Definition: NcAudio.h:29
constexpr auto InvalidAudioDeviceId
Id representing a null audio device.
Definition: NcAudio.h:32
uint32_t AudioDeviceId
Id representing an audio device.
Definition: NcAudio.h:26
Component managing audio clips.
Definition: AudioSource.h:47
Identifies an object in the registry.
Definition: Entity.h:18
Modules are extensions that provide functionality to the engine.
Definition: Module.h:19
An event source supporting multiple Connections.
Definition: Signal.h:65
Component with translation, rotation, and scale properties.
Definition: Transform.h:33
The name and device id of an available audio device.
Definition: NcAudio.h:36
Audio module interface.
Definition: NcAudio.h:52
virtual auto GetOutputDevice() const noexcept -> const AudioDevice &=0
Get the active output device.
virtual auto EnumerateOutputDevices() noexcept -> std::vector< AudioDevice >=0
Get a list of available output devices.
virtual auto SetOutputDevice(AudioDeviceId deviceId=DefaultAudioDeviceId) noexcept -> bool=0
Set the active output device.
virtual auto GetStreamTime() const noexcept -> double=0
Get the current stream time.
virtual void RegisterListener(Entity entity) noexcept=0
Register an object to be the reference point audio.
virtual void SetStreamTime(double time) noexcept=0
Set the stream time.
virtual auto OnChangeOutputDevice() noexcept -> Signal< const AudioDevice & > &=0
Get the signal for device change events.