overte-Armored-Dragon/scripts/system/onFirstRun.js
2021-02-04 03:03:50 -05:00

78 lines
2.6 KiB
JavaScript

'use strict';
//
// onFirstRun.js
//
// Created by Kalila L. on Oct 5 2020.
// Copyright 2020 Vircadia contributors.
//
// This script triggers on first run to perform bootstrapping actions.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
(function() { // BEGIN LOCAL_SCOPE
// Check to see if we should run this script or bail...
var SETTING_TO_CHECK = 'firstRun';
if (!Settings.getValue(SETTING_TO_CHECK, false)) {
return;
}
// If this is our first run then proceed...
var configWizardEntityID;
var DEFAULT_DISPLAY_NAME = '';
if (!PlatformInfo.has3DHTML()) {
if (MyAvatar.displayName === '') {
var selectedDisplayName = Window.prompt('Enter a display name.', MyAvatar.displayName);
setDisplayName(selectedDisplayName);
}
} else {
configWizardEntityID = Entities.addEntity({
type: 'Web',
sourceUrl: Script.resolvePath("./configWizard/dist/index.html"),
maxFPS: 60,
dpi: 20,
useBackground: false,
grab: {
grabbable: false
},
position: Vec3.sum(MyAvatar.position, Vec3.multiplyQbyV(MyAvatar.orientation, { x: 0, y: 0, z: -2.25 })),
rotation: MyAvatar.orientation,
dimensions: { x: 1.4, y: 0.75, z: 0 }
}, 'local');
Entities.webEventReceived.connect(onWebAppEventReceived);
}
function setDisplayName(displayName) {
if (displayName === '') {
MyAvatar.displayName = DEFAULT_DISPLAY_NAME;
} else {
MyAvatar.displayName = displayName;
}
}
function onWebAppEventReceived(sendingEntityID, event) {
if (sendingEntityID === configWizardEntityID) {
var eventJSON = JSON.parse(event);
if (eventJSON.command === "complete-wizard") {
Performance.setPerformancePreset(eventJSON.data.performancePreset);
Performance.setRefreshRateProfile(eventJSON.data.refreshRateProfile);
setDisplayName(eventJSON.data.displayName);
Entities.deleteEntity(configWizardEntityID);
Entities.webEventReceived.disconnect(onWebAppEventReceived);
}
}
}
Script.scriptEnding.connect(function () {
if (configWizardEntityID) {
Entities.deleteEntity(configWizardEntityID);
Entities.webEventReceived.disconnect(onWebAppEventReceived);
}
});
}());