History

Merge branch 'master' of https://github.com/highfidelity/hifi into 19734

samcake committed 12 years ago

Commit fca3a6a2 parents 35977fb d8a5f59192 files · +9602 −2725Browse files

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

Unified · Split

interface/src/Application.cpp+71−35
@@ -60,6 +60,7 @@ · 59 unmodified lines
6060 #include <ParticlesScriptingInterface.h>
6161 #include <PerfStat.h>
6262 #include <ResourceCache.h>
63+#include <UserActivityLogger.h>
6364 #include <UUID.h>
6465 #include <OctreeSceneStats.h>
6566 #include <LocalVoxelsList.h>
@@ -136,7 +137,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 70 unmodified lines
136137 _nodeThread(new QThread(this)),
137138 _datagramProcessor(),
138139 _frameCount(0),
139− _fps(120.0f),
140+ _fps(60.0f),
140141 _justStarted(true),
141142 _voxelImporter(NULL),
142143 _importSucceded(false),
@@ -169,7 +170,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 26 unmodified lines
169170 _nodeBoundsDisplay(this),
170171 _previousScriptLocation(),
171172 _applicationOverlay(),
172− _runningScriptsWidget(new RunningScriptsWidget(_window)),
173+ _runningScriptsWidget(NULL),
173174 _runningScriptsWidgetWasVisible(false),
174175 _trayIcon(new QSystemTrayIcon(_window)),
175176 _lastNackTime(usecTimestampNow())
@@ -203,6 +204,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 27 unmodified lines
203204 // call Menu getInstance static method to set up the menu
204205 _window->setMenuBar(Menu::getInstance());
205206
207+ _runningScriptsWidget = new RunningScriptsWidget(_window);
208+
206209 unsigned int listenPort = 0; // bind to an ephemeral port by default
207210 const char** constArgv = const_cast<const char**>(argv);
208211 const char* portStr = getCmdOption(argc, constArgv, "--listenPort");
@@ -268,6 +271,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 59 unmodified lines
268271
269272 // set the account manager's root URL and trigger a login request if we don't have the access token
270273 accountManager.setAuthURL(DEFAULT_NODE_AUTH_URL);
274+ UserActivityLogger::getInstance().launch(applicationVersion());
271275
272276 // once the event loop has started, check and signal for an access token
273277 QMetaObject::invokeMethod(&accountManager, "checkAndSignalForAccessToken", Qt::QueuedConnection);
@@ -396,7 +400,9 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : · 122 unmodified lines
396400 }
397401
398402 Application::~Application() {
399−
403+ int DELAY_TIME = 1000;
404+ UserActivityLogger::getInstance().close(DELAY_TIME);
405+
400406 qInstallMessageHandler(NULL);
401407
402408 // make sure we don't call the idle timer any more
@@ -553,7 +559,7 @@ void Application::initializeGL() { · 150 unmodified lines
553559 }
554560
555561 // update before the first render
556− update(0.0f);
562+ update(1.f / _fps);
557563
558564 InfoView::showFirstTime();
559565 }
@@ -565,6 +571,16 @@ void Application::paintGL() { · 5 unmodified lines
565571 bool showWarnings = Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings);
566572 PerformanceWarning warn(showWarnings, "Application::paintGL()");
567573
574+ const bool glowEnabled = Menu::getInstance()->isOptionChecked(MenuOption::EnableGlowEffect);
575+
576+ // Set the desired FBO texture size. If it hasn't changed, this does nothing.
577+ // Otherwise, it must rebuild the FBOs
578+ if (OculusManager::isConnected()) {
579+ _textureCache.setFrameBufferSize(OculusManager::getRenderTargetSize());
580+ } else {
581+ _textureCache.setFrameBufferSize(_glWidget->size());
582+ }
583+
568584 glEnable(GL_LINE_SMOOTH);
569585
570586 if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON) {
@@ -573,28 +589,16 @@ void Application::paintGL() { · 2 unmodified lines
573589 _myCamera.setTargetRotation(_myAvatar->getHead()->getCameraOrientation());
574590
575591 } else if (_myCamera.getMode() == CAMERA_MODE_THIRD_PERSON) {
592+ //Note, the camera distance is set in Camera::setMode() so we dont have to do it here.
576593 _myCamera.setTightness(0.0f); // Camera is directly connected to head without smoothing
577594 _myCamera.setTargetPosition(_myAvatar->getUprightHeadPosition());
578− _myCamera.setTargetRotation(_myAvatar->getHead()->getCameraOrientation());
595+ _myCamera.setTargetRotation(_myAvatar->getWorldAlignedOrientation());
579596
580597 } else if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {
581598 _myCamera.setTightness(0.0f);
582− glm::vec3 eyePosition = _myAvatar->getHead()->calculateAverageEyePosition();
583− float headHeight = eyePosition.y - _myAvatar->getPosition().y;
584599 _myCamera.setDistance(MIRROR_FULLSCREEN_DISTANCE * _scaleMirror);
585− _myCamera.setTargetPosition(_myAvatar->getPosition() + glm::vec3(0, headHeight + (_raiseMirror * _myAvatar->getScale()), 0));
586600 _myCamera.setTargetRotation(_myAvatar->getWorldAlignedOrientation() * glm::quat(glm::vec3(0.0f, PI + _rotateMirror, 0.0f)));
587− }
588−
589− if (OculusManager::isConnected()) {
590− // Oculus in third person causes nausea, so only allow it if option is checked in dev menu
591− if (!Menu::getInstance()->isOptionChecked(MenuOption::AllowOculusCameraModeChange) || _myCamera.getMode() == CAMERA_MODE_FIRST_PERSON) {
592− _myCamera.setDistance(0.0f);
593− _myCamera.setTargetPosition(_myAvatar->getHead()->calculateAverageEyePosition());
594− _myCamera.setTargetRotation(_myAvatar->getHead()->getCameraOrientation());
595− }
596− _myCamera.setUpShift(0.0f);
597− _myCamera.setTightness(0.0f); // Camera is directly connected to head without smoothing
601+ _myCamera.setTargetPosition(_myAvatar->getHead()->calculateAverageEyePosition());
598602 }
599603
600604 // Update camera position
@@ -629,16 +633,32 @@ void Application::paintGL() { · 28 unmodified lines
629633 updateShadowMap();
630634 }
631635
636+ //If we aren't using the glow shader, we have to clear the color and depth buffer
637+ if (!glowEnabled) {
638+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
639+ }
640+
632641 if (OculusManager::isConnected()) {
633− OculusManager::display(whichCamera);
642+ //When in mirror mode, use camera rotation. Otherwise, use body rotation
643+ if (whichCamera.getMode() == CAMERA_MODE_MIRROR) {
644+ OculusManager::display(whichCamera.getRotation(), whichCamera.getPosition(), whichCamera);
645+ } else {
646+ OculusManager::display(_myAvatar->getWorldAlignedOrientation(), whichCamera.getPosition(), whichCamera);
647+ }
634648
635649 } else if (TV3DManager::isConnected()) {
636− _glowEffect.prepare();
650+ if (glowEnabled) {
651+ _glowEffect.prepare();
652+ }
637653 TV3DManager::display(whichCamera);
638− _glowEffect.render();
654+ if (glowEnabled) {
655+ _glowEffect.render();
656+ }
639657
640658 } else {
641− _glowEffect.prepare();
659+ if (glowEnabled) {
660+ _glowEffect.prepare();
661+ }
642662
643663 glMatrixMode(GL_MODELVIEW);
644664 glPushMatrix();
@@ -646,7 +666,9 @@ void Application::paintGL() { · 1 unmodified line
646666 displaySide(whichCamera);
647667 glPopMatrix();
648668
649− _glowEffect.render();
669+ if (glowEnabled) {
670+ _glowEffect.render();
671+ }
650672
651673 if (Menu::getInstance()->isOptionChecked(MenuOption::Mirror)) {
652674 renderRearViewMirror(_mirrorViewRect);
@@ -2178,7 +2200,8 @@ int Application::sendNackPackets() { · 1525 unmodified lines
21782200 OctreeSceneStats& stats = _octreeServerSceneStats[nodeUUID];
21792201
21802202 // make copy of missing sequence numbers from stats
2181− const QSet<OCTREE_PACKET_SEQUENCE> missingSequenceNumbers = stats.getMissingSequenceNumbers();
2203+ const QSet<OCTREE_PACKET_SEQUENCE> missingSequenceNumbers =
2204+ stats.getIncomingOctreeSequenceNumberStats().getMissingSet();
21822205
21832206 _octreeSceneStatsLock.unlock();
21842207
@@ -3148,9 +3171,7 @@ void Application::resetSensors() { · 963 unmodified lines
31483171 _faceshift.reset();
31493172 _visage.reset();
31503173
3151− if (OculusManager::isConnected()) {
3152− OculusManager::reset();
3153− }
3174+ OculusManager::reset();
31543175
31553176 _prioVR.reset();
31563177 //_leapmotion.reset();
@@ -3303,6 +3324,10 @@ void Application::nodeKilled(SharedNodePointer node) { · 146 unmodified lines
33033324 _particleEditSender.nodeKilled(node);
33043325 _modelEditSender.nodeKilled(node);
33053326
3327+ if (node->getType() == NodeType::AudioMixer) {
3328+ QMetaObject::invokeMethod(&_audio, "resetIncomingMixedAudioSequenceNumberStats");
3329+ }
3330+
33063331 if (node->getType() == NodeType::VoxelServer) {
33073332 QUuid nodeUUID = node->getUUID();
33083333 // see if this is the first we've heard of this node...
@@ -3547,10 +3572,12 @@ void Application::saveScripts() { · 238 unmodified lines
35473572 _settings->endArray();
35483573 }
35493574
3550−ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScriptFromEditor) {
3575+ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScriptFromEditor, bool activateMainWindow) {
35513576 QUrl scriptUrl(scriptName);
35523577 const QString& scriptURLString = scriptUrl.toString();
3553− if(loadScriptFromEditor && _scriptEnginesHash.contains(scriptURLString) && !_scriptEnginesHash[scriptURLString]->isFinished()){
3578+ if (_scriptEnginesHash.contains(scriptURLString) && loadScriptFromEditor
3579+ && !_scriptEnginesHash[scriptURLString]->isFinished()) {
3580+
35543581 return _scriptEnginesHash[scriptURLString];
35553582 }
35563583
@@ -3563,11 +3590,13 @@ ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScript · 6 unmodified lines
35633590
35643591 if (!scriptEngine->hasScript()) {
35653592 qDebug() << "Application::loadScript(), script failed to load...";
3593+ QMessageBox::warning(getWindow(), "Error Loading Script", scriptURLString + " failed to load.");
35663594 return NULL;
35673595 }
35683596
3569− _scriptEnginesHash.insert(scriptURLString, scriptEngine);
3597+ _scriptEnginesHash.insertMulti(scriptURLString, scriptEngine);
35703598 _runningScriptsWidget->setRunningScripts(getRunningScripts());
3599+ UserActivityLogger::getInstance().loadedScript(scriptURLString);
35713600 }
35723601
35733602 // setup the packet senders and jurisdiction listeners of the script engine's scripting interfaces so
@@ -3623,13 +3652,16 @@ ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScript · 49 unmodified lines
36233652 // when the application is about to quit, stop our script engine so it unwinds properly
36243653 connect(this, SIGNAL(aboutToQuit()), scriptEngine, SLOT(stop()));
36253654
3655+ NodeList* nodeList = NodeList::getInstance();
3656+ connect(nodeList, &NodeList::nodeKilled, scriptEngine, &ScriptEngine::nodeKilled);
3657+
36263658 scriptEngine->moveToThread(workerThread);
36273659
36283660 // Starts an event loop, and emits workerThread->started()
36293661 workerThread->start();
36303662
36313663 // restore the main window's active state
3632− if (!loadScriptFromEditor) {
3664+ if (activateMainWindow && !loadScriptFromEditor) {
36333665 _window->activateWindow();
36343666 }
36353667 bumpSettings();
@@ -3638,7 +3670,10 @@ ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScript · 2 unmodified lines
36383670 }
36393671
36403672 void Application::scriptFinished(const QString& scriptName) {
3641− if (_scriptEnginesHash.remove(scriptName)) {
3673+ const QString& scriptURLString = QUrl(scriptName).toString();
3674+ QHash<QString, ScriptEngine*>::iterator it = _scriptEnginesHash.find(scriptURLString);
3675+ if (it != _scriptEnginesHash.end()) {
3676+ _scriptEnginesHash.erase(it);
36423677 _runningScriptsWidget->scriptStopped(scriptName);
36433678 _runningScriptsWidget->setRunningScripts(getRunningScripts());
36443679 bumpSettings();
@@ -3658,8 +3693,9 @@ void Application::stopAllScripts(bool restart) { · 13 unmodified lines
36583693 }
36593694
36603695 void Application::stopScript(const QString &scriptName) {
3661− if (_scriptEnginesHash.contains(scriptName)) {
3662− _scriptEnginesHash.value(scriptName)->stop();
3696+ const QString& scriptURLString = QUrl(scriptName).toString();
3697+ if (_scriptEnginesHash.contains(scriptURLString)) {
3698+ _scriptEnginesHash.value(scriptURLString)->stop();
36633699 qDebug() << "stopping script..." << scriptName;
36643700 }
36653701 }

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