mirror of
https://github.com/overte-org/overte.git
synced 2025-08-04 00:03:39 +02:00
Switch hash to an array
This commit is contained in:
parent
6a66f65282
commit
bbd1afc55c
2 changed files with 20 additions and 25 deletions
|
@ -197,20 +197,12 @@ int AudioMixer::addStreamToMixForListeningNodeWithStream(AudioMixerClientData* l
|
|||
|
||||
attenuationCoefficient *= offAxisCoefficient;
|
||||
}
|
||||
|
||||
bool wantBreak = false;
|
||||
|
||||
float attenuationPerDoublingInDistance = _attenuationPerDoublingInDistance;
|
||||
foreach (const QString& source, _attenuationCoefficients.keys()) {
|
||||
if (_audioZones[source].contains(streamToAdd->getPosition())) {
|
||||
foreach (const QString& listener, _attenuationCoefficients[source].keys()) {
|
||||
if (_audioZones[listener].contains(listeningNodeStream->getPosition())) {
|
||||
attenuationPerDoublingInDistance = _attenuationCoefficients[source][listener];
|
||||
wantBreak = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (wantBreak) {
|
||||
for (int i = 0; i < _zonesSettings.length(); ++i) {
|
||||
if (_audioZones[_zonesSettings[i].source].contains(streamToAdd->getPosition()) &&
|
||||
_audioZones[_zonesSettings[i].listener].contains(listeningNodeStream->getPosition())) {
|
||||
attenuationPerDoublingInDistance = _zonesSettings[i].coefficient;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1028,21 +1020,18 @@ void AudioMixer::parseSettingsObject(const QJsonObject &settingsObject) {
|
|||
coefficientObject.contains(LISTENER) &&
|
||||
coefficientObject.contains(COEFFICIENT)) {
|
||||
|
||||
ZonesSettings settings;
|
||||
|
||||
bool ok;
|
||||
QString source = coefficientObject.value(SOURCE).toString();
|
||||
QString listener = coefficientObject.value(LISTENER).toString();
|
||||
float coefficient = coefficientObject.value(COEFFICIENT).toString().toFloat(&ok);
|
||||
settings.source = coefficientObject.value(SOURCE).toString();
|
||||
settings.listener = coefficientObject.value(LISTENER).toString();
|
||||
settings.coefficient = coefficientObject.value(COEFFICIENT).toString().toFloat(&ok);
|
||||
|
||||
if (ok && coefficient >= 0.0f && coefficient <= 1.0f &&
|
||||
_audioZones.contains(source) && _audioZones.contains(listener)) {
|
||||
_audioZones.contains(settings.source) && _audioZones.contains(settings.listener)) {
|
||||
|
||||
if (!_attenuationCoefficients.contains(source)) {
|
||||
_attenuationCoefficients.insert(source, QHash<QString, float>());
|
||||
}
|
||||
if (!_attenuationCoefficients[source].contains(listener)) {
|
||||
_attenuationCoefficients[source].insert(listener, coefficient);
|
||||
qDebug() << "Added Coefficient:" << source << listener << coefficient;
|
||||
}
|
||||
_zonesSettings.push_back(settings);
|
||||
qDebug() << "Added Coefficient:" << settings.source << settings.listener << settings.coefficient;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -74,8 +74,14 @@ private:
|
|||
int _numStatFrames;
|
||||
int _sumListeners;
|
||||
int _sumMixes;
|
||||
|
||||
QHash<QString, AABox> _audioZones;
|
||||
QHash<QString, QHash<QString, float> > _attenuationCoefficients;
|
||||
struct ZonesSettings {
|
||||
QString source;
|
||||
QString listener;
|
||||
float coefficient;
|
||||
};
|
||||
QVector<ZonesSettings> _zonesSettings;
|
||||
|
||||
static InboundAudioStream::Settings _streamSettings;
|
||||
|
||||
|
|
Loading…
Reference in a new issue