From 0c2abc988342e61d54594e8447438a00bf9c801c Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sun, 12 Feb 2017 10:01:30 -0800 Subject: [PATCH] fix handling of an avatar's parent changing --- libraries/avatars/src/AvatarData.cpp | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 89cabbce3e..6440432675 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -258,8 +258,8 @@ QByteArray AvatarData::toByteArray(AvatarDataDetail dataDetail, quint64 lastSent // local position, and parent info only apply to avatars that are parented. The local position // and the parent info can change independently though, so we track their "changed since" // separately - bool hasParentInfo = hasParent() && (sendAll || parentInfoChangedSince(lastSentTime)); - bool hasAvatarLocalPosition = hasParent() && (sendAll || tranlationChangedSince(lastSentTime)); + bool hasParentInfo = sendAll || parentInfoChangedSince(lastSentTime); + bool hasAvatarLocalPosition = sendAll || tranlationChangedSince(lastSentTime); bool hasFaceTrackerInfo = hasFaceTracker() && (sendAll || faceTrackerInfoChangedSince(lastSentTime)); bool hasJointData = sendAll || !sendMinimum; @@ -884,7 +884,7 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) { sourceBuffer += sizeof(AvatarDataPacket::AdditionalFlags); - if (somethingChanged) { + if (somethingChanged) { _additionalFlagsChanged = usecTimestampNow(); } int numBytesRead = sourceBuffer - startSection; @@ -892,8 +892,6 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) { _additionalFlagsUpdateRate.increment(); } - // FIXME -- make sure to handle the existance of a parent vs a change in the parent... - //bool hasReferential = oneAtBit(bitItems, HAS_REFERENTIAL); if (hasParentInfo) { auto startSection = sourceBuffer; PACKET_READ_CHECK(ParentInfo, sizeof(AvatarDataPacket::ParentInfo)); @@ -904,18 +902,15 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) { auto newParentID = QUuid::fromRfc4122(byteArray); - if ((_parentID != newParentID) || (_parentJointIndex != parentInfo->parentJointIndex)) { - setParentID(newParentID); - setParentJointIndex(parentInfo->parentJointIndex); + if ((getParentID() != newParentID) || (getParentJointIndex() != parentInfo->parentJointIndex)) { + SpatiallyNestable::setParentID(newParentID); + SpatiallyNestable::setParentJointIndex(parentInfo->parentJointIndex); _parentChanged = usecTimestampNow(); } int numBytesRead = sourceBuffer - startSection; _parentInfoRate.increment(numBytesRead); _parentInfoUpdateRate.increment(); - } else { - // FIXME - this aint totally right, for switching to parent/no-parent - setParentID(QUuid()); } if (hasAvatarLocalPosition) {