From 1138a3a275edbcecc3ccdbc33fa315b4c8a95a91 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Wed, 30 Jul 2014 16:49:53 -0700 Subject: [PATCH] Added referentials to AvatarData --- interface/src/avatar/MyAvatar.cpp | 5 +++++ interface/src/avatar/MyAvatar.h | 2 ++ libraries/avatars/src/AvatarData.cpp | 2 ++ libraries/avatars/src/AvatarData.h | 3 +++ libraries/avatars/src/Referential.cpp | 4 ++++ libraries/avatars/src/Referential.h | 7 ++++++- 6 files changed, 22 insertions(+), 1 deletion(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 4d2d679956..9126f680b8 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -444,6 +444,11 @@ glm::vec3 MyAvatar::getRightPalmPosition() { return rightHandPosition; } +void MyAvatar::changeReferential(Referential *ref) { + delete _referential; + _referential = ref; +} + void MyAvatar::setLocalGravity(glm::vec3 gravity) { _motionBehaviors |= AVATAR_MOTION_OBEY_LOCAL_GRAVITY; // Environmental and Local gravities are incompatible. Since Local is being set here diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 581044c522..4744ca80b8 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -149,6 +149,8 @@ public slots: glm::vec3 getLeftPalmPosition(); glm::vec3 getRightPalmPosition(); + void changeReferential(Referential* ref); + signals: void transformChanged(); diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index c3ea2f8b50..005a2abb44 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -36,6 +36,7 @@ using namespace std; AvatarData::AvatarData() : _sessionUUID(), _handPosition(0,0,0), + _referential(NULL), _bodyYaw(-90.f), _bodyPitch(0.0f), _bodyRoll(0.0f), @@ -62,6 +63,7 @@ AvatarData::AvatarData() : AvatarData::~AvatarData() { delete _headData; delete _handData; + delete _referential; } glm::vec3 AvatarData::getHandPosition() const { diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 008aecc817..aed1047947 100755 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -49,6 +49,7 @@ typedef unsigned long long quint64; #include +#include "Referential.h" #include "HeadData.h" #include "HandData.h" @@ -283,6 +284,8 @@ protected: QUuid _sessionUUID; glm::vec3 _position; glm::vec3 _handPosition; + + Referential* _referential; // Body rotation float _bodyYaw; // degrees diff --git a/libraries/avatars/src/Referential.cpp b/libraries/avatars/src/Referential.cpp index c929e2701f..dd504485f5 100644 --- a/libraries/avatars/src/Referential.cpp +++ b/libraries/avatars/src/Referential.cpp @@ -15,4 +15,8 @@ Referential::Referential(AvatarData* avatar) : _isValid(true), _avatar(avatar) { + if (_avatar == NULL) { + _isValid = false; + return; + } } diff --git a/libraries/avatars/src/Referential.h b/libraries/avatars/src/Referential.h index d125819edc..a1a9fcd0f7 100644 --- a/libraries/avatars/src/Referential.h +++ b/libraries/avatars/src/Referential.h @@ -12,10 +12,15 @@ #ifndef hifi_Referential_h #define hifi_Referential_h -#include "AvatarData.h" +#include +#include + +class AvatarData; class Referential { public: + virtual ~Referential(); + virtual bool isValid() { return _isValid; } virtual void update() = 0;