From f0f5f8871cbd83acdaf4e25ee027cc0eee7d8a04 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Mon, 23 Jan 2017 16:08:01 -0800 Subject: [PATCH 1/2] Fix Overlay-as-child of model entity with reg point This fixes as issue where when you set the parent of an overlay to be a model entity with a non-(0.5, 0.5, 0.5) registration point, the overlay would still be positioned relative to the center of the model. The issue is that the default parent joint index was 0, which is the center of the model. Entities had a default parent joint index of -1 (technically 65535 because it is a uint16). Avatars previously defaulted to 0, and that is maintained here. --- libraries/avatars/src/AvatarData.cpp | 1 + libraries/shared/src/SpatiallyNestable.h | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 1fb68fce14..faac0224cf 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -133,6 +133,7 @@ AvatarData::AvatarData() : setBodyPitch(0.0f); setBodyYaw(-90.0f); setBodyRoll(0.0f); + setParentJointIndex(0); ASSERT(sizeof(AvatarDataPacket::Header) == AvatarDataPacket::HEADER_SIZE); ASSERT(sizeof(AvatarDataPacket::MinimalAvatarInfo) == AvatarDataPacket::MINIMAL_AVATAR_INFO_SIZE); diff --git a/libraries/shared/src/SpatiallyNestable.h b/libraries/shared/src/SpatiallyNestable.h index f58e2c906c..04ed14f72e 100644 --- a/libraries/shared/src/SpatiallyNestable.h +++ b/libraries/shared/src/SpatiallyNestable.h @@ -26,6 +26,8 @@ using SpatiallyNestableWeakConstPointer = std::weak_ptr using SpatiallyNestablePointer = std::shared_ptr; using SpatiallyNestableConstPointer = std::shared_ptr; +static const uint16_t INVALID_JOINT_INDEX = -1; + enum class NestableType { Entity, Avatar, @@ -180,7 +182,7 @@ protected: const NestableType _nestableType; // EntityItem or an AvatarData QUuid _id; QUuid _parentID; // what is this thing's transform relative to? - quint16 _parentJointIndex { 0 }; // which joint of the parent is this relative to? + quint16 _parentJointIndex { INVALID_JOINT_INDEX }; // which joint of the parent is this relative to? mutable SpatiallyNestableWeakPointer _parent; From 9e4f47d57f6101c2107e0f37ee1204f84140f182 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 25 Jan 2017 09:08:54 -0800 Subject: [PATCH 2/2] Update AvatarData to use the default parent joint index --- libraries/avatars/src/AvatarData.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index faac0224cf..1fb68fce14 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -133,7 +133,6 @@ AvatarData::AvatarData() : setBodyPitch(0.0f); setBodyYaw(-90.0f); setBodyRoll(0.0f); - setParentJointIndex(0); ASSERT(sizeof(AvatarDataPacket::Header) == AvatarDataPacket::HEADER_SIZE); ASSERT(sizeof(AvatarDataPacket::MinimalAvatarInfo) == AvatarDataPacket::MINIMAL_AVATAR_INFO_SIZE);