mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-06-06 13:21:07 +02:00
Merge pull request #12818 from highfidelity/RC66
Merge back RC66 to master
This commit is contained in:
commit
1d76dea9f6
10 changed files with 62 additions and 32 deletions
|
@ -4,8 +4,8 @@ set(EXTERNAL_NAME serverless-content)
|
||||||
|
|
||||||
ExternalProject_Add(
|
ExternalProject_Add(
|
||||||
${EXTERNAL_NAME}
|
${EXTERNAL_NAME}
|
||||||
URL http://cdn.highfidelity.com/content-sets/serverless-tutorial-RC66.zip
|
URL http://cdn.highfidelity.com/content-sets/serverless-tutorial-RC66-v2.zip
|
||||||
URL_MD5 91edfde96e06efc847ca327ab97f4c74
|
URL_MD5 d76bdb3e2bf7ae5d20115bd97b0c44a8
|
||||||
CONFIGURE_COMMAND ""
|
CONFIGURE_COMMAND ""
|
||||||
BUILD_COMMAND ""
|
BUILD_COMMAND ""
|
||||||
INSTALL_COMMAND ""
|
INSTALL_COMMAND ""
|
||||||
|
|
|
@ -122,9 +122,21 @@ Item {
|
||||||
newViewRequestedCallback(request)
|
newViewRequestedCallback(request)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Prior to 5.10, the WebEngineView loading property is true during initial page loading and then stays false
|
||||||
|
// as in-page javascript adds more html content. However, in 5.10 there is a bug such that adding html turns
|
||||||
|
// loading true, and never turns it false again. safeLoading provides a workaround, but it should be removed
|
||||||
|
// when QT fixes this.
|
||||||
|
property bool safeLoading: false
|
||||||
|
property bool loadingLatched: false
|
||||||
|
property var loadingRequest: null
|
||||||
onLoadingChanged: {
|
onLoadingChanged: {
|
||||||
flick.onLoadingChanged(loadRequest)
|
webViewCore.loadingRequest = loadRequest;
|
||||||
loadingChangedCallback(loadRequest)
|
webViewCore.safeLoading = webViewCore.loading && !loadingLatched;
|
||||||
|
webViewCore.loadingLatched |= webViewCore.loading;
|
||||||
|
}
|
||||||
|
onSafeLoadingChanged: {
|
||||||
|
flick.onLoadingChanged(webViewCore.loadingRequest)
|
||||||
|
loadingChangedCallback(webViewCore.loadingRequest)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,7 +145,7 @@ Item {
|
||||||
x: flick.width/2 - width/2
|
x: flick.width/2 - width/2
|
||||||
y: flick.height/2 - height/2
|
y: flick.height/2 - height/2
|
||||||
source: "../../icons/loader-snake-64-w.gif"
|
source: "../../icons/loader-snake-64-w.gif"
|
||||||
visible: webViewCore.loading && /^(http.*|)$/i.test(webViewCore.url.toString())
|
visible: webViewCore.safeLoading && /^(http.*|)$/i.test(webViewCore.url.toString())
|
||||||
playing: visible
|
playing: visible
|
||||||
z: 10000
|
z: 10000
|
||||||
}
|
}
|
||||||
|
|
|
@ -3046,7 +3046,6 @@ void Application::handleSandboxStatus(QNetworkReply* reply) {
|
||||||
|
|
||||||
static const QString SENT_TO_PREVIOUS_LOCATION = "previous_location";
|
static const QString SENT_TO_PREVIOUS_LOCATION = "previous_location";
|
||||||
static const QString SENT_TO_ENTRY = "entry";
|
static const QString SENT_TO_ENTRY = "entry";
|
||||||
static const QString SENT_TO_SANDBOX = "sandbox";
|
|
||||||
|
|
||||||
QString sentTo;
|
QString sentTo;
|
||||||
|
|
||||||
|
@ -3055,15 +3054,8 @@ void Application::handleSandboxStatus(QNetworkReply* reply) {
|
||||||
#if !defined(Q_OS_ANDROID)
|
#if !defined(Q_OS_ANDROID)
|
||||||
showHelp();
|
showHelp();
|
||||||
#endif
|
#endif
|
||||||
if (sandboxIsRunning) {
|
DependencyManager::get<AddressManager>()->goToEntry();
|
||||||
qCDebug(interfaceapp) << "Home sandbox appears to be running, going to Home.";
|
sentTo = SENT_TO_ENTRY;
|
||||||
DependencyManager::get<AddressManager>()->goToLocalSandbox();
|
|
||||||
sentTo = SENT_TO_SANDBOX;
|
|
||||||
} else {
|
|
||||||
qCDebug(interfaceapp) << "Home sandbox does not appear to be running, going to Entry.";
|
|
||||||
DependencyManager::get<AddressManager>()->goToEntry();
|
|
||||||
sentTo = SENT_TO_ENTRY;
|
|
||||||
}
|
|
||||||
firstRun.set(false);
|
firstRun.set(false);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -129,7 +129,7 @@ void DiscoverabilityManager::updateLocation() {
|
||||||
|
|
||||||
// Update Steam
|
// Update Steam
|
||||||
if (auto steamClient = PluginManager::getInstance()->getSteamClientPlugin()) {
|
if (auto steamClient = PluginManager::getInstance()->getSteamClientPlugin()) {
|
||||||
steamClient->updateLocation(domainHandler.getHostname(), addressManager->currentFacingShareableAddress());
|
steamClient->updateLocation(domainHandler.getHostname(), addressManager->currentFacingPublicAddress());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,7 @@ QTemporaryFile* Snapshot::saveTempSnapshot(QImage image) {
|
||||||
QFile* Snapshot::savedFileForSnapshot(QImage & shot, bool isTemporary, const QString& userSelectedFilename) {
|
QFile* Snapshot::savedFileForSnapshot(QImage & shot, bool isTemporary, const QString& userSelectedFilename) {
|
||||||
|
|
||||||
// adding URL to snapshot
|
// adding URL to snapshot
|
||||||
QUrl currentURL = DependencyManager::get<AddressManager>()->currentShareableAddress();
|
QUrl currentURL = DependencyManager::get<AddressManager>()->currentPublicAddress();
|
||||||
shot.setText(URL, currentURL.toString());
|
shot.setText(URL, currentURL.toString());
|
||||||
|
|
||||||
QString username = DependencyManager::get<AccountManager>()->getAccountInfo().getUsername();
|
QString username = DependencyManager::get<AccountManager>()->getAccountInfo().getUsername();
|
||||||
|
|
|
@ -77,6 +77,17 @@ QUrl AddressManager::currentShareableAddress(bool domainOnly) const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QUrl AddressManager::currentPublicAddress(bool domainOnly) const {
|
||||||
|
// return an address that can be used by others to visit this client's current location. If
|
||||||
|
// in a serverless domain (which can't be visited) return an empty URL.
|
||||||
|
QUrl shareableAddress = currentShareableAddress(domainOnly);
|
||||||
|
if (shareableAddress.scheme() != URL_SCHEME_HIFI) {
|
||||||
|
return QUrl(); // file: urls aren't public
|
||||||
|
}
|
||||||
|
return shareableAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QUrl AddressManager::currentFacingShareableAddress() const {
|
QUrl AddressManager::currentFacingShareableAddress() const {
|
||||||
auto hifiURL = currentShareableAddress();
|
auto hifiURL = currentShareableAddress();
|
||||||
if (hifiURL.scheme() == URL_SCHEME_HIFI) {
|
if (hifiURL.scheme() == URL_SCHEME_HIFI) {
|
||||||
|
@ -86,6 +97,17 @@ QUrl AddressManager::currentFacingShareableAddress() const {
|
||||||
return hifiURL;
|
return hifiURL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QUrl AddressManager::currentFacingPublicAddress() const {
|
||||||
|
// return an address that can be used by others to visit this client's current location. If
|
||||||
|
// in a serverless domain (which can't be visited) return an empty URL.
|
||||||
|
QUrl shareableAddress = currentFacingShareableAddress();
|
||||||
|
if (shareableAddress.scheme() != URL_SCHEME_HIFI) {
|
||||||
|
return QUrl(); // file: urls aren't public
|
||||||
|
}
|
||||||
|
return shareableAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void AddressManager::loadSettings(const QString& lookupString) {
|
void AddressManager::loadSettings(const QString& lookupString) {
|
||||||
#if defined(USE_GLES) && defined(Q_OS_WIN)
|
#if defined(USE_GLES) && defined(Q_OS_WIN)
|
||||||
handleUrl(QUrl("hifi://127.0.0.0"), LookupTrigger::StartupFromSettings);
|
handleUrl(QUrl("hifi://127.0.0.0"), LookupTrigger::StartupFromSettings);
|
||||||
|
@ -288,6 +310,7 @@ bool AddressManager::handleUrl(const QUrl& lookupUrl, LookupTrigger trigger) {
|
||||||
// lookupUrl.scheme() == URL_SCHEME_HTTP ||
|
// lookupUrl.scheme() == URL_SCHEME_HTTP ||
|
||||||
// lookupUrl.scheme() == URL_SCHEME_HTTPS ||
|
// lookupUrl.scheme() == URL_SCHEME_HTTPS ||
|
||||||
_previousLookup.clear();
|
_previousLookup.clear();
|
||||||
|
_shareablePlaceName.clear();
|
||||||
QUrl domainURL = PathUtils::expandToLocalDataAbsolutePath(lookupUrl);
|
QUrl domainURL = PathUtils::expandToLocalDataAbsolutePath(lookupUrl);
|
||||||
setDomainInfo(domainURL, trigger);
|
setDomainInfo(domainURL, trigger);
|
||||||
emit lookupResultsFinished();
|
emit lookupResultsFinished();
|
||||||
|
|
|
@ -150,7 +150,9 @@ public:
|
||||||
QUrl currentAddress(bool domainOnly = false) const;
|
QUrl currentAddress(bool domainOnly = false) const;
|
||||||
QUrl currentFacingAddress() const;
|
QUrl currentFacingAddress() const;
|
||||||
QUrl currentShareableAddress(bool domainOnly = false) const;
|
QUrl currentShareableAddress(bool domainOnly = false) const;
|
||||||
|
QUrl currentPublicAddress(bool domainOnly = false) const;
|
||||||
QUrl currentFacingShareableAddress() const;
|
QUrl currentFacingShareableAddress() const;
|
||||||
|
QUrl currentFacingPublicAddress() const;
|
||||||
QString currentPath(bool withOrientation = true) const;
|
QString currentPath(bool withOrientation = true) const;
|
||||||
QString currentFacingPath() const;
|
QString currentFacingPath() const;
|
||||||
|
|
||||||
|
|
|
@ -192,17 +192,12 @@ bool OctreePersistThread::process() {
|
||||||
QString lockFileName = _filename + ".lock";
|
QString lockFileName = _filename + ".lock";
|
||||||
std::ifstream lockFile(qPrintable(lockFileName), std::ios::in | std::ios::binary | std::ios::ate);
|
std::ifstream lockFile(qPrintable(lockFileName), std::ios::in | std::ios::binary | std::ios::ate);
|
||||||
if (lockFile.is_open()) {
|
if (lockFile.is_open()) {
|
||||||
qCDebug(octree) << "WARNING: Octree lock file detected at startup:" << lockFileName
|
qCDebug(octree) << "WARNING: Octree lock file detected at startup:" << lockFileName;
|
||||||
<< "-- Attempting to restore from previous backup file.";
|
|
||||||
|
|
||||||
// This is where we should attempt to find the most recent backup and restore from
|
|
||||||
// that file as our persist file.
|
|
||||||
restoreFromMostRecentBackup();
|
|
||||||
|
|
||||||
lockFile.close();
|
lockFile.close();
|
||||||
qCDebug(octree) << "Loading Octree... lock file closed:" << lockFileName;
|
qCDebug(octree) << "Removing lock file:" << lockFileName;
|
||||||
remove(qPrintable(lockFileName));
|
remove(qPrintable(lockFileName));
|
||||||
qCDebug(octree) << "Loading Octree... lock file removed:" << lockFileName;
|
qCDebug(octree) << "Lock file removed:" << lockFileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
persistentFileRead = _tree->readFromFile(qPrintable(_filename.toLocal8Bit()));
|
persistentFileRead = _tree->readFromFile(qPrintable(_filename.toLocal8Bit()));
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include "model_lightmap_fade_vert.h"
|
#include "model_lightmap_fade_vert.h"
|
||||||
#include "model_lightmap_normal_map_fade_vert.h"
|
#include "model_lightmap_normal_map_fade_vert.h"
|
||||||
#include "model_translucent_vert.h"
|
#include "model_translucent_vert.h"
|
||||||
|
#include "model_translucent_normal_map_vert.h"
|
||||||
#include "skin_model_fade_vert.h"
|
#include "skin_model_fade_vert.h"
|
||||||
#include "skin_model_normal_map_fade_vert.h"
|
#include "skin_model_normal_map_fade_vert.h"
|
||||||
#include "skin_model_fade_dq_vert.h"
|
#include "skin_model_fade_dq_vert.h"
|
||||||
|
@ -68,11 +69,13 @@
|
||||||
#include "model_lightmap_normal_map_frag.h"
|
#include "model_lightmap_normal_map_frag.h"
|
||||||
#include "model_translucent_frag.h"
|
#include "model_translucent_frag.h"
|
||||||
#include "model_translucent_unlit_frag.h"
|
#include "model_translucent_unlit_frag.h"
|
||||||
|
#include "model_translucent_normal_map_frag.h"
|
||||||
|
|
||||||
#include "model_lightmap_fade_frag.h"
|
#include "model_lightmap_fade_frag.h"
|
||||||
#include "model_lightmap_normal_map_fade_frag.h"
|
#include "model_lightmap_normal_map_fade_frag.h"
|
||||||
#include "model_translucent_fade_frag.h"
|
#include "model_translucent_fade_frag.h"
|
||||||
#include "model_translucent_unlit_fade_frag.h"
|
#include "model_translucent_unlit_fade_frag.h"
|
||||||
|
#include "model_translucent_normal_map_fade_frag.h"
|
||||||
|
|
||||||
#include "overlay3D_vert.h"
|
#include "overlay3D_vert.h"
|
||||||
#include "overlay3D_frag.h"
|
#include "overlay3D_frag.h"
|
||||||
|
@ -187,6 +190,7 @@ void initDeferredPipelines(render::ShapePlumber& plumber, const render::ShapePip
|
||||||
auto modelLightmapVertex = model_lightmap_vert::getShader();
|
auto modelLightmapVertex = model_lightmap_vert::getShader();
|
||||||
auto modelLightmapNormalMapVertex = model_lightmap_normal_map_vert::getShader();
|
auto modelLightmapNormalMapVertex = model_lightmap_normal_map_vert::getShader();
|
||||||
auto modelTranslucentVertex = model_translucent_vert::getShader();
|
auto modelTranslucentVertex = model_translucent_vert::getShader();
|
||||||
|
auto modelTranslucentNormalMapVertex = model_translucent_normal_map_vert::getShader();
|
||||||
auto modelShadowVertex = model_shadow_vert::getShader();
|
auto modelShadowVertex = model_shadow_vert::getShader();
|
||||||
|
|
||||||
auto modelLightmapFadeVertex = model_lightmap_fade_vert::getShader();
|
auto modelLightmapFadeVertex = model_lightmap_fade_vert::getShader();
|
||||||
|
@ -227,6 +231,7 @@ void initDeferredPipelines(render::ShapePlumber& plumber, const render::ShapePip
|
||||||
auto modelNormalMapPixel = model_normal_map_frag::getShader();
|
auto modelNormalMapPixel = model_normal_map_frag::getShader();
|
||||||
auto modelTranslucentPixel = model_translucent_frag::getShader();
|
auto modelTranslucentPixel = model_translucent_frag::getShader();
|
||||||
auto modelTranslucentUnlitPixel = model_translucent_unlit_frag::getShader();
|
auto modelTranslucentUnlitPixel = model_translucent_unlit_frag::getShader();
|
||||||
|
auto modelTranslucentNormalMapPixel = model_translucent_normal_map_frag::getShader();
|
||||||
auto modelShadowPixel = model_shadow_frag::getShader();
|
auto modelShadowPixel = model_shadow_frag::getShader();
|
||||||
auto modelLightmapPixel = model_lightmap_frag::getShader();
|
auto modelLightmapPixel = model_lightmap_frag::getShader();
|
||||||
auto modelLightmapNormalMapPixel = model_lightmap_normal_map_frag::getShader();
|
auto modelLightmapNormalMapPixel = model_lightmap_normal_map_frag::getShader();
|
||||||
|
@ -239,6 +244,7 @@ void initDeferredPipelines(render::ShapePlumber& plumber, const render::ShapePip
|
||||||
auto modelShadowFadePixel = model_shadow_fade_frag::getShader();
|
auto modelShadowFadePixel = model_shadow_fade_frag::getShader();
|
||||||
auto modelTranslucentFadePixel = model_translucent_fade_frag::getShader();
|
auto modelTranslucentFadePixel = model_translucent_fade_frag::getShader();
|
||||||
auto modelTranslucentUnlitFadePixel = model_translucent_unlit_fade_frag::getShader();
|
auto modelTranslucentUnlitFadePixel = model_translucent_unlit_fade_frag::getShader();
|
||||||
|
auto modelTranslucentNormalMapFadePixel = model_translucent_normal_map_fade_frag::getShader();
|
||||||
auto simpleFadePixel = simple_textured_fade_frag::getShader();
|
auto simpleFadePixel = simple_textured_fade_frag::getShader();
|
||||||
auto simpleUnlitFadePixel = simple_textured_unlit_fade_frag::getShader();
|
auto simpleUnlitFadePixel = simple_textured_unlit_fade_frag::getShader();
|
||||||
auto simpleTranslucentFadePixel = simple_transparent_textured_fade_frag::getShader();
|
auto simpleTranslucentFadePixel = simple_transparent_textured_fade_frag::getShader();
|
||||||
|
@ -296,7 +302,7 @@ void initDeferredPipelines(render::ShapePlumber& plumber, const render::ShapePip
|
||||||
simpleVertex, simpleTranslucentUnlitPixel, nullptr, nullptr);
|
simpleVertex, simpleTranslucentUnlitPixel, nullptr, nullptr);
|
||||||
addPipeline(
|
addPipeline(
|
||||||
Key::Builder().withMaterial().withTranslucent().withTangents(),
|
Key::Builder().withMaterial().withTranslucent().withTangents(),
|
||||||
modelTranslucentVertex, modelTranslucentPixel, nullptr, nullptr);
|
modelTranslucentNormalMapVertex, modelTranslucentNormalMapPixel, nullptr, nullptr);
|
||||||
addPipeline(
|
addPipeline(
|
||||||
// FIXME: Ignore lightmap for translucents meshpart
|
// FIXME: Ignore lightmap for translucents meshpart
|
||||||
Key::Builder().withMaterial().withTranslucent().withLightmap(),
|
Key::Builder().withMaterial().withTranslucent().withLightmap(),
|
||||||
|
@ -316,7 +322,7 @@ void initDeferredPipelines(render::ShapePlumber& plumber, const render::ShapePip
|
||||||
simpleFadeVertex, simpleTranslucentUnlitFadePixel, batchSetter, itemSetter);
|
simpleFadeVertex, simpleTranslucentUnlitFadePixel, batchSetter, itemSetter);
|
||||||
addPipeline(
|
addPipeline(
|
||||||
Key::Builder().withMaterial().withTranslucent().withTangents().withFade(),
|
Key::Builder().withMaterial().withTranslucent().withTangents().withFade(),
|
||||||
modelNormalMapFadeVertex, modelTranslucentFadePixel, batchSetter, itemSetter);
|
modelTranslucentNormalMapVertex, modelTranslucentNormalMapFadePixel, batchSetter, itemSetter);
|
||||||
addPipeline(
|
addPipeline(
|
||||||
// FIXME: Ignore lightmap for translucents meshpart
|
// FIXME: Ignore lightmap for translucents meshpart
|
||||||
Key::Builder().withMaterial().withTranslucent().withLightmap().withFade(),
|
Key::Builder().withMaterial().withTranslucent().withLightmap().withFade(),
|
||||||
|
@ -358,14 +364,14 @@ void initDeferredPipelines(render::ShapePlumber& plumber, const render::ShapePip
|
||||||
skinModelTranslucentVertex, modelTranslucentPixel, nullptr, nullptr);
|
skinModelTranslucentVertex, modelTranslucentPixel, nullptr, nullptr);
|
||||||
addPipeline(
|
addPipeline(
|
||||||
Key::Builder().withMaterial().withSkinned().withTranslucent().withTangents(),
|
Key::Builder().withMaterial().withSkinned().withTranslucent().withTangents(),
|
||||||
skinModelNormalMapTranslucentVertex, modelTranslucentPixel, nullptr, nullptr);
|
skinModelNormalMapTranslucentVertex, modelTranslucentNormalMapPixel, nullptr, nullptr);
|
||||||
// Same thing but with Fade on
|
// Same thing but with Fade on
|
||||||
addPipeline(
|
addPipeline(
|
||||||
Key::Builder().withMaterial().withSkinned().withTranslucent().withFade(),
|
Key::Builder().withMaterial().withSkinned().withTranslucent().withFade(),
|
||||||
skinModelFadeVertex, modelTranslucentFadePixel, batchSetter, itemSetter);
|
skinModelFadeVertex, modelTranslucentFadePixel, batchSetter, itemSetter);
|
||||||
addPipeline(
|
addPipeline(
|
||||||
Key::Builder().withMaterial().withSkinned().withTranslucent().withTangents().withFade(),
|
Key::Builder().withMaterial().withSkinned().withTranslucent().withTangents().withFade(),
|
||||||
skinModelNormalMapFadeVertex, modelTranslucentFadePixel, batchSetter, itemSetter);
|
skinModelNormalMapFadeVertex, modelTranslucentNormalMapFadePixel, batchSetter, itemSetter);
|
||||||
|
|
||||||
// dual quaternion skinned
|
// dual quaternion skinned
|
||||||
addPipeline(
|
addPipeline(
|
||||||
|
@ -388,14 +394,14 @@ void initDeferredPipelines(render::ShapePlumber& plumber, const render::ShapePip
|
||||||
skinModelTranslucentDualQuatVertex, modelTranslucentPixel, nullptr, nullptr);
|
skinModelTranslucentDualQuatVertex, modelTranslucentPixel, nullptr, nullptr);
|
||||||
addPipeline(
|
addPipeline(
|
||||||
Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withTranslucent().withTangents(),
|
Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withTranslucent().withTangents(),
|
||||||
skinModelNormalMapTranslucentDualQuatVertex, modelTranslucentPixel, nullptr, nullptr);
|
skinModelNormalMapTranslucentDualQuatVertex, modelTranslucentNormalMapPixel, nullptr, nullptr);
|
||||||
// Same thing but with Fade on
|
// Same thing but with Fade on
|
||||||
addPipeline(
|
addPipeline(
|
||||||
Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withTranslucent().withFade(),
|
Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withTranslucent().withFade(),
|
||||||
skinModelFadeDualQuatVertex, modelTranslucentFadePixel, batchSetter, itemSetter);
|
skinModelFadeDualQuatVertex, modelTranslucentFadePixel, batchSetter, itemSetter);
|
||||||
addPipeline(
|
addPipeline(
|
||||||
Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withTranslucent().withTangents().withFade(),
|
Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withTranslucent().withTangents().withFade(),
|
||||||
skinModelNormalMapFadeDualQuatVertex, modelTranslucentFadePixel, batchSetter, itemSetter);
|
skinModelNormalMapFadeDualQuatVertex, modelTranslucentNormalMapFadePixel, batchSetter, itemSetter);
|
||||||
|
|
||||||
// Depth-only
|
// Depth-only
|
||||||
addPipeline(
|
addPipeline(
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function onScreenChanged(type, url) {
|
function onScreenChanged(type, url) {
|
||||||
onHelpScreen = type === "Web" && url.startsWith(HELP_URL);
|
onHelpScreen = type === "Web" && (url.indexOf(HELP_URL) === 0);
|
||||||
button.editProperties({ isActive: onHelpScreen });
|
button.editProperties({ isActive: onHelpScreen });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue