3#include "mathtypes.hpp"
5#include "ComponentWithOwner.hpp"
6#include "Queryable.hpp"
9#include "AudioSource.hpp"
11#include "DebugDrawer.hpp"
12#include "AudioRingbuffer.hpp"
13#include "Filesystem.hpp"
14#include <api/resonance_audio_api.h>
15#include <common/room_properties.h>
17struct _IPLBinauralEffect_t;
18struct _IPLDirectEffect_t;
20struct _IPLSimulator_t;
22struct _IPLInstancedMesh_t;
23struct _IPLPathEffect_t;
27class AudioRoomSyncSystem;
31using RoomMat = vraudio::MaterialName;
33#define ENABLE_RINGBUFFERS 0
43 float sourceRadius = 10;
56 const matrix4& invListenerTransform
60 void DeleteAudioDataForEntity(entity_id_t
entity);
72 struct SteamAudioEffects {
77 void DestroyEffects(SteamAudioEffects&);
92 void SetRadius(
float radius) {
93 data->sourceRadius = radius;
95 float GetRadius()
const {
96 return data->sourceRadius;
99 const auto GetData()
const {
112 friend class RavEngine::AudioRoomSyncSystem;
132 const matrix4& invRoomTransform);
153 void RenderAudioSource(
159 void DeleteAudioDataForEntity(entity_id_t
entity);
160 void DeleteMeshDataForEntity(entity_id_t
entity);
162 float sourceRadius = 10, meshRadius = 10;
164 struct SteamAudioSourceConfig {
173 void DestroySteamAudioSourceConfig(SteamAudioSourceConfig&);
177 struct SteamAudioMeshConfig {
184 void DestroySteamAudioMeshConfig(SteamAudioMeshConfig&);
195 const auto GetData()
const {
203 data->sourceRadius = radius;
210 data->meshRadius = radius;
213 auto GetAudioSourceRadius()
const {
214 return data->sourceRadius;
217 auto GetMeshRadius()
const {
218 return data->meshRadius;
221 GeometryAudioSpace(Entity owner) : ComponentWithOwner(owner), data(std::make_shared<RoomData>()) {}
231 float reflection_scalar = 1, reverb_gain = 1, reverb_time = 1, reverb_brightness = 0;
249 RoomMat::kTransparent,
250 RoomMat::kTransparent,
251 RoomMat::kTransparent,
252 RoomMat::kTransparent,
253 RoomMat::kTransparent,
254 RoomMat::kTransparent
257 std::atomic<bool> wallsNeedUpdate =
false;
270 void DeleteAudioDataForEntity(entity_id_t
entity);
273 Ref<RoomData> roomData;
274 vector3 roomHalfExts{ 10, 10, 10 };
275 RoomProperties roomProperties;
277 BoxReverbationAudioSpace(Entity owner);
279 auto GetData()
const {
282 auto GetHalfExts()
const {
286 void SetHalfExts(
const decltype(roomHalfExts)& h) {
288 roomData->wallsNeedUpdate =
true;
291 void SetWallMaterial(uint8_t idx, RoomMat material) {
292 std::lock_guard guard(roomData->wallMatMtx);
293 roomData->wallMaterials.at(idx) = material;
294 roomData->wallsNeedUpdate =
true;
296 void SetWallMaterials(
const Array<RoomMat, 6>& materials) {
297 std::lock_guard guard(roomData->wallMatMtx);
298 roomData->wallMaterials = materials;
299 roomData->wallsNeedUpdate =
true;
302 auto GetWallMaterials()
const {
303 std::lock_guard guard(roomData->wallMatMtx);
304 return roomData->wallMaterials;
306 const auto& GetRoomProperties()
const {
307 return roomProperties;
309 auto& GetRoomProperties() {
310 return roomProperties;
Definition AudioPlayer.hpp:27
Definition AudioRingbuffer.hpp:8
Definition AudioSpace.hpp:228
void DebugDraw(RavEngine::DebugDrawer &dbg, const RavEngine::Transform &tr) const override
Definition AudioSpace.hpp:278
Definition ComponentWithOwner.hpp:6
Definition DebugDrawer.hpp:11
Definition AudioTypes.hpp:20
Definition AudioSpace.hpp:38
void DebugDraw(RavEngine::DebugDrawer &dbg, const RavEngine::Transform &tr) const override
Definition AudioSpace.hpp:106
Definition SpinLock.hpp:9
Definition concurrentqueue.h:747
Definition resonance_audio_api.h:142
Definition Animation.hpp:6
Definition AudioTypes.hpp:114
Definition AudioSnapshot.hpp:11
Definition AudioSpace.hpp:230
Definition AudioSpace.hpp:116
void ConsiderAudioSource(const vector3 &sourcePos, entity_t owningEntity, const vector3 &roomPos, const matrix4 &invRoomTransform)
Definition AudioSpace.cpp:183
void CalculateRoom(const matrix4 &invRoomTransform, const vector3 &listenerForwardWorldSpace, const vector3 &listenerUpWorldSpace, const vector3 &listenerRightWorldSpace)
Definition AudioSpace.cpp:291
void ConsiderMesh(Ref< AudioMeshAsset > mesh, const matrix4 &transform, const vector3 &roomPos, const matrix4 &invRoomTransform, entity_t ownerID)
Definition AudioSpace.cpp:323
Definition AudioSpace.hpp:111
void SetAudioSourceRadius(float radius)
Definition AudioSpace.hpp:202
void DebugDraw(RavEngine::DebugDrawer &dbg, const RavEngine::Transform &tr) const override
Definition AudioSpace.hpp:223
void SetMeshRadius(float radius)
Definition AudioSpace.hpp:209
Definition IDebugRenderable.hpp:8
Definition Queryable.hpp:21
Definition AudioSpace.hpp:41
void RenderAudioSource(PlanarSampleBufferInlineView &buffer, PlanarSampleBufferInlineView &scratchBuffer, PlanarSampleBufferInlineView monoSourceData, const vector3 &sourcePos, entity_t owningEntity, const matrix4 &invListenerTransform)
Definition AudioSpace.cpp:21
Definition qualifier.hpp:36
Definition type_quat.hpp:20
Definition qualifier.hpp:35