diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index 509f6c794a..aa7221f4f0 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -366,7 +366,7 @@ void Avatar::simulate(float deltaTime, bool inView) { } } -float Avatar::getSimulationRate(const QString& rateName) { +float Avatar::getSimulationRate(const QString& rateName) const { if (rateName == "") { return _simulationRate.rate(); } else if (rateName == "avatar") { diff --git a/interface/src/avatar/Avatar.h b/interface/src/avatar/Avatar.h index a1c081e327..5c05702e92 100644 --- a/interface/src/avatar/Avatar.h +++ b/interface/src/avatar/Avatar.h @@ -182,7 +182,7 @@ public: void animateScaleChanges(float deltaTime); void setTargetScale(float targetScale) override; - Q_INVOKABLE float getSimulationRate(const QString& rateName = QString("")); + Q_INVOKABLE float getSimulationRate(const QString& rateName = QString("")) const; public slots: diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index 5a1fb7056f..c3fc974365 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -132,17 +132,17 @@ void AvatarManager::updateMyAvatar(float deltaTime) { Q_LOGGING_CATEGORY(trace_simulation_avatar, "trace.simulation.avatar"); -float AvatarManager::getAvatarDataRate(const QUuid& sessionID, const QString& rateName) { +float AvatarManager::getAvatarDataRate(const QUuid& sessionID, const QString& rateName) const { auto avatar = getAvatarBySessionID(sessionID); return avatar ? avatar->getDataRate(rateName) : 0.0f; } -float AvatarManager::getAvatarUpdateRate(const QUuid& sessionID, const QString& rateName) { +float AvatarManager::getAvatarUpdateRate(const QUuid& sessionID, const QString& rateName) const { auto avatar = getAvatarBySessionID(sessionID); return avatar ? avatar->getUpdateRate(rateName) : 0.0f; } -float AvatarManager::getAvatarSimulationRate(const QUuid& sessionID, const QString& rateName) { +float AvatarManager::getAvatarSimulationRate(const QUuid& sessionID, const QString& rateName) const { auto avatar = std::static_pointer_cast(getAvatarBySessionID(sessionID)); return avatar ? avatar->getSimulationRate(rateName) : 0.0f; } @@ -267,6 +267,7 @@ void AvatarManager::updateOtherAvatars(float deltaTime) { // --> some avatars may freeze until their priority trickles up const bool inView = false; avatar->simulate(deltaTime, inView); + partiallySimulatedAvatars++; } else { // we've spent ALL of our time budget --> bail on the rest of the avatar updates // --> some scale or fade animations may glitch @@ -512,7 +513,7 @@ void AvatarManager::updateAvatarRenderStatus(bool shouldRenderAvatars) { } -AvatarSharedPointer AvatarManager::getAvatarBySessionID(const QUuid& sessionID) { +AvatarSharedPointer AvatarManager::getAvatarBySessionID(const QUuid& sessionID) const { if (sessionID == AVATAR_SELF_ID || sessionID == _myAvatar->getSessionUUID()) { return _myAvatar; } diff --git a/interface/src/avatar/AvatarManager.h b/interface/src/avatar/AvatarManager.h index 098d8ec34d..4d503842b9 100644 --- a/interface/src/avatar/AvatarManager.h +++ b/interface/src/avatar/AvatarManager.h @@ -41,11 +41,11 @@ public: void init(); std::shared_ptr getMyAvatar() { return _myAvatar; } - AvatarSharedPointer getAvatarBySessionID(const QUuid& sessionID) override; + AvatarSharedPointer getAvatarBySessionID(const QUuid& sessionID) const override; - int getFullySimulatedAvatars() { return _fullySimulatedAvatars; } - int getPartiallySimulatedAvatars() { return _partiallySimulatedAvatars; } - float getAvatarSimulationTime() { return _avatarSimulationTime; } + int getFullySimulatedAvatars() const { return _fullySimulatedAvatars; } + int getPartiallySimulatedAvatars() const { return _partiallySimulatedAvatars; } + float getAvatarSimulationTime() const { return _avatarSimulationTime; } void updateMyAvatar(float deltaTime); void updateOtherAvatars(float deltaTime); @@ -73,9 +73,9 @@ public: void handleOutgoingChanges(const VectorOfMotionStates& motionStates); void handleCollisionEvents(const CollisionEvents& collisionEvents); - Q_INVOKABLE float getAvatarDataRate(const QUuid& sessionID, const QString& rateName = QString("")); - Q_INVOKABLE float getAvatarUpdateRate(const QUuid& sessionID, const QString& rateName = QString("")); - Q_INVOKABLE float getAvatarSimulationRate(const QUuid& sessionID, const QString& rateName = QString("")); + Q_INVOKABLE float getAvatarDataRate(const QUuid& sessionID, const QString& rateName = QString("")) const; + Q_INVOKABLE float getAvatarUpdateRate(const QUuid& sessionID, const QString& rateName = QString("")) const; + Q_INVOKABLE float getAvatarSimulationRate(const QUuid& sessionID, const QString& rateName = QString("")) const; Q_INVOKABLE RayToAvatarIntersectionResult findRayIntersection(const PickRay& ray, const QScriptValue& avatarIdsToInclude = QScriptValue(), diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index aaf5a639a6..af060429af 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -1064,7 +1064,7 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) { return numBytesRead; } -float AvatarData::getDataRate(const QString& rateName) { +float AvatarData::getDataRate(const QString& rateName) const { if (rateName == "") { return _parseBufferRate.rate() / BYTES_PER_KILOBIT; } else if (rateName == "globalPosition") { @@ -1119,7 +1119,7 @@ float AvatarData::getDataRate(const QString& rateName) { return 0.0f; } -float AvatarData::getUpdateRate(const QString& rateName) { +float AvatarData::getUpdateRate(const QString& rateName) const { if (rateName == "") { return _parseBufferUpdateRate.rate(); } else if (rateName == "globalPosition") { diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index d23e4f5caf..01cab8b93a 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -547,8 +547,8 @@ public: Q_INVOKABLE glm::mat4 getControllerLeftHandMatrix() const; Q_INVOKABLE glm::mat4 getControllerRightHandMatrix() const; - Q_INVOKABLE float getDataRate(const QString& rateName = QString("")); - Q_INVOKABLE float getUpdateRate(const QString& rateName = QString("")); + Q_INVOKABLE float getDataRate(const QString& rateName = QString("")) const; + Q_INVOKABLE float getUpdateRate(const QString& rateName = QString("")) const; int getJointCount() { return _jointData.size(); } diff --git a/libraries/avatars/src/AvatarHashMap.cpp b/libraries/avatars/src/AvatarHashMap.cpp index 9d43bf438b..00c515a635 100644 --- a/libraries/avatars/src/AvatarHashMap.cpp +++ b/libraries/avatars/src/AvatarHashMap.cpp @@ -90,7 +90,7 @@ AvatarSharedPointer AvatarHashMap::newOrExistingAvatar(const QUuid& sessionUUID, return avatar; } -AvatarSharedPointer AvatarHashMap::findAvatar(const QUuid& sessionUUID) { +AvatarSharedPointer AvatarHashMap::findAvatar(const QUuid& sessionUUID) const { QReadLocker locker(&_hashLock); if (_avatarHash.contains(sessionUUID)) { return _avatarHash.value(sessionUUID); diff --git a/libraries/avatars/src/AvatarHashMap.h b/libraries/avatars/src/AvatarHashMap.h index eae4026bfc..dd097aef22 100644 --- a/libraries/avatars/src/AvatarHashMap.h +++ b/libraries/avatars/src/AvatarHashMap.h @@ -40,7 +40,7 @@ public: Q_INVOKABLE QVector getAvatarIdentifiers(); Q_INVOKABLE AvatarData* getAvatar(QUuid avatarID); - virtual AvatarSharedPointer getAvatarBySessionID(const QUuid& sessionID) { return findAvatar(sessionID); } + virtual AvatarSharedPointer getAvatarBySessionID(const QUuid& sessionID) const { return findAvatar(sessionID); } int numberOfAvatarsInRange(const glm::vec3& position, float rangeMeters); signals: @@ -65,7 +65,7 @@ protected: virtual AvatarSharedPointer newSharedAvatar(); virtual AvatarSharedPointer addAvatar(const QUuid& sessionUUID, const QWeakPointer& mixerWeakPointer); AvatarSharedPointer newOrExistingAvatar(const QUuid& sessionUUID, const QWeakPointer& mixerWeakPointer); - virtual AvatarSharedPointer findAvatar(const QUuid& sessionUUID); // uses a QReadLocker on the hashLock + virtual AvatarSharedPointer findAvatar(const QUuid& sessionUUID) const; // uses a QReadLocker on the hashLock virtual void removeAvatar(const QUuid& sessionUUID, KillAvatarReason removalReason = KillAvatarReason::NoReason); virtual void handleRemovedAvatar(const AvatarSharedPointer& removedAvatar, KillAvatarReason removalReason = KillAvatarReason::NoReason); @@ -73,7 +73,7 @@ protected: AvatarHash _avatarHash; // "Case-based safety": Most access to the _avatarHash is on the same thread. Write access is protected by a write-lock. // If you read from a different thread, you must read-lock the _hashLock. (Scripted write access is not supported). - QReadWriteLock _hashLock; + mutable QReadWriteLock _hashLock; private: QUuid _lastOwnerSessionUUID;