Showing the changes to interface/src/Application.cpp (1 of 140 files). Show all
Unified · Split
| @@ -100,7 +100,7 @@ · 99 unmodified lines | ||
| 100 | 100 | #include "audio/AudioScope.h" |
| 101 | 101 | #include "avatar/AvatarManager.h" |
| 102 | 102 | #include "CrashHandler.h" |
| 103 | −#include "devices/3DConnexionClient.h" | |
| 103 | +#include "input-plugins/SpacemouseManager.h" | |
| 104 | 104 | #include "devices/DdeFaceTracker.h" |
| 105 | 105 | #include "devices/EyeTracker.h" |
| 106 | 106 | #include "devices/Faceshift.h" |
| @@ -646,11 +646,14 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer) : · 539 unmodified lines | ||
| 646 | 646 | _applicationStateDevice->addInputVariant(QString("ComfortMode"), controller::StateController::ReadLambda([]() -> float { |
| 647 | 647 | return (float)Menu::getInstance()->isOptionChecked(MenuOption::ComfortMode); |
| 648 | 648 | })); |
| 649 | + _applicationStateDevice->addInputVariant(QString("Grounded"), controller::StateController::ReadLambda([]() -> float { | |
| 650 | + return (float)qApp->getMyAvatar()->getCharacterController()->onGround(); | |
| 651 | + })); | |
| 649 | 652 | |
| 650 | 653 | userInputMapper->registerDevice(_applicationStateDevice); |
| 651 | 654 | |
| 652 | 655 | // Setup the keyboardMouseDevice and the user input mapper with the default bindings |
| 653 | − userInputMapper->registerDevice(_keyboardMouseDevice); | |
| 656 | + userInputMapper->registerDevice(_keyboardMouseDevice->getInputDevice()); | |
| 654 | 657 | |
| 655 | 658 | |
| 656 | 659 | userInputMapper->loadDefaultMapping(userInputMapper->getStandardDeviceID()); |
| @@ -726,9 +729,10 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer) : · 69 unmodified lines | ||
| 726 | 729 | // Now that menu is initalized we can sync myAvatar with it's state. |
| 727 | 730 | getMyAvatar()->updateMotionBehaviorFromMenu(); |
| 728 | 731 | |
| 732 | +// FIXME spacemouse code still needs cleanup | |
| 729 | 733 | #if 0 |
| 730 | 734 | // the 3Dconnexion device wants to be initiliazed after a window is displayed. |
| 731 | − ConnexionClient::getInstance().init(); | |
| 735 | + SpacemouseManager::getInstance().init(); | |
| 732 | 736 | #endif |
| 733 | 737 | |
| 734 | 738 | auto& packetReceiver = nodeList->getPacketReceiver(); |
| @@ -940,14 +944,12 @@ void Application::initializeGL() { · 205 unmodified lines | ||
| 940 | 944 | qCDebug(interfaceapp) << "Created Display Window."; |
| 941 | 945 | |
| 942 | 946 | // initialize glut for shape drawing; Qt apparently initializes it on OS X |
| 943 | − #ifndef __APPLE__ | |
| 944 | − static bool isInitialized = false; | |
| 945 | − if (isInitialized) { | |
| 947 | + if (_isGLInitialized) { | |
| 946 | 948 | return; |
| 947 | 949 | } else { |
| 948 | − isInitialized = true; | |
| 950 | + _isGLInitialized = true; | |
| 949 | 951 | } |
| 950 | − #endif | |
| 952 | + | |
| 951 | 953 | // Where the gpuContext is initialized and where the TRUE Backend is created and assigned |
| 952 | 954 | gpu::Context::init<gpu::GLBackend>(); |
| 953 | 955 | _gpuContext = std::make_shared<gpu::Context>(); |
| @@ -1031,10 +1033,7 @@ void Application::initializeUi() { · 77 unmodified lines | ||
| 1031 | 1033 | foreach(auto inputPlugin, PluginManager::getInstance()->getInputPlugins()) { |
| 1032 | 1034 | QString name = inputPlugin->getName(); |
| 1033 | 1035 | if (name == KeyboardMouseDevice::NAME) { |
| 1034 | − auto kbm = static_cast<KeyboardMouseDevice*>(inputPlugin.data()); | |
| 1035 | − // FIXME incredibly evil.... _keyboardMouseDevice is now owned by | |
| 1036 | − // both a QSharedPointer and a std::shared_ptr | |
| 1037 | − _keyboardMouseDevice = std::shared_ptr<KeyboardMouseDevice>(kbm); | |
| 1036 | + _keyboardMouseDevice = std::dynamic_pointer_cast<KeyboardMouseDevice>(inputPlugin); | |
| 1038 | 1037 | } |
| 1039 | 1038 | } |
| 1040 | 1039 | updateInputModes(); |
| @@ -1059,7 +1058,9 @@ void Application::paintGL() { · 18 unmodified lines | ||
| 1059 | 1058 | _lastFramesPerSecondUpdate = now; |
| 1060 | 1059 | } |
| 1061 | 1060 | |
| 1062 | − idle(now); | |
| 1061 | + if (_isGLInitialized) { | |
| 1062 | + idle(now); | |
| 1063 | + } | |
| 1063 | 1064 | |
| 1064 | 1065 | PROFILE_RANGE(__FUNCTION__); |
| 1065 | 1066 | PerformanceTimer perfTimer("paintGL"); |
| @@ -1864,8 +1865,12 @@ void Application::focusOutEvent(QFocusEvent* event) { · 798 unmodified lines | ||
| 1864 | 1865 | inputPlugin->pluginFocusOutEvent(); |
| 1865 | 1866 | } |
| 1866 | 1867 | } |
| 1868 | + | |
| 1869 | +// FIXME spacemouse code still needs cleanup | |
| 1867 | 1870 | #if 0 |
| 1868 | − ConnexionData::getInstance().focusOutEvent(); | |
| 1871 | + //SpacemouseDevice::getInstance().focusOutEvent(); | |
| 1872 | + //SpacemouseManager::getInstance().getDevice()->focusOutEvent(); | |
| 1873 | + SpacemouseManager::getInstance().ManagerFocusOutEvent(); | |
| 1869 | 1874 | #endif |
| 1870 | 1875 | |
| 1871 | 1876 | // synthesize events for keys currently pressed, since we may not get their release events |
| @@ -2812,7 +2817,7 @@ void Application::update(float deltaTime) { · 940 unmodified lines | ||
| 2812 | 2817 | float timeFactor = EXPECTED_FRAME_RATE * deltaTime; |
| 2813 | 2818 | myAvatar->setDriveKeys(PITCH, -1.0f * userInputMapper->getActionState(controller::Action::PITCH) / timeFactor); |
| 2814 | 2819 | myAvatar->setDriveKeys(YAW, -1.0f * userInputMapper->getActionState(controller::Action::YAW) / timeFactor); |
| 2815 | − myAvatar->setDriveKeys(STEP_YAW, -1.0f * userInputMapper->getActionState(controller::Action::STEP_YAW) / timeFactor); | |
| 2820 | + myAvatar->setDriveKeys(STEP_YAW, -1.0f * userInputMapper->getActionState(controller::Action::STEP_YAW)); | |
| 2816 | 2821 | } |
| 2817 | 2822 | } |
| 2818 | 2823 | myAvatar->setDriveKeys(ZOOM, userInputMapper->getActionState(controller::Action::TRANSLATE_CAMERA_Z)); |
| @@ -4663,7 +4668,7 @@ DisplayPlugin* Application::getActiveDisplayPlugin() { · 1844 unmodified lines | ||
| 4663 | 4668 | updateDisplayMode(); |
| 4664 | 4669 | Q_ASSERT(_displayPlugin); |
| 4665 | 4670 | } |
| 4666 | − return _displayPlugin.data(); | |
| 4671 | + return _displayPlugin.get(); | |
| 4667 | 4672 | } |
| 4668 | 4673 | |
| 4669 | 4674 | const DisplayPlugin* Application::getActiveDisplayPlugin() const { |
| @@ -4703,10 +4708,10 @@ void Application::updateDisplayMode() { · 33 unmodified lines | ||
| 4703 | 4708 | bool first = true; |
| 4704 | 4709 | foreach(auto displayPlugin, displayPlugins) { |
| 4705 | 4710 | addDisplayPluginToMenu(displayPlugin, first); |
| 4706 | − QObject::connect(displayPlugin.data(), &DisplayPlugin::requestRender, [this] { | |
| 4711 | + QObject::connect(displayPlugin.get(), &DisplayPlugin::requestRender, [this] { | |
| 4707 | 4712 | paintGL(); |
| 4708 | 4713 | }); |
| 4709 | − QObject::connect(displayPlugin.data(), &DisplayPlugin::recommendedFramebufferSizeChanged, [this](const QSize & size) { | |
| 4714 | + QObject::connect(displayPlugin.get(), &DisplayPlugin::recommendedFramebufferSizeChanged, [this](const QSize & size) { | |
| 4710 | 4715 | resizeGL(); |
| 4711 | 4716 | }); |
| 4712 | 4717 | |
| @@ -4832,12 +4837,14 @@ void Application::updateInputModes() { · 119 unmodified lines | ||
| 4832 | 4837 | foreach(auto inputPlugin, inputPlugins) { |
| 4833 | 4838 | QString name = inputPlugin->getName(); |
| 4834 | 4839 | QAction* action = menu->getActionForOption(name); |
| 4835 | − if (action->isChecked() && !_activeInputPlugins.contains(inputPlugin)) { | |
| 4836 | − _activeInputPlugins.append(inputPlugin); | |
| 4837 | − newInputPlugins.append(inputPlugin); | |
| 4838 | − } else if (!action->isChecked() && _activeInputPlugins.contains(inputPlugin)) { | |
| 4839 | − _activeInputPlugins.removeOne(inputPlugin); | |
| 4840 | − removedInputPlugins.append(inputPlugin); | |
| 4840 | + | |
| 4841 | + auto it = std::find(std::begin(_activeInputPlugins), std::end(_activeInputPlugins), inputPlugin); | |
| 4842 | + if (action->isChecked() && it == std::end(_activeInputPlugins)) { | |
| 4843 | + _activeInputPlugins.push_back(inputPlugin); | |
| 4844 | + newInputPlugins.push_back(inputPlugin); | |
| 4845 | + } else if (!action->isChecked() && it != std::end(_activeInputPlugins)) { | |
| 4846 | + _activeInputPlugins.erase(it); | |
| 4847 | + removedInputPlugins.push_back(inputPlugin); | |
| 4841 | 4848 | } |
| 4842 | 4849 | } |
| 4843 | 4850 | |