History

Merge remote-tracking branch 'upstream/master' into android

Brad Davis committed 8 years ago

Commit 75794512 parents 22d133c 1a1caa617 files · +882 −68Browse files

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

Unified · Split

interface/src/Application.cpp+24−7
@@ -2492,7 +2492,7 @@ void Application::initializeUi() { · 2491 unmodified lines
2492 offscreenSurfaceCache->reserve(Web3DOverlay::QML, 2);2492 offscreenSurfaceCache->reserve(Web3DOverlay::QML, 2);
2493}2493}
2494 2494
2495void Application::updateCamera(RenderArgs& renderArgs) {2495void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) {
2496 PROFILE_RANGE(render, __FUNCTION__);2496 PROFILE_RANGE(render, __FUNCTION__);
2497 PerformanceTimer perfTimer("updateCamera");2497 PerformanceTimer perfTimer("updateCamera");
2498 2498
@@ -2507,6 +2507,7 @@ void Application::updateCamera(RenderArgs& renderArgs) { · 8 unmodified lines
2507 // Using the latter will cause the camera to wobble with idle animations,2507 // Using the latter will cause the camera to wobble with idle animations,
2508 // or with changes from the face tracker2508 // or with changes from the face tracker
2509 if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON) {2509 if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON) {
2510 _thirdPersonHMDCameraBoomValid= false;
2510 if (isHMDMode()) {2511 if (isHMDMode()) {
2511 mat4 camMat = myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix();2512 mat4 camMat = myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix();
2512 _myCamera.setPosition(extractTranslation(camMat));2513 _myCamera.setPosition(extractTranslation(camMat));
@@ -2519,12 +2520,25 @@ void Application::updateCamera(RenderArgs& renderArgs) { · 6 unmodified lines
2519 }2520 }
2520 else if (_myCamera.getMode() == CAMERA_MODE_THIRD_PERSON) {2521 else if (_myCamera.getMode() == CAMERA_MODE_THIRD_PERSON) {
2521 if (isHMDMode()) {2522 if (isHMDMode()) {
2522 auto hmdWorldMat = myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix();2523
2523 _myCamera.setOrientation(glm::normalize(glmExtractRotation(hmdWorldMat)));2524 if (!_thirdPersonHMDCameraBoomValid) {
2524 _myCamera.setPosition(extractTranslation(hmdWorldMat) +2525 const glm::vec3 CAMERA_OFFSET = glm::vec3(0.0f, 0.0f, 0.7f);
2525 myAvatar->getWorldOrientation() * boomOffset);2526 _thirdPersonHMDCameraBoom = cancelOutRollAndPitch(myAvatar->getHMDSensorOrientation()) * CAMERA_OFFSET;
2527 _thirdPersonHMDCameraBoomValid = true;
2528 }
2529
2530 glm::mat4 thirdPersonCameraSensorToWorldMatrix = myAvatar->getSensorToWorldMatrix();
2531
2532 const glm::vec3 cameraPos = myAvatar->getHMDSensorPosition() + _thirdPersonHMDCameraBoom * myAvatar->getBoomLength();
2533 glm::mat4 sensorCameraMat = createMatFromQuatAndPos(myAvatar->getHMDSensorOrientation(), cameraPos);
2534 glm::mat4 worldCameraMat = thirdPersonCameraSensorToWorldMatrix * sensorCameraMat;
2535
2536 _myCamera.setOrientation(glm::normalize(glmExtractRotation(worldCameraMat)));
2537 _myCamera.setPosition(extractTranslation(worldCameraMat));
2526 }2538 }
2527 else {2539 else {
2540 _thirdPersonHMDCameraBoomValid = false;
2541
2528 _myCamera.setOrientation(myAvatar->getHead()->getOrientation());2542 _myCamera.setOrientation(myAvatar->getHead()->getOrientation());
2529 if (Menu::getInstance()->isOptionChecked(MenuOption::CenterPlayerInView)) {2543 if (Menu::getInstance()->isOptionChecked(MenuOption::CenterPlayerInView)) {
2530 _myCamera.setPosition(myAvatar->getDefaultEyePosition()2544 _myCamera.setPosition(myAvatar->getDefaultEyePosition()
@@ -2537,6 +2551,7 @@ void Application::updateCamera(RenderArgs& renderArgs) { · 6 unmodified lines
2537 }2551 }
2538 }2552 }
2539 else if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {2553 else if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {
2554 _thirdPersonHMDCameraBoomValid= false;
2540 if (isHMDMode()) {2555 if (isHMDMode()) {
2541 auto mirrorBodyOrientation = myAvatar->getWorldOrientation() * glm::quat(glm::vec3(0.0f, PI + _rotateMirror, 0.0f));2556 auto mirrorBodyOrientation = myAvatar->getWorldOrientation() * glm::quat(glm::vec3(0.0f, PI + _rotateMirror, 0.0f));
2542 2557
@@ -2571,6 +2586,7 @@ void Application::updateCamera(RenderArgs& renderArgs) { · 28 unmodified lines
2571 renderArgs._renderMode = RenderArgs::MIRROR_RENDER_MODE;2586 renderArgs._renderMode = RenderArgs::MIRROR_RENDER_MODE;
2572 }2587 }
2573 else if (_myCamera.getMode() == CAMERA_MODE_ENTITY) {2588 else if (_myCamera.getMode() == CAMERA_MODE_ENTITY) {
2589 _thirdPersonHMDCameraBoomValid= false;
2574 EntityItemPointer cameraEntity = _myCamera.getCameraEntityPointer();2590 EntityItemPointer cameraEntity = _myCamera.getCameraEntityPointer();
2575 if (cameraEntity != nullptr) {2591 if (cameraEntity != nullptr) {
2576 if (isHMDMode()) {2592 if (isHMDMode()) {
@@ -5153,7 +5169,8 @@ void Application::update(float deltaTime) { · 2576 unmodified lines
5153 _postUpdateLambdas.clear();5169 _postUpdateLambdas.clear();
5154 }5170 }
5155 5171
5156 editRenderArgs([this](AppRenderArgs& appRenderArgs) {5172
5173 editRenderArgs([this, deltaTime](AppRenderArgs& appRenderArgs) {
5157 PerformanceTimer perfTimer("editRenderArgs");5174 PerformanceTimer perfTimer("editRenderArgs");
5158 appRenderArgs._headPose= getHMDSensorPose();5175 appRenderArgs._headPose= getHMDSensorPose();
5159 5176
@@ -5200,7 +5217,7 @@ void Application::update(float deltaTime) { · 40 unmodified lines
5200 resizeGL();5217 resizeGL();
5201 }5218 }
5202 5219
5203 this->updateCamera(appRenderArgs._renderArgs);5220 this->updateCamera(appRenderArgs._renderArgs, deltaTime);
5204 appRenderArgs._eyeToWorld = _myCamera.getTransform();5221 appRenderArgs._eyeToWorld = _myCamera.getTransform();
5205 appRenderArgs._isStereo = false;5222 appRenderArgs._isStereo = false;
5206 5223