Mountain  1.0.0
Simple C++ 2D Game Framework
audio_context.hpp
1 #pragma once
2 
3 #include "Mountain/core.hpp"
5 
6 // ReSharper disable once CppInconsistentNaming
7 struct ALCcontext;
8 
9 namespace Mountain
10 {
11  class AudioDevice;
12 
13  enum class AudioSourceType
14  {
15  Mono,
16  Stereo
17  };
18 
20  {
21  public:
22  [[nodiscard]]
23  MOUNTAIN_API explicit AudioContext(AudioDevice& device);
24 
25  MOUNTAIN_API ~AudioContext();
26 
27  DELETE_COPY_MOVE_OPERATIONS(AudioContext)
28 
29  MOUNTAIN_API void MakeCurrent() const;
30 
31  MOUNTAIN_API static bool_t CheckError();
32 
33  [[nodiscard]]
34  MOUNTAIN_API int32_t GetMaxSourceCount(AudioSourceType sourceType) const;
35 
37  [[nodiscard]]
38  MOUNTAIN_API uint32_t GetSource(AudioSourceType type = AudioSourceType::Mono);
39 
40  private:
41  ALCcontext* m_Handle = nullptr;
42  AudioDevice* m_Device = nullptr;
43 
44  List<int32_t> m_Attributes;
45 
46  List<uint32_t> m_SourcesMono;
47  List<uint32_t> m_SourcesStereo;
48  };
49 }
Defines the Mountain::List class.
Contains all declarations of the Mountain Framework.
Definition: audio.hpp:22