mirror of
https://github.com/overte-org/overte.git
synced 2025-08-04 02:43:32 +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;
|
attenuationCoefficient *= offAxisCoefficient;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wantBreak = false;
|
|
||||||
float attenuationPerDoublingInDistance = _attenuationPerDoublingInDistance;
|
float attenuationPerDoublingInDistance = _attenuationPerDoublingInDistance;
|
||||||
foreach (const QString& source, _attenuationCoefficients.keys()) {
|
for (int i = 0; i < _zonesSettings.length(); ++i) {
|
||||||
if (_audioZones[source].contains(streamToAdd->getPosition())) {
|
if (_audioZones[_zonesSettings[i].source].contains(streamToAdd->getPosition()) &&
|
||||||
foreach (const QString& listener, _attenuationCoefficients[source].keys()) {
|
_audioZones[_zonesSettings[i].listener].contains(listeningNodeStream->getPosition())) {
|
||||||
if (_audioZones[listener].contains(listeningNodeStream->getPosition())) {
|
attenuationPerDoublingInDistance = _zonesSettings[i].coefficient;
|
||||||
attenuationPerDoublingInDistance = _attenuationCoefficients[source][listener];
|
|
||||||
wantBreak = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (wantBreak) {
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1028,21 +1020,18 @@ void AudioMixer::parseSettingsObject(const QJsonObject &settingsObject) {
|
||||||
coefficientObject.contains(LISTENER) &&
|
coefficientObject.contains(LISTENER) &&
|
||||||
coefficientObject.contains(COEFFICIENT)) {
|
coefficientObject.contains(COEFFICIENT)) {
|
||||||
|
|
||||||
|
ZonesSettings settings;
|
||||||
|
|
||||||
bool ok;
|
bool ok;
|
||||||
QString source = coefficientObject.value(SOURCE).toString();
|
settings.source = coefficientObject.value(SOURCE).toString();
|
||||||
QString listener = coefficientObject.value(LISTENER).toString();
|
settings.listener = coefficientObject.value(LISTENER).toString();
|
||||||
float coefficient = coefficientObject.value(COEFFICIENT).toString().toFloat(&ok);
|
settings.coefficient = coefficientObject.value(COEFFICIENT).toString().toFloat(&ok);
|
||||||
|
|
||||||
if (ok && coefficient >= 0.0f && coefficient <= 1.0f &&
|
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)) {
|
_zonesSettings.push_back(settings);
|
||||||
_attenuationCoefficients.insert(source, QHash<QString, float>());
|
qDebug() << "Added Coefficient:" << settings.source << settings.listener << settings.coefficient;
|
||||||
}
|
|
||||||
if (!_attenuationCoefficients[source].contains(listener)) {
|
|
||||||
_attenuationCoefficients[source].insert(listener, coefficient);
|
|
||||||
qDebug() << "Added Coefficient:" << source << listener << coefficient;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,8 +74,14 @@ private:
|
||||||
int _numStatFrames;
|
int _numStatFrames;
|
||||||
int _sumListeners;
|
int _sumListeners;
|
||||||
int _sumMixes;
|
int _sumMixes;
|
||||||
|
|
||||||
QHash<QString, AABox> _audioZones;
|
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;
|
static InboundAudioStream::Settings _streamSettings;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue