Showing the changes to interface/src/Application.cpp (1 of 71 files). Show all
Unified · Split
| @@ -322,6 +322,8 @@ static const QString INFO_HELP_PATH = "html/tabletHelp.html"; · 321 unmodified lines | ||
| 322 | 322 | |
| 323 | 323 | static const unsigned int THROTTLED_SIM_FRAMERATE = 15; |
| 324 | 324 | static const int THROTTLED_SIM_FRAME_PERIOD_MS = MSECS_PER_SECOND / THROTTLED_SIM_FRAMERATE; |
| 325 | +static const int ENTITY_SERVER_ADDED_TIMEOUT = 5000; | |
| 326 | +static const int ENTITY_SERVER_CONNECTION_TIMEOUT = 5000; | |
| 325 | 327 | |
| 326 | 328 | static const uint32_t INVALID_FRAME = UINT32_MAX; |
| 327 | 329 | |
| @@ -1180,6 +1182,18 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo · 852 unmodified lines | ||
| 1180 | 1182 | getOverlays().deleteOverlay(getTabletScreenID()); |
| 1181 | 1183 | getOverlays().deleteOverlay(getTabletHomeButtonID()); |
| 1182 | 1184 | getOverlays().deleteOverlay(getTabletFrameID()); |
| 1185 | + _failedToConnectToEntityServer = false; | |
| 1186 | + }); | |
| 1187 | + | |
| 1188 | + _entityServerConnectionTimer.setSingleShot(true); | |
| 1189 | + connect(&_entityServerConnectionTimer, &QTimer::timeout, this, &Application::setFailedToConnectToEntityServer); | |
| 1190 | + | |
| 1191 | + connect(&domainHandler, &DomainHandler::connectedToDomain, this, [this]() { | |
| 1192 | + if (!isServerlessMode()) { | |
| 1193 | + _entityServerConnectionTimer.setInterval(ENTITY_SERVER_ADDED_TIMEOUT); | |
| 1194 | + _entityServerConnectionTimer.start(); | |
| 1195 | + _failedToConnectToEntityServer = false; | |
| 1196 | + } | |
| 1183 | 1197 | }); |
| 1184 | 1198 | connect(&domainHandler, &DomainHandler::domainConnectionRefused, this, &Application::domainConnectionRefused); |
| 1185 | 1199 | |
| @@ -3348,26 +3362,37 @@ void Application::showHelp() { · 2162 unmodified lines | ||
| 3348 | 3362 | static const QString HAND_CONTROLLER_NAME_OCULUS_TOUCH = "oculus"; |
| 3349 | 3363 | static const QString HAND_CONTROLLER_NAME_WINDOWS_MR = "windowsMR"; |
| 3350 | 3364 | |
| 3365 | + static const QString VIVE_PLUGIN_NAME = "HTC Vive"; | |
| 3366 | + static const QString OCULUS_RIFT_PLUGIN_NAME = "Oculus Rift"; | |
| 3367 | + static const QString WINDOWS_MR_PLUGIN_NAME = "WindowsMR"; | |
| 3368 | + | |
| 3351 | 3369 | static const QString TAB_KEYBOARD_MOUSE = "kbm"; |
| 3352 | 3370 | static const QString TAB_GAMEPAD = "gamepad"; |
| 3353 | 3371 | static const QString TAB_HAND_CONTROLLERS = "handControllers"; |
| 3354 | 3372 | |
| 3355 | − QString handControllerName = HAND_CONTROLLER_NAME_VIVE; | |
| 3373 | + QString handControllerName; | |
| 3356 | 3374 | QString defaultTab = TAB_KEYBOARD_MOUSE; |
| 3357 | 3375 | |
| 3358 | − if (PluginUtils::isViveControllerAvailable()) { | |
| 3359 | − defaultTab = TAB_HAND_CONTROLLERS; | |
| 3360 | − handControllerName = HAND_CONTROLLER_NAME_VIVE; | |
| 3361 | − } else if (PluginUtils::isOculusTouchControllerAvailable()) { | |
| 3362 | − defaultTab = TAB_HAND_CONTROLLERS; | |
| 3363 | − handControllerName = HAND_CONTROLLER_NAME_OCULUS_TOUCH; | |
| 3364 | − } else if (qApp->getActiveDisplayPlugin()->getName() == "WindowMS") { | |
| 3376 | + if (PluginUtils::isHMDAvailable(WINDOWS_MR_PLUGIN_NAME)) { | |
| 3365 | 3377 | defaultTab = TAB_HAND_CONTROLLERS; |
| 3366 | 3378 | handControllerName = HAND_CONTROLLER_NAME_WINDOWS_MR; |
| 3379 | + } else if (PluginUtils::isHMDAvailable(VIVE_PLUGIN_NAME)) { | |
| 3380 | + defaultTab = TAB_HAND_CONTROLLERS; | |
| 3381 | + handControllerName = HAND_CONTROLLER_NAME_VIVE; | |
| 3382 | + } else if (PluginUtils::isHMDAvailable(OCULUS_RIFT_PLUGIN_NAME)) { | |
| 3383 | + if (PluginUtils::isOculusTouchControllerAvailable()) { | |
| 3384 | + defaultTab = TAB_HAND_CONTROLLERS; | |
| 3385 | + handControllerName = HAND_CONTROLLER_NAME_OCULUS_TOUCH; | |
| 3386 | + } else if (PluginUtils::isXboxControllerAvailable()) { | |
| 3387 | + defaultTab = TAB_GAMEPAD; | |
| 3388 | + } else { | |
| 3389 | + defaultTab = TAB_KEYBOARD_MOUSE; | |
| 3390 | + } | |
| 3367 | 3391 | } else if (PluginUtils::isXboxControllerAvailable()) { |
| 3368 | 3392 | defaultTab = TAB_GAMEPAD; |
| 3393 | + } else { | |
| 3394 | + defaultTab = TAB_KEYBOARD_MOUSE; | |
| 3369 | 3395 | } |
| 3370 | − // TODO need some way to detect windowsMR to load controls reference default tab in Help > Controls Reference menu. | |
| 3371 | 3396 | |
| 3372 | 3397 | QUrlQuery queryString; |
| 3373 | 3398 | queryString.addQueryItem("handControllerName", handControllerName); |
| @@ -5630,6 +5655,7 @@ void Application::update(float deltaTime) { · 2256 unmodified lines | ||
| 5630 | 5655 | quint64 now = usecTimestampNow(); |
| 5631 | 5656 | if (isServerlessMode() || _octreeProcessor.isLoadSequenceComplete()) { |
| 5632 | 5657 | bool enableInterstitial = DependencyManager::get<NodeList>()->getDomainHandler().getInterstitialModeEnabled(); |
| 5658 | + | |
| 5633 | 5659 | if (gpuTextureMemSizeStable() || !enableInterstitial) { |
| 5634 | 5660 | // we've received a new full-scene octree stats packet, or it's been long enough to try again anyway |
| 5635 | 5661 | _lastPhysicsCheckTime = now; |
| @@ -6568,7 +6594,13 @@ void Application::resettingDomain() { · 932 unmodified lines | ||
| 6568 | 6594 | } |
| 6569 | 6595 | |
| 6570 | 6596 | void Application::nodeAdded(SharedNodePointer node) const { |
| 6571 | − // nothing to do here | |
| 6597 | + if (node->getType() == NodeType::EntityServer) { | |
| 6598 | + if (!_failedToConnectToEntityServer) { | |
| 6599 | + _entityServerConnectionTimer.stop(); | |
| 6600 | + _entityServerConnectionTimer.setInterval(ENTITY_SERVER_CONNECTION_TIMEOUT); | |
| 6601 | + _entityServerConnectionTimer.start(); | |
| 6602 | + } | |
| 6603 | + } | |
| 6572 | 6604 | } |
| 6573 | 6605 | |
| 6574 | 6606 | void Application::nodeActivated(SharedNodePointer node) { |
| @@ -6596,6 +6628,10 @@ void Application::nodeActivated(SharedNodePointer node) { · 21 unmodified lines | ||
| 6596 | 6628 | if (node->getType() == NodeType::EntityServer) { |
| 6597 | 6629 | _queryExpiry = SteadyClock::now(); |
| 6598 | 6630 | _octreeQuery.incrementConnectionID(); |
| 6631 | + | |
| 6632 | + if (!_failedToConnectToEntityServer) { | |
| 6633 | + _entityServerConnectionTimer.stop(); | |
| 6634 | + } | |
| 6599 | 6635 | } |
| 6600 | 6636 | |
| 6601 | 6637 | if (node->getType() == NodeType::AudioMixer && !isInterstitialMode()) { |