diff --git a/examples/avatarLocalLight.js b/examples/avatarLocalLight.js index 225ed4d755..025196e0b0 100644 --- a/examples/avatarLocalLight.js +++ b/examples/avatarLocalLight.js @@ -17,7 +17,6 @@ var currentSelection = 0; var currentNumLights = 1; var maxNumLights = 2; var currentNumAvatars = 0; -var avatarHashIDs = []; function keyPressEvent(event) { @@ -142,23 +141,14 @@ function updateLocalLights() // new avatars, so add lights var numAvatars = AvatarManager.getNumAvatars(); if (numAvatars != currentNumAvatars) { - + for (var i = 0; i < numAvatars; i++) { var id = AvatarManager.getAvatarHashKey(i); - // check if avatar has already been registered - var hasRegistered = false; - for (var j = 0; j < numAvatars; j++) { - if (avatarHashIDs[j] == id) { - hasRegistered = true; - break; - } - } + var numLights = AvatarManager.getNumLightsInAvatar(i); - // add new id and set light params - if (!hasRegistered) { - - avatarHashIDs.push(id); + // check if new avatar has lights + if (numLights <= 0) { AvatarManager.addAvatarLocalLight(i); // set color and direction for new avatar diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index 461956b3c7..aff0a4a5c0 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -928,27 +928,25 @@ void Avatar::setShowDisplayName(bool showDisplayName) { void Avatar::setLocalLightDirection(const glm::vec3& direction, int lightIndex) { _localLightDirections[lightIndex] = direction; - qDebug( "set light %d direction ( %f, %f, %f )\n", lightIndex, direction.x, direction.y, direction.z ); } void Avatar::setLocalLightColor(const glm::vec3& color, int lightIndex) { _localLightColors[lightIndex] = color; - qDebug( "set light %d color ( %f, %f, %f )\n", lightIndex, color.x, color.y, color.z ); } void Avatar::addLocalLight() { if (_numLocalLights + 1 <= MAX_LOCAL_LIGHTS) { ++_numLocalLights; } - - qDebug("ADD LOCAL LIGHT (numLocalLights = %d)\n", _numLocalLights); } void Avatar::removeLocalLight() { if (_numLocalLights - 1 >= 0) { --_numLocalLights; } - - qDebug("REMOVE LOCAL LIGHT (numLocalLights = %d)\n", _numLocalLights); +} + +int Avatar::getNumLocalLights() { + return _numLocalLights; } diff --git a/interface/src/avatar/Avatar.h b/interface/src/avatar/Avatar.h index 2d85aa70a5..0550c4aa04 100755 --- a/interface/src/avatar/Avatar.h +++ b/interface/src/avatar/Avatar.h @@ -162,7 +162,8 @@ public slots: void setLocalLightDirection(const glm::vec3& direction, int lightIndex); void setLocalLightColor(const glm::vec3& color, int lightIndex); void addLocalLight(); - void removeLocalLight(); + void removeLocalLight(); + int getNumLocalLights(); signals: void collisionWithAvatar(const QUuid& myUUID, const QUuid& theirUUID, const CollisionInfo& collision); diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index bc84aa6b87..128735a24e 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -200,6 +200,17 @@ void AvatarManager::setAvatarLightColor(const glm::vec3& color, int lightIndex, } } +int AvatarManager::getNumLightsInAvatar(int avatarIndex) { + int numLights = 0; + + Avatar* avatar = getAvatarFromIndex(avatarIndex); + if (avatar) { + numLights = avatar->getNumLocalLights(); + } + + return numLights; +} + int AvatarManager::getNumAvatars() { return _avatarHash.count(); } diff --git a/interface/src/avatar/AvatarManager.h b/interface/src/avatar/AvatarManager.h index f2b5904883..d4b404e3d5 100644 --- a/interface/src/avatar/AvatarManager.h +++ b/interface/src/avatar/AvatarManager.h @@ -42,6 +42,7 @@ public slots: void setAvatarLightDirection(const glm::vec3& direction, int lightIndex, int avatarIndex); void removeAvatarLocalLight(int avatarIndex); void addAvatarLocalLight(int avatarIndex); + int getNumLightsInAvatar(int avatarIndex); int getNumAvatars(); QString getAvatarHashKey(int index);