History

fixing some issues

Dante Ruiz committed 8 years ago

Commit 1079cfb1 parent 272f71b2 files · +40 −19Browse files

Showing the changes to interface/src/Application.cpp (1 of 2 files). Show all

Unified · Split

interface/src/Application.cpp+40−14
@@ -2789,22 +2789,48 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { · 2788 unmodified lines
27892789 }
27902790 else if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {
27912791 _thirdPersonHMDCameraBoomValid= false;
2792− auto userInputMapper = DependencyManager::get<UserInputMapper>();
2793− const float YAW_SPEED = 70.0f;
2794− float targetSpeed = userInputMapper->getActionState(controller::Action::YAW) * YAW_SPEED;
2795− if (targetSpeed != 0.0f) {
2796− const float ROTATION_TIMESCALE = 20.0f;
2797− float blend = deltaTime / ROTATION_TIMESCALE;
2798− if (blend > 1.0f) {
2799− blend = 1.0f;
2792+
2793+ if (isHMDMode()) {
2794+ auto mirrorBodyOrientation = myAvatar->getWorldOrientation() * glm::quat(glm::vec3(0.0f, PI + _rotateMirror, 0.0f));
2795+
2796+ glm::quat hmdRotation = extractRotation(myAvatar->getHMDSensorMatrix());
2797+ // Mirror HMD yaw and roll
2798+ glm::vec3 mirrorHmdEulers = glm::eulerAngles(hmdRotation);
2799+ mirrorHmdEulers.y = -mirrorHmdEulers.y;
2800+ mirrorHmdEulers.z = -mirrorHmdEulers.z;
2801+ glm::quat mirrorHmdRotation = glm::quat(mirrorHmdEulers);
2802+
2803+ glm::quat worldMirrorRotation = mirrorBodyOrientation * mirrorHmdRotation;
2804+
2805+ _myCamera.setOrientation(worldMirrorRotation);
2806+
2807+ glm::vec3 hmdOffset = extractTranslation(myAvatar->getHMDSensorMatrix());
2808+ // Mirror HMD lateral offsets
2809+ hmdOffset.x = -hmdOffset.x;
2810+
2811+ _myCamera.setPosition(myAvatar->getDefaultEyePosition()
2812+ + glm::vec3(0, _raiseMirror * myAvatar->getModelScale(), 0)
2813+ + mirrorBodyOrientation * glm::vec3(0.0f, 0.0f, 1.0f) * MIRROR_FULLSCREEN_DISTANCE * _scaleMirror
2814+ + mirrorBodyOrientation * hmdOffset);
2815+ }
2816+ else {
2817+ auto userInputMapper = DependencyManager::get<UserInputMapper>();
2818+ const float YAW_SPEED = 70.0f;
2819+ float targetSpeed = userInputMapper->getActionState(controller::Action::YAW) * YAW_SPEED;
2820+ if (targetSpeed != 0.0f) {
2821+ const float ROTATION_TIMESCALE = 20.0f;
2822+ float blend = deltaTime / ROTATION_TIMESCALE;
2823+ if (blend > 1.0f) {
2824+ blend = 1.0f;
2825+ }
2826+ _rotateMirror = (1.0f - blend) * _rotateMirror + blend * targetSpeed;
28002827 }
2801− _rotateMirror = (1.0f - blend) * _rotateMirror + blend * targetSpeed;
2828+ _myCamera.setOrientation(glm::quat(glm::vec3(0.0f, PI + _rotateMirror, 0.0f)));
2829+ _myCamera.setPosition(myAvatar->getDefaultEyePosition()
2830+ + glm::vec3(0, _raiseMirror * myAvatar->getModelScale(), 0)
2831+ + (glm::quat(glm::vec3(0.0f, _rotateMirror, 0.0f))) *
2832+ glm::vec3(0.0f, 0.0f, -1.0f) * myAvatar->getBoomLength() * _scaleMirror);
28022833 }
2803− _myCamera.setOrientation(glm::quat(glm::vec3(0.0f, PI + _rotateMirror, 0.0f)));
2804− _myCamera.setPosition(myAvatar->getDefaultEyePosition()
2805− + glm::vec3(0, _raiseMirror * myAvatar->getModelScale(), 0)
2806− + (glm::quat(glm::vec3(0.0f, _rotateMirror, 0.0f))) *
2807− glm::vec3(0.0f, 0.0f, -1.0f) * myAvatar->getBoomLength() * _scaleMirror);
28082834 renderArgs._renderMode = RenderArgs::MIRROR_RENDER_MODE;
28092835 }
28102836 else if (_myCamera.getMode() == CAMERA_MODE_ENTITY) {