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 | static const unsigned int THROTTLED_SIM_FRAMERATE = 15; | 323 | static const unsigned int THROTTLED_SIM_FRAMERATE = 15; |
| 324 | static const int THROTTLED_SIM_FRAME_PERIOD_MS = MSECS_PER_SECOND / THROTTLED_SIM_FRAMERATE; | 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 | static const uint32_t INVALID_FRAME = UINT32_MAX; | 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 | getOverlays().deleteOverlay(getTabletScreenID()); | 1182 | getOverlays().deleteOverlay(getTabletScreenID()); |
| 1181 | getOverlays().deleteOverlay(getTabletHomeButtonID()); | 1183 | getOverlays().deleteOverlay(getTabletHomeButtonID()); |
| 1182 | getOverlays().deleteOverlay(getTabletFrameID()); | 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 | connect(&domainHandler, &DomainHandler::domainConnectionRefused, this, &Application::domainConnectionRefused); | 1198 | connect(&domainHandler, &DomainHandler::domainConnectionRefused, this, &Application::domainConnectionRefused); |
| 1185 | 1199 | ||
| @@ -3348,26 +3362,37 @@ void Application::showHelp() { · 2162 unmodified lines | |||
| 3348 | static const QString HAND_CONTROLLER_NAME_OCULUS_TOUCH = "oculus"; | 3362 | static const QString HAND_CONTROLLER_NAME_OCULUS_TOUCH = "oculus"; |
| 3349 | static const QString HAND_CONTROLLER_NAME_WINDOWS_MR = "windowsMR"; | 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 | static const QString TAB_KEYBOARD_MOUSE = "kbm"; | 3369 | static const QString TAB_KEYBOARD_MOUSE = "kbm"; |
| 3352 | static const QString TAB_GAMEPAD = "gamepad"; | 3370 | static const QString TAB_GAMEPAD = "gamepad"; |
| 3353 | static const QString TAB_HAND_CONTROLLERS = "handControllers"; | 3371 | static const QString TAB_HAND_CONTROLLERS = "handControllers"; |
| 3354 | 3372 | ||
| 3355 | QString handControllerName = HAND_CONTROLLER_NAME_VIVE; | 3373 | QString handControllerName; |
| 3356 | QString defaultTab = TAB_KEYBOARD_MOUSE; | 3374 | QString defaultTab = TAB_KEYBOARD_MOUSE; |
| 3357 | 3375 | ||
| 3358 | if (PluginUtils::isViveControllerAvailable()) { | 3376 | if (PluginUtils::isHMDAvailable(WINDOWS_MR_PLUGIN_NAME)) { |
| 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") { | ||
| 3365 | defaultTab = TAB_HAND_CONTROLLERS; | 3377 | defaultTab = TAB_HAND_CONTROLLERS; |
| 3366 | handControllerName = HAND_CONTROLLER_NAME_WINDOWS_MR; | 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 | } else if (PluginUtils::isXboxControllerAvailable()) { | 3391 | } else if (PluginUtils::isXboxControllerAvailable()) { |
| 3368 | defaultTab = TAB_GAMEPAD; | 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 | QUrlQuery queryString; | 3397 | QUrlQuery queryString; |
| 3373 | queryString.addQueryItem("handControllerName", handControllerName); | 3398 | queryString.addQueryItem("handControllerName", handControllerName); |
| @@ -5630,6 +5655,7 @@ void Application::update(float deltaTime) { · 2256 unmodified lines | |||
| 5630 | quint64 now = usecTimestampNow(); | 5655 | quint64 now = usecTimestampNow(); |
| 5631 | if (isServerlessMode() || _octreeProcessor.isLoadSequenceComplete()) { | 5656 | if (isServerlessMode() || _octreeProcessor.isLoadSequenceComplete()) { |
| 5632 | bool enableInterstitial = DependencyManager::get<NodeList>()->getDomainHandler().getInterstitialModeEnabled(); | 5657 | bool enableInterstitial = DependencyManager::get<NodeList>()->getDomainHandler().getInterstitialModeEnabled(); |
| 5658 | |||
| 5633 | if (gpuTextureMemSizeStable() || !enableInterstitial) { | 5659 | if (gpuTextureMemSizeStable() || !enableInterstitial) { |
| 5634 | // we've received a new full-scene octree stats packet, or it's been long enough to try again anyway | 5660 | // we've received a new full-scene octree stats packet, or it's been long enough to try again anyway |
| 5635 | _lastPhysicsCheckTime = now; | 5661 | _lastPhysicsCheckTime = now; |
| @@ -6568,7 +6594,13 @@ void Application::resettingDomain() { · 932 unmodified lines | |||
| 6568 | } | 6594 | } |
| 6569 | 6595 | ||
| 6570 | void Application::nodeAdded(SharedNodePointer node) const { | 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 | void Application::nodeActivated(SharedNodePointer node) { | 6606 | void Application::nodeActivated(SharedNodePointer node) { |
| @@ -6596,6 +6628,10 @@ void Application::nodeActivated(SharedNodePointer node) { · 21 unmodified lines | |||
| 6596 | if (node->getType() == NodeType::EntityServer) { | 6628 | if (node->getType() == NodeType::EntityServer) { |
| 6597 | _queryExpiry = SteadyClock::now(); | 6629 | _queryExpiry = SteadyClock::now(); |
| 6598 | _octreeQuery.incrementConnectionID(); | 6630 | _octreeQuery.incrementConnectionID(); |
| 6631 | |||
| 6632 | if (!_failedToConnectToEntityServer) { | ||
| 6633 | _entityServerConnectionTimer.stop(); | ||
| 6634 | } | ||
| 6599 | } | 6635 | } |
| 6600 | 6636 | ||
| 6601 | if (node->getType() == NodeType::AudioMixer && !isInterstitialMode()) { | 6637 | if (node->getType() == NodeType::AudioMixer && !isInterstitialMode()) { |