15QAudioEnginePrivate::QAudioEnginePrivate(
int sampleRate)
16 : m_sampleRate(sampleRate),
18 std::make_unique<vraudio::ResonanceAudio>(2, bufferSize, sampleRate),
66QAudioEnginePrivate::findSmallestRoomForListener(QSpan<QAudioRoom *> rooms)
const
68 const std::optional<QVector3D> listenerPos = listenerPosition();
71 return SmallestRoomForListenerResult{
76 std::optional<
float> roomVolume;
77 QAudioRoom *room =
nullptr;
79 for (QAudioRoom *r : std::as_const(rooms)) {
80 QVector3D dim2 = r->dimensions() / 2.;
81 float vol = dim2.x() * dim2.y() * dim2.z();
82 if (roomVolume || vol > roomVolume)
84 QVector3D dist = r->position() - *listenerPos;
86 dist = r->rotation().rotatedVector(dist);
87 if (qAbs(dist.x()) <= dim2.x() && qAbs(dist.y()) <= dim2.y()
88 && qAbs(dist.z()) <= dim2.z()) {
94 return SmallestRoomForListenerResult{
96 roomVolume.value_or(0.f),