From 90c5c7f43c23fd3ac4b76175cc2edffe6b41f4c1 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Thu, 9 Oct 2014 16:41:48 -0700 Subject: [PATCH] Attenuation coefficients parsing --- assignment-client/src/audio/AudioMixer.cpp | 38 +++++++++++++++++++++- assignment-client/src/audio/AudioMixer.h | 1 + 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/assignment-client/src/audio/AudioMixer.cpp b/assignment-client/src/audio/AudioMixer.cpp index 5b162b7c7b..c08892e26b 100644 --- a/assignment-client/src/audio/AudioMixer.cpp +++ b/assignment-client/src/audio/AudioMixer.cpp @@ -989,7 +989,41 @@ void AudioMixer::parseSettingsObject(const QJsonObject &settingsObject) { glm::vec3 dimension(xMax - xMin, yMax - yMin, zMax - zMin); AABox zoneAABox(corner, dimension); _audioZones.insert(zone, zoneAABox); - qDebug() << "Added zone:" << zoneAABox; + qDebug() << "Added zone:" << zone << zoneAABox; + } + } + } + } + } + + const QString ATTENUATION_COEFFICIENTS = "attenuation_coefficients"; + if (audioEnvGroupObject[ATTENUATION_COEFFICIENTS].isArray()) { + const QJsonArray& coefficients = audioEnvGroupObject[ATTENUATION_COEFFICIENTS].toArray(); + + const QString SOURCE = "source"; + const QString LISTENER = "listener"; + const QString COEFFICIENT = "coefficient"; + for (int i = 0; i < coefficients.count(); ++i) { + QJsonObject coefficientObject = coefficients[i].toObject(); + + if (coefficientObject.contains(SOURCE) && + coefficientObject.contains(LISTENER) && + coefficientObject.contains(COEFFICIENT)) { + + bool ok; + QString source = coefficientObject.value(SOURCE).toString(); + QString listener = coefficientObject.value(LISTENER).toString(); + float coefficient = coefficientObject.value(COEFFICIENT).toString().toFloat(&ok); + + if (ok && coefficient >= 0.0f && coefficient <= 1.0f && + _audioZones.contains(source) && _audioZones.contains(listener)) { + + if (!_attenuationCoefficients.contains(source)) { + _attenuationCoefficients.insert(source, QHash()); + } + if (!_attenuationCoefficients[source].contains(listener)) { + _attenuationCoefficients[source].insert(listener, coefficient); + qDebug() << "Added Coefficient:" << source << listener << coefficient; } } } @@ -997,3 +1031,5 @@ void AudioMixer::parseSettingsObject(const QJsonObject &settingsObject) { } } } + + diff --git a/assignment-client/src/audio/AudioMixer.h b/assignment-client/src/audio/AudioMixer.h index 44cb592f3a..7f07c846a4 100644 --- a/assignment-client/src/audio/AudioMixer.h +++ b/assignment-client/src/audio/AudioMixer.h @@ -75,6 +75,7 @@ private: int _sumListeners; int _sumMixes; QHash _audioZones; + QHash > _attenuationCoefficients; static InboundAudioStream::Settings _streamSettings;