CR feedback

This commit is contained in:
Zach Fox 2018-07-13 12:47:45 -07:00
parent 2da911ad84
commit 4daa0c6537
4 changed files with 29 additions and 12 deletions

View file

@ -1120,7 +1120,7 @@ Rectangle {
var data = message.params; var data = message.params;
var index = -1; var index = -1;
iAmAdmin = Users.canKick; iAmAdmin = Users.canKick;
index = findNearbySessionIndex(MyAvatar.sessionUUID, data); index = findNearbySessionIndex("", data);
if (index !== -1) { if (index !== -1) {
myData = data[index]; myData = data[index];
data.splice(index, 1); data.splice(index, 1);
@ -1197,8 +1197,8 @@ Rectangle {
for (var userId in message.params) { for (var userId in message.params) {
var audioLevel = message.params[userId][0]; var audioLevel = message.params[userId][0];
var avgAudioLevel = message.params[userId][1]; var avgAudioLevel = message.params[userId][1];
// If the userId is 0, we're updating "myData". // If the userId is "", we're updating "myData".
if (userId == 0) { if (userId === "") {
myData.audioLevel = audioLevel; myData.audioLevel = audioLevel;
myCard.audioLevel = audioLevel; // Defensive programming myCard.audioLevel = audioLevel; // Defensive programming
myData.avgAudioLevel = avgAudioLevel; myData.avgAudioLevel = avgAudioLevel;

View file

@ -670,7 +670,7 @@ void AvatarManager::setAvatarSortCoefficient(const QString& name, const QScriptV
} }
} }
QString AvatarManager::getPalData(const QList<QString> specificAvatarIdentifiers) { QVariantMap AvatarManager::getPalData(const QList<QString> specificAvatarIdentifiers) {
QJsonArray palData; QJsonArray palData;
auto avatarMap = getHashCopy(); auto avatarMap = getHashCopy();
@ -680,6 +680,13 @@ QString AvatarManager::getPalData(const QList<QString> specificAvatarIdentifiers
QString currentSessionUUID = avatar->getSessionUUID().toString(); QString currentSessionUUID = avatar->getSessionUUID().toString();
if (specificAvatarIdentifiers.isEmpty() || specificAvatarIdentifiers.contains(currentSessionUUID)) { if (specificAvatarIdentifiers.isEmpty() || specificAvatarIdentifiers.contains(currentSessionUUID)) {
QJsonObject thisAvatarPalData; QJsonObject thisAvatarPalData;
auto myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
if (currentSessionUUID == myAvatar->getSessionUUID().toString()) {
currentSessionUUID = "";
}
thisAvatarPalData.insert("sessionUUID", currentSessionUUID); thisAvatarPalData.insert("sessionUUID", currentSessionUUID);
thisAvatarPalData.insert("sessionDisplayName", avatar->getSessionDisplayName()); thisAvatarPalData.insert("sessionDisplayName", avatar->getSessionDisplayName());
thisAvatarPalData.insert("audioLoudness", avatar->getAudioLoudness()); thisAvatarPalData.insert("audioLoudness", avatar->getAudioLoudness());
@ -704,6 +711,7 @@ QString AvatarManager::getPalData(const QList<QString> specificAvatarIdentifiers
} }
++itr; ++itr;
} }
QJsonDocument doc(palData); QJsonObject doc;
return doc.toJson(QJsonDocument::Compact); doc.insert("data", palData);
return doc.toVariantMap();
} }

View file

@ -157,7 +157,16 @@ public:
*/ */
Q_INVOKABLE void setAvatarSortCoefficient(const QString& name, const QScriptValue& value); Q_INVOKABLE void setAvatarSortCoefficient(const QString& name, const QScriptValue& value);
Q_INVOKABLE QString getPalData(const QList<QString> specificAvatarIdentifiers = QList<QString>()); /**jsdoc
* Used in the PAL for getting PAL-related data about avatars nearby. Using this method is faster
* than iterating over each avatar and obtaining data about them in JavaScript, as that method
* locks and unlocks each avatar's data structure potentially hundreds of times per update tick.
* @function AvatarManager.getPalData
* @param {string list} specificAvatarIdentifiers - A list of specific Avatar Identifiers about which
* you want to get PAL data
* @returns {string}
*/
Q_INVOKABLE QVariantMap getPalData(const QList<QString> specificAvatarIdentifiers = QList<QString>());
float getMyAvatarSendRate() const { return _myAvatarSendRate.rate(); } float getMyAvatarSendRate() const { return _myAvatarSendRate.rate(); }
int getIdentityRequestsSent() const { return _identityRequestsSent; } int getIdentityRequestsSent() const { return _identityRequestsSent; }

View file

@ -448,7 +448,7 @@ function populateNearbyUserList(selectData, oldAudioData) {
horizontalAngleNormal = filter && Quat.getUp(orientation); horizontalAngleNormal = filter && Quat.getUp(orientation);
avatarsOfInterest = {}; avatarsOfInterest = {};
var avatarData = JSON.parse(AvatarList.getPalData()); var avatarData = AvatarList.getPalData().data;
avatarData.forEach(function (currentAvatarData) { avatarData.forEach(function (currentAvatarData) {
var id = currentAvatarData.sessionUUID; var id = currentAvatarData.sessionUUID;
@ -487,7 +487,7 @@ function populateNearbyUserList(selectData, oldAudioData) {
}; };
// Everyone needs to see admin status. Username and fingerprint returns default constructor output if the requesting user isn't an admin. // Everyone needs to see admin status. Username and fingerprint returns default constructor output if the requesting user isn't an admin.
Users.requestUsernameFromID(id); Users.requestUsernameFromID(id);
if (id !== MyAvatar.sessionUUID) { if (id !== "") {
addAvatarNode(id); // No overlay for ourselves addAvatarNode(id); // No overlay for ourselves
avatarsOfInterest[id] = true; avatarsOfInterest[id] = true;
} else { } else {
@ -548,7 +548,7 @@ function updateAudioLevel(overlay, avatarData) {
var param = {}; var param = {};
var level = [audioLevel, avgAudioLevel]; var level = [audioLevel, avgAudioLevel];
var userId = avatarData.sessionUUID === MyAvatar.sessionUUID ? 0 : avatarData.sessionUUID; var userId = avatarData.sessionUUID;
param[userId] = level; param[userId] = level;
sendToQml({ method: 'updateAudioLevel', params: param }); sendToQml({ method: 'updateAudioLevel', params: param });
} }
@ -557,12 +557,12 @@ var pingPong = true;
function updateOverlays() { function updateOverlays() {
var eye = Camera.position; var eye = Camera.position;
var avatarData = JSON.parse(AvatarList.getPalData()); var avatarData = AvatarList.getPalData().data;
avatarData.forEach(function (currentAvatarData) { avatarData.forEach(function (currentAvatarData) {
updateAudioLevel(overlay, currentAvatarData); updateAudioLevel(overlay, currentAvatarData);
if (currentAvatarData.sessionUUID === MyAvatar.sessionUUID || !avatarsOfInterest[currentAvatarData.sessionUUID]) { if (currentAvatarData.sessionUUID === "" || !avatarsOfInterest[currentAvatarData.sessionUUID]) {
return; // don't update ourself, or avatars we're not interested in return; // don't update ourself, or avatars we're not interested in
} }
var overlay = ExtendedOverlay.get(currentAvatarData.sessionUUID); var overlay = ExtendedOverlay.get(currentAvatarData.sessionUUID);