mirror of
https://github.com/overte-org/overte.git
synced 2025-04-26 03:17:08 +02:00
117 lines
No EOL
3.6 KiB
JavaScript
117 lines
No EOL
3.6 KiB
JavaScript
"use strict";
|
|
|
|
//
|
|
// skyboxchanger.js
|
|
//
|
|
// Created by Cain Kilgore on 9th August 2017
|
|
// Copyright 2017 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
(function() {
|
|
var TABLET_BUTTON_NAME = "SKYBOX";
|
|
|
|
var ICONS = {
|
|
icon: "http://mpassets.highfidelity.com/05904016-8f7d-4dfc-88e1-2bf9ba3fac20-v1/skyboxedit-i.svg",
|
|
activeIcon: "http://mpassets.highfidelity.com/05904016-8f7d-4dfc-88e1-2bf9ba3fac20-v1/skyboxedit-i.svg"
|
|
};
|
|
|
|
var onSkyboxChangerScreen = false;
|
|
|
|
function onClicked() {
|
|
if (onSkyboxChangerScreen) {
|
|
tablet.gotoHomeScreen();
|
|
} else {
|
|
tablet.loadQMLSource("hifi/SkyboxChanger.qml");
|
|
}
|
|
}
|
|
|
|
var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system");
|
|
var button = tablet.addButton({
|
|
icon: ICONS.icon,
|
|
activeIcon: ICONS.activeIcon,
|
|
text: TABLET_BUTTON_NAME
|
|
});
|
|
|
|
var hasEventBridge = false;
|
|
|
|
function wireEventBridge(on) {
|
|
if (!tablet) {
|
|
print("Warning in wireEventBridge(): 'tablet' undefined!");
|
|
return;
|
|
}
|
|
if (on) {
|
|
if (!hasEventBridge) {
|
|
tablet.fromQml.connect(fromQml);
|
|
hasEventBridge = true;
|
|
}
|
|
} else {
|
|
if (hasEventBridge) {
|
|
tablet.fromQml.disconnect(fromQml);
|
|
hasEventBridge = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
function onScreenChanged(type, url) {
|
|
if (url === "../SkyboxChanger.qml") {
|
|
onSkyboxChangerScreen = true;
|
|
} else {
|
|
onSkyboxChangerScreen = false;
|
|
}
|
|
|
|
button.editProperties({isActive: onSkyboxChangerScreen});
|
|
wireEventBridge(onSkyboxChangerScreen);
|
|
}
|
|
|
|
function fromQml(message) {
|
|
switch (message.method) {
|
|
case 'changeSkybox': // changeSkybox Code
|
|
var standingZone;
|
|
if (!Entities.canRez()) {
|
|
Window.alert("You need to have rez permissions to change the Skybox.");
|
|
break;
|
|
}
|
|
|
|
var nearbyEntities = Entities.findEntities(MyAvatar.position, 5);
|
|
for (var i = 0; i < nearbyEntities.length; i++) {
|
|
if (Entities.getEntityProperties(nearbyEntities[i]).type === "Zone") {
|
|
standingZone = nearbyEntities[i];
|
|
}
|
|
}
|
|
|
|
if (Entities.getEntityProperties(standingZone).locked) {
|
|
Window.alert("This zone is currently locked; the Skybox can't be changed.");
|
|
break;
|
|
}
|
|
|
|
var newSkybox = {
|
|
skybox: {
|
|
url: message.url
|
|
},
|
|
keyLight: {
|
|
ambientURL: message.url
|
|
}
|
|
};
|
|
|
|
Entities.editEntity(standingZone, newSkybox);
|
|
break;
|
|
default:
|
|
print('Unrecognized message from QML: ' + JSON.stringify(message));
|
|
}
|
|
}
|
|
|
|
button.clicked.connect(onClicked);
|
|
tablet.screenChanged.connect(onScreenChanged);
|
|
|
|
Script.scriptEnding.connect(function () {
|
|
if (onSkyboxChangerScreen) {
|
|
tablet.gotoHomeScreen();
|
|
}
|
|
button.clicked.disconnect(onClicked);
|
|
tablet.screenChanged.disconnect(onScreenChanged);
|
|
tablet.removeButton(button);
|
|
});
|
|
}()); |