diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 577edc229d..c28ccfcd51 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -289,42 +289,40 @@ void Application::paintGL() { glPushMatrix(); { glLoadIdentity(); - // camera settings - if (OculusManager::isConnected()) { - _myAvatar.setDisplayingHead(false); - _myCamera.setUpShift (0.0f); - _myCamera.setDistance (0.0f); - _myCamera.setTightness (100.0f); - _myCamera.setTargetPosition(_myAvatar.getHeadPosition()); - _myCamera.setTargetRotation(_myAvatar.getBodyYaw() + _myAvatar.getHead().getYaw(), - -_myAvatar.getHead().getPitch(), - _myAvatar.getHead().getRoll()); - - } else if (_myCamera.getMode() == CAMERA_MODE_MIRROR) { + if (_myCamera.getMode() == CAMERA_MODE_MIRROR) { _myCamera.setTightness (100.0f); _myCamera.setTargetPosition(_myAvatar.getSpringyHeadPosition()); _myCamera.setTargetRotation(_myAvatar.getBodyYaw() - 180.0f, 0.0f, 0.0f); - } else { - if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON) { - _myCamera.setTargetPosition(_myAvatar.getSpringyHeadPosition()); - _myCamera.setTargetRotation(_myAvatar.getAbsoluteHeadYaw(), - 0.0f, - //-_myAvatar.getAbsoluteHeadPitch(), - 0.0f); - // Take a look at whether we are inside head, don't render it if so. - const float HEAD_RENDER_DISTANCE = 0.5; - glm::vec3 distanceToHead(_myCamera.getPosition() - _myAvatar.getSpringyHeadPosition()); - if (glm::length(distanceToHead) < HEAD_RENDER_DISTANCE) { _myAvatar.setDisplayingHead(false); } + } else if (OculusManager::isConnected()) { + _myAvatar.setDisplayingHead(false); + _myCamera.setUpShift (0.0f); + _myCamera.setDistance (0.0f); + _myCamera.setTightness (100.0f); + _myCamera.setTargetPosition(_myAvatar.getHeadPosition()); + _myCamera.setTargetRotation(_myAvatar.getAbsoluteHeadYaw(), + -_myAvatar.getHead().getPitch(), + _myAvatar.getHead().getRoll()); + } else if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON) { + _myCamera.setTargetPosition(_myAvatar.getSpringyHeadPosition()); + _myCamera.setTargetRotation(_myAvatar.getAbsoluteHeadYaw(), + 0.0f, + //-_myAvatar.getAbsoluteHeadPitch(), + 0.0f); + // Take a look at whether we are inside head, don't render it if so. + const float HEAD_RENDER_DISTANCE = 0.5; + glm::vec3 distanceToHead(_myCamera.getPosition() - _myAvatar.getSpringyHeadPosition()); - } else if (_myCamera.getMode() == CAMERA_MODE_THIRD_PERSON) { - _myCamera.setTargetPosition(_myAvatar.getHeadPosition()); - _myCamera.setTargetRotation(_myAvatar.getBodyYaw(), - 0.0f, - //-_myAvatar.getAbsoluteHeadPitch(), - 0.0f); + if (glm::length(distanceToHead) < HEAD_RENDER_DISTANCE) { + _myAvatar.setDisplayingHead(false); } + } else if (_myCamera.getMode() == CAMERA_MODE_THIRD_PERSON) { + _myCamera.setTargetPosition(_myAvatar.getHeadPosition()); + _myCamera.setTargetRotation(_myAvatar.getBodyYaw(), + 0.0f, + //-_myAvatar.getAbsoluteHeadPitch(), + 0.0f); } // important... @@ -1345,8 +1343,7 @@ void Application::updateAvatar(float deltaTime) { const float HORIZONTAL_PIXELS_PER_DEGREE = 2880.f / 45.f; const float VERTICAL_PIXELS_PER_DEGREE = 1800.f / 30.f; if (powf(measuredYawRate * measuredYawRate + - measuredPitchRate * measuredPitchRate, 0.5) > MIN_MOUSE_RATE) - { + measuredPitchRate * measuredPitchRate, 0.5) > MIN_MOUSE_RATE) { _headMouseX += measuredYawRate * HORIZONTAL_PIXELS_PER_DEGREE * deltaTime; _headMouseY -= measuredPitchRate * VERTICAL_PIXELS_PER_DEGREE * deltaTime; } @@ -1358,7 +1355,7 @@ void Application::updateAvatar(float deltaTime) { if (OculusManager::isConnected()) { float yaw, pitch, roll; OculusManager::getEulerAngles(yaw, pitch, roll); - + _myAvatar.getHead().setYaw(-yaw); _myAvatar.getHead().setPitch(pitch); _myAvatar.getHead().setRoll(roll); diff --git a/interface/src/Avatar.cpp b/interface/src/Avatar.cpp index f371f2e322..efcdfeffbf 100644 --- a/interface/src/Avatar.cpp +++ b/interface/src/Avatar.cpp @@ -99,7 +99,6 @@ Avatar::Avatar(bool isMine) : // give the pointer to our head to inherited _headData variable from AvatarData _headData = &_head; - for (int i = 0; i < MAX_DRIVE_KEYS; i++) { _driveKeys[i] = false; } diff --git a/interface/src/Avatar.h b/interface/src/Avatar.h index eb7198173a..446d6cfe2e 100644 --- a/interface/src/Avatar.h +++ b/interface/src/Avatar.h @@ -105,7 +105,7 @@ public: float getHeight() const { return _height; } AvatarMode getMode() const { return _mode; } - Head getHead() const { return _head; } + Head& getHead() { return _head; } void setMousePressed(bool pressed); void render(bool lookingInMirror, glm::vec3 cameraPosition); diff --git a/interface/src/Head.h b/interface/src/Head.h index 5b45c6421c..6ea9218bbf 100644 --- a/interface/src/Head.h +++ b/interface/src/Head.h @@ -51,7 +51,10 @@ public: float yawRate; float noise; -private: +private: + // disallow copies of the Head, copy of owning Avatar is disallowed too + Head(const Head&); + Head& operator= (const Head&); bool _returnHeadToCenter; float _audioLoudness; diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 8924b5f937..3e3536c3a9 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -95,10 +95,6 @@ public: void setHeadData(HeadData* headData) { _headData = headData; } protected: - // privatize the copy constructor and assignment operator so they cannot be called - AvatarData(const AvatarData&); - AvatarData& operator= (const AvatarData&); - glm::vec3 _position; glm::vec3 _handPosition; @@ -137,6 +133,10 @@ protected: bool _wantDelta; HeadData* _headData; +private: + // privatize the copy constructor and assignment operator so they cannot be called + AvatarData(const AvatarData&); + AvatarData& operator= (const AvatarData&); }; #endif /* defined(__hifi__AvatarData__) */ diff --git a/libraries/avatars/src/HeadData.h b/libraries/avatars/src/HeadData.h index 8c9e99e6d9..fb16fea00e 100644 --- a/libraries/avatars/src/HeadData.h +++ b/libraries/avatars/src/HeadData.h @@ -55,6 +55,10 @@ protected: glm::vec3 _lookAtPosition; float _leanSideways; float _leanForward; +private: + // privatize copy ctor and assignment operator so copies of this object cannot be made + HeadData(const HeadData&); + HeadData& operator= (const HeadData&); }; #endif /* defined(__hifi__HeadData__) */