mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 19:59:28 +02:00
Use std::vector for ignored avatars since the list will be small
This commit is contained in:
parent
1a67176819
commit
c2fe2b60b3
2 changed files with 19 additions and 5 deletions
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
#include "AvatarMixerClientData.h"
|
#include "AvatarMixerClientData.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
#include <udt/PacketHeaders.h>
|
#include <udt/PacketHeaders.h>
|
||||||
|
|
||||||
#include <DependencyManager.h>
|
#include <DependencyManager.h>
|
||||||
|
@ -239,8 +240,21 @@ void AvatarMixerClientData::ignoreOther(const Node* self, const Node* other) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AvatarMixerClientData::isRadiusIgnoring(const QUuid& other) const {
|
||||||
|
return std::find(_radiusIgnoredOthers.cbegin(), _radiusIgnoredOthers.cend(), other) != _radiusIgnoredOthers.cend();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AvatarMixerClientData::addToRadiusIgnoringSet(const QUuid& other) {
|
||||||
|
if (!isRadiusIgnoring(other)) {
|
||||||
|
_radiusIgnoredOthers.push_back(other);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void AvatarMixerClientData::removeFromRadiusIgnoringSet(const QUuid& other) {
|
void AvatarMixerClientData::removeFromRadiusIgnoringSet(const QUuid& other) {
|
||||||
_radiusIgnoredOthers.erase(other);
|
auto ignoredOtherIter = std::find(_radiusIgnoredOthers.cbegin(), _radiusIgnoredOthers.cend(), other);
|
||||||
|
if (ignoredOtherIter != _radiusIgnoredOthers.cend()) {
|
||||||
|
_radiusIgnoredOthers.erase(ignoredOtherIter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AvatarMixerClientData::resetSentTraitData(Node::LocalID nodeLocalID) {
|
void AvatarMixerClientData::resetSentTraitData(Node::LocalID nodeLocalID) {
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cfloat>
|
#include <cfloat>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <unordered_set>
|
#include <vector>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
|
|
||||||
#include <QtCore/QJsonObject>
|
#include <QtCore/QJsonObject>
|
||||||
|
@ -91,8 +91,8 @@ public:
|
||||||
void loadJSONStats(QJsonObject& jsonObject) const;
|
void loadJSONStats(QJsonObject& jsonObject) const;
|
||||||
|
|
||||||
glm::vec3 getPosition() const { return _avatar ? _avatar->getWorldPosition() : glm::vec3(0); }
|
glm::vec3 getPosition() const { return _avatar ? _avatar->getWorldPosition() : glm::vec3(0); }
|
||||||
bool isRadiusIgnoring(const QUuid& other) const { return _radiusIgnoredOthers.find(other) != _radiusIgnoredOthers.end(); }
|
bool isRadiusIgnoring(const QUuid& other) const;
|
||||||
void addToRadiusIgnoringSet(const QUuid& other) { _radiusIgnoredOthers.insert(other); }
|
void addToRadiusIgnoringSet(const QUuid& other);
|
||||||
void removeFromRadiusIgnoringSet(const QUuid& other);
|
void removeFromRadiusIgnoringSet(const QUuid& other);
|
||||||
void ignoreOther(SharedNodePointer self, SharedNodePointer other);
|
void ignoreOther(SharedNodePointer self, SharedNodePointer other);
|
||||||
void ignoreOther(const Node* self, const Node* other);
|
void ignoreOther(const Node* self, const Node* other);
|
||||||
|
@ -167,7 +167,7 @@ private:
|
||||||
int _numOutOfOrderSends = 0;
|
int _numOutOfOrderSends = 0;
|
||||||
|
|
||||||
SimpleMovingAverage _avgOtherAvatarDataRate;
|
SimpleMovingAverage _avgOtherAvatarDataRate;
|
||||||
std::unordered_set<QUuid> _radiusIgnoredOthers;
|
std::vector<QUuid> _radiusIgnoredOthers;
|
||||||
ConicalViewFrustums _currentViewFrustums;
|
ConicalViewFrustums _currentViewFrustums;
|
||||||
|
|
||||||
int _recentOtherAvatarsInView { 0 };
|
int _recentOtherAvatarsInView { 0 };
|
||||||
|
|
Loading…
Reference in a new issue