mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
Merge pull request #13164 from SimonWalton-HiFi/entities-relaying
Move down OctreeQueryNode::_viewMutex to OctreeQuery
This commit is contained in:
commit
88163424f0
4 changed files with 23 additions and 16 deletions
|
@ -34,13 +34,16 @@ int OctreeQuery::getBroadcastData(unsigned char* destinationBuffer) {
|
|||
memcpy(destinationBuffer, &_connectionID, sizeof(_connectionID));
|
||||
destinationBuffer += sizeof(_connectionID);
|
||||
|
||||
// Number of frustums
|
||||
uint8_t numFrustums = (uint8_t)_conicalViews.size();
|
||||
memcpy(destinationBuffer, &numFrustums, sizeof(numFrustums));
|
||||
destinationBuffer += sizeof(numFrustums);
|
||||
{
|
||||
QMutexLocker lock(&_conicalViewsLock);
|
||||
// Number of frustums
|
||||
uint8_t numFrustums = (uint8_t)_conicalViews.size();
|
||||
memcpy(destinationBuffer, &numFrustums, sizeof(numFrustums));
|
||||
destinationBuffer += sizeof(numFrustums);
|
||||
|
||||
for (const auto& view : _conicalViews) {
|
||||
destinationBuffer += view.serialize(destinationBuffer);
|
||||
for (const auto& view : _conicalViews) {
|
||||
destinationBuffer += view.serialize(destinationBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
// desired Max Octree PPS
|
||||
|
@ -108,11 +111,14 @@ int OctreeQuery::parseData(ReceivedMessage& message) {
|
|||
memcpy(&numFrustums, sourceBuffer, sizeof(numFrustums));
|
||||
sourceBuffer += sizeof(numFrustums);
|
||||
|
||||
_conicalViews.clear();
|
||||
for (int i = 0; i < numFrustums; ++i) {
|
||||
ConicalViewFrustum view;
|
||||
sourceBuffer += view.deserialize(sourceBuffer);
|
||||
_conicalViews.push_back(view);
|
||||
{
|
||||
QMutexLocker lock(&_conicalViewsLock);
|
||||
_conicalViews.clear();
|
||||
for (int i = 0; i < numFrustums; ++i) {
|
||||
ConicalViewFrustum view;
|
||||
sourceBuffer += view.deserialize(sourceBuffer);
|
||||
_conicalViews.push_back(view);
|
||||
}
|
||||
}
|
||||
|
||||
// desired Max Octree PPS
|
||||
|
|
|
@ -33,9 +33,10 @@ public:
|
|||
int getBroadcastData(unsigned char* destinationBuffer);
|
||||
int parseData(ReceivedMessage& message) override;
|
||||
|
||||
bool hasConicalViews() const { return !_conicalViews.empty(); }
|
||||
void setConicalViews(ConicalViewFrustums views) { _conicalViews = views; }
|
||||
void clearConicalViews() { _conicalViews.clear(); }
|
||||
bool hasConicalViews() const { QMutexLocker lock(&_conicalViewsLock); return !_conicalViews.empty(); }
|
||||
void setConicalViews(ConicalViewFrustums views)
|
||||
{ QMutexLocker lock(&_conicalViewsLock); _conicalViews = views; }
|
||||
void clearConicalViews() { QMutexLocker lock(&_conicalViewsLock); _conicalViews.clear(); }
|
||||
|
||||
// getters/setters for JSON filter
|
||||
QJsonObject getJSONParameters() { QReadLocker locker { &_jsonParametersLock }; return _jsonParameters; }
|
||||
|
@ -60,6 +61,7 @@ public slots:
|
|||
void setBoundaryLevelAdjust(int boundaryLevelAdjust) { _boundaryLevelAdjust = boundaryLevelAdjust; }
|
||||
|
||||
protected:
|
||||
mutable QMutex _conicalViewsLock;
|
||||
ConicalViewFrustums _conicalViews;
|
||||
|
||||
// octree server sending items
|
||||
|
|
|
@ -153,7 +153,7 @@ bool OctreeQueryNode::updateCurrentViewFrustum() {
|
|||
bool currentViewFrustumChanged = false;
|
||||
|
||||
{ // if there has been a change, then recalculate
|
||||
QMutexLocker viewLocker(&_viewMutex);
|
||||
QMutexLocker lock(&_conicalViewsLock);
|
||||
|
||||
if (_conicalViews.size() == _currentConicalViews.size()) {
|
||||
for (size_t i = 0; i < _conicalViews.size(); ++i) {
|
||||
|
|
|
@ -95,7 +95,6 @@ private:
|
|||
int _duplicatePacketCount { 0 };
|
||||
quint64 _firstSuppressedPacket { usecTimestampNow() };
|
||||
|
||||
mutable QMutex _viewMutex { QMutex::Recursive };
|
||||
ConicalViewFrustums _currentConicalViews;
|
||||
bool _viewFrustumChanging { false };
|
||||
bool _viewFrustumJustStoppedChanging { true };
|
||||
|
|
Loading…
Reference in a new issue