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

This commit is contained in:
Roxanne Skelly 2019-06-13 17:05:04 -07:00
commit 91dce827a5
24 changed files with 198 additions and 108 deletions

View file

@ -106,3 +106,4 @@ The following build options can be used when running CMake
#### Devices #### Devices
You can support external input/output devices such as Leap Motion, MIDI, and more by adding each individual SDK in the visible building path. Refer to the readme file available in each device folder in [interface/external/](interface/external) for the detailed explanation of the requirements to use the device. You can support external input/output devices such as Leap Motion, MIDI, and more by adding each individual SDK in the visible building path. Refer to the readme file available in each device folder in [interface/external/](interface/external) for the detailed explanation of the requirements to use the device.

View file

@ -13,15 +13,14 @@ import QtQuick 2.4
import controlsUit 1.0 as HifiControlsUit import controlsUit 1.0 as HifiControlsUit
import stylesUit 1.0 as HifiStylesUit import stylesUit 1.0 as HifiStylesUit
import "LoginDialog"
FocusScope { FocusScope {
id: root id: root
HifiStylesUit.HifiConstants { id: hifi }
objectName: "LoginDialog" objectName: "LoginDialog"
property bool shown: true property bool shown: true
visible: shown visible: shown
HifiStylesUit.HifiConstants { id: hifi }
anchors.fill: parent anchors.fill: parent
readonly property bool isTablet: false readonly property bool isTablet: false
@ -33,12 +32,17 @@ FocusScope {
property bool keyboardRaised: false property bool keyboardRaised: false
property bool punctuationMode: false property bool punctuationMode: false
property bool isPassword: false property bool isPassword: false
property string title: ""
property string text: ""
property int titleWidth: 0
property alias bannerWidth: banner.width property alias bannerWidth: banner.width
property alias bannerHeight: banner.height property alias bannerHeight: banner.height
property string title: ""
property string text: ""
property int titleWidth: 0
property bool isHMD: HMD.active
function tryDestroy() { function tryDestroy() {
root.destroy() root.destroy()
} }

View file

@ -23,43 +23,36 @@ FocusScope {
objectName: "LoginDialog" objectName: "LoginDialog"
visible: true visible: true
HifiStylesUit.HifiConstants { id: hifi }
anchors.fill: parent anchors.fill: parent
width: parent.width
height: parent.height
property var tabletProxy: Tablet.getTablet("com.highfidelity.interface.tablet.system"); readonly property bool isTablet: true
readonly property bool isOverlay: false
property bool isHMD: HMD.active
property bool gotoPreviousApp: false;
property string iconText: hifi.glyphs.avatar
property int iconSize: 35
property bool keyboardEnabled: false property bool keyboardEnabled: false
property bool keyboardRaised: false property bool keyboardRaised: false
property bool punctuationMode: false property bool punctuationMode: false
property bool isPassword: false property bool isPassword: false
readonly property bool isTablet: true
readonly property bool isOverlay: false
property alias text: loginKeyboard.mirroredText
property int titleWidth: 0
property alias bannerWidth: banner.width property alias bannerWidth: banner.width
property alias bannerHeight: banner.height property alias bannerHeight: banner.height
property string iconText: hifi.glyphs.avatar
property int iconSize: 35
property var pane: QtObject { property int titleWidth: 0
property real width: root.width
property real height: root.height
}
function tryDestroy() { property bool isHMD: HMD.active
tabletProxy.gotoHomeScreen();
}
MouseArea { // TABLET SPECIFIC PROPERTIES START //
width: root.width property alias text: loginKeyboard.mirroredText
height: root.height
} width: parent.width
height: parent.height
property var tabletProxy: Tablet.getTablet("com.highfidelity.interface.tablet.system")
property bool gotoPreviousApp: false
property bool keyboardOverride: true property bool keyboardOverride: true
@ -70,7 +63,20 @@ FocusScope {
property alias loginDialog: loginDialog property alias loginDialog: loginDialog
property alias hifi: hifi property alias hifi: hifi
HifiStylesUit.HifiConstants { id: hifi } property var pane: QtObject {
property real width: root.width
property real height: root.height
}
MouseArea {
width: root.width
height: root.height
}
// TABLET SPECIFIC PROPERTIES END //
function tryDestroy() {
tabletProxy.gotoHomeScreen();
}
Timer { Timer {
id: keyboardTimer id: keyboardTimer
@ -102,6 +108,15 @@ FocusScope {
anchors.fill: parent anchors.fill: parent
} }
Rectangle {
z: -6
id: opaqueRect
height: parent.height
width: parent.width
opacity: 0.65
color: "black"
}
Item { Item {
z: -5 z: -5
id: bannerContainer id: bannerContainer
@ -119,15 +134,6 @@ FocusScope {
} }
} }
Rectangle {
z: -6
id: opaqueRect
height: parent.height
width: parent.width
opacity: 0.65
color: "black"
}
HifiControlsUit.Keyboard { HifiControlsUit.Keyboard {
id: loginKeyboard id: loginKeyboard
raised: root.keyboardEnabled && root.keyboardRaised raised: root.keyboardEnabled && root.keyboardRaised

View file

@ -12,6 +12,8 @@ import controlsUit 1.0
OriginalDesktop.Desktop { OriginalDesktop.Desktop {
id: desktop id: desktop
property alias toolbarObjectName: sysToolbar.objectName
MouseArea { MouseArea {
id: hoverWatch id: hoverWatch
anchors.fill: parent anchors.fill: parent
@ -70,7 +72,12 @@ OriginalDesktop.Desktop {
x: sysToolbar.x x: sysToolbar.x
buttonModel: tablet ? tablet.buttons : null; buttonModel: tablet ? tablet.buttons : null;
shown: tablet ? tablet.toolbarMode : false; shown: tablet ? tablet.toolbarMode : false;
onVisibleChanged: {
desktop.toolbarVisibleChanged(visible, sysToolbar.objectName);
} }
}
signal toolbarVisibleChanged(bool isVisible, string toolbarName);
QtSettings.Settings { QtSettings.Settings {
id: settings; id: settings;

View file

@ -122,7 +122,7 @@ Rectangle {
Tablet.playSound(TabletEnums.ButtonClick); Tablet.playSound(TabletEnums.ButtonClick);
// Can't use `Window.location` in QML, so just use what setting `Window.location` actually calls under the hood: // Can't use `Window.location` in QML, so just use what setting `Window.location` actually calls under the hood:
// AddressManager.handleLookupString(). // AddressManager.handleLookupString().
AddressManager.handleLookupString(LocationBookmarks.getHomeLocationAddress()); AddressManager.handleLookupString(LocationBookmarks.getAddress("hqhome"));
} }
} }
} }

View file

@ -47,6 +47,11 @@ Rectangle {
onSkeletonModelURLChanged: { onSkeletonModelURLChanged: {
root.updatePreviewUrl(); root.updatePreviewUrl();
if (MyAvatar.skeletonModelURL.indexOf("defaultAvatar" > -1) && topBarInventoryModel.count > 0) {
Settings.setValue("simplifiedUI/alreadyAutoSelectedAvatar", true);
MyAvatar.skeletonModelURL = topBarInventoryModel.get(0).download_url;
}
} }
} }

View file

@ -2708,6 +2708,7 @@ void Application::cleanupBeforeQuit() {
} }
getEntities()->shutdown(); // tell the entities system we're shutting down, so it will stop running scripts getEntities()->shutdown(); // tell the entities system we're shutting down, so it will stop running scripts
getEntities()->clear();
// Clear any queued processing (I/O, FBX/OBJ/Texture parsing) // Clear any queued processing (I/O, FBX/OBJ/Texture parsing)
QThreadPool::globalInstance()->clear(); QThreadPool::globalInstance()->clear();

View file

@ -63,9 +63,15 @@ PerformanceManager::PerformancePreset PerformanceManager::getPerformancePreset()
void PerformanceManager::applyPerformancePreset(PerformanceManager::PerformancePreset preset) { void PerformanceManager::applyPerformancePreset(PerformanceManager::PerformancePreset preset) {
// Ugly case that prevent us to run deferred everywhere...
bool isDeferredCapable = platform::Profiler::isRenderMethodDeferredCapable();
switch (preset) { switch (preset) {
case PerformancePreset::HIGH: case PerformancePreset::HIGH:
RenderScriptingInterface::getInstance()->setRenderMethod(RenderScriptingInterface::RenderMethod::DEFERRED); RenderScriptingInterface::getInstance()->setRenderMethod( ( isDeferredCapable ?
RenderScriptingInterface::RenderMethod::DEFERRED :
RenderScriptingInterface::RenderMethod::FORWARD ) );
RenderScriptingInterface::getInstance()->setShadowsEnabled(true); RenderScriptingInterface::getInstance()->setShadowsEnabled(true);
qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::REALTIME); qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::REALTIME);
@ -73,7 +79,10 @@ void PerformanceManager::applyPerformancePreset(PerformanceManager::PerformanceP
break; break;
case PerformancePreset::MID: case PerformancePreset::MID:
RenderScriptingInterface::getInstance()->setRenderMethod(RenderScriptingInterface::RenderMethod::DEFERRED); RenderScriptingInterface::getInstance()->setRenderMethod((isDeferredCapable ?
RenderScriptingInterface::RenderMethod::DEFERRED :
RenderScriptingInterface::RenderMethod::FORWARD));
RenderScriptingInterface::getInstance()->setShadowsEnabled(false); RenderScriptingInterface::getInstance()->setShadowsEnabled(false);
qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::INTERACTIVE); qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::INTERACTIVE);
DependencyManager::get<LODManager>()->setWorldDetailQuality(0.5f); DependencyManager::get<LODManager>()->setWorldDetailQuality(0.5f);

View file

@ -490,7 +490,7 @@ void AvatarManager::buildPhysicsTransaction(PhysicsEngine::Transaction& transact
_myAvatar->getCharacterController()->buildPhysicsTransaction(transaction); _myAvatar->getCharacterController()->buildPhysicsTransaction(transaction);
for (auto avatar : _otherAvatarsToChangeInPhysics) { for (auto avatar : _otherAvatarsToChangeInPhysics) {
bool isInPhysics = avatar->isInPhysicsSimulation(); bool isInPhysics = avatar->isInPhysicsSimulation();
if (isInPhysics != avatar->shouldBeInPhysicsSimulation()) { if (isInPhysics != avatar->shouldBeInPhysicsSimulation() || avatar->_needsReinsertion) {
if (isInPhysics) { if (isInPhysics) {
transaction.objectsToRemove.push_back(avatar->_motionState); transaction.objectsToRemove.push_back(avatar->_motionState);
avatar->_motionState = nullptr; avatar->_motionState = nullptr;

View file

@ -46,6 +46,7 @@ static BOOL const DELETE_ZIP_FILES = TRUE;
} }
-(void)awakeFromNib { -(void)awakeFromNib {
[[NSApplication sharedApplication] activateIgnoringOtherApps:TRUE];
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
selector:@selector(didTerminateApp:) selector:@selector(didTerminateApp:)
name:NSWorkspaceDidTerminateApplicationNotification name:NSWorkspaceDidTerminateApplicationNotification
@ -114,6 +115,7 @@ static BOOL const DELETE_ZIP_FILES = TRUE;
userInfo:nil userInfo:nil
repeats:NO]; repeats:NO];
} }
[[NSApplication sharedApplication] activateIgnoringOtherApps:TRUE];
} }
- (void) setDownloadContextFilename:(NSString *)aFilename - (void) setDownloadContextFilename:(NSString *)aFilename
@ -277,6 +279,7 @@ static BOOL const DELETE_ZIP_FILES = TRUE;
-(void)onSplashScreenTimerFinished:(NSTimer *)timer -(void)onSplashScreenTimerFinished:(NSTimer *)timer
{ {
[[NSApplication sharedApplication] activateIgnoringOtherApps:TRUE];
[self showLoginScreen]; [self showLoginScreen];
} }
@ -336,6 +339,7 @@ static BOOL const DELETE_ZIP_FILES = TRUE;
NSString* scriptsPath = [[self getAppPath] stringByAppendingString:@"interface.app/Contents/Resources/scripts/simplifiedUI/"]; NSString* scriptsPath = [[self getAppPath] stringByAppendingString:@"interface.app/Contents/Resources/scripts/simplifiedUI/"];
NSString* domainUrl = [[Settings sharedSettings] getDomainUrl]; NSString* domainUrl = [[Settings sharedSettings] getDomainUrl];
NSString* userToken = [[Launcher sharedLauncher] getTokenString]; NSString* userToken = [[Launcher sharedLauncher] getTokenString];
NSString* homeBookmark = [[NSString stringWithFormat:@"hqhome="] stringByAppendingString:domainUrl];
NSArray* arguments; NSArray* arguments;
if (userToken != nil) { if (userToken != nil) {
arguments = [NSArray arrayWithObjects: arguments = [NSArray arrayWithObjects:
@ -344,6 +348,7 @@ static BOOL const DELETE_ZIP_FILES = TRUE;
@"--cache", contentPath, @"--cache", contentPath,
@"--displayName", displayName, @"--displayName", displayName,
@"--scripts", scriptsPath, @"--scripts", scriptsPath,
@"--setBookmark", homeBookmark,
@"--no-updater", @"--no-updater",
@"--no-launcher", nil]; @"--no-launcher", nil];
} else { } else {
@ -351,6 +356,7 @@ static BOOL const DELETE_ZIP_FILES = TRUE;
@"--url" , domainUrl, @"--url" , domainUrl,
@"--cache", contentPath, @"--cache", contentPath,
@"--scripts", scriptsPath, @"--scripts", scriptsPath,
@"--setBookmark", homeBookmark,
@"--no-updater", @"--no-updater",
@"--no-launcher", nil]; @"--no-launcher", nil];
} }

View file

@ -234,9 +234,10 @@ HWND LauncherManager::launchApplication() {
CString parsedTokens = _tokensJSON; CString parsedTokens = _tokensJSON;
parsedTokens.Replace(_T("\""), _T("\\\"")); parsedTokens.Replace(_T("\""), _T("\\\""));
tokensParam = _T("--tokens \""); tokensParam = _T("--tokens \"");
tokensParam += parsedTokens + _T("\""); tokensParam += parsedTokens + _T("\" ");
} }
CString params = urlParam + scriptsParam + cacheParam + nameParam + tokensParam + EXTRA_PARAMETERS; CString bookmarkParam = _T("--setBookmark hqhome=\"") + _domainURL + ("\" ");
CString params = urlParam + scriptsParam + cacheParam + nameParam + tokensParam + bookmarkParam + EXTRA_PARAMETERS;
_shouldLaunch = FALSE; _shouldLaunch = FALSE;
return LauncherUtils::executeOnForeground(interfaceExe, params); return LauncherUtils::executeOnForeground(interfaceExe, params);
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View file

@ -12,6 +12,7 @@
#include "Platform.h" #include "Platform.h"
#include "PlatformKeys.h" #include "PlatformKeys.h"
#include <qglobal.h>
using namespace platform; using namespace platform;
@ -125,3 +126,34 @@ bool filterOnProcessors(const platform::json& computer, const platform::json& cp
// Not able to profile // Not able to profile
return false; return false;
} }
// Ugly very adhoc capability check to know if a particular hw can REnder with Deferred method or not
// YES for PC windows and linux
// NO for android
// YES on macos EXCEPT for macbookair with gpu intel iris or intel HD 6000
bool Profiler::isRenderMethodDeferredCapable() {
#if defined(Q_OS_MAC)
auto computer = platform::getComputer();
const auto computerModel = (computer.count(keys::computer::model) ? computer[keys::computer::model].get<std::string>() : "");
auto gpuInfo = platform::getGPU(0);
const auto gpuModel = (gpuInfo.count(keys::gpu::model) ? gpuInfo[keys::gpu::model].get<std::string>() : "");
// Macbook air 2018 are a problem
if ((computerModel.find("MacBookAir") != std::string::npos) && (gpuModel.find("Intel HD Graphics 6000") != std::string::npos)) {
return false;
}
// We know for fact that one INtel Iris is problematic, not enough info yet for sure
// if ((gpuModel.find("Intel Iris ....") != std::string::npos)) {
// return false;
//}
return true;
#elif defined(Q_OS_ANDROID)
return false;
#else
return true;
#endif
}

View file

@ -28,6 +28,9 @@ public:
static const std::array<const char*, Tier::NumTiers> TierNames; static const std::array<const char*, Tier::NumTiers> TierNames;
static Tier profilePlatform(); static Tier profilePlatform();
// Ugly very adhoc capability check to know if a particular hw can REnder with Deferred method or not
static bool isRenderMethodDeferredCapable();
}; };
} }

View file

@ -47,6 +47,7 @@ GPUIdent* GPUIdent::ensureQuery(const QString& vendor, const QString& renderer)
GLint rendererInfoCount; GLint rendererInfoCount;
CGLError err = CGLQueryRendererInfo(cglDisplayMask, &rendererInfo, &rendererInfoCount); CGLError err = CGLQueryRendererInfo(cglDisplayMask, &rendererInfo, &rendererInfoCount);
GLint j, numRenderers = 0, deviceVRAM, bestVRAM = 0; GLint j, numRenderers = 0, deviceVRAM, bestVRAM = 0;
int bestGPUid = 0;
err = CGLQueryRendererInfo(cglDisplayMask, &rendererInfo, &numRenderers); err = CGLQueryRendererInfo(cglDisplayMask, &rendererInfo, &numRenderers);
if (0 == err) { if (0 == err) {
// Iterate over all of them and use the figure for the one with the most VRAM, // Iterate over all of them and use the figure for the one with the most VRAM,
@ -55,6 +56,7 @@ GPUIdent* GPUIdent::ensureQuery(const QString& vendor, const QString& renderer)
for (j = 0; j < numRenderers; j++) { for (j = 0; j < numRenderers; j++) {
CGLDescribeRenderer(rendererInfo, j, kCGLRPVideoMemoryMegabytes, &deviceVRAM); CGLDescribeRenderer(rendererInfo, j, kCGLRPVideoMemoryMegabytes, &deviceVRAM);
if (deviceVRAM > bestVRAM) { if (deviceVRAM > bestVRAM) {
bestGPUid = j;
bestVRAM = deviceVRAM; bestVRAM = deviceVRAM;
_isValid = true; _isValid = true;
} }
@ -78,6 +80,8 @@ GPUIdent* GPUIdent::ensureQuery(const QString& vendor, const QString& renderer)
for (int i = 0; i < parts.size(); ++i) { for (int i = 0; i < parts.size(); ++i) {
if (parts[i].toLower().contains("radeon") || parts[i].toLower().contains("nvidia")) { if (parts[i].toLower().contains("radeon") || parts[i].toLower().contains("nvidia")) {
_name=parts[i]; _name=parts[i];
} else if (i == bestGPUid) {
_name=parts[i];
} }
} }

View file

@ -27,6 +27,7 @@
#include "VrMenu.h" #include "VrMenu.h"
#include "ui/Logging.h" #include "ui/Logging.h"
#include "ui/ToolbarScriptingInterface.h"
#include <PointerManager.h> #include <PointerManager.h>
#include "MainWindow.h" #include "MainWindow.h"
@ -688,6 +689,10 @@ void OffscreenUi::createDesktop(const QUrl& url) {
menuInitializer(_vrMenu); menuInitializer(_vrMenu);
} }
auto toolbarScriptingInterface = DependencyManager::get<ToolbarScriptingInterface>();
connect(_desktop, SIGNAL(toolbarVisibleChanged(bool, QString)), toolbarScriptingInterface.data(), SIGNAL(toolbarVisibleChanged(bool, QString)));
auto keyboardFocus = new KeyboardFocusHack(); auto keyboardFocus = new KeyboardFocusHack();
connect(_desktop, SIGNAL(showDesktop()), this, SIGNAL(showDesktop())); connect(_desktop, SIGNAL(showDesktop()), this, SIGNAL(showDesktop()));
emit desktopReady(); emit desktopReady();

View file

@ -686,9 +686,16 @@ void OffscreenQmlSurface::setKeyboardRaised(QObject* object, bool raised, bool n
return; return;
} }
#if !defined(Q_OS_ANDROID) bool android = false;
#if defined(Q_OS_ANDROID)
android = true;
#endif
bool hmd = qApp->property(hifi::properties::HMD).toBool();
if (!android || hmd) {
// if HMD is being worn, allow keyboard to open. allow it to close, HMD or not. // if HMD is being worn, allow keyboard to open. allow it to close, HMD or not.
if (!raised || qApp->property(hifi::properties::HMD).toBool()) { if (!raised || hmd) {
QQuickItem* item = dynamic_cast<QQuickItem*>(object); QQuickItem* item = dynamic_cast<QQuickItem*>(object);
if (!item) { if (!item) {
return; return;
@ -704,7 +711,7 @@ void OffscreenQmlSurface::setKeyboardRaised(QObject* object, bool raised, bool n
numeric = numeric || QString(item->metaObject()->className()).left(7) == "SpinBox"; numeric = numeric || QString(item->metaObject()->className()).left(7) == "SpinBox";
if (item->property("keyboardRaised").isValid()) { if (item->property("keyboardRaised").isValid()) {
// FIXME - HMD only: Possibly set value of "keyboardEnabled" per isHMDMode() for use in WebView.qml.
if (item->property("punctuationMode").isValid()) { if (item->property("punctuationMode").isValid()) {
item->setProperty("punctuationMode", QVariant(numeric)); item->setProperty("punctuationMode", QVariant(numeric));
} }
@ -712,17 +719,19 @@ void OffscreenQmlSurface::setKeyboardRaised(QObject* object, bool raised, bool n
item->setProperty("passwordField", QVariant(passwordField)); item->setProperty("passwordField", QVariant(passwordField));
} }
if (raised) { if (hmd && item->property("keyboardEnabled").isValid()) {
item->setProperty("keyboardRaised", QVariant(!raised)); item->setProperty("keyboardEnabled", true);
} }
item->setProperty("keyboardRaised", QVariant(raised)); item->setProperty("keyboardRaised", QVariant(raised));
return; return;
} }
item = dynamic_cast<QQuickItem*>(item->parentItem()); item = dynamic_cast<QQuickItem*>(item->parentItem());
} }
} }
#endif }
} }
void OffscreenQmlSurface::emitScriptEvent(const QVariant& message) { void OffscreenQmlSurface::emitScriptEvent(const QVariant& message) {

View file

@ -150,6 +150,9 @@ public:
* @returns {ToolbarProxy} * @returns {ToolbarProxy}
*/ */
Q_INVOKABLE ToolbarProxy* getToolbar(const QString& toolbarId); Q_INVOKABLE ToolbarProxy* getToolbar(const QString& toolbarId);
signals:
void toolbarVisibleChanged(bool isVisible, QString toolbarName);
}; };

View file

@ -26,8 +26,9 @@ Rectangle {
color: global.color color: global.color
ScrollView { ScrollView {
id: control id: scrollView
anchors.fill: parent anchors.fill: parent
contentWidth: parent.width
clip: true clip: true
Column { Column {

View file

@ -24,8 +24,11 @@ Rectangle {
color: global.colorBack color: global.colorBack
ScrollView { ScrollView {
id: scrollView
anchors.fill: parent anchors.fill: parent
contentWidth: parent.width
clip: true clip: true
Column { Column {
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
@ -35,8 +38,6 @@ Rectangle {
isUnfold: true isUnfold: true
panelFrameData: Component { panelFrameData: Component {
PerformanceSettings { PerformanceSettings {
anchors.left: parent.left
anchors.right: parent.right
} }
} }
} }
@ -45,8 +46,6 @@ Rectangle {
isUnfold: true isUnfold: true
panelFrameData: Component { panelFrameData: Component {
RenderSettings { RenderSettings {
anchors.left: parent.left
anchors.right: parent.right
} }
} }
} }
@ -54,8 +53,6 @@ Rectangle {
label: "Platform" label: "Platform"
panelFrameData: Component { panelFrameData: Component {
Platform { Platform {
anchors.left: parent.left
anchors.right: parent.right
} }
} }
} }

View file

@ -83,9 +83,7 @@
// The initial delay cooldown keeps us from tracking progress before the allotted time // The initial delay cooldown keeps us from tracking progress before the allotted time
// has passed. // has passed.
INITIAL_DELAY_COOLDOWN_TIME = 1000, INITIAL_DELAY_COOLDOWN_TIME = 1000,
initialDelayCooldown = 0, initialDelayCooldown = 0;
isInInterstitialMode = false;
function fade() { function fade() {
@ -267,7 +265,7 @@
// Update state // Update state
if (!visible) { // Not visible because no recent downloads if (!visible) { // Not visible because no recent downloads
if ((displayProgress < 100 || gpuTextures > 0) && !isInInterstitialMode && !isInterstitialOverlaysVisible) { // Have started downloading so fade in if (displayProgress < 100 || gpuTextures > 0) { // Have started downloading so fade in
visible = true; visible = true;
alphaDelta = ALPHA_DELTA_IN; alphaDelta = ALPHA_DELTA_IN;
fadeTimer = Script.setInterval(fade, FADE_INTERVAL); fadeTimer = Script.setInterval(fade, FADE_INTERVAL);
@ -307,9 +305,6 @@
} else { } else {
x = x * BAR_HMD_REPEAT; x = x * BAR_HMD_REPEAT;
} }
if (isInInterstitialMode || isInterstitialOverlaysVisible) {
visible = false;
}
// Update progress bar // Update progress bar
Overlays.editOverlay(barDesktop.overlay, { Overlays.editOverlay(barDesktop.overlay, {
@ -349,10 +344,6 @@
} }
} }
function interstitialModeChanged(inMode) {
isInInterstitialMode = inMode;
}
function setUp() { function setUp() {
var is4k = Window.innerWidth > 3000; var is4k = Window.innerWidth > 3000;
@ -378,7 +369,6 @@
} }
setUp(); setUp();
Window.interstitialModeChanged.connect(interstitialModeChanged);
GlobalServices.downloadInfoChanged.connect(onDownloadInfoChanged); GlobalServices.downloadInfoChanged.connect(onDownloadInfoChanged);
GlobalServices.updateDownloadInfo(); GlobalServices.updateDownloadInfo();
Script.setInterval(update, 1000 / 60); Script.setInterval(update, 1000 / 60);

View file

@ -415,7 +415,7 @@ function getInputDeviceMutedOverlayTopY() {
var inputDeviceMutedOverlay = false; var inputDeviceMutedOverlay = false;
var INPUT_DEVICE_MUTED_OVERLAY_DEFAULT_X_PX = 353; var INPUT_DEVICE_MUTED_OVERLAY_DEFAULT_X_PX = 353;
var INPUT_DEVICE_MUTED_OVERLAY_DEFAULT_Y_PX = 95; var INPUT_DEVICE_MUTED_OVERLAY_DEFAULT_Y_PX = 95;
var INPUT_DEVICE_MUTED_MARGIN_BOTTOM_PX = 20; var INPUT_DEVICE_MUTED_MARGIN_BOTTOM_PX = 20 + TOP_BAR_HEIGHT_PX;
function updateInputDeviceMutedOverlay(isMuted) { function updateInputDeviceMutedOverlay(isMuted) {
if (isMuted) { if (isMuted) {
var props = { var props = {
@ -457,16 +457,18 @@ function onGeometryChanged(rect) {
} }
} }
var TIMEOUT_BEFORE_REHIDE_TOOLBAR_MS = 700;
function onDisplayModeChanged(isHMDMode) { function onDisplayModeChanged(isHMDMode) {
if (isHMDMode) { if (isHMDMode) {
Camera.setModeString("first person"); Camera.setModeString("first person");
} else if (Settings.getValue("simplifiedUI/keepExistingUIAndScripts", false)) { }
// works for now, but not a permanent fix by any means. }
Script.setTimeout(function () {
var toolbar = Toolbars.getToolbar(TOOLBAR_NAME); function onToolbarVisibleChanged(isVisible, toolbarName) {
if (isVisible && toolbarName == TOOLBAR_NAME && !Settings.getValue("simplifiedUI/keepExistingUIAndScripts", false)) {
var toolbar = Toolbars.getToolbar(toolbarName);
if (toolbar) {
toolbar.writeProperty("visible", false); toolbar.writeProperty("visible", false);
}, TIMEOUT_BEFORE_REHIDE_TOOLBAR_MS); }
} }
} }
@ -497,9 +499,11 @@ function startup() {
if (!HMD.active) { if (!HMD.active) {
var toolbar = Toolbars.getToolbar(TOOLBAR_NAME); var toolbar = Toolbars.getToolbar(TOOLBAR_NAME);
if (toolbar) {
toolbar.writeProperty("visible", false); toolbar.writeProperty("visible", false);
} }
} }
}
loadSimplifiedTopBar(); loadSimplifiedTopBar();
@ -517,6 +521,7 @@ function startup() {
Audio.localInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); Audio.localInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay);
Audio.serverInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); Audio.serverInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay);
Audio.systemInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay); Audio.systemInjectorGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay);
Toolbars.toolbarVisibleChanged.connect(onToolbarVisibleChanged);
oldShowAudioTools = AvatarInputs.showAudioTools; oldShowAudioTools = AvatarInputs.showAudioTools;
AvatarInputs.showAudioTools = false; AvatarInputs.showAudioTools = false;
@ -573,6 +578,7 @@ function shutdown() {
Audio.localInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); Audio.localInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay);
Audio.serverInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); Audio.serverInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay);
Audio.systemInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay); Audio.systemInjectorGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay);
Toolbars.toolbarVisibleChanged.disconnect(onToolbarVisibleChanged);
AvatarInputs.showAudioTools = oldShowAudioTools; AvatarInputs.showAudioTools = oldShowAudioTools;
AvatarInputs.showBubbleTools = oldShowBubbleTools; AvatarInputs.showBubbleTools = oldShowBubbleTools;