blob: aeba5db75bb766c00572104fa7de2f1d505e127b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#ifndef PKE_AUDIO_TYPES_INTERNAL_HPP
#define PKE_AUDIO_TYPES_INTERNAL_HPP
#include "asset-manager.hpp"
#include "pk.h"
#include "vendor-glm-include.hpp"
#define PKE_AUDIO_MAX_CONCURRENT_COUNT 8
#define PKE_AUDIO_MAX_SPATIAL_DISTANCE 256.f
TypeSafeInt_constexpr(pke_audio_flags, uint8_t, 0xFF);
TypeSafeInt_constexpr(pke_audio_source, uint8_t, 0x40);
const pke_audio_flags pke_audio_flag_none = pke_audio_flags{0x00};
const pke_audio_flags pke_audio_flag_pos_spatial = pke_audio_flags{0x01};
const pke_audio_source pke_audio_source_music = pke_audio_source{0x00};
const pke_audio_source pke_audio_source_ambient = pke_audio_source{0x01};
const pke_audio_source pke_audio_source_voices = pke_audio_source{0x02};
const pke_audio_source pke_audio_source_sfx = pke_audio_source{0x03};
struct pke_audio_obj {
AssetHandle handle; // key
pke_audio_source source; // key
glm::vec3 position_source[PKE_AUDIO_MAX_CONCURRENT_COUNT];
pke_audio_flags flags[PKE_AUDIO_MAX_CONCURRENT_COUNT];
uint32_t play_heads[PKE_AUDIO_MAX_CONCURRENT_COUNT];
uint8_t play_count;
};
struct pke_audio_master {
pk_arr_t<pke_audio_obj> playing_objects;
pk_membucket *bkt_transient;
float master_volume;
float source_volumes[pke_audio_source_T_MAX];
uint32_t channel_count; // mono, stereo, 7.1
std::mutex mtx_buffer;
};
extern struct pke_audio_master pke_audio_mstr;
#endif /* PKE_AUDIO_TYPES_INTERNAL_HPP */
|