summaryrefslogtreecommitdiff
path: root/src/audio-types.hpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-07-04 07:06:45 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-07-04 07:06:45 -0400
commit34863f5b702c0dbb00d8db5c00efd43d895fcd4c (patch)
tree09e0249e16e937c22ec0c04cfa1bc4b0e4de337e /src/audio-types.hpp
parent1c87a0e431d30aaf19195f8a45c7607add21018a (diff)
pke: audio: first-pass actually play an asset
Diffstat (limited to 'src/audio-types.hpp')
-rw-r--r--src/audio-types.hpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/audio-types.hpp b/src/audio-types.hpp
index 84ab155..aeba5db 100644
--- a/src/audio-types.hpp
+++ b/src/audio-types.hpp
@@ -4,12 +4,16 @@
#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, 0x0F);
+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_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};
@@ -19,16 +23,19 @@ 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;
- float source_volumes[pke_audio_source_T_MAX];
- uint32_t channel_count; // mono, stereo, 7.1
- std::mutex mtx_buffer;
+ 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;