History

Merge branch 'master' of git://github.com/highfidelity/hifi into 19644

Ryan Huffman committed 12 years ago

Commit cfb1e5a2 parents a1d5d44 e3373a498 files · +3361 −973Browse files

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

Unified · Split

interface/src/Application.cpp+119−126
@@ -151,6 +151,9 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 150 unmodified lines
151 _lastQueriedTime(usecTimestampNow()),151 _lastQueriedTime(usecTimestampNow()),
152 _mirrorViewRect(QRect(MIRROR_VIEW_LEFT_PADDING, MIRROR_VIEW_TOP_PADDING, MIRROR_VIEW_WIDTH, MIRROR_VIEW_HEIGHT)),152 _mirrorViewRect(QRect(MIRROR_VIEW_LEFT_PADDING, MIRROR_VIEW_TOP_PADDING, MIRROR_VIEW_WIDTH, MIRROR_VIEW_HEIGHT)),
153 _cameraPushback(0.0f),153 _cameraPushback(0.0f),
154 _scaleMirror(1.0f),
155 _rotateMirror(0.0f),
156 _raiseMirror(0.0f),
154 _mouseX(0),157 _mouseX(0),
155 _mouseY(0),158 _mouseY(0),
156 _lastMouseMove(usecTimestampNow()),159 _lastMouseMove(usecTimestampNow()),
@@ -572,9 +575,9 @@ void Application::paintGL() { · 415 unmodified lines
572 _myCamera.setTightness(0.0f);575 _myCamera.setTightness(0.0f);
573 glm::vec3 eyePosition = _myAvatar->getHead()->calculateAverageEyePosition();576 glm::vec3 eyePosition = _myAvatar->getHead()->calculateAverageEyePosition();
574 float headHeight = eyePosition.y - _myAvatar->getPosition().y;577 float headHeight = eyePosition.y - _myAvatar->getPosition().y;
575 _myCamera.setDistance(MIRROR_FULLSCREEN_DISTANCE * _myAvatar->getScale());578 _myCamera.setDistance(MIRROR_FULLSCREEN_DISTANCE * _myAvatar->getScale() * _scaleMirror);
576 _myCamera.setTargetPosition(_myAvatar->getPosition() + glm::vec3(0, headHeight, 0));579 _myCamera.setTargetPosition(_myAvatar->getPosition() + glm::vec3(0, headHeight + (_raiseMirror * _myAvatar->getScale()), 0));
577 _myCamera.setTargetRotation(_myAvatar->getWorldAlignedOrientation() * glm::quat(glm::vec3(0.0f, PI, 0.0f)));580 _myCamera.setTargetRotation(_myAvatar->getWorldAlignedOrientation() * glm::quat(glm::vec3(0.0f, PI + _rotateMirror, 0.0f)));
578 581
579 // if the head would intersect the near clip plane, we must push the camera out582 // if the head would intersect the near clip plane, we must push the camera out
580 glm::vec3 relativePosition = glm::inverse(_myCamera.getTargetRotation()) *583 glm::vec3 relativePosition = glm::inverse(_myCamera.getTargetRotation()) *
@@ -685,11 +688,8 @@ void Application::resizeGL(int width, int height) { · 104 unmodified lines
685 glLoadIdentity();688 glLoadIdentity();
686 689
687 // update Stats width690 // update Stats width
688 int horizontalOffset = 0;691 // let's set horizontal offset to give stats some margin to mirror
689 if (Menu::getInstance()->isOptionChecked(MenuOption::Mirror)) {692 int horizontalOffset = MIRROR_VIEW_WIDTH + MIRROR_VIEW_LEFT_PADDING * 2;
690 // mirror is enabled, let's set horizontal offset to give stats some margin
691 horizontalOffset += MIRROR_VIEW_WIDTH + MIRROR_VIEW_LEFT_PADDING * 2;
692 }
693 Stats::getInstance()->resetWidth(width, horizontalOffset);693 Stats::getInstance()->resetWidth(width, horizontalOffset);
694}694}
695 695
@@ -870,19 +870,43 @@ void Application::keyPressEvent(QKeyEvent* event) { · 174 unmodified lines
870 break;870 break;
871 871
872 case Qt::Key_Up:872 case Qt::Key_Up:
873 _myAvatar->setDriveKeys(isShifted ? UP : FWD, 1.f);873 if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {
874 if (!isShifted) {
875 _scaleMirror *= 0.95f;
876 } else {
877 _raiseMirror += 0.05f;
878 }
879 } else {
880 _myAvatar->setDriveKeys(isShifted ? UP : FWD, 1.f);
881 }
874 break;882 break;
875 883
876 case Qt::Key_Down:884 case Qt::Key_Down:
877 _myAvatar->setDriveKeys(isShifted ? DOWN : BACK, 1.f);885 if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {
886 if (!isShifted) {
887 _scaleMirror *= 1.05f;
888 } else {
889 _raiseMirror -= 0.05f;
890 }
891 } else {
892 _myAvatar->setDriveKeys(isShifted ? DOWN : BACK, 1.f);
893 }
878 break;894 break;
879 895
880 case Qt::Key_Left:896 case Qt::Key_Left:
881 _myAvatar->setDriveKeys(isShifted ? LEFT : ROT_LEFT, 1.f);897 if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {
898 _rotateMirror += PI / 20.f;
899 } else {
900 _myAvatar->setDriveKeys(isShifted ? LEFT : ROT_LEFT, 1.f);
901 }
882 break;902 break;
883 903
884 case Qt::Key_Right:904 case Qt::Key_Right:
885 _myAvatar->setDriveKeys(isShifted ? RIGHT : ROT_RIGHT, 1.f);905 if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {
906 _rotateMirror -= PI / 20.f;
907 } else {
908 _myAvatar->setDriveKeys(isShifted ? RIGHT : ROT_RIGHT, 1.f);
909 }
886 break;910 break;
887 911
888 case Qt::Key_I:912 case Qt::Key_I:
@@ -1139,10 +1163,8 @@ void Application::mouseReleaseEvent(QMouseEvent* event) { · 250 unmodified lines
1139 _mousePressed = false;1163 _mousePressed = false;
1140 checkBandwidthMeterClick();1164 checkBandwidthMeterClick();
1141 if (Menu::getInstance()->isOptionChecked(MenuOption::Stats)) {1165 if (Menu::getInstance()->isOptionChecked(MenuOption::Stats)) {
1142 int horizontalOffset = 0;1166 // let's set horizontal offset to give stats some margin to mirror
1143 if (Menu::getInstance()->isOptionChecked(MenuOption::Mirror)) {1167 int horizontalOffset = MIRROR_VIEW_WIDTH;
1144 horizontalOffset = MIRROR_VIEW_WIDTH;
1145 }
1146 Stats::getInstance()->checkClick(_mouseX, _mouseY, _mouseDragStartedX, _mouseDragStartedY, horizontalOffset);1168 Stats::getInstance()->checkClick(_mouseX, _mouseY, _mouseDragStartedX, _mouseDragStartedY, horizontalOffset);
1147 }1169 }
1148 }1170 }
@@ -1194,10 +1216,6 @@ void Application::touchBeginEvent(QTouchEvent* event) { · 45 unmodified lines
1194 return;1216 return;
1195 }1217 }
1196 1218
1197 // put any application specific touch behavior below here..
1198 _lastTouchAvgX = _touchAvgX;
1199 _lastTouchAvgY = _touchAvgY;
1200
1201}1219}
1202 1220
1203void Application::touchEndEvent(QTouchEvent* event) {1221void Application::touchEndEvent(QTouchEvent* event) {
@@ -1852,34 +1870,6 @@ void Application::updateMyAvatarLookAtPosition() { · 648 unmodified lines
1852 _myAvatar->getHead()->setLookAtPosition(lookAtSpot);1870 _myAvatar->getHead()->setLookAtPosition(lookAtSpot);
1853}1871}
1854 1872
1855void Application::updateHandAndTouch(float deltaTime) {
1856 bool showWarnings = Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings);
1857 PerformanceWarning warn(showWarnings, "Application::updateHandAndTouch()");
1858
1859 // Update from Touch
1860 if (_isTouchPressed) {
1861 _lastTouchAvgX = _touchAvgX;
1862 _lastTouchAvgY = _touchAvgY;
1863 }
1864}
1865
1866void Application::updateLeap(float deltaTime) {
1867 bool showWarnings = Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings);
1868 PerformanceWarning warn(showWarnings, "Application::updateLeap()");
1869}
1870
1871void Application::updateSixense(float deltaTime) {
1872 bool showWarnings = Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings);
1873 PerformanceWarning warn(showWarnings, "Application::updateSixense()");
1874
1875 _sixenseManager.update(deltaTime);
1876}
1877
1878void Application::updateSerialDevices(float deltaTime) {
1879 bool showWarnings = Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings);
1880 PerformanceWarning warn(showWarnings, "Application::updateSerialDevices()");
1881}
1882
1883void Application::updateThreads(float deltaTime) {1873void Application::updateThreads(float deltaTime) {
1884 bool showWarnings = Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings);1874 bool showWarnings = Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings);
1885 PerformanceWarning warn(showWarnings, "Application::updateThreads()");1875 PerformanceWarning warn(showWarnings, "Application::updateThreads()");
@@ -1993,11 +1983,7 @@ void Application::update(float deltaTime) { · 107 unmodified lines
1993 updateVisage();1983 updateVisage();
1994 _myAvatar->updateLookAtTargetAvatar();1984 _myAvatar->updateLookAtTargetAvatar();
1995 updateMyAvatarLookAtPosition();1985 updateMyAvatarLookAtPosition();
1996 1986 _sixenseManager.update(deltaTime);
1997 updateHandAndTouch(deltaTime); // Update state for touch sensors
1998 updateLeap(deltaTime); // Leap finger-sensing device
1999 updateSixense(deltaTime); // Razer Hydra controllers
2000 updateSerialDevices(deltaTime); // Read serial port interface devices
2001 updateMyAvatar(deltaTime); // Sample hardware, update view frustum if needed, and send avatar data to mixer/nodes1987 updateMyAvatar(deltaTime); // Sample hardware, update view frustum if needed, and send avatar data to mixer/nodes
2002 updateThreads(deltaTime); // If running non-threaded, then give the threads some time to process...1988 updateThreads(deltaTime); // If running non-threaded, then give the threads some time to process...
2003 _avatarManager.updateOtherAvatars(deltaTime); //loop through all the other avatars and simulate them...1989 _avatarManager.updateOtherAvatars(deltaTime); //loop through all the other avatars and simulate them...
@@ -2350,8 +2336,8 @@ void Application::updateShadowMap() { · 346 unmodified lines
2350 updateUntranslatedViewMatrix();2336 updateUntranslatedViewMatrix();
2351 2337
2352 _avatarManager.renderAvatars(Avatar::SHADOW_RENDER_MODE);2338 _avatarManager.renderAvatars(Avatar::SHADOW_RENDER_MODE);
2353 _particles.render();2339 _particles.render(OctreeRenderer::SHADOW_RENDER_MODE);
2354 _models.render();2340 _models.render(OctreeRenderer::SHADOW_RENDER_MODE);
2355 2341
2356 glPopMatrix();2342 glPopMatrix();
2357 2343
@@ -2743,11 +2729,8 @@ void Application::displayOverlay() { · 385 unmodified lines
2743 glPointSize(1.0f);2729 glPointSize(1.0f);
2744 2730
2745 if (Menu::getInstance()->isOptionChecked(MenuOption::Stats)) {2731 if (Menu::getInstance()->isOptionChecked(MenuOption::Stats)) {
2746 int horizontalOffset = 0;2732 // let's set horizontal offset to give stats some margin to mirror
2747 if (Menu::getInstance()->isOptionChecked(MenuOption::Mirror)) {2733 int horizontalOffset = MIRROR_VIEW_WIDTH + MIRROR_VIEW_LEFT_PADDING * 2;
2748 // mirror is enabled, let's set horizontal offset to give stats some margin
2749 horizontalOffset += MIRROR_VIEW_WIDTH + MIRROR_VIEW_LEFT_PADDING * 2;
2750 }
2751 int voxelPacketsToProcess = _voxelProcessor.packetsToProcessCount();2734 int voxelPacketsToProcess = _voxelProcessor.packetsToProcessCount();
2752 // Onscreen text about position, servers, etc2735 // Onscreen text about position, servers, etc
2753 Stats::getInstance()->display(WHITE_TEXT, horizontalOffset, _fps, _packetsPerSecond, _bytesPerSecond, voxelPacketsToProcess);2736 Stats::getInstance()->display(WHITE_TEXT, horizontalOffset, _fps, _packetsPerSecond, _bytesPerSecond, voxelPacketsToProcess);
@@ -3387,71 +3370,6 @@ void Application::saveScripts() { · 633 unmodified lines
3387 _settings->endArray();3370 _settings->endArray();
3388}3371}
3389 3372
3390void Application::stopAllScripts() {
3391 // stops all current running scripts
3392 for (int i = 0; i < _scriptEnginesHash.size(); ++i) {
3393 _scriptEnginesHash.values().at(i)->stop();
3394 qDebug() << "stopping script..." << getRunningScripts().at(i);
3395 }
3396 _scriptEnginesHash.clear();
3397 _runningScriptsWidget->setRunningScripts(getRunningScripts());
3398 bumpSettings();
3399}
3400
3401void Application::stopScript(const QString &scriptName) {
3402 if (_scriptEnginesHash.contains(scriptName)) {
3403 _scriptEnginesHash.value(scriptName)->stop();
3404 qDebug() << "stopping script..." << scriptName;
3405 _scriptEnginesHash.remove(scriptName);
3406 _runningScriptsWidget->setRunningScripts(getRunningScripts());
3407 bumpSettings();
3408 }
3409}
3410
3411void Application::reloadAllScripts() {
3412 // remember all the current scripts so we can reload them
3413 QStringList reloadList = getRunningScripts();
3414 // reloads all current running scripts
3415 stopAllScripts();
3416
3417 foreach (QString scriptName, reloadList){
3418 qDebug() << "reloading script..." << scriptName;
3419 loadScript(scriptName);
3420 }
3421}
3422
3423void Application::manageRunningScriptsWidgetVisibility(bool shown) {
3424 if (_runningScriptsWidgetWasVisible && shown) {
3425 _runningScriptsWidget->show();
3426 } else if (_runningScriptsWidgetWasVisible && !shown) {
3427 _runningScriptsWidget->hide();
3428 }
3429}
3430
3431void Application::toggleRunningScriptsWidget() {
3432 if (_runningScriptsWidgetWasVisible) {
3433 _runningScriptsWidget->hide();
3434 _runningScriptsWidgetWasVisible = false;
3435 } else {
3436 _runningScriptsWidget->setBoundary(QRect(_window->geometry().topLeft(),
3437 _window->size()));
3438 _runningScriptsWidget->show();
3439 _runningScriptsWidgetWasVisible = true;
3440 }
3441}
3442
3443void Application::uploadHead() {
3444 uploadModel(HEAD_MODEL);
3445}
3446
3447void Application::uploadSkeleton() {
3448 uploadModel(SKELETON_MODEL);
3449}
3450
3451void Application::uploadAttachment() {
3452 uploadModel(ATTACHMENT_MODEL);
3453}
3454
3455ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScriptFromEditor) {3373ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScriptFromEditor) {
3456 if(loadScriptFromEditor && _scriptEnginesHash.contains(scriptName) && !_scriptEnginesHash[scriptName]->isFinished()){3374 if(loadScriptFromEditor && _scriptEnginesHash.contains(scriptName) && !_scriptEnginesHash[scriptName]->isFinished()){
3457 return _scriptEnginesHash[scriptName];3375 return _scriptEnginesHash[scriptName];
@@ -3489,6 +3407,8 @@ ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScript · 31 unmodified lines
3489 scriptEngine->registerGlobalObject("Clipboard", clipboardScriptable);3407 scriptEngine->registerGlobalObject("Clipboard", clipboardScriptable);
3490 connect(scriptEngine, SIGNAL(finished(const QString&)), clipboardScriptable, SLOT(deleteLater()));3408 connect(scriptEngine, SIGNAL(finished(const QString&)), clipboardScriptable, SLOT(deleteLater()));
3491 3409
3410 connect(scriptEngine, SIGNAL(finished(const QString&)), this, SLOT(scriptFinished(const QString&)));
3411
3492 scriptEngine->registerGlobalObject("Overlays", &_overlays);3412 scriptEngine->registerGlobalObject("Overlays", &_overlays);
3493 3413
3494 QScriptValue windowValue = scriptEngine->registerGlobalObject("Window", WindowScriptingInterface::getInstance());3414 QScriptValue windowValue = scriptEngine->registerGlobalObject("Window", WindowScriptingInterface::getInstance());
@@ -3531,6 +3451,69 @@ ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScript · 36 unmodified lines
3531 return scriptEngine;3451 return scriptEngine;
3532}3452}
3533 3453
3454void Application::scriptFinished(const QString& scriptName) {
3455 if (_scriptEnginesHash.remove(scriptName)) {
3456 _runningScriptsWidget->scriptStopped(scriptName);
3457 _runningScriptsWidget->setRunningScripts(getRunningScripts());
3458 bumpSettings();
3459 }
3460}
3461
3462void Application::stopAllScripts(bool restart) {
3463 // stops all current running scripts
3464 for (QHash<QString, ScriptEngine*>::const_iterator it = _scriptEnginesHash.constBegin();
3465 it != _scriptEnginesHash.constEnd(); it++) {
3466 if (restart) {
3467 connect(it.value(), SIGNAL(finished(const QString&)), SLOT(loadScript(const QString&)));
3468 }
3469 it.value()->stop();
3470 qDebug() << "stopping script..." << it.key();
3471 }
3472}
3473
3474void Application::stopScript(const QString &scriptName) {
3475 if (_scriptEnginesHash.contains(scriptName)) {
3476 _scriptEnginesHash.value(scriptName)->stop();
3477 qDebug() << "stopping script..." << scriptName;
3478 }
3479}
3480
3481void Application::reloadAllScripts() {
3482 stopAllScripts(true);
3483}
3484
3485void Application::manageRunningScriptsWidgetVisibility(bool shown) {
3486 if (_runningScriptsWidgetWasVisible && shown) {
3487 _runningScriptsWidget->show();
3488 } else if (_runningScriptsWidgetWasVisible && !shown) {
3489 _runningScriptsWidget->hide();
3490 }
3491}
3492
3493void Application::toggleRunningScriptsWidget() {
3494 if (_runningScriptsWidgetWasVisible) {
3495 _runningScriptsWidget->hide();
3496 _runningScriptsWidgetWasVisible = false;
3497 } else {
3498 _runningScriptsWidget->setBoundary(QRect(_window->geometry().topLeft(),
3499 _window->size()));
3500 _runningScriptsWidget->show();
3501 _runningScriptsWidgetWasVisible = true;
3502 }
3503}
3504
3505void Application::uploadHead() {
3506 uploadModel(HEAD_MODEL);
3507}
3508
3509void Application::uploadSkeleton() {
3510 uploadModel(SKELETON_MODEL);
3511}
3512
3513void Application::uploadAttachment() {
3514 uploadModel(ATTACHMENT_MODEL);
3515}
3516
3534QString Application::getPreviousScriptLocation() {3517QString Application::getPreviousScriptLocation() {
3535 QString suggestedName;3518 QString suggestedName;
3536 if (_previousScriptLocation.isEmpty()) {3519 if (_previousScriptLocation.isEmpty()) {
@@ -3670,7 +3653,17 @@ void Application::takeSnapshot() { · 133 unmodified lines
3670 player->setMedia(QUrl::fromLocalFile(inf.absoluteFilePath()));3653 player->setMedia(QUrl::fromLocalFile(inf.absoluteFilePath()));
3671 player->play();3654 player->play();
3672 3655
3673 Snapshot::saveSnapshot(_glWidget, _myAvatar);3656 QString fileName = Snapshot::saveSnapshot(_glWidget, _myAvatar);
3657
3658 AccountManager& accountManager = AccountManager::getInstance();
3659 if (!accountManager.isLoggedIn()) {
3660 return;
3661 }
3662
3663 if (!_snapshotShareDialog) {
3664 _snapshotShareDialog = new SnapshotShareDialog(fileName, _glWidget);
3665 }
3666 _snapshotShareDialog->show();
3674}3667}
3675 3668
3676void Application::urlGoTo(int argc, const char * constArgv[]) {3669void Application::urlGoTo(int argc, const char * constArgv[]) {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t