diff --git a/interface/resources/serverless/Fonts/LICENSE.txt b/interface/resources/serverless/Fonts/LICENSE.txt new file mode 100644 index 0000000000..75b52484ea --- /dev/null +++ b/interface/resources/serverless/Fonts/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/interface/resources/serverless/Fonts/Roboto-Bold.ttf b/interface/resources/serverless/Fonts/Roboto-Bold.ttf new file mode 100644 index 0000000000..3742457900 Binary files /dev/null and b/interface/resources/serverless/Fonts/Roboto-Bold.ttf differ diff --git a/interface/resources/serverless/Fonts/Roboto-BoldItalic.ttf b/interface/resources/serverless/Fonts/Roboto-BoldItalic.ttf new file mode 100644 index 0000000000..e85e7fb9e3 Binary files /dev/null and b/interface/resources/serverless/Fonts/Roboto-BoldItalic.ttf differ diff --git a/interface/resources/serverless/Fonts/Roboto-Italic.ttf b/interface/resources/serverless/Fonts/Roboto-Italic.ttf new file mode 100644 index 0000000000..c9df607a4d Binary files /dev/null and b/interface/resources/serverless/Fonts/Roboto-Italic.ttf differ diff --git a/interface/resources/serverless/Fonts/Roboto-Regular.ttf b/interface/resources/serverless/Fonts/Roboto-Regular.ttf new file mode 100644 index 0000000000..3d6861b423 Binary files /dev/null and b/interface/resources/serverless/Fonts/Roboto-Regular.ttf differ diff --git a/interface/resources/serverless/Images/applications.png b/interface/resources/serverless/Images/applications.png new file mode 100644 index 0000000000..7fe7cef292 Binary files /dev/null and b/interface/resources/serverless/Images/applications.png differ diff --git a/interface/resources/serverless/Images/avatar.png b/interface/resources/serverless/Images/avatar.png new file mode 100644 index 0000000000..b206e7041a Binary files /dev/null and b/interface/resources/serverless/Images/avatar.png differ diff --git a/interface/resources/serverless/Images/controls.png b/interface/resources/serverless/Images/controls.png new file mode 100644 index 0000000000..f945e77444 Binary files /dev/null and b/interface/resources/serverless/Images/controls.png differ diff --git a/interface/resources/serverless/Images/tabletAndToolbar.png b/interface/resources/serverless/Images/tabletAndToolbar.png new file mode 100644 index 0000000000..6529d24f7e Binary files /dev/null and b/interface/resources/serverless/Images/tabletAndToolbar.png differ diff --git a/interface/resources/serverless/Models/avatarStand.fbx b/interface/resources/serverless/Models/avatarStand.fbx new file mode 100644 index 0000000000..e74244132f Binary files /dev/null and b/interface/resources/serverless/Models/avatarStand.fbx differ diff --git a/interface/resources/serverless/Models/avatarStand.fst b/interface/resources/serverless/Models/avatarStand.fst new file mode 100644 index 0000000000..9ecd17d41b --- /dev/null +++ b/interface/resources/serverless/Models/avatarStand.fst @@ -0,0 +1,3 @@ +name = AVATAR_STAND +filename = qrc:///serverless/Models/avatarStand.fbx +materialMap = [{"mat::MAIN": {"materials":[{ "name": "MAIN", "albedo": [0.4235294117647059, 1, 0], "roughness": 0.26, "metallic": 1.0, "normalMap": "qrc:///serverless/Textures/concreteNormal512.jpg", "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}, {"mat::LIGHT": {"materials":[{ "name": "LIGHT", "albedo": [1, 1, 1], "roughness": 0.5, "metallic": 0.01, "emissive": [1.89, 1.68247, 0.756], "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}] diff --git a/interface/resources/serverless/Models/dome.fbx b/interface/resources/serverless/Models/dome.fbx new file mode 100644 index 0000000000..7a0a464012 Binary files /dev/null and b/interface/resources/serverless/Models/dome.fbx differ diff --git a/interface/resources/serverless/Models/dome.fst b/interface/resources/serverless/Models/dome.fst new file mode 100644 index 0000000000..94dd350020 --- /dev/null +++ b/interface/resources/serverless/Models/dome.fst @@ -0,0 +1,3 @@ +name = DOME +filename = qrc:///serverless/Models/dome.fbx +materialMap = [{"mat::FLOOR": {"materials":[{ "name": "FLOOR", "albedo": [0.06 ,0.06 ,0.06], "roughness": 0.32, "metallic": 0.01, "normalMap": "qrc:///serverless/Textures/fundationNormal512.jpg", "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}, {"mat::LIGHT": {"materials":[{ "name": "LIGHT", "albedo": [1, 1, 1], "roughness": 0.5, "metallic": 0.01, "emissive": [1.64741, 2.09, 0.713058], "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}, {"mat::STRUCTURE": {"materials":[{ "name": "STRUCTURE", "albedo": [0.7882, 0.9333, 0.6274], "roughness": 0.5, "metallic": 0.1, "albedoMap": "qrc:///serverless/Textures/Concrete15_col-512.jpg", "normalMap": "qrc:///serverless/Textures/concreteNormal512.jpg", "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}] diff --git a/interface/resources/serverless/Models/engery-bowl.fbx b/interface/resources/serverless/Models/engery-bowl.fbx new file mode 100644 index 0000000000..9d93ea469f Binary files /dev/null and b/interface/resources/serverless/Models/engery-bowl.fbx differ diff --git a/interface/resources/serverless/Models/engery-bowl.fst b/interface/resources/serverless/Models/engery-bowl.fst new file mode 100644 index 0000000000..37ba07d723 --- /dev/null +++ b/interface/resources/serverless/Models/engery-bowl.fst @@ -0,0 +1,3 @@ +name = ENERGY_BOWL +filename = qrc:///serverless/Models/engery-bowl.fbx +materialMap = [{"mat::MAIN": {"materials":[{ "name": "MAIN", "albedo": [1 ,1 ,1], "albedoMap": "qrc:///serverless/Textures/Metal26_col.jpg","roughness": 0.28, "metallic": 1.0, "normalMap": "qrc:///serverless/Textures/Metal26_nrm.jpg", "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}] diff --git a/interface/resources/serverless/Models/standAngle.fbx b/interface/resources/serverless/Models/standAngle.fbx new file mode 100644 index 0000000000..99d14ade95 Binary files /dev/null and b/interface/resources/serverless/Models/standAngle.fbx differ diff --git a/interface/resources/serverless/Models/standAngle_Applications.fst b/interface/resources/serverless/Models/standAngle_Applications.fst new file mode 100644 index 0000000000..bfa6593aee --- /dev/null +++ b/interface/resources/serverless/Models/standAngle_Applications.fst @@ -0,0 +1,3 @@ +name = STAND-ANGLE_APPLICATIONS +filename = qrc:///serverless/Models/standAngle.fbx +materialMap = [{"mat::IMAGE": {"materials":[{ "name": "IMAGE", "albedo": [1.0 ,1.0 ,1.0], "roughness": 0.2, "metallic": 0.01, "unlit": true, "albedoMap": "qrc:///serverless/Images/applications.png", "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}] diff --git a/interface/resources/serverless/Models/standAngle_Avatar.fst b/interface/resources/serverless/Models/standAngle_Avatar.fst new file mode 100644 index 0000000000..0cb6bd2f05 --- /dev/null +++ b/interface/resources/serverless/Models/standAngle_Avatar.fst @@ -0,0 +1,3 @@ +name = STAND-ANGLE_AVATAR +filename = qrc:///serverless/Models/standAngle.fbx +materialMap = [{"mat::IMAGE": {"materials":[{ "name": "IMAGE", "albedo": [1.0 ,1.0 ,1.0], "roughness": 0.2, "metallic": 0.01, "unlit": true, "albedoMap": "qrc:///serverless/Images/avatar.png", "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}] diff --git a/interface/resources/serverless/Models/standAngle_ConfigWizard.fst b/interface/resources/serverless/Models/standAngle_ConfigWizard.fst new file mode 100644 index 0000000000..f956c85086 --- /dev/null +++ b/interface/resources/serverless/Models/standAngle_ConfigWizard.fst @@ -0,0 +1,3 @@ +name = STAND-ANGLE_CONFIG-WIZARD +filename = qrc:///serverless/Models/standAngle.fbx +materialMap = [{"mat::IMAGE": {"materials":[{ "name": "IMAGE", "albedo": [0 ,0 ,0], "roughness": 1, "metallic": 0.01, "unlit": true, "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}] diff --git a/interface/resources/serverless/Models/standAngle_Controls.fst b/interface/resources/serverless/Models/standAngle_Controls.fst new file mode 100644 index 0000000000..c896cd885f --- /dev/null +++ b/interface/resources/serverless/Models/standAngle_Controls.fst @@ -0,0 +1,3 @@ +name = STAND-ANGLE_CONTROLS +filename = qrc:///serverless/Models/standAngle.fbx +materialMap = [{"mat::IMAGE": {"materials":[{ "name": "IMAGE", "albedo": [1.0 ,1.0 ,1.0], "roughness": 0.2, "metallic": 0.01, "unlit": true, "albedoMap": "qrc:///serverless/Images/controls.png", "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}] diff --git a/interface/resources/serverless/Models/standAngle_TabletAndToolbar.fst b/interface/resources/serverless/Models/standAngle_TabletAndToolbar.fst new file mode 100644 index 0000000000..be95bd8412 --- /dev/null +++ b/interface/resources/serverless/Models/standAngle_TabletAndToolbar.fst @@ -0,0 +1,3 @@ +name = STAND-ANGLE_TABLET-TOOLBAR +filename = qrc:///serverless/Models/standAngle.fbx +materialMap = [{"mat::IMAGE": {"materials":[{ "name": "IMAGE", "albedo": [1.0 ,1.0 ,1.0], "roughness": 0.2, "metallic": 0.01, "unlit": true, "albedoMap": "qrc:///serverless/Images/tabletAndToolbar.png", "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}] diff --git a/interface/resources/serverless/Models/teleporter.fbx b/interface/resources/serverless/Models/teleporter.fbx new file mode 100644 index 0000000000..773d2ddada Binary files /dev/null and b/interface/resources/serverless/Models/teleporter.fbx differ diff --git a/interface/resources/serverless/Models/teleporter.fst b/interface/resources/serverless/Models/teleporter.fst new file mode 100644 index 0000000000..db5a627717 --- /dev/null +++ b/interface/resources/serverless/Models/teleporter.fst @@ -0,0 +1,3 @@ +name = TELEPORTER +filename = qrc:///serverless/Models/teleporter.fbx +materialMap = [{"mat::EXO": {"materials":[{ "name": "MAIN", "albedo": [0.06, 0.06, 0.06], "roughness": 0.26, "metallic": 1.0, "normalMap": "qrc:///serverless/Textures/concreteNormal512.jpg", "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}, {"mat::LIGHT": {"materials":[{ "name": "LIGHT", "albedo": [1, 1, 1], "roughness": 0.5, "metallic": 0.01, "emissive": [1.51466666, 0.879843137, 2.84], "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}, {"mat::ENDO": {"materials":[{ "name": "ENDO", "albedo": [0.85, 0.85, 0.85], "roughness": 0.26, "metallic": 1.0, "normalMap": "qrc:///serverless/Textures/concreteNormal512.jpg", "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}] diff --git a/interface/resources/serverless/Models/test_area.fbx b/interface/resources/serverless/Models/test_area.fbx new file mode 100644 index 0000000000..08110410bd Binary files /dev/null and b/interface/resources/serverless/Models/test_area.fbx differ diff --git a/interface/resources/serverless/Models/test_area.fst b/interface/resources/serverless/Models/test_area.fst new file mode 100644 index 0000000000..55189b4987 --- /dev/null +++ b/interface/resources/serverless/Models/test_area.fst @@ -0,0 +1,3 @@ +name = QUICK-TEST-AREA +filename = qrc:///serverless/Models/test_area.fbx +materialMap = [{"mat::FLOOR": {"materials":[{ "name": "FLOOR", "albedo": [0.06 ,0.06 ,0.06], "roughness": 0.32, "metallic": 0.01, "normalMap": "qrc:///serverless/Textures/fundationNormal512.jpg", "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}, {"mat::LIGHT": {"materials":[{ "name": "LIGHT", "albedo": [1, 1, 1], "roughness": 0.5, "metallic": 0.01, "emissive": [1.64741, 2.09, 0.713058], "cullFaceMode": "CULL_NONE", "model": "hifi_pbr"}]}}] diff --git a/interface/resources/serverless/Scripts/activator-doppleganger.js b/interface/resources/serverless/Scripts/activator-doppleganger.js new file mode 100644 index 0000000000..f3f62669bb --- /dev/null +++ b/interface/resources/serverless/Scripts/activator-doppleganger.js @@ -0,0 +1,99 @@ +'use strict'; +// +// activator-doppleganger.js +// +// Created by Alezia Kurdis on February 20th, 2022. +// Copyright 2022 Overte e.V. +// +// This script is display a doppleganger of the user by entering an entity. +// +// 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 isActive = false; + var thisEntityID; + var versioncall = Math.floor(Math.random()*50000); + var DopplegangerClass = Script.require('qrc:///serverless/Scripts/doppleganger.js?version=' + versioncall); + + var doppleganger = new DopplegangerClass({ + avatar: MyAvatar, + mirrored: false, + autoUpdate: true + }); + + this.preload = function(entityID) { + thisEntityID = entityID; + } + + function onDomainChanged() { + if (doppleganger.active) { + doppleganger.stop('domain_changed'); + } + } + + Window.domainChanged.connect(onDomainChanged); + + Window.domainConnectionRefused.connect(onDomainChanged); + + Script.scriptEnding.connect(function() { + if (isActive) { + doppleganger.stop(); + isActive = false; + } + Window.domainChanged.disconnect(onDomainChanged); + Window.domainConnectionRefused.disconnect(onDomainChanged); + + }); + + this.enterEntity = function(entityID) { + print("ENTERING"); + startDopplegangerShow(entityID); + isActive = true; + } + + this.leaveEntity = function(entityID) { + print("LEAVING"); + doppleganger.stop(); + isActive = false; + } + + function startDopplegangerShow(entityID) { + var properties = Entities.getEntityProperties(entityID, ["position", "rotation"]); + var avatarPosition = MyAvatar.position; + var drawPosition = { + "x": properties.position.x, + "y": avatarPosition.y, + "z": properties.position.z + }; + var param = { + "position": drawPosition, + "orientation": properties.rotation, + "autoUpdate": true + }; + doppleganger.start(param); + } + + + MyAvatar.skeletonModelURLChanged.connect(function () { + if (isActive) { + print("CHANGED WHILE ACTIVE"); + doppleganger.stop(); + isActive = false; + var timer = Script.setTimeout(function () { + startDopplegangerShow(thisEntityID); + isActive = true; + }, 4000); + + } + }); + + // alert the user if there was an error applying their skeletonModelURL + doppleganger.addingEntity.connect(function(error, result) { + if (doppleganger.active && error) { + Window.alert('doppleganger | ' + error + '\n' + doppleganger.skeletonModelURL); + } + }); + +}) diff --git a/interface/resources/serverless/Scripts/doppleganger.js b/interface/resources/serverless/Scripts/doppleganger.js new file mode 100644 index 0000000000..9968b9fd0c --- /dev/null +++ b/interface/resources/serverless/Scripts/doppleganger.js @@ -0,0 +1,529 @@ +"use strict"; +//====================================== +// Version 1.1 +// Addaption to "Local" Entities (since Overlays get deprecated for "Model" type.) +// by Alezia Kurdis on February 2020 +//====================================== +// Version 1.0 +// doppleganger.js +// +// Created by Timothy Dedischew on 04/21/2017. +// Copyright 2017 High Fidelity, Inc. +// Copyright 2022 Overte e.V. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +// +/* global module */ +// @module doppleganger +// +// This module contains the `Doppleganger` class implementation for creating an inspectable replica of +// an Avatar (as a model directly in front of and facing them). Joint positions and rotations are copied +// over in an update thread, so that the model automatically mirrors the Avatar's joint movements. +// An Avatar can then for example walk around "themselves" and examine from the back, etc. +// +// This should be helpful for inspecting your own look and debugging avatars, etc. +// +// The doppleganger is created as an overlay so that others do not see it -- and this also allows for the +// highest possible update rate when keeping joint data in sync. +// +// NOTE: THIS IS A MODIFIED VERSION SPECIFICALLY FOR THE TUTORIAL. + +module.exports = Doppleganger; + +// @property {bool} - when set true, Script.update will be used instead of setInterval for syncing joint data +Doppleganger.USE_SCRIPT_UPDATE = false; + +// @property {int} - the frame rate to target when using setInterval for joint updates +Doppleganger.TARGET_FPS = 60; + +// @property {int} - the maximum time in seconds to wait for the model overlay to finish loading +Doppleganger.MAX_WAIT_SECS = 10; + +// @function - derive mirrored joint names from a list of regular joint names +// @param {Array} - list of joint names to mirror +// @return {Array} - list of mirrored joint names (note: entries for non-mirrored joints will be `undefined`) + +var Setarry; + +Doppleganger.getMirroredJointNames = function(jointNames) { + return jointNames.map(function(name, i) { + if (/Left/.test(name)) { + return name.replace('Left', 'Right'); + } + if (/Right/.test(name)) { + return name.replace('Right', 'Left'); + } + return undefined; + }); +}; + +// @class Doppleganger - Creates a new instance of a Doppleganger. +// @param {Avatar} [options.avatar=MyAvatar] - Avatar used to retrieve position and joint data. +// @param {bool} [options.mirrored=true] - Apply "symmetric mirroring" of Left/Right joints. +// @param {bool} [options.autoUpdate=true] - Automatically sync joint data. +function Doppleganger(options) { + options = options || {}; + this.avatar = options.avatar || MyAvatar; + this.mirrored = 'mirrored' in options ? options.mirrored : false; + this.autoUpdate = 'autoUpdate' in options ? options.autoUpdate : true; + + // @public + this.active = false; // whether doppleganger is currently being displayed/updated + this.entityID = null; // current doppleganger's Entity id + this.frame = 0; // current joint update frame + + // @signal - emitted when .active state changes + this.activeChanged = signal(function(active, reason) {}); + // @signal - emitted once model overlay is either loaded or errors out + this.addingEntity = signal(function(error, result){}); + // @signal - emitted each time the model overlay's joint data has been synchronized + this.jointsUpdated = signal(function(entityID){}); +} + +Doppleganger.prototype = { + // @public @method - toggles doppleganger on/off + toggle: function() { + if (this.active) { + log('toggling off'); + this.stop(); + }else{ + log('toggling on'); + this.start(); + } + return this.active; + }, + + // @public @method - synchronize the joint data between Avatar / doppleganger + update: function() { + this.frame++; + try { + if (!this.entityID) { + throw new Error('!this.entityID'); + } + + if (this.avatar.skeletonModelURL !== this.skeletonModelURL) { + //return this.stop('avatar_changed'); + } + + var rotations = this.avatar.getJointRotations(); + var translations = this.avatar.getJointTranslations(); + var size = rotations.length; + + + // note: this mismatch can happen when the avatar's model is actively changing + if (size !== translations.length || + (this.jointStateCount && size !== this.jointStateCount)) { + log('mismatched joint counts (avatar model likely changed)', size, translations.length, this.jointStateCount); + this.stop('avatar_changed_joints'); + return; + } + this.jointStateCount = size; + + + if (this.mirrored) { + var mirroredIndexes = this.mirroredIndexes; + var outRotations = new Array(size); + var outTranslations = new Array(size); + for (var i=0; i < size; i++) { + var index = mirroredIndexes[i]; + if (index < 0 || index === false) { + index = i; + } + var rot = rotations[index]; + var trans = translations[index]; + trans.x *= -1; + rot.y *= -1; + rot.z *= -1; + outRotations[i] = rot; + outTranslations[i] = trans; + } + rotations = outRotations; + translations = outTranslations; + } + + + Entities.editEntity(this.entityID, { + jointRotations: rotations, + jointTranslations: translations, + jointRotationsSet: Setarry, + jointTranslationsSet: Setarry + }); + + this.jointsUpdated(this.entityID); + } catch (e) { + //log('.update error: '+ e, index); + this.stop('update_error'); + } + }, + + // @public @method - show the doppleganger (and start the update thread, if options.autoUpdate was specified). + // @param {vec3} [options.position=(in front of avatar)] - starting position + // @param {quat} [options.orientation=avatar.orientation] - starting orientation + start: function(options) { + + + options = options || {}; + if (this.entityID) { + //log('start() called but entity model already exists', this.entityID); + return; + } + var avatar = this.avatar; + if (!avatar.jointNames.length) { + return this.stop('joints_unavailable'); + } + + this.frame = 0; + this.position = options.position || Vec3.sum(avatar.position, Quat.getForward(avatar.orientation)); + this.orientation = options.orientation || avatar.orientation; + this.skeletonModelURL = avatar.skeletonModelURL; + this.jointStateCount = 0; + this.jointNames = avatar.jointNames; + this.mirroredNames = Doppleganger.getMirroredJointNames(this.jointNames); + //log(this.mirroredNames); + this.mirroredIndexes = this.mirroredNames.map(function(name) { + return name ? avatar.getJointIndex(name) : false; + }); + //log(this.mirroredIndexes); + var prop = { + type: "Model", + name: 'Doppelganger', //added + visible: false, // normally false + modelURL: this.skeletonModelURL, //was field: url + position: this.position, + rotation: this.orientation + }; + + this.entityID = Entities.addEntity(prop, "local"); + + var allJoints = avatar.getJointRotations(); + var nbrJoints = allJoints.length; + Setarry = Array(nbrJoints); + for (var i=0; i < nbrJoints; i++) { + Setarry[i] = true; + } + + this.onAddingEntity = function(error, result) { + + if (error) { + return this.stop(error); + } + log('ModelEntity is ready; # joints == ' + result.jointNames.length); + Entities.editEntity(this.entityID, { visible: true }); + + this.syncVerticalPosition('LeftFoot'); + + if (this.autoUpdate) { + this._createUpdateThread(); + } + }; + this.addingEntity.connect(this, 'onAddingEntity'); + + log('doppleganger created; entityID =', this.entityID); + + // trigger clean up (and stop updates) if the overlay gets deleted + this.onDeletedEntity = function(uuid) { + if (uuid === this.entityID) { + log('onDeletedEntity', uuid); + this.stop('entity_deleted'); + } + }; + Entities.deletingEntity.connect(this, 'onDeletedEntity'); + + if ('onLoadComplete' in avatar) { + // stop the current doppleganger if Avatar loads a different model URL + this.onLoadComplete = function() { + if (avatar.skeletonModelURL !== this.skeletonModelURL) { + //this.stop('avatar_changed_load'); + } + }; + avatar.onLoadComplete.connect(this, 'onLoadComplete'); + } + + this.activeChanged(this.active = true, 'start'); + this._waitForModel(ModelCache.prefetch(this.skeletonModelURL)); + }, + + // @public @method - hide the doppleganger + // @param {String} [reason=stop] - the reason stop was called + stop: function(reason) { + reason = reason || 'stop'; + if (this.onUpdate) { + Script.update.disconnect(this, 'onUpdate'); + delete this.onUpdate; + } + if (this._interval) { + Script.clearInterval(this._interval); + this._interval = undefined; + } + if (this.onDeletedEntity) { + Entities.deletingEntity.disconnect(this, 'onDeletedEntity'); + delete this.onDeletedEntity; + } + if (this.onLoadComplete) { + this.avatar.onLoadComplete.disconnect(this, 'onLoadComplete'); + delete this.onLoadComplete; + } + if (this.onAddingEntity) { + this.addingEntity.disconnect(this, 'onAddingEntity'); + } + if (this.entityID) { + Entities.deleteEntity(this.entityID); + this.entityID = undefined; + } + if (this.active) { + this.activeChanged(this.active = false, reason); + } else if (reason) { + log('already stopped so not triggering another activeChanged; latest reason was:', reason); + } + }, + + // @public @method - Reposition the doppleganger so it sees "eye to eye" with the Avatar. + // @param {String} [byJointName=Hips] - the reference joint used to align the Doppleganger and Avatar + syncVerticalPosition: function(byJointName) { + byJointName = byJointName || 'Hips'; + + var dopplePosition = Entities.getEntityProperties(this.entityID, ["position"]); + var doppleJointIndex = Entities.getJointIndex( this.entityID, byJointName ); + var doppleJointPosition = Vec3.sum(Entities.getAbsoluteJointTranslationInObjectFrame( this.entityID, doppleJointIndex ), dopplePosition); + + //log("Joint Pos = " + JSON.stringify(doppleJointPosition)); + + var avatarPosition = this.avatar.position; + var avatarJointIndex = this.avatar.getJointIndex(byJointName); + var avatarJointPosition = Vec3.sum(this.avatar.getAbsoluteJointTranslationInObjectFrame(avatarJointIndex), avatarPosition); + + //log("AV Joint Pos = " + JSON.stringify(avatarJointPosition)); + + dopplePosition.position.y = avatarJointPosition.y - doppleJointPosition.y; + this.position = dopplePosition.position; + Entities.editEntity(this.entityID, { position: this.position }); + }, + + // @private @method - creates the update thread to synchronize joint data + _createUpdateThread: function() { + if (Doppleganger.USE_SCRIPT_UPDATE) { + log('creating Script.update thread'); + this.onUpdate = this.update; + Script.update.connect(this, 'onUpdate'); + } else { + log('creating Script.setInterval thread @ ~', Doppleganger.TARGET_FPS +'fps'); + var timeout = 1000 / Doppleganger.TARGET_FPS; + this._interval = Script.setInterval(bind(this, 'update'), timeout); + } + }, + + // @private @method - waits for model to load and handles timeouts + // @param {ModelResource} resource - a prefetched resource to monitor loading state against + _waitForModel: function(resource) { + var RECHECK_MS = 50; + var id = this.entityID, + watchdogTimer = null; + + function waitForJointNames() { + var error = null, result = null; + if (!watchdogTimer) { + error = 'joints_unavailable'; + } else if (resource.state === Resource.State.FAILED) { + error = 'prefetch_failed'; + } else if (resource.state === Resource.State.FINISHED) { + var names = Entities.getJointNames(id); + if (Array.isArray(names) && names.length) { + result = { entityID: id, jointNames: names }; + } + } + if (error || result !== null) { + Script.clearInterval(this._interval); + this._interval = null; + if (watchdogTimer) { + Script.clearTimeout(watchdogTimer); + } + this.addingEntity(error, result); + } + } + watchdogTimer = Script.setTimeout(function() { + watchdogTimer = null; + }, Doppleganger.MAX_WAIT_SECS * 1000); + this._interval = Script.setInterval(bind(this, waitForJointNames), RECHECK_MS); + } +}; + +// @function - bind a function to a `this` context +// @param {Object} - the `this` context +// @param {Function|String} - function or method name +function bind(thiz, method) { + method = thiz[method] || method; + return function() { + return method.apply(thiz, arguments); + }; +} + +// @function - Qt signal polyfill +function signal(template) { + var callbacks = []; + return Object.defineProperties(function() { + var args = [].slice.call(arguments); + callbacks.forEach(function(obj) { + obj.handler.apply(obj.scope, args); + }); + }, { + connect: { value: function(scope, handler) { + callbacks.push({scope: scope, handler: scope[handler] || handler || scope}); + }}, + disconnect: { value: function(scope, handler) { + var match = {scope: scope, handler: scope[handler] || handler || scope}; + callbacks = callbacks.filter(function(obj) { + return !(obj.scope === match.scope && obj.handler === match.handler); + }); + }} + }); +} + +// @function - debug logging +function log() { + //print('doppleganger | ' + [].slice.call(arguments).join(' ')); +} + +// -- ADVANCED DEBUGGING -- +// @function - Add debug joint indicators / extra debugging info. +// @param {Doppleganger} - existing Doppleganger instance to add controls to +// +// @note: +// * rightclick toggles mirror mode on/off +// * shift-rightclick toggles the debug indicators on/off +// * clicking on an indicator displays the joint name and mirrored joint name in the debug log. +// +// Example use: +// var doppleganger = new Doppleganger(); +// Doppleganger.addDebugControls(doppleganger); +Doppleganger.addDebugControls = function(doppleganger) { + DebugControls.COLOR_DEFAULT = { red: 255, blue: 255, green: 255 }; + DebugControls.COLOR_SELECTED = { red: 0, blue: 255, green: 0 }; + + function DebugControls() { + this.enableIndicators = true; + this.selectedJointName = null; + this.debugEntityIDs = undefined; + this.jointSelected = signal(function(result) {}); + } + DebugControls.prototype = { + start: function() { + if (!this.onMousePressEvent) { + this.onMousePressEvent = this._onMousePressEvent; + Controller.mousePressEvent.connect(this, 'onMousePressEvent'); + } + }, + + stop: function() { + this.removeIndicators(); + if (this.onMousePressEvent) { + Controller.mousePressEvent.disconnect(this, 'onMousePressEvent'); + delete this.onMousePressEvent; + } + }, + + createIndicators: function(jointNames) { + this.jointNames = jointNames; + return jointNames.map(function(name, i) { + return Entities.addEntity({ + type: "Shape", + shape: 'Icosahedron', + scale: 0.1, + solid: false, + alpha: 0.5 + }); + }); + }, + + removeIndicators: function() { + if (this.debugEntityIDs) { + this.debugEntityIDs.forEach(Entities.deleteEntity); + this.debugEntityIDs = undefined; + } + }, + + onJointsUpdated: function(entityID) { + if (!this.enableIndicators) { + return; + } + var jointNames = Entities.getJointNames(entityID), + jointOrientations = Entities.getEntityProperties(entityID, ['jointRotations']), //was jointOrientations + jointPositions = Entities.getEntityProperties(entityID, ['jointTranslations']), //was jointPositions + //selectedIndex = jointNames.indexOf(this.selectedJointName); + selectedIndex = Entities.getJointIndex( entityID, this.selectedJointName ); + + if (!this.debugEntityIDs) { + this.debugEntityIDs = this.createIndicators(jointNames); + } + + // batch all updates into a single call (using the editOverlays({ id: {props...}, ... }) API) + var updatedOverlays = this.debugEntityIDs.reduce(function(updates, id, i) { + updates[id] = { + position: jointPositions.jointTranslations[i], + rotation: jointOrientations.jointRotations[i], + color: i === selectedIndex ? DebugControls.COLOR_SELECTED : DebugControls.COLOR_DEFAULT, + solid: i === selectedIndex + }; + return updates; + }, {}); + //Entities.editOverlays(updatedOverlays); + }, + + _onMousePressEvent: function(evt) { + if (!evt.isLeftButton || !this.enableIndicators || !this.debugEntityIDs) { + return; + } + var ray = Camera.computePickRay(evt.x, evt.y), + hit = Entities.findRayIntersection(ray, true, this.debugEntityIDs); + + hit.jointIndex = this.debugEntityIDs.indexOf(hit.entityID); + hit.jointName = this.jointNames[hit.jointIndex]; + this.jointSelected(hit); + } + }; + + if ('$debugControls' in doppleganger) { + throw new Error('only one set of debug controls can be added per doppleganger'); + } + var debugControls = new DebugControls(); + doppleganger.$debugControls = debugControls; + + function onMousePressEvent(evt) { + if (evt.isRightButton) { + if (evt.isShifted) { + debugControls.enableIndicators = !debugControls.enableIndicators; + if (!debugControls.enableIndicators) { + debugControls.removeIndicators(); + } + } else { + doppleganger.mirrored = !doppleganger.mirrored; + } + } + } + + doppleganger.activeChanged.connect(function(active) { + if (active) { + debugControls.start(); + doppleganger.jointsUpdated.connect(debugControls, 'onJointsUpdated'); + Controller.mousePressEvent.connect(onMousePressEvent); + } else { + Controller.mousePressEvent.disconnect(onMousePressEvent); + doppleganger.jointsUpdated.disconnect(debugControls, 'onJointsUpdated'); + debugControls.stop(); + } + }); + + debugControls.jointSelected.connect(function(hit) { + debugControls.selectedJointName = hit.jointName; + if (hit.jointIndex < 0) { + return; + } + hit.mirroredJointName = Doppleganger.getMirroredJointNames([hit.jointName])[0]; + log('selected joint:', JSON.stringify(hit, 0, 2)); + }); + + Script.scriptEnding.connect(debugControls, 'removeIndicators'); + + return doppleganger; +}; diff --git a/interface/resources/serverless/Scripts/wizard.html b/interface/resources/serverless/Scripts/wizard.html new file mode 100644 index 0000000000..9011809e98 --- /dev/null +++ b/interface/resources/serverless/Scripts/wizard.html @@ -0,0 +1,490 @@ + + + + + + Quick Configuration + + + + + + + + + + +
+
+
+
+ + + + + + + + + + + +
+

Welcome to Overte!

+
+ Let's get you setup to experience the virtual world.
+ First, we need to select some performance and graphics quality options.

+ Press Continue when you are ready.
+
+   + + +
+
+
+ + + + + + + + + + + +
+

Quality

+
+ What level of visual quality would you like?
+ Remember! If you do not have a powerful computer,
you may want to set this to low or medium at most.
+

+
       Very Low Quality Slow Laptop / Very Slow Computer
+
       Low Quality Average Laptop / Slow Computer
+
       Medium Quality Average Computer - Recommended
+
       High Quality Gaming Computer
+
+ + + +
+
+
+ + + + + + + + + + + +
+

Performance

+
+ Do you want a smooth experience (high refresh rate)
or do you want to conserve power and resources (low refresh rate) on your computer?
+ Note: This does not apply to virtual reality headsets. +

+
       Not Smooth (20 Hz) Conserve Power
+
       Smooth (30 Hz) Use Average Resources
+
       Very Smooth (60 Hz) Use Maximum Resources - Recommended
+
+
+ + + +
+
+
+ + + + + + + + + + + +
+

Display Name

+
+ What should people call you?
+ This is simply a nickname, it will be shown in place of your username (if you have one). +

+       NAME: +
+
+ + + +
+
+
+ + + + + + + + + + + +
+

All done!

+
+ Now you're almost ready to go!
+ Press Complete to save your setup.
+ Then take a look at the other information kiosks after completing this wizard.
+
+ + + +
+
+
+ + + diff --git a/interface/resources/serverless/Scripts/wizardLoader.js b/interface/resources/serverless/Scripts/wizardLoader.js index 8d28b581cc..e53fada18d 100644 --- a/interface/resources/serverless/Scripts/wizardLoader.js +++ b/interface/resources/serverless/Scripts/wizardLoader.js @@ -1,10 +1,10 @@ 'use strict'; - // // wizardLoader.js // // Created by Kalila L. on Feb 19 2021. // Copyright 2021 Vircadia contributors. +// Copyright 2022 Overte e.V. // // This script is used to load the onboarding wizard at the location of the entity it's on. // @@ -13,7 +13,7 @@ // (function() { - var CONFIG_WIZARD_WEB_URL = 'https://cdn-1.vircadia.com/us-e-1/DomainContent/Tutorial/Apps/configWizard/dist/index.html'; + var CONFIG_WIZARD_URL = "qrc:///serverless/Scripts/wizard.html?v=" + Math.floor(Math.random() * 65000); var loaderEntityID; var configWizardEntityID; @@ -22,20 +22,20 @@ if (sendingEntityID === configWizardEntityID) { var eventJSON = JSON.parse(event); - if (eventJSON.command === 'first-run-wizard-ready') { + if (eventJSON.command === "first-run-wizard-ready") { var objectToSend = { - command: 'script-to-web-initialize', - data: { - performancePreset: Performance.getPerformancePreset(), - refreshRateProfile: Performance.getRefreshRateProfile(), - displayName: MyAvatar.displayName + "command": "script-to-web-initialize", + "data": { + "performancePreset": Performance.getPerformancePreset(), + "refreshRateProfile": Performance.getRefreshRateProfile(), + "displayName": MyAvatar.displayName } }; Entities.emitScriptEvent(configWizardEntityID, JSON.stringify(objectToSend)); } - if (eventJSON.command === 'complete-wizard') { + if (eventJSON.command === "complete-wizard") { Performance.setPerformancePreset(eventJSON.data.performancePreset); Performance.setRefreshRateProfile(eventJSON.data.refreshRateProfile); MyAvatar.displayName = eventJSON.data.displayName; @@ -48,21 +48,25 @@ this.preload = function (entityID) { loaderEntityID = entityID; - var loaderEntityProps = Entities.getEntityProperties(loaderEntityID, ['position', 'rotation']); configWizardEntityID = Entities.addEntity({ - type: 'Web', - sourceUrl: CONFIG_WIZARD_WEB_URL, - maxFPS: 60, - dpi: 20, - useBackground: false, - grab: { - grabbable: false + "type": "Web", + "parentID": loaderEntityID, + "sourceUrl": CONFIG_WIZARD_URL, + "maxFPS": 60, + "dpi": 19, + "useBackground": true, + "grab": { + "grabbable": false }, - position: loaderEntityProps.position, - rotation: loaderEntityProps.rotation, - dimensions: { x: 1.4, y: 0.75, z: 0 } - }, 'local'); + "localPosition": { + "x": 0, + "y": 1.121, + "z": 0.33 + }, + "localRotation": Quat.fromVec3Degrees({"x": -58, "y": 0, "z": 0}), + "dimensions": { x: 2.6, y: 1.3, z: 0 } + }, "local"); Entities.webEventReceived.connect(onWebAppEventReceived); } diff --git a/interface/resources/serverless/Sounds/dreamscape192.mp3 b/interface/resources/serverless/Sounds/dreamscape192.mp3 new file mode 100644 index 0000000000..e0b7b80aac Binary files /dev/null and b/interface/resources/serverless/Sounds/dreamscape192.mp3 differ diff --git a/interface/resources/serverless/Textures/Concrete15_col-512.jpg b/interface/resources/serverless/Textures/Concrete15_col-512.jpg new file mode 100644 index 0000000000..20b7aea669 Binary files /dev/null and b/interface/resources/serverless/Textures/Concrete15_col-512.jpg differ diff --git a/interface/resources/serverless/Textures/Metal26_col.jpg b/interface/resources/serverless/Textures/Metal26_col.jpg new file mode 100644 index 0000000000..9c482b6e05 Binary files /dev/null and b/interface/resources/serverless/Textures/Metal26_col.jpg differ diff --git a/interface/resources/serverless/Textures/Metal26_nrm.jpg b/interface/resources/serverless/Textures/Metal26_nrm.jpg new file mode 100644 index 0000000000..396e8b35bf Binary files /dev/null and b/interface/resources/serverless/Textures/Metal26_nrm.jpg differ diff --git a/interface/resources/serverless/Textures/concreteNormal512.jpg b/interface/resources/serverless/Textures/concreteNormal512.jpg new file mode 100644 index 0000000000..54bf3ccb52 Binary files /dev/null and b/interface/resources/serverless/Textures/concreteNormal512.jpg differ diff --git a/interface/resources/serverless/Textures/fundationNormal512.jpg b/interface/resources/serverless/Textures/fundationNormal512.jpg new file mode 100644 index 0000000000..86013fb313 Binary files /dev/null and b/interface/resources/serverless/Textures/fundationNormal512.jpg differ diff --git a/interface/resources/serverless/Textures/galaxySkybox.jpg b/interface/resources/serverless/Textures/galaxySkybox.jpg new file mode 100644 index 0000000000..9b9b547aa0 Binary files /dev/null and b/interface/resources/serverless/Textures/galaxySkybox.jpg differ diff --git a/interface/resources/serverless/redirect.json b/interface/resources/serverless/redirect.json index 70377eb506..69440feea7 100644 --- a/interface/resources/serverless/redirect.json +++ b/interface/resources/serverless/redirect.json @@ -6,7 +6,6 @@ }, "Entities": [ { - "clientOnly": false, "color": { "blue": 0, "green": 0, @@ -14,33 +13,18 @@ }, "created": "2018-09-25T18:44:28Z", "dimensions": { - "blue": 8.645400047302246, - "green": 0.20000000298023224, - "red": 20.025121688842773, "x": 20.025121688842773, "y": 0.20000000298023224, "z": 8.645400047302246 }, "id": "{eac57ccf-1e81-4d74-80f1-f17f23fc2f2c}", - "lastEdited": 1537901430334573, - "lastEditedBy": "{69540019-db48-4375-86c8-ac1a4a90d043}", "locked": true, "name": "ceiling", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "position": { - "blue": 4.846520900726318, - "green": 2.912982940673828, - "red": 6.00444221496582, "x": 6.00444221496582, "y": 2.912982940673828, "z": 4.846520900726318 }, - "queryAACube": { - "scale": 21.812576293945312, - "x": -4.901845932006836, - "y": -7.993305206298828, - "z": -6.059767246246338 - }, "rotation": { "w": 0.970295786857605, "x": 0, @@ -49,11 +33,12 @@ }, "shape": "Cube", "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "grab": { + "grabbable": false + }, "visible": false }, { - "clientOnly": false, "color": { "blue": 0, "green": 0, @@ -61,33 +46,18 @@ }, "created": "2018-09-25T18:44:28Z", "dimensions": { - "blue": 11.117486953735352, - "green": 3.580313205718994, - "red": 0.20000000298023224, "x": 0.20000000298023224, "y": 3.580313205718994, "z": 11.117486953735352 }, "id": "{54609e9e-f729-46fc-ac06-78d44ee6b6fe}", - "lastEdited": 1537901430334887, - "lastEditedBy": "{69540019-db48-4375-86c8-ac1a4a90d043}", "locked": true, "name": "backWall", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "position": { - "blue": 5.268576622009277, - "green": 1.0066027641296387, - "red": 6.358620643615723, "x": 6.358620643615723, "y": 1.0066027641296387, "z": 5.268576622009277 }, - "queryAACube": { - "scale": 11.681488037109375, - "x": 0.5178766250610352, - "y": -4.834141254425049, - "z": -0.5721673965454102 - }, "rotation": { "w": 0.9662165641784668, "x": -4.57763671875e-05, @@ -96,11 +66,12 @@ }, "shape": "Cube", "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "grab": { + "grabbable": false + }, "visible": false }, { - "clientOnly": false, "color": { "blue": 0, "green": 0, @@ -108,33 +79,18 @@ }, "created": "2018-09-25T18:44:28Z", "dimensions": { - "blue": 11.117486953735352, - "green": 3.580313205718994, - "red": 0.20000000298023224, "x": 0.20000000298023224, "y": 3.580313205718994, "z": 11.117486953735352 }, "id": "{c9352a54-b2cd-4c0f-a898-7e79c01404d0}", - "lastEdited": 1537901430334652, - "lastEditedBy": "{69540019-db48-4375-86c8-ac1a4a90d043}", "locked": true, "name": "frontWall", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "position": { - "blue": 2.662257671356201, - "green": 1.0063786506652832, - "red": 1.7517199516296387, "x": 1.7517199516296387, "y": 1.0063786506652832, "z": 2.662257671356201 }, - "queryAACube": { - "scale": 11.681488037109375, - "x": -4.089024066925049, - "y": -4.834365367889404, - "z": -3.1784863471984863 - }, "rotation": { "w": 0.9666743278503418, "x": -4.57763671875e-05, @@ -143,11 +99,12 @@ }, "shape": "Cube", "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "grab": { + "grabbable": false + }, "visible": false }, { - "clientOnly": false, "color": { "blue": 0, "green": 0, @@ -155,33 +112,18 @@ }, "created": "2018-09-25T18:44:28Z", "dimensions": { - "blue": 11.117486953735352, - "green": 3.580313205718994, - "red": 0.20000000298023224, "x": 0.20000000298023224, "y": 3.580313205718994, "z": 11.117486953735352 }, "id": "{c4b7a530-ec5b-47fc-be60-eed22f96799d}", - "lastEdited": 1537901430334730, - "lastEditedBy": "{69540019-db48-4375-86c8-ac1a4a90d043}", "locked": true, "name": "rightWall", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "position": { - "blue": 0, - "green": 1.0061144828796387, - "red": 5.229935646057129, "x": 5.229935646057129, "y": 1.0061144828796387, "z": 0 }, - "queryAACube": { - "scale": 11.681488037109375, - "x": -0.6108083724975586, - "y": -4.834629535675049, - "z": -5.8407440185546875 - }, "rotation": { "w": 0.8637980222702026, "x": -4.57763671875e-05, @@ -190,39 +132,25 @@ }, "shape": "Cube", "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "grab": { + "grabbable": false + }, "visible": false }, { - "clientOnly": false, "created": "2018-09-25T18:44:28Z", "dimensions": { - "blue": 14.40000057220459, - "green": 14.40000057220459, - "red": 14.40000057220459, "x": 14.40000057220459, "y": 14.40000057220459, "z": 14.40000057220459 }, "id": "{351ddd1e-79b3-4be7-8784-aca29bd65193}", - "lastEdited": 1537901430334210, - "lastEditedBy": "{69540019-db48-4375-86c8-ac1a4a90d043}", "locked": true, - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "position": { - "blue": 2.3440732955932617, - "green": 1.6162219047546387, - "red": 2.1396677494049072, "x": 2.1396677494049072, "y": 1.6162219047546387, "z": 2.3440732955932617 }, - "queryAACube": { - "scale": 24.9415340423584, - "x": -10.331099510192871, - "y": -10.854545593261719, - "z": -10.126693725585938 - }, "rotation": { "w": 0.8697794675827026, "x": -1.52587890625e-05, @@ -232,10 +160,11 @@ "shapeType": "box", "skyboxMode": "enabled", "type": "Zone", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}" + "grab": { + "grabbable": false + } }, { - "clientOnly": false, "color": { "blue": 0, "green": 0, @@ -243,33 +172,18 @@ }, "created": "2018-09-25T18:44:28Z", "dimensions": { - "blue": 6.9401350021362305, - "green": 0.04553089290857315, - "red": 7.004304885864258, "x": 7.004304885864258, "y": 0.04553089290857315, "z": 6.9401350021362305 }, "id": "{81c13ed1-1873-4f21-adea-5112a0fdacd1}", - "lastEdited": 1537901430334808, - "lastEditedBy": "{69540019-db48-4375-86c8-ac1a4a90d043}", "locked": true, "name": "floor", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "position": { - "blue": 3.6175529956817627, - "green": 0, - "red": 4.367232322692871, "x": 4.367232322692871, "y": 0, "z": 3.6175529956817627 }, - "queryAACube": { - "scale": 9.860417366027832, - "x": -0.5629763603210449, - "y": -4.930208683013916, - "z": -1.3126556873321533 - }, "rotation": { "w": 0.8660253882408142, "x": -1.5922749298624694e-05, @@ -278,53 +192,12 @@ }, "shape": "Cube", "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "grab": { + "grabbable": false + }, "visible": false }, { - "clientOnly": false, - "created": "2018-09-25T18:44:28Z", - "dimensions": { - "blue": 6.9401350021362305, - "green": 0.04553089290857315, - "red": 7.004304885864258, - "x": 7.004304885864258, - "y": 0.04553089290857315, - "z": 6.9401350021362305 - }, - "id": "{5582179a-fb69-4678-af0c-c8e6d890839a}", - "lastEdited": 1537901430334966, - "lastEditedBy": "{69540019-db48-4375-86c8-ac1a4a90d043}", - "locked": true, - "modelURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/alexia/LoadingScreens/floor.fbx", - "name": "floorModel", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 3.6175529956817627, - "green": 0, - "red": 4.367232322692871, - "x": 4.367232322692871, - "y": 0, - "z": 3.6175529956817627 - }, - "queryAACube": { - "scale": 9.860417366027832, - "x": -0.5629763603210449, - "y": -4.930208683013916, - "z": -1.3126556873321533 - }, - "rotation": { - "w": 0.8660253882408142, - "x": -1.5922749298624694e-05, - "y": 0.5, - "z": -4.572480611386709e-05 - }, - "shapeType": "simple-hull", - "type": "Model", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}" - }, - { - "clientOnly": false, "color": { "blue": 0, "green": 0, @@ -332,33 +205,18 @@ }, "created": "2018-09-25T18:44:28Z", "dimensions": { - "blue": 11.117486953735352, - "green": 3.580313205718994, - "red": 0.20000000298023224, "x": 0.20000000298023224, "y": 3.580313205718994, "z": 11.117486953735352 }, "id": "{366ec0b9-5106-4172-a9f6-2143f6c279aa}", - "lastEdited": 1537901430334307, - "lastEditedBy": "{69540019-db48-4375-86c8-ac1a4a90d043}", "locked": true, "name": "leftWall", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "position": { - "blue": 6.1806135177612305, - "green": 1.0066027641296387, - "red": 1.7338871955871582, "x": 1.7338871955871582, "y": 1.0066027641296387, "z": 6.1806135177612305 }, - "queryAACube": { - "scale": 11.681488037109375, - "x": -4.106856822967529, - "y": -4.834141254425049, - "z": 0.33986949920654297 - }, "rotation": { "w": 0.8637980222702026, "x": -4.57763671875e-05, @@ -367,7 +225,9 @@ }, "shape": "Cube", "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "grab": { + "grabbable": false + }, "visible": false } ], diff --git a/interface/resources/serverless/tutorial.json b/interface/resources/serverless/tutorial.json index d58f49c273..1a42d6be18 100644 --- a/interface/resources/serverless/tutorial.json +++ b/interface/resources/serverless/tutorial.json @@ -1,2111 +1,1402 @@ { "DataVersion": 0, "Paths": { - "/old": "/0.155245,-0.941538,23.9289/0,0.791589,0,0.611053", - "/": "/21.6727,1.02002,25.1977/0,0.999868,0,-0.016252" - + "/": "/1985.26,1994.54,1994.25/0,-0.819884,0,0.572529" }, "Entities": [ - { - "id": "{0a199807-4a83-4286-b09c-f21124627c3e}", - "type": "Box", - "name": "Config Wizard Loader", - "locked": true, - "lastEdited": 1613737207915514, - "visible": false, - "position": { - "x": 21.8, - "y": 1.9, - "z": 28 + { + "id": "{4b1ac4d3-325b-46a2-9c27-0e94ee1afcaf}", + "type": "Model", + "name": "Seagull", + "locked": true, + "position": { + "x": 2035.87035369873047, + "y": 1999.52437, + "z": 2007.934717178344727 + }, + "dimensions": { + "x": 0.9342527389526367, + "y": 0.8603132963180542, + "z": 0.47802668809890747 + }, + "rotation": { + "x":0.006300364620983601, + "y":-0.9736297726631165, + "z":0.01636589504778385, + "w":0.22745881974697113 + }, + "grab": { + "grabbable": false + }, + "shapeType": "simple-compound", + "modelURL": "qrc:///serverless/Models/seagull-ANI.fbx", + "blendshapeCoefficients": "{\n}\n", + "animation": { + "url": "qrc:///serverless/Models/seagull-ANI.fbx", + "allowTranslation": false, + "currentFrame": 99.81153869628906, + "running": true, + "lastFrame": 120 + } }, - "dimensions": { - "x": 0.20000000298023224, - "y": 0.20000000298023224, - "z": 0.20000000298023224 + { + "id": "{7c7f80be-4fa3-4615-86f3-5446c6737350}", + "type": "Box", + "lastEdited": 1617140739515673, + "visible": false, + "name": "Sound Emitter", + "locked": true, + "collisionless": true, + "userData": "{\"soundURL\":\"qrc:///serverless/Sounds/dreamscape192.mp3\",\"shouldLoop\":true,\"volume\":0.18,\"refreshInterval\":100}", + "position": { + "x": 2000, + "y": 2001.0455207, + "z": 2000 + }, + "dimensions": { + "x": 0.20000000298023224, + "y": 0.20000000298023224, + "z": 0.20000000298023224 + }, + "rotation": { + "x": -0.0000152587890625, + "y": -0.0000152587890625, + "z": -0.0000152587890625, + "w": 1 + }, + "grab": { + "grabbable": false + }, + "script": "qrc:///serverless/Scripts/soundEmitter.js", + "scriptTimestamp": 1601079357399, + "color": { + "red": 0, + "green": 180, + "blue": 239 + }, + "shape": "Cube" }, - "rotation": { - "x": 3.5931313391301956e-7, - "y": -0.9996991753578186, - "z": 0.000014645980627392419, - "w": 0.024525845423340797 + { + "type": "Model", + "name": "LOGO", + "dimensions": { + "x": 13.745243072509766, + "y": 3.6150240898132324, + "z": 0.5063754320144653 + }, + "rotation": { + "x": 0, + "y": -0.7933533787727356, + "z": 0, + "w": 0.6087614297866821 + }, + "position": { + "x": 2034.64739990234375, + "y": 1997.379110813140869, + "z": 2011.257034301757812 + }, + "canCastShadow": false, + "grab": { + "grabbable": false + }, + "modelURL": "qrc:///serverless/Models/logo_overte_white-color-emissive.fst", + "useOriginalPivot": true, + "locked": true }, - "created": 1613736996738696, - "lastEditedBy": "{ff9b500e-e450-4127-b41f-1c42be16f71b}", - "queryAACube": { - "x": -0.17320507764816284, - "y": -0.17320507764816284, - "z": -0.17320507764816284, - "scale": 0.3464101552963257 + { + "id": "{985f2784-fd9f-471f-a8e1-0ed6e19b457e}", + "type": "Model", + "locked": true, + "name": "Bowl", + "dimensions": { + "x": 1.9968608617782593, + "y": 1.1726902723312378, + "z": 1.9968611001968384 + }, + "rotation": { + "x": 0.00003619609196903184, + "y": -0.2079276442527771, + "z": 0.000023504417185904458, + "w": -0.9781442284584045 + }, + "position": { + "x": 2000.0, + "y": 1995.10, + "z": 2000.0}, + "grab": { + "grabbable": false + }, + "angularVelocity": { + "x": 0, + "y": 25.132741928100586, + "z": 0 + }, + "angularDamping": 0, + "friction": 0, + "shapeType": "static-mesh", + "modelURL": "qrc:///serverless/Models/engery-bowl.fst" }, - "grab": { - "grabbable": false + { + "id": "{2467692c-4c45-410f-b375-27e22cc3e742}", + "type": "ParticleEffect", + "name": "Energy", + "locked": true, + "dimensions": { + "x": 5.789000034332275, + "y": 5.789000034332275, + "z": 5.789000034332275 + }, + "rotation": { + "x": 1.000020954933234e-9, + "y": -0.00015105433703865856, + "z": -0.7071824073791504, + "w": 0.7070313096046448 + }, + "position": { + "x": 2000, + "y": 1995.3434, + "z": 1999.86 + }, + "grab": { + "grabbable": false + }, + "shapeType": "ellipsoid", + "color": { + "red": 125, + "green": 78, + "blue": 252 + }, + "alpha": 0.20000000298023224, + "textures": "qrc:///serverless/Textures/default_particle.png", + "maxParticles": 600, + "emitRate": 100, + "emitSpeed": 0.10000000149011612, + "speedSpread": 0, + "emitOrientation": { + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "emitDimensions": { + "x": 0.699999988079071, + "y": 0.699999988079071, + "z": 0.699999988079071 + }, + "emitRadiusStart": 0, + "polarStart": 0.8700000047683716, + "polarFinish": 1.2200000286102295, + "azimuthStart": 3.0999999046325684, + "azimuthFinish": 3.140000104904175, + "emitAcceleration": { + "x": 0, + "y": 0, + "z": 0 + }, + "accelerationSpread": { + "x": 0, + "y": 0.10000000149011612, + "z": 0 + }, + "particleRadius": 1, + "radiusStart": 0.5, + "radiusFinish": 2, + "colorSpread": { + "red": 0, + "green": 150, + "blue": 150 + }, + "colorStart": { + "red": 193, + "green": 181, + "blue": 245 + }, + "colorFinish": { + "red": 180, + "green": 157, + "blue": 245 + }, + "alphaSpread": 0.10000000149011612, + "alphaStart": 0.5, + "alphaFinish": 0, + "emitterShouldTrail": true, + "particleSpin": 1.5700000524520874, + "spinStart": 0.5199999809265137, + "spinFinish": 2.7899999618530273 }, - "damping": 0, - "angularDamping": 0, - "collisionless": true, - "ignoreForCollisions": true, - "script": "qrc:///serverless/Scripts/wizardLoader.js", - "color": { - "red": 0, - "green": 180, - "blue": 239 + { + "id": "{7f785daf-ad0b-40f0-bdf2-3744774f4c47}", + "type": "ParticleEffect", + "name": "steam", + "locked": true, + "dimensions": { + "x": 20.100168228149414, + "y": 20.100168228149414, + "z": 20.100168228149414 + }, + "rotation": { + "x": -0.0000152587890625, + "y": -0.0000152587890625, + "z": -0.0000152587890625, + "w": 1 + }, + "position": { + "x": 2000, + "y": 1999.98073, + "z": 2000 + }, + "grab": { + "grabbable": false + }, + "shapeType": "ellipsoid", + "alpha": 0.05000000074505806, + "textures": "qrc:///serverless/Textures/default_particle.png", + "maxParticles": 300, + "lifespan": 5, + "emitRate": 30, + "emitSpeed": 0.4000000059604645, + "speedSpread": 0.10000000149011612, + "emitOrientation": { + "x": -0.0000152587890625, + "y": -0.0000152587890625, + "z": -0.0000152587890625, + "w": 1 + }, + "polarFinish": 3.1415927410125732, + "emitAcceleration": { + "x": 0, + "y": -0.4000000059604645, + "z": 0 + }, + "particleRadius": 1.5, + "radiusStart": 0.5, + "radiusFinish": 4, + "colorStart": { + "red": 255, + "green": 255, + "blue": 255 + }, + "colorFinish": { + "red": 122, + "green": 122, + "blue": 122 + }, + "alphaStart": 0.10000000149011612, + "alphaFinish": 0, + "emitterShouldTrail": true, + "spinSpread": 1.5700000524520874, + "spinStart": null, + "spinFinish": null }, - "shape": "Cube", - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false - }, - { - "id": "{b9444e0f-1cda-4ad3-80e5-9ef3bf0ec6cd}", - "type": "Model", - "lastEdited": 1617134731448079, - "name": "mirror_reflectingPlane", - "locked": true, - "userData": "{\"grabbableKey\":{\"grabbable\":false,\"ignoreIK\":false},\"original\":{\"id\":\"{6291b4e5-0dcb-484c-9c11-fe47725a4ad8}\"}}", - "position": { - "x": 3.3984665870666504, - "y": 1.891787052154541, - "z": 20.900876998901367 - }, - "dimensions": { - "x": 1.6291353702545166, - "y": 2.206333875656128, - "z": 0.01092288363724947 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.8816205263137817, - "z": 0.0000152587890625, - "w": -0.4719768166542053 - }, - "created": 1614198986204053, - "lastEditedBy": "{0b759026-5fea-494c-99de-ab6301e73d4c}", - "queryAACube": { - "x": 2.0271434783935547, - "y": 0.5204638242721558, - "z": 19.52955436706543, - "scale": 2.7426464557647705 - }, - "grab": { - "grabbable": false, - "grabFollowsController": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{8dddb33c-263e-461e-b8d9-1b9355147bd9}", + "type": "Light", + "name": "blacklight", + "locked": true, + "dimensions": { + "x": 8.116681098937988, + "y": 8.116681098937988, + "z": 8.116681098937988 + }, + "rotation": { + "x": -0.7071176171302795, + "y": 3.849143226375418e-12, + "z": -0.000021579189706244506, + "w": 0.7070960402488708 + }, + "position": { + "x": 2000, + "y": 1996.92791, + "z": 2000 + }, + "grab": { + "grabbable": false + }, + "color": { + "red": 128, + "green": 64, + "blue": 255 + }, + "intensity": 10, + "exponent": 1, + "cutoff": 30, + "falloffRadius": 2 }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "collisionless": true, - "ignoreForCollisions": true, - "collisionMask": 0, - "collidesWith": "", - "script": "qrc:///serverless/Scripts/mirrorClient.js", - "scriptTimestamp": 1601084665601, - "modelURL": "qrc:///serverless/Models/mirror_without_backface.baked.fbx", - "blendshapeCoefficients": "{\n}\n", - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{61e0e141-bb95-4e7a-a043-3f4f783e39f4}", - "type": "Text", - "lastEdited": 1617134727215565, - "locked": true, - "description": "mirror text", - "position": { - "x": 3.306519031524658, - "y": 4.0622100830078125, - "z": 20.931333541870117 - }, - "dimensions": { - "x": 3.2473599910736084, - "y": 0.6462407112121582, - "z": 0.009999999776482582 - }, - "rotation": { - "x": 0.0008392333984375, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 0.999969482421875 - }, - "created": 1614383649622836, - "lastEditedBy": "{0b759026-5fea-494c-99de-ab6301e73d4c}", - "queryAACube": { - "x": 1.6509922742843628, - "y": 2.4066834449768066, - "z": 19.275806427001953, - "scale": 3.311053514480591 - }, - "billboardMode": "yaw", - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{a80ee618-752e-44e4-a9de-04f089b4fe03}", + "type": "Model", + "name": "Dome Glass", + "locked": true, + "position": { + "x": 2000, + "y": 2003.09, + "z": 2000 + }, + "dimensions": { + "x": 44.38727569580078, + "y": 7.3717122077941895, + "z": 44.38727569580078 + }, + "rotation": { + "x": -0.0000152587890625, + "y": -0.0000152587890625, + "z": -0.0000152587890625, + "w": 1 + }, + "grab": { + "grabbable": false + }, + "shapeType": "static-mesh", + "modelURL": "qrc:///serverless/Models/dome2_glass.glb" }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "collisionMask": 23, - "collidesWith": "static,dynamic,kinematic,otherAvatar,", - "text": "Mirror", - "lineHeight": 0.6000000238418579, - "textColor": { - "red": 0, - "green": 0, - "blue": 0 - }, - "backgroundAlpha": 0, - "unlit": true, - "font": "Inconsolata", - "textEffect": "outline fill", - "textEffectColor": { - "red": 0, - "green": 208, - "blue": 255 - }, - "textEffectThickness": 0.30000001192092896, - "alignment": "center", - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": true, - "isFacingAvatar": false -}, - { - "id": "{4b1ac4d3-325b-46a2-9c27-0e94ee1afcaf}", - "type": "Model", - "lastEdited": 1617140845328587, - "name": "Seagull", - "locked": true, - "position": { - "x": 23.798669815063477, - "y": 4.926492214202881, - "z": 10.381175994873047 - }, - "dimensions": { - "x": 0.9342527389526367, - "y": 0.8603132963180542, - "z": 0.47802668809890747 - }, - "rotation": { - "x": -0.017654716968536377, - "y": -0.4898908734321594, - "z": 0.030106067657470703, - "w": 0.8710917234420776 - }, - "created": 1614198986205195, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": 23.12016487121582, - "y": 4.247987270355225, - "z": 9.70267105102539, - "scale": 1.3570102453231812 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{d2ef46ed-c85f-4ab5-bef3-14feb46e9091}", + "type": "Model", + "name": "trees", + "locked": true, + "position": { + "x": 2000, + "y": 1999.4494867324829102, + "z": 2000 + }, + "dimensions": { + "x": 26.59911346435547, + "y": 9.549417495727539, + "z": 26.465896606445312 + }, + "rotation": { + "x": -0.0000152587890625, + "y": -0.0000152587890625, + "z": -0.0000152587890625, + "w": 1 + }, + "grab": { + "grabbable": false + }, + "modelURL": "qrc:///serverless/Models/Trees1.glb" }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "shapeType": "simple-compound", - "modelURL": "qrc:///serverless/Models/seagull-ANI.fbx", - "blendshapeCoefficients": "{\n}\n", - "animation": { - "url": "qrc:///serverless/Models/seagull-ANI.fbx", - "allowTranslation": false, - "currentFrame": 99.81153869628906, - "running": true, - "lastFrame": 120 - }, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{7c7f80be-4fa3-4615-86f3-5446c6737350}", - "type": "Box", - "lastEdited": 1617140739515673, - "parentID": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", - "visible": false, - "name": "Sound Emitter", - "locked": true, - "userData": "{\"soundURL\":\"qrc:///serverless/Sounds/468407__onderwish__sci-fi-survival-dreamscape.mp3\",\"shouldLoop\":true,\"volume\":0.18,\"refreshInterval\":100,\"grabbableKey\":{\"grabbable\":false}}", - "position": { - "x": 0, - "y": 1.0455207824707031, - "z": 0 - }, - "dimensions": { - "x": 0.20000000298023224, - "y": 0.20000000298023224, - "z": 0.20000000298023224 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614198017837347, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": 28.069303512573242, - "y": 5.205089092254639, - "z": 26.711923599243164, - "scale": 0.3464101552963257 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{25638e51-c19c-420a-a9cc-ff02626b62ef}", + "type": "Box", + "visible": false, + "name": "portalCube", + "locked": true, + "userData": "{\"destination\":\"hifi://overte_hub/8.78229,-27.241,121.826/0,0.711478,0,0.702708\"}", + "position": { + "x":2004.5484619140625, + "y":1996.08203125, + "z":2022.6519775390625 + }, + "dimensions": { + "x": 3.1674, + "y": 3.3120, + "z": 1.1850 + }, + "rotation": { + "x":0, + "y":-0.9951410889625549, + "z":0, + "w":0.0984593853354454 + }, + "grab": { + "grabbable": false + }, + "collisionless": true, + "script": "qrc:///serverless/Scripts/portal.js", + "scriptTimestamp": 1617134674001, + "color": { + "red": 0, + "green": 180, + "blue": 239 + }, + "shape": "Cube" }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "script": "qrc:///serverless/Scripts/soundEmitter.js", - "scriptTimestamp": 1601079357399, - "color": { - "red": 0, - "green": 180, - "blue": 239 - }, - "shape": "Cube", - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, -{ - "type": "Model", - "name": "LOGO", - "dimensions": { - "x": 13.745243072509766, - "y": 3.6150240898132324, - "z": 0.5063754320144653 - }, - "rotation": { - "x": 0, - "y": -0.7933533787727356, - "z": 0, - "w": 0.6087614297866821 - }, - "position": { - "x":60.310699462890625, - "y":4.58831787109375, - "z":18.133499145507812 - }, - "canCastShadow": false, - "grab": { - "grabbable": false - }, - "modelURL": "qrc:///serverless/Models/logo_overte_white-color-emissive.fst", - "useOriginalPivot": true, - "locked": true -}, - { - "id": "{06b826d4-5385-4c49-92c2-47e24f97b35a}", - "type": "Text", - "lastEdited": 1617134764395172, - "name": "(2)", - "locked": true, - "description": "mirror text", - "position": { - "x": 34.17714309692383, - "y": 4.050739288330078, - "z": 27.204530715942383 - }, - "dimensions": { - "x": 3.2473599910736084, - "y": 0.6462407112121582, - "z": 0.009999999776482582 - }, - "rotation": { - "x": 0.0008392333984375, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 0.999969482421875 - }, - "created": 1614453280539951, - "lastEditedBy": "{0b759026-5fea-494c-99de-ab6301e73d4c}", - "queryAACube": { - "x": 32.5216178894043, - "y": 2.3952126502990723, - "z": 25.54900360107422, - "scale": 3.311053514480591 - }, - "billboardMode": "yaw", - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{e0261cde-c5e0-44bf-a747-787c4c867d79}", + "type": "Light", + "name": "mainDomeLight", + "locked": true, + "position": { + "x": 2000, + "y": 2004.76835, + "z": 2000 + }, + "dimensions": { + "x": 61.943946838378906, + "y": 61.943946838378906, + "z": 61.943946838378906 + }, + "rotation": { + "x": -0.0000152587890625, + "y": -0.0000152587890625, + "z": -0.0000152587890625, + "w": 1 + }, + "grab": { + "grabbable": false + }, + "color": { + "red": 255, + "green": 235, + "blue": 87 + }, + "intensity": 0.8999999761581421, + "exponent": 1, + "cutoff": 75, + "falloffRadius": 30 }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "collisionMask": 23, - "collidesWith": "static,dynamic,kinematic,otherAvatar,", - "text": "Controls", - "lineHeight": 0.6000000238418579, - "textColor": { - "red": 0, - "green": 0, - "blue": 0 - }, - "backgroundAlpha": 0, - "unlit": true, - "font": "Inconsolata", - "textEffect": "outline fill", - "textEffectColor": { - "red": 0, - "green": 208, - "blue": 255 - }, - "textEffectThickness": 0.30000001192092896, - "alignment": "center", - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": true, - "isFacingAvatar": false -}, -{ - "id": "{5b6443c5-ec22-4c8a-9581-85134ceb6856}", - "parentID": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", - "type": "Model", - "name": "Bowl", - "locked": true, - "lastEdited": 1617218059378792, - "dimensions": { - "x": 1.7757656574249268, - "y": 1.2933320999145508, - "z": 1.7757654190063477 - }, - "rotation": { - "x": -0.000030517578125, - "y": -0.000030517578125, - "z": -0.000030517578125, - "w": 1 - }, - "created": 1617216882976266, - "lastEditedBy": "{f72b151a-b325-4c9f-805a-7a7a520f82f7}", - "position": { - "x": -0.00001823902130126953, - "y": -5.1002636909484863281, - "z": 0.10145187377929688 - }, - "queryAACube": { - "x": -1.4123910665512085, - "y": -1.4123910665512085, - "z": -1.4123910665512085, - "scale": 2.824782133102417 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", + "type": "Model", + "name": "Dome", + "locked": true, + "position": { + "x": 2000, + "y": 1994.15, + "z": 2000 + }, + "useOriginalPivot": true, + "dimensions": { + "x": 54.6318, + "y": 20.7737, + "z": 54.6318 + }, + "rotation": { + "x": -0.0, + "y": -0.0, + "z": -0.0, + "w": 1 + }, + "grab": { + "grabbable": false + }, + "shapeType": "static-mesh", + "modelURL": "qrc:///serverless/Models/dome.fst" }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "shapeType": "static-mesh", - "modelURL": "qrc:///serverless/Models/bowl2.fbx", - "blendshapeCoefficients": "{\n}\n", - "animation": { - "allowTranslation": false - }, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{9c451827-4c87-4bf7-8372-aeb6bbd61eaa}", - "type": "ParticleEffect", - "lastEdited": 1617217817025177, - "parentID": "{5b6443c5-ec22-4c8a-9581-85134ceb6856}", - "name": "Brew", - "locked": true, - "position": { - "x": 0, - "y": 0.44699999690055847, - "z": 0 - }, - "dimensions": { - "x": 16.263307571411133, - "y": 16.263307571411133, - "z": 16.263307571411133 - }, - "rotation": { - "x": 8.988587651970192e-12, - "y": -0.00008631677337689325, - "z": -0.7071500420570374, - "w": 0.7070636749267578 - }, - "created": 1617216898348298, - "lastEditedBy": "{f72b151a-b325-4c9f-805a-7a7a520f82f7}", - "queryAACube": { - "x": 7.714627265930176, - "y": -12.719738006591797, - "z": -5.470824241638184, - "scale": 28.168874740600586 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{52c84c1c-6567-4670-9b2b-9aa9bc1456ea}", + "type": "Model", + "name": "Temple", + "locked": true, + "position": { + "x": 2000, + "y": 1997.6911818981170654, + "z": 2000 + }, + "dimensions": { + "x": 5.688337802886963, + "y": 7.10263204574585, + "z": 5.688361644744873 + }, + "rotation": { + "x": -0.0000152587890625, + "y": -0.0000152587890625, + "z": -0.0000152587890625, + "w": 1 + }, + "grab": { + "grabbable": false + }, + "shapeType": "static-mesh", + "modelURL": "qrc:///serverless/Models/temple5.glb" }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "shapeType": "ellipsoid", - "color": { - "red": 4, - "green": 101, - "blue": 143 - }, - "alpha": 0.30000001192092896, - "textures": "qrc:///serverless/Textures/default_particle.png", - "maxParticles": 80, - "lifespan": 2, - "emitRate": 47, - "emitSpeed": 0.30000001192092896, - "speedSpread": 0, - "emitOrientation": { - "x": 0, - "y": 0, - "z": 0, - "w": 1 - }, - "emitDimensions": { - "x": 1, - "y": 1, - "z": 0 - }, - "emitRadiusStart": 0, - "polarStart": 0.8700000047683716, - "polarFinish": 1.2200000286102295, - "azimuthStart": 3.0999999046325684, - "azimuthFinish": 3.140000104904175, - "emitAcceleration": { - "x": 0, - "y": -0.9900000095367432, - "z": 0 - }, - "accelerationSpread": { - "x": 0.10000000149011612, - "y": 0.3400000035762787, - "z": 0.10000000149011612 - }, - "particleRadius": 1.5, - "radiusStart": 0.5, - "radiusFinish": 0.30000001192092896, - "colorSpread": { - "red": 0, - "green": 150, - "blue": 150 - }, - "colorStart": { - "red": 0, - "green": 0, - "blue": 0 - }, - "colorFinish": { - "red": 0, - "green": 0, - "blue": 0 - }, - "alphaStart": 0.5, - "alphaFinish": 0, - "emitterShouldTrail": true, - "spinStart": null, - "spinFinish": null, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{77cbbb3f-e1fe-436c-8b0a-11b45b96181b}", - "type": "ParticleEffect", - "lastEdited": 1617216897203063, - "parentID": "{5b6443c5-ec22-4c8a-9581-85134ceb6856}", - "name": "steam", - "locked": true, - "position": { - "x": 0.03824615478515625, - "y": 5.34733772277832, - "z": 0.057065125554800034 - }, - "dimensions": { - "x": 14.4042329788208, - "y": 14.4042329788208, - "z": 14.4042329788208 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1617216882977327, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": 9.363174438476562, - "y": -6.209394454956055, - "z": -3.8040504455566406, - "scale": 24.948863983154297 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{7da48aff-a2a3-4925-b741-6093f58c27ba}", + "type": "Material", + "name": "templeVioletMaterial", + "locked": true, + "materialURL": "materialData", + "priority": 1, + "materialData": "{\n \"materialVersion\": 1,\n \"materials\": [\n {\n \"name\": \"untitled\",\n \"albedo\": [0.56078, 0.1647, 1],\n \"metallic\": 0.001,\n \"roughness\": 0.5,\n \"opacity\": 1,\n \"emissive\": [1.0823, 0.8550, 2.76],\n \"scattering\": 0,\n \"unlit\": false,\n \"cullFaceMode\": \"CULL_BACK\",\n \"model\": \"hifi_pbr\"\n }\n ]\n}", + "position": { + "x": 2000, + "y": 2000, + "z": 2000 + }, + "parentID": "{52c84c1c-6567-4670-9b2b-9aa9bc1456ea}" }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "shapeType": "ellipsoid", - "alpha": 0.014999999664723873, - "textures": "qrc:///serverless/Textures/default_particle.png", - "maxParticles": 100, - "lifespan": 3.069999933242798, - "emitSpeed": 0.4000000059604645, - "speedSpread": 0.10000000149011612, - "emitOrientation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "polarFinish": 3.1415927410125732, - "emitAcceleration": { - "x": 0, - "y": -1, - "z": 0 - }, - "particleRadius": 1.5, - "radiusStart": 0.5, - "radiusFinish": 0.4000000059604645, - "colorStart": { - "red": 0, - "green": 0, - "blue": 0 - }, - "colorFinish": { - "red": 0, - "green": 0, - "blue": 0 - }, - "alphaStart": 0.5, - "alphaFinish": 0, - "emitterShouldTrail": true, - "spinStart": null, - "spinFinish": null, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{463bad19-9d44-479e-af6c-9d86ee76fc45}", - "type": "Light", - "lastEdited": 1617217841543322, - "parentID": "{5b6443c5-ec22-4c8a-9581-85134ceb6856}", - "name": "blacklight", - "locked": true, - "position": { - "x": 0, - "y": 1.6233999729156494, - "z": 0 - }, - "dimensions": { - "x": 3.867255687713623, - "y": 3.867255687713623, - "z": 4.0243144035339355 - }, - "rotation": { - "x": -0.7071176171302795, - "y": 3.849143226375418e-12, - "z": -0.000021579189706244506, - "w": 0.7070960402488708 - }, - "created": 1617217525079443, - "lastEditedBy": "{f72b151a-b325-4c9f-805a-7a7a520f82f7}", - "queryAACube": { - "x": 18.404050827026367, - "y": -0.8539872169494629, - "z": 5.2184553146362305, - "scale": 6.790172100067139 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{3a740728-5d6f-4a3b-a710-49a8c6cb1ae0}", + "type": "Zone", + "name": "MainDomeZone", + "locked": true, + "position": { + "x": 2000, + "y": 2055.367820739746094, + "z": 2000 + }, + "dimensions": { + "x": 10000, + "y": 10000, + "z": 10000 + }, + "rotation": { + "x": 0.44721001386642456, + "y": 0.5232430100440979, + "z": 0.06775686889886856, + "w": 0.7222389578819275 + }, + "grab": { + "grabbable": false + }, + "angularVelocity": { + "x": 0.006, + "y": 0.006, + "z": 0 + }, + "angularDamping": 0, + "shapeType": "box", + "keyLight": { + "color": { + "red": 255, + "green": 201, + "blue": 102 + }, + "intensity": 1.5, + "direction": { + "x": 0.6494141817092896, + "y": -0.7512804269790649, + "z": -0.11763939261436462 + }, + "castShadows": true, + "shadowBias": 0.20000000298023224, + "shadowMaxDistance": 57.79999923706055 + }, + "ambientLight": { + "ambientIntensity": 0.8999999761581421, + "ambientURL": "qrc:///serverless/Textures/galaxySkybox.jpg" + }, + "skybox": { + "color": { + "red": 235, + "green": 235, + "blue": 235 + }, + "url": "qrc:///serverless/Textures/galaxySkybox.jpg" + }, + "haze": { + "hazeRange": 50, + "hazeColor": { + "red": 4, + "green": 25, + "blue": 94 + }, + "hazeGlareColor": { + "red": 255, + "green": 196, + "blue": 0 + }, + "hazeEnableGlare": true, + "hazeGlareAngle": 32, + "hazeAltitudeEffect": true, + "hazeCeiling": 1925, + "hazeBaseRef": 1750, + "hazeBackgroundBlend": 0.5 + }, + "bloom": { + "bloomIntensity": 0.5, + "bloomThreshold": 0.750, + "bloomSize": 1.0 + }, + "keyLightMode": "enabled", + "ambientLightMode": "enabled", + "skyboxMode": "enabled", + "hazeMode": "enabled", + "bloomMode": "enabled" }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "isSpotlight": true, - "intensity": -25.700000762939453, - "exponent": 19.6299991607666, - "cutoff": 73.94000244140625, - "falloffRadius": 72.4000015258789, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{a80ee618-752e-44e4-a9de-04f089b4fe03}", - "type": "Model", - "lastEdited": 1617140830643374, - "parentID": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", - "name": "Dome Glass", - "locked": true, - "position": { - "x": -0.000016799232980702072, - "y": 3.1790809631347656, - "z": 0.000016798756405478343 - }, - "dimensions": { - "x": 44.38727569580078, - "y": 7.3717122077941895, - "z": 44.38727569580078 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614198986204337, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": -3.359670639038086, - "y": -24.09037208557129, - "z": -4.717145919799805, - "scale": 63.20445251464844 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{c5a35dbf-8253-4782-b121-26d0c609aad5}", + "type": "Shape", + "name": "MainCollision", + "locked": true, + "position": { + "x": 2000, + "y": 1993.619623184204102, + "z": 2000 + }, + "dimensions": { + "x": 54.22285461425781, + "y": 0.890187680721283, + "z": 54.22285461425781 + }, + "rotation": { + "x": -0.0000152587890625, + "y": -0.0000152587890625, + "z": -0.0000152587890625, + "w": 1 + }, + "grab": { + "grabbable": false + }, + "color": { + "red": 0, + "green": 0, + "blue": 0 + }, + "shape": "Cylinder" }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "shapeType": "static-mesh", - "modelURL": "qrc:///serverless/Models/dome2_glass.glb", - "blendshapeCoefficients": "{\n}\n", - "animation": { - "allowTranslation": false - }, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{d2ef46ed-c85f-4ab5-bef3-14feb46e9091}", - "type": "Model", - "lastEdited": 1617134717193282, - "parentID": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", - "name": "trees", - "locked": true, - "position": { - "x": -0.000016800577213871293, - "y": -0.5505132675170898, - "z": 0.000016800084267742932 - }, - "dimensions": { - "x": 26.59911346435547, - "y": 9.549417495727539, - "z": 26.465896606445312 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614198986202454, - "lastEditedBy": "{0b759026-5fea-494c-99de-ab6301e73d4c}", - "queryAACube": { - "x": 8.883026123046875, - "y": -15.577155113220215, - "z": 7.525779724121094, - "scale": 38.71883010864258 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{33d5305a-641d-4a4f-baa9-23ec22bb9d48}", + "type": "Light", + "name": "TreeLight_4", + "locked": true, + "position": { + "x": 1991.180343627929688, + "y": 1999.92455673217773438, + "z": 1990.809598922729492 + }, + "dimensions": { + "x": 10.24996280670166, + "y": 10.24996280670166, + "z": 10.24996280670166 + }, + "rotation": { + "x": -0.0000152587890625, + "y": -0.0000152587890625, + "z": -0.0000152587890625, + "w": 1 + }, + "grab": { + "grabbable": false + }, + "color": { + "red": 250, + "green": 214, + "blue": 32 + }, + "intensity": 15, + "exponent": 1, + "cutoff": 75, + "falloffRadius": 26.100000381469727 }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "modelURL": "qrc:///serverless/Models/Trees1.glb", - "blendshapeCoefficients": "{\n}\n", - "animation": { - "allowTranslation": false - }, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{f3d87e87-a250-42f8-a285-84cbeb777353}", - "type": "Model", - "lastEdited": 1617140880548597, - "parentID": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", - "name": "Panels", - "locked": true, - "position": { - "x": -0.0001735687255859375, - "y": -5.685686111450195, - "z": 0.00017449550796300173 - }, - "dimensions": { - "x": 36.70009231567383, - "y": 3.3704721927642822, - "z": 25.731521606445312 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614377167635894, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": -5.742575168609619, - "y": -23.827165603637695, - "z": 4.4112548828125, - "scale": 59.816864013671875 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{a4421b2e-123a-4619-8788-e36eef8029ea}", + "type": "Light", + "name": "TreeLight_2", + "locked": true, + "position": { + "x": 1991.180335998535156, + "y": 1999.75242328643798828, + "z": 2008.97313404083252 + }, + "dimensions": { + "x": 10.24996280670166, + "y": 10.24996280670166, + "z": 10.24996280670166 + }, + "rotation": { + "x": -0.0000152587890625, + "y": -0.0000152587890625, + "z": -0.0000152587890625, + "w": 1 + }, + "grab": { + "grabbable": false + }, + "color": { + "red": 191, + "green": 31, + "blue": 255 + }, + "intensity": 15, + "exponent": 1, + "cutoff": 75, + "falloffRadius": 26.100000381469727 }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "modelURL": "qrc:///serverless/Models/Stands.fbx", - "blendshapeCoefficients": "{\n}\n", - "useOriginalPivot": true, - "animation": { - "url": "qrc:///serverless/Models/Stands.fbx", - "allowTranslation": false, - "currentFrame": 68342.515625, - "running": true - }, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{25638e51-c19c-420a-a9cc-ff02626b62ef}", - "type": "Box", - "lastEdited": 1617134697724395, - "visible": false, - "name": "portalCube", - "locked": true, - "userData": "{\"destination\":\"hifi://172.104.248.237:40102/154.572,-96.8437,-417.945/0,1,0,-1.52586e-05\"}", - "position": { - "x": 0.06047534942626953, - "y": 1.751168131828308, - "z": 4.2923126220703125 - }, - "dimensions": { - "x": 1.6716244220733643, - "y": 2.5448203086853027, - "z": 0.26420968770980835 - }, - "rotation": { - "x": 0.0000152587890625, - "y": 0.6351872682571411, - "z": -0.0000457763671875, - "w": 0.772335410118103 - }, - "created": 1614454164933827, - "lastEditedBy": "{0b759026-5fea-494c-99de-ab6301e73d4c}", - "queryAACube": { - "x": -1.4676154851913452, - "y": 0.22307729721069336, - "z": 2.764221668243408, - "scale": 3.0561816692352295 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{7d040847-617e-494b-9593-05ab35142098}", + "type": "Light", + "name": "TreeLight_3", + "locked": true, + "position": { + "x": 2009.418960571289062, + "y": 1999.92455673217773438, + "z": 1990.809599876403809 + }, + "dimensions": { + "x": 10.24996280670166, + "y": 10.24996280670166, + "z": 10.24996280670166 + }, + "rotation": { + "x": -0.0000152587890625, + "y": -0.0000152587890625, + "z": -0.0000152587890625, + "w": 1 + }, + "grab": { + "grabbable": false + }, + "color": { + "red": 69, + "green": 255, + "blue": 69 + }, + "intensity": 20.5, + "exponent": 1, + "cutoff": 75, + "falloffRadius": 26.100000381469727 }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "collisionMask": 23, - "collidesWith": "static,dynamic,kinematic,otherAvatar,", - "damping": 0, - "angularDamping": 0, - "script": "qrc:///serverless/Scripts/portal.js", - "scriptTimestamp": 1617134674001, - "color": { - "red": 0, - "green": 180, - "blue": 239 - }, - "shape": "Cube", - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{e0261cde-c5e0-44bf-a747-787c4c867d79}", - "type": "Light", - "lastEdited": 1617140788480898, - "name": "mainDomeLight", - "locked": true, - "position": { - "x": 21.799074172973633, - "y": 10.247319221496582, - "z": 8.613605499267578 - }, - "dimensions": { - "x": 61.943946838378906, - "y": 61.943946838378906, - "z": 61.943946838378906 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614198986202528, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": -31.845956802368164, - "y": -43.39771270751953, - "z": -45.03142547607422, - "scale": 107.2900619506836 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{c191dc9f-7a8e-4f98-9974-b23c9bb7992d}", + "type": "Light", + "name": "TreeLight_1", + "locked": true, + "position": { + "x": 2009.000457763671875, + "y": 1999.7524280548095703, + "z": 2008.999537467956543 + }, + "dimensions": { + "x": 10.24996280670166, + "y": 10.24996280670166, + "z": 10.24996280670166 + }, + "rotation": { + "x": -0.0000152587890625, + "y": -0.0000152587890625, + "z": -0.0000152587890625, + "w": 1 + }, + "grab": { + "grabbable": false + }, + "color": { + "red": 69, + "green": 106, + "blue": 255 + }, + "intensity": 17.799999237060547, + "exponent": 1, + "cutoff": 75, + "falloffRadius": 26.100000381469727 }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "collisionMask": 23, - "collidesWith": "static,dynamic,kinematic,otherAvatar,", - "color": { - "red": 255, - "green": 235, - "blue": 87 - }, - "intensity": 0.8999999761581421, - "exponent": 1, - "cutoff": 75, - "falloffRadius": 30, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", - "type": "Model", - "lastEdited": 1617134709051164, - "name": "Dome", - "locked": true, - "position": { - "x": 21.799192428588867, - "y": 5.9566450119018555, - "z": 8.613487243652344 - }, - "dimensions": { - "x": 54.60203552246094, - "y": 13.734564781188965, - "z": 54.60203552246094 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614198986203467, - "lastEditedBy": "{0b759026-5fea-494c-99de-ab6301e73d4c}", - "queryAACube": { - "x": -25952.515625, - "y": -25921.0625, - "z": -25953.87890625, - "scale": 51961.5234375 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{cf666211-2b88-4ee6-af3c-a1a92bd6c513}", + "type": "Model", + "name": "Planters", + "locked": true, + "position": { + "x": 2000, + "y": 1994.413249969482422, + "z": 2000 + }, + "dimensions": { + "x": 19.592937469482422, + "y": 0.6371747255325317, + "z": 19.592937469482422 + }, + "rotation": { + "x": -0.0000152587890625, + "y": -0.0000152587890625, + "z": -0.0000152587890625, + "w": 1 + }, + "grab": { + "grabbable": false + }, + "shapeType": "static-mesh", + "modelURL": "qrc:///serverless/Models/Planter.glb" }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "shapeType": "static-mesh", - "modelURL": "qrc:///serverless/Models/dome2.glb", - "blendshapeCoefficients": "{\n}\n", - "animation": { - "allowTranslation": false - }, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{52c84c1c-6567-4670-9b2b-9aa9bc1456ea}", - "type": "Model", - "lastEdited": 1617134574674644, - "parentID": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", - "locked": true, - "position": { - "x": 4.238387418808998e-12, - "y": -2.3088181018829346, - "z": -7.275957614183426e-12 - }, - "dimensions": { - "x": 5.688337802886963, - "y": 7.10263204574585, - "z": 5.688361644744873 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614198986204522, - "lastEditedBy": "{78b82b17-4e7a-410f-95ce-1c3ace1cd609}", - "queryAACube": { - "x": -4.850972652435303, - "y": -3.341723680496216, - "z": -4.9151411056518555, - "scale": 38.45905685424805 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{929e8a17-dbd4-4592-8697-113d0f22808f}", + "type": "Model", + "locked": true, + "name": "STAND-ANGLE_CONTROLS", + "dimensions": { + "x": 2.8070104122161865, + "y": 1.5064109563827515, + "z": 1.2773184776306152 + }, + "position": {"x":1986.640625,"y":1994.11328125,"z":1994.886962890625}, + "rotation": {"x":0,"y":0.8241262435913086,"z":0,"w":-0.56640625}, + "grab": { + "grabbable": false + }, + "shapeType": "static-mesh", + "modelURL": "qrc:///serverless/Models/standAngle_Controls.fst", + "useOriginalPivot": true }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "scriptTimestamp": 1598912452582, - "shapeType": "static-mesh", - "modelURL": "qrc:///serverless/Models/temple5.glb", - "blendshapeCoefficients": "{\n}\n", - "animation": { - "allowTranslation": false - }, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{d344138a-adb8-4ae7-9aae-447266a48869}", - "type": "Light", - "lastEdited": 1617140788480765, - "parentID": "{b9444e0f-1cda-4ad3-80e5-9ef3bf0ec6cd}", - "name": "mirrorLight", - "locked": true, - "position": { - "x": -0.0015339851379394531, - "y": -0.000001519918441772461, - "z": 0.26983165740966797 - }, - "dimensions": { - "x": 3.8637032508850098, - "y": 3.8637032508850098, - "z": 4 - }, - "rotation": { - "x": 0.0000152587890625, - "y": 1, - "z": 0.0000152587890625, - "w": -0.0000152587890625 - }, - "created": 1614453808970411, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": 6.681288719177246, - "y": -3.11796498298645, - "z": 35.638336181640625, - "scale": 6.771735668182373 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{629e4a17-dbd4-4532-8697-113d0f22805f}", + "type": "Model", + "locked": true, + "name": "STAND-ANGLE_TABLET-TOOLBAR", + "dimensions": { + "x": 2.8070104122161865, + "y": 1.5064109563827515, + "z": 1.2773184776306152 + }, + "position": {"x":1985.8209228515625,"y":1994.11328125,"z":2001.9212646484375}, + "rotation": {"x":0,"y":0.649448037147522,"z":0,"w":-0.760405957698822}, + "grab": { + "grabbable": false + }, + "shapeType": "static-mesh", + "modelURL": "qrc:///serverless/Models/standAngle_TabletAndToolbar.fst", + "useOriginalPivot": true }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "color": { - "red": 255, - "green": 255, - "blue": 235 - }, - "isSpotlight": true, - "intensity": 0.699999988079071, - "exponent": 1, - "cutoff": 75, - "falloffRadius": 10, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{0d85144d-a15c-4d1b-84a5-b3a379d31798}", - "type": "Light", - "lastEdited": 1617140731977291, - "parentID": "{b9444e0f-1cda-4ad3-80e5-9ef3bf0ec6cd}", - "name": "Mirror Light", - "locked": true, - "position": { - "x": 0.08925724029541016, - "y": 0.4832591116428375, - "z": 0.20032405853271484 - }, - "dimensions": { - "x": 6.747879505157471, - "y": 6.747879505157471, - "z": 6.985918998718262 - }, - "rotation": { - "x": -0.999969482421875, - "y": -0.0001373291015625, - "z": -0.0000762939453125, - "w": 0.00856029987335205 - }, - "created": 1614198986203073, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": 4.045637607574463, - "y": -5.162182331085205, - "z": 33.07383346557617, - "scale": 11.826699256896973 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{87d66dee-8063-48e6-bac0-82cdc15a8da6}", + "type": "Model", + "locked": true, + "name": "STAND-ANGLE_APPLICATIONS", + "dimensions": { + "x": 2.8070104122161865, + "y": 1.5064109563827515, + "z": 1.2773184776306152 + }, + "position": {"x":1986.5245361328125,"y":1994.11328125,"z":2004.751708984375}, + "rotation": {"x":0,"y":0.5807029604911804,"z":0,"w":-0.8141154050827026}, + "grab": { + "grabbable": false + }, + "shapeType": "static-mesh", + "modelURL": "qrc:///serverless/Models/standAngle_Applications.fst", + "useOriginalPivot": true }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "isSpotlight": true, - "intensity": 2, - "exponent": 1, - "cutoff": 75, - "falloffRadius": 5.699999809265137, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{89f2cd0b-782f-4e4e-a674-587ae5893f7d}", - "type": "Light", - "lastEdited": 1617140712801743, - "parentID": "{52c84c1c-6567-4670-9b2b-9aa9bc1456ea}", - "name": "templeLight", - "locked": true, - "position": { - "x": -0.10364770889282227, - "y": 0.5877461433410645, - "z": -0.16811557114124298 - }, - "dimensions": { - "x": 5.481564998626709, - "y": 5.481564998626709, - "z": 5.481564998626709 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614198986204117, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": 23.39162826538086, - "y": -2.135477066040039, - "z": 21.969898223876953, - "scale": 9.494348526000977 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{9422ee7d-0652-4789-92de-073b9b81c0fc}", + "type": "Model", + "locked": true, + "name": "STAND-ANGLE_AVATAR", + "dimensions": { + "x": 2.8070104122161865, + "y": 1.5064109563827515, + "z": 1.2773184776306152 + }, + "position": {"x":1987.753662109375,"y":1994.11328125,"z":2007.3717041015625}, + "rotation": {"x":0,"y":0.4924236238002777,"z":0,"w":-0.8703557252883911}, + "grab": { + "grabbable": false + }, + "shapeType": "static-mesh", + "modelURL": "qrc:///serverless/Models/standAngle_Avatar.fst", + "useOriginalPivot": true + }, + { + "id": "{d792b06b-1499-45e9-8b47-96f45d404579}", + "type": "Model", + "locked": true, + "name": "STAND-ANGLE_CONFIG-WIZARD", + "dimensions": { + "x": 2.8070104122161865, + "y": 1.5064109563827515, + "z": 1.2773184776306152 + }, + "position": {"x":1985.857421875,"y":1994.11328125,"z":1997.7860107421875}, + "rotation": {"x":0,"y":0.760405957698822,"z":0,"w":-0.6494480967521667}, + "grab": { + "grabbable": false + }, + "shapeType": "static-mesh", + "modelURL": "qrc:///serverless/Models/standAngle_ConfigWizard.fst", + "useOriginalPivot": true, + "script": "qrc:///serverless/Scripts/wizardLoader.js" }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "color": { - "red": 255, - "green": 0, - "blue": 255 - }, - "intensity": 10, - "exponent": 1, - "cutoff": 75, - "falloffRadius": 1, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{3a740728-5d6f-4a3b-a710-49a8c6cb1ae0}", - "type": "Zone", - "lastEdited": 1617140938876740, - "parentID": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", - "name": "MainDomeZone", - "locked": true, - "userData": "{\n \"grabbableKey\": {\n \"grabbable\": false,\n \"ignoreIK\": false\n }\n}", - "position": { - "x": 0.0006103417836129665, - "y": 55.367820739746094, - "z": -0.0006103613413870335 - }, - "dimensions": { - "x": 10000, - "y": 10000, - "z": 10000 - }, - "rotation": { - "x": 0.44721001386642456, - "y": 0.5232430100440979, - "z": 0.06775686889886856, - "w": 0.7222389578819275 - }, - "created": 1614198986203133, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": -25952.515625, - "y": -25921.0625, - "z": -25953.87890625, - "scale": 51961.5234375 - }, - "grab": { - "grabbable": false, - "grabFollowsController": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{32674b8e-2a1f-4184-b7e2-1e29a935430c}", + "type": "Model", + "lockeded": true, + "name": "AVATAR_VIEWER_PLATFORM", + "dimensions": { + "x": 7, + "y": 0.27500930428504944, + "z": 7 + }, + "rotation": { + "x":0, + "y":0.4617486298084259, + "z":0, + "w":0.8870108127593994 + }, + "position": { + "x":1987.625732421875, + "y":1994.26904296875, + "z":2018.6552734375 + }, + "grab": { + "grabbable": false + }, + "shapeType": "static-mesh", + "modelURL": "qrc:///serverless/Models/avatarStand.fst", + "useOriginalPivot": true }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "angularVelocity": { - "x": 0.008699734695255756, - "y": 0.008700265549123287, - "z": 8.107145163527285e-12 - }, - "angularDamping": 0, - "shapeType": "box", - "keyLight": { - "color": { - "red": 158, - "green": 127, - "blue": 68 + { + "id": "{18eb0e06-e7b9-4e65-ad6d-a3f8f81171af}", + "type": "Shape", + "locked": true, + "visible": false, + "name": "AVATAR_VIEWER_TRIGGER", + "dimensions": { + "x": 12, + "y": 3.854274272918701, + "z": 7 + }, + "position": { + "x":1987.625732421875, + "y":1995.941650390625, + "z":2018.6552734375 + }, + "rotation": { + "x":0, + "y":0.9483237266540527, + "z":0, + "w":0.31730470061302185 + }, + "grab": { + "grabbable": false + }, + "collisionless": true, + "ignoreForCollisions": true, + "color": { + "red": 240, + "green": 128, + "blue": 0 + }, + "shape": "Cylinder", + "script": "qrc:///serverless/Scripts/activator-doppleganger.js" }, - "intensity": 1.5, - "direction": { - "x": 0.20760862529277802, - "y": -0.7512804269790649, - "z": 0.6264793872833252 + { + "id": "{f5f4a772-489e-4a4d-b90e-005d753289c1}", + "type": "Text", + "locked": true, + "name": "Avatar_Viewer_Sign", + "position": { + "x":1990.752685546875, + "y":1994.4725341796875, + "z":2018.1187744140625 + }, + "dimensions": { + "x": 1.044848918914795, + "y": 0.400476336479187, + "z": 0.009999999776482582 + }, + "rotation": { + "x":0.3608831763267517, + "y":-0.6339253187179565, + "z":-0.4301185607910156, + "w":-0.5318835377693176 + }, + "grab": { + "grabbable": false + }, + "text": "AVATAR VIEWER", + "lineHeight": 0.18, + "textColor": { + "red": 255, + "green": 235, + "blue": 153 + }, + "backgroundAlpha": 0, + "unlit": true, + "alignment": "center" }, - "castShadows": true, - "shadowBias": 0.20000000298023224, - "shadowMaxDistance": 57.79999923706055 - }, - "ambientLight": { - "ambientIntensity": 0.8999999761581421, - "ambientURL": "qrc:///serverless/Textures/galaxySkybox.png" - }, - "skybox": { - "color": { - "red": 235, - "green": 235, - "blue": 235 + { + "id": "{df5c96df-60a4-4c5b-93f7-fbd6252e786f}", + "type": "Text", + "locked": true, + "name": "Avatar_Viewer_Sign", + "position": { + "x":1987.0570068359375, + "y":1994.4736328125, + "z":2015.5369873046875 + }, + "dimensions": { + "x": 1.044848918914795, + "y": 0.400476336479187, + "z": 0.009999999776482582 + }, + "rotation": { + "x":-0.04895768687129021, + "y":-0.8243446946144104, + "z":-0.5593324303627014, + "w":0.07215389609336853 + }, + "grab": { + "grabbable": false + }, + "text": "AVATAR VIEWER", + "lineHeight": 0.18, + "textColor": { + "red": 255, + "green": 235, + "blue": 153 + }, + "backgroundAlpha": 0, + "unlit": true, + "alignment": "center" }, - "url": "qrc:///serverless/Textures/galaxySkybox.png" - }, - "haze": { - "hazeRange": 50, - "hazeColor": { - "red": 4, - "green": 25, - "blue": 94 + { + "id": "{cf11f424-d861-4586-ae16-5c1ac840b375}", + "type": "Light", + "locked": true, + "name": "AVATAR-VIEWER-LIGHT", + "dimensions": { + "x": 4.334089279174805, + "y": 4.334089279174805, + "z": 4.334089279174805 + }, + "position": { + "x":1986.9168701171875, + "y":1996.4212646484375, + "z":2019.7021484375 + }, + "grab": { + "grabbable": false + }, + "color": { + "red": 255, + "green": 242, + "blue": 189 + }, + "intensity": 5, + "exponent": 1, + "cutoff": 75, + "falloffRadius": 1 }, - "hazeGlareColor": { - "red": 255, - "green": 0, - "blue": 255 + { + "id": "{da0646f4-4ec8-47ef-9da3-1a4a1dbbc967}", + "type": "Light", + "locked": true, + "name": "AVATAR-VIEWER-LIGHT", + "dimensions": { + "x": 4.334089279174805, + "y": 4.334089279174805, + "z": 4.334089279174805 + }, + "position": { + "x":1988.3642578125, + "y":1996.4212646484375, + "z":2017.4779052734375 + }, + "grab": { + "grabbable": false + }, + "color": { + "red": 255, + "green": 242, + "blue": 189 + }, + "intensity": 5, + "exponent": 1, + "cutoff": 75, + "falloffRadius": 1 }, - "hazeEnableGlare": true, - "hazeGlareAngle": 27, - "hazeAltitudeEffect": true, - "hazeCeiling": -75, - "hazeBaseRef": -250, - "hazeBackgroundBlend": 0.5 - }, - "bloom": { - "bloomIntensity": 0.4000000059604645, - "bloomThreshold": 0.800000011920929, - "bloomSize": 1 - }, - "keyLightMode": "enabled", - "ambientLightMode": "enabled", - "skyboxMode": "enabled", - "hazeMode": "enabled", - "bloomMode": "enabled", - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{c5a35dbf-8253-4782-b121-26d0c609aad5}", - "type": "Shape", - "lastEdited": 1617140925236269, - "parentID": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", - "name": "MainCollision", - "locked": true, - "position": { - "x": 0.00002288818359375, - "y": -6.380376815795898, - "z": -0.00002409383887425065 - }, - "dimensions": { - "x": 54.22285461425781, - "y": 0.890187680721283, - "z": 54.22285461425781 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614198986204167, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": -10.101629257202148, - "y": -40.391536712646484, - "z": -11.458602905273438, - "scale": 76.6878662109375 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{bf586448-e578-4422-b392-59f7c2d1db6d}", + "type": "Model", + "locked": true, + "name": "QUICK TEST AREA", + "dimensions": { + "x": 91.33800506591797, + "y": 8.972383499145508, + "z": 54.631813049316406 + }, + "rotation": { + "x": 0, + "y": 0.6360781788825989, + "z": 0, + "w": 0.7716245651245117 + }, + "position": { + "x":2014.8653564453125, + "y":1994.1500244140625, + "z":1923.92431640625 + }, + "grab": { + "grabbable": false + }, + "shapeType": "static-mesh", + "modelURL": "qrc:///serverless/Models/test_area.fst", + "useOriginalPivot": true }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "color": { - "red": 0, - "green": 0, - "blue": 0 - }, - "shape": "Cylinder", - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{99f186d7-a623-4339-930e-1689d62a23e0}", - "type": "Zone", - "lastEdited": 1617134741129783, - "parentID": "{b9444e0f-1cda-4ad3-80e5-9ef3bf0ec6cd}", - "visible": false, - "name": "mirror_zone", - "locked": true, - "userData": "{\"grabbableKey\":{\"grabbable\":false},\"original\":{\"id\":\"{da1e2fcd-d69b-47d7-b861-25b31f1c7175}\"}}", - "position": { - "x": -0.01726818084716797, - "y": 0.2113490104675293, - "z": 1.704751968383789 - }, - "dimensions": { - "x": 2.8482747077941895, - "y": 3.153184413909912, - "z": 3.6725244522094727 - }, - "rotation": { - "x": -0.0161592960357666, - "y": 0.0000152587890625, - "z": -0.006424069404602051, - "w": 0.999847412109375 - }, - "created": 1614198986202623, - "lastEditedBy": "{0b759026-5fea-494c-99de-ab6301e73d4c}", - "queryAACube": { - "x": 8.46190071105957, - "y": -2.328949451446533, - "z": 35.4334716796875, - "scale": 5.6162872314453125 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{6322307c-4ae7-42a7-a282-153148a4b06d}", + "type": "Text", + "locked": true, + "name": "QUICK TEST AREA", + "dimensions": { + "x": 1.1506404876708984, + "y": 1.0344970226287842, + "z": 0.009999999776482582 + }, + "rotation": { + "x": 0, + "y": -0.02454427070915699, + "z": 0, + "w": 0.9996987581253052 + }, + "position": { + "x":2000.607666015625, + "y":1996.4498291015625, + "z":1977.84375 + }, + "grab": { + "grabbable": false + }, + "collisionless": true, + "ignoreForCollisions": true, + "text": "QUICK TEST AREA", + "lineHeight": 0.30000001192092896, + "textColor": { + "red": 255, + "green": 239, + "blue": 158 + }, + "backgroundAlpha": 0, + "unlit": true, + "alignment": "center" }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "script": "qrc:///serverless/Scripts/mirrorReflection.js", - "scriptTimestamp": 1601084668318, - "shapeType": "box", - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{33d5305a-641d-4a4f-baa9-23ec22bb9d48}", - "type": "Light", - "lastEdited": 1617140731977526, - "parentID": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", - "name": "TreeLight_4", - "locked": true, - "position": { - "x": -8.819656372070312, - "y": -0.07544326782226562, - "z": -9.190401077270508 - }, - "dimensions": { - "x": 10.24996280670166, - "y": 10.24996280670166, - "z": 10.24996280670166 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614198986202730, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": 10.546369552612305, - "y": -4.619409561157227, - "z": 8.817764282226562, - "scale": 17.753456115722656 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{f5674495-51e4-4593-925d-062eb4a38016}", + "type": "Light", + "locked": true, + "name": "QTA-LIGHT", + "dimensions": { + "x": 86.21586608886719, + "y": 86.21586608886719, + "z": 86.21586608886719 + }, + "position": { + "x":2014, + "y":2003.2890625, + "z":1923 + }, + "grab": { + "grabbable": false + }, + "color": { + "red": 229, + "green": 255, + "blue": 186 + }, + "intensity": 15, + "exponent": 1, + "cutoff": 75, + "falloffRadius": 1 }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "color": { - "red": 250, - "green": 214, - "blue": 32 - }, - "intensity": 15, - "exponent": 1, - "cutoff": 75, - "falloffRadius": 26.100000381469727, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{67b2c758-41ea-4448-80eb-f171d792ab5c}", - "type": "Box", - "lastEdited": 1617140777516274, - "visible": false, - "name": "LandingPoint", - "locked": true, - "position": { - "x": 21.792818069458008, - "y": 0, - "z": 25.644922256469727 - }, - "dimensions": { - "x": 3.2382099628448486, - "y": 0.20000000298023224, - "z": 1.8551445007324219 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1617140160943861, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": 19.924158096313477, - "y": -1.8686603307724, - "z": 23.776262283325195, - "scale": 3.7373206615448 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{c232c56a-8c95-4076-afcd-84b30ba700da}", + "type": "Model", + "locked": 1645661305204251, + "name": "TELEPORTER", + "dimensions": { + "x": 2.2643489837646484, + "y": 3.925037384033203, + "z": 4.448777198791504 + }, + "rotation": { + "x": 0, + "y": 0.7732872366905212, + "z": 0, + "w": 0.6340559124946594 + }, + "position": { + "x":2000, + "y":1994.0521240234375, + "z":2000 + }, + "grab": { + "grabbable": false + }, + "shapeType": "static-mesh", + "modelURL": "qrc:///serverless/Models/teleporter.fst", + "useOriginalPivot": true }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "color": { - "red": 0, - "green": 180, - "blue": 239 - }, - "shape": "Cube", - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{a4421b2e-123a-4619-8788-e36eef8029ea}", - "type": "Light", - "lastEdited": 1617140788480412, - "parentID": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", - "name": "TreeLight_2", - "locked": true, - "position": { - "x": -8.819664001464844, - "y": -0.24757671356201172, - "z": 8.97313404083252 - }, - "dimensions": { - "x": 10.24996280670166, - "y": 10.24996280670166, - "z": 10.24996280670166 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614198986202574, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": 10.54580307006836, - "y": -4.790988445281982, - "z": 26.981304168701172, - "scale": 17.753456115722656 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{9c5bf456-a818-47b4-a988-c167a1fd5506}", + "type": "Light", + "locked": true, + "name": "TP-LIGHT", + "dimensions": { + "x": 4.973495960235596, + "y": 4.973495960235596, + "z": 4.973495960235596 + }, + "rotation": { + "x": 3.725290298461914e-8, + "y": -0.0958457887172699, + "z": 4.4549128830340123e-8, + "w": -0.9953961968421936 + }, + "position": { + "x":2004.445556640625, + "y":1996.0936279296875, + "z":2022.943115234375 + }, + "grab": { + "grabbable": false + }, + "color": { + "red": 169, + "green": 107, + "blue": 255 + }, + "isSpotlight": true, + "intensity": 9, + "exponent": 1, + "cutoff": 90, + "falloffRadius": 3 }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "color": { - "red": 191, - "green": 31, - "blue": 255 - }, - "intensity": 15, - "exponent": 1, - "cutoff": 75, - "falloffRadius": 26.100000381469727, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{523e1c2d-1603-47bb-80f1-314747b161b0}", - "type": "Material", - "lastEdited": 1617140991884044, - "parentID": "{f3d87e87-a250-42f8-a285-84cbeb777353}", - "parentJointIndex": 4, - "name": "moveMaterial", - "userData": "{\n \"verticalOffset\": 0,\n \"segments\": 64,\n \"updateInterval\": 200\n}", - "position": { - "x": 0.00000476837158203125, - "y": 7.152557373046875e-7, - "z": 0.000003814697265625 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000457763671875, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614382837959471, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": -5.742575168609619, - "y": -21.97960662841797, - "z": 11.547750473022461, - "scale": 52.68036651611328 - }, - "canCastShadow": false, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{c2c851e5-769c-4aa3-b92a-760cd386563a}", + "type": "ParticleEffect", + "locked": true, + "name": "PORTAL-FX", + "dimensions": { + "x": 6.2300004959106445, + "y": 6.2300004959106445, + "z": 6.2300004959106445 + }, + "rotation": { + "x": -0.061621829867362976, + "y": 0.06148452311754227, + "z": -0.7045044898986816, + "w": 0.7043408155441284 + }, + "position": { + "x":2004.4320068359375, + "y":1996.0614013671875, + "z":2022.802001953125 + }, + "grab": { + "grabbable": false + }, + "shapeType": "box", + "color": { + "red": 125, + "green": 78, + "blue": 252 + }, + "alpha": 0.4000000059604645, + "textures": "qrc:///serverless/Textures/default_particle.png", + "maxParticles": 300, + "lifespan": 1, + "emitRate": 200, + "emitSpeed": 0, + "speedSpread": 0, + "emitOrientation": { + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "emitDimensions": { + "x": 2, + "y": 2, + "z": 0.20000000298023224 + }, + "emitRadiusStart": 0, + "polarFinish": 3.140000104904175, + "azimuthStart": -3.140000104904175, + "azimuthFinish": 3.140000104904175, + "emitAcceleration": { + "x": 0, + "y": 0, + "z": -3 + }, + "particleRadius": 1, + "radiusSpread": 0.20000000298023224, + "radiusStart": 1, + "radiusFinish": 1, + "colorStart": { + "red": 193, + "green": 181, + "blue": 245 + }, + "colorFinish": { + "red": 115, + "green": 64, + "blue": 255 + }, + "alphaSpread": 0.10000000149011612, + "alphaStart": 0.6000000238418579, + "alphaFinish": 0, + "emitterShouldTrail": true, + "spinSpread": 0.5199999809265137, + "spinStart": 0, + "spinFinish": 0 }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "collisionMask": 23, - "collidesWith": "static,dynamic,kinematic,otherAvatar,", - "script": "qrc:///serverless/Scripts/materialSequencer.js", - "scriptTimestamp": 1601250646975, - "materialURL": "materialData", - "priority": 3, - "parentMaterialName": "[mat::move]", - "materialMappingPos": { - "x": 0.265625, - "y": 0 - }, - "materialData": "{\"materialVersion\":1,\"materials\":[{\"name\":\"moveMaterial\",\"model\":\"hifi_pbr\",\"opacity\":0.8,\"albedo\":[1,1,1],\"roughness\":1,\"metallic\":0,\"emissive\":[0,0,0],\"scattering\":0,\"unlit\":false,\"emissiveMap\":\"qrc:///serverless/Textures/gradient1.jpg\",\"albedoMap\":\"qrc:///serverless/Textures/gradient1.jpg\",\"opacityMapMode\":\"OPACITY_MAP_BLEND\",\"cullFaceMode\":\"CULL_NONE\",\"defaultFallthrough\":false}]}", - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{35eb5c90-08e6-44de-b6b9-46c9fd36494a}", - "type": "Text", - "lastEdited": 1617134723640851, - "name": "(2)", - "locked": true, - "description": "mirror text", - "position": { - "x": 0, - "y": 4.090241432189941, - "z": 4.291414260864258 - }, - "dimensions": { - "x": 3.2473599910736084, - "y": 0.6462407112121582, - "z": 0.009999999776482582 - }, - "rotation": { - "x": 0.0008392333984375, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 0.999969482421875 - }, - "created": 1614453187953099, - "lastEditedBy": "{0b759026-5fea-494c-99de-ab6301e73d4c}", - "queryAACube": { - "x": -1.6555267572402954, - "y": 2.4347147941589355, - "z": 2.635887622833252, - "scale": 3.311053514480591 - }, - "billboardMode": "yaw", - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 + { + "id": "{f5c0d004-7ba7-4e97-ae14-a704d6e9197e}", + "type": "Text", + "locked": true, + "name": "IN-WORLD PORTAL", + "dimensions": { + "x": 1.7819494009017944, + "y": 0.669873058795929, + "z": 0.009999999776482582 + }, + "rotation": { + "x": 9.213550100639623e-8, + "y": -0.9951416254043579, + "z": 9.312768725067144e-7, + "w": 0.09845393896102905 + }, + "position": { + "x":2004.2841796875, + "y":1997.872314453125, + "z":2021.5238037109375 + }, + "grab": { + "grabbable": false + }, + "text": "PORTAL Visit the world", + "lineHeight": 0.3, + "textColor": { + "red": 194, + "green": 125, + "blue": 255 + }, + "backgroundAlpha": 0, + "unlit": true, + "alignment": "center" }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "collisionMask": 23, - "collidesWith": "static,dynamic,kinematic,otherAvatar,", - "text": "Portal", - "lineHeight": 0.6000000238418579, - "textColor": { - "red": 0, - "green": 0, - "blue": 0 - }, - "backgroundAlpha": 0, - "unlit": true, - "font": "Inconsolata", - "textEffect": "outline fill", - "textEffectColor": { - "red": 0, - "green": 208, - "blue": 255 - }, - "textEffectThickness": 0.30000001192092896, - "alignment": "center", - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": true, - "isFacingAvatar": false -}, - { - "id": "{7d040847-617e-494b-9593-05ab35142098}", - "type": "Light", - "lastEdited": 1617140731977921, - "parentID": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", - "name": "TreeLight_3", - "locked": true, - "position": { - "x": 9.418960571289062, - "y": -0.07544326782226562, - "z": -9.190400123596191 - }, - "dimensions": { - "x": 10.24996280670166, - "y": 10.24996280670166, - "z": 10.24996280670166 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614198986202887, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": 28.784984588623047, - "y": -4.61996603012085, - "z": 8.818321228027344, - "scale": 17.753456115722656 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "color": { - "red": 69, - "green": 255, - "blue": 69 - }, - "intensity": 20.5, - "exponent": 1, - "cutoff": 75, - "falloffRadius": 26.100000381469727, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{c191dc9f-7a8e-4f98-9974-b23c9bb7992d}", - "type": "Light", - "lastEdited": 1617140788480592, - "parentID": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", - "name": "TreeLight_1", - "locked": true, - "position": { - "x": 9.000457763671875, - "y": -0.2475719451904297, - "z": 8.999537467956543 - }, - "dimensions": { - "x": 10.24996280670166, - "y": 10.24996280670166, - "z": 10.24996280670166 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614198986203735, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": 28.365924835205078, - "y": -4.791526794433594, - "z": 27.008251190185547, - "scale": 17.753456115722656 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "color": { - "red": 69, - "green": 106, - "blue": 255 - }, - "intensity": 17.799999237060547, - "exponent": 1, - "cutoff": 75, - "falloffRadius": 26.100000381469727, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -}, - { - "id": "{cf666211-2b88-4ee6-af3c-a1a92bd6c513}", - "type": "Model", - "lastEdited": 1617140858220173, - "parentID": "{6c76b816-5064-424c-84b2-dbb478e47d5d}", - "name": "Planters", - "locked": true, - "position": { - "x": -0.00016648943710606545, - "y": -5.586750030517578, - "z": 0.00017049156303983182 - }, - "dimensions": { - "x": 19.592937469482422, - "y": 0.6371747255325317, - "z": 19.592937469482422 - }, - "rotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "created": 1614198986203890, - "lastEditedBy": "{7f097416-1c40-4cba-aa7c-6e20a7281823}", - "queryAACube": { - "x": 14.384176254272461, - "y": -15.1119384765625, - "z": 13.02754020690918, - "scale": 27.715923309326172 - }, - "grab": { - "grabbable": false, - "equippableLeftRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - }, - "equippableRightRotation": { - "x": -0.0000152587890625, - "y": -0.0000152587890625, - "z": -0.0000152587890625, - "w": 1 - } - }, - "damping": 0, - "angularDamping": 0, - "shapeType": "static-mesh", - "modelURL": "qrc:///serverless/Models/Planter.glb", - "blendshapeCoefficients": "{\n}\n", - "animation": { - "allowTranslation": false - }, - "clientOnly": false, - "avatarEntity": false, - "localEntity": false, - "faceCamera": false, - "isFacingAvatar": false -} + { + "id": "{b91a469e-ede3-4c18-9f6a-ec7fbd54c77b}", + "type": "Text", + "locked": true, + "name": "QUICK SETUP", + "dimensions": { + "x": 1.750463843345642, + "y": 0.30000001192092896, + "z": 0.009999999776482582 + }, + "rotation": { + "x": 0, + "y": 0.760405957698822, + "z": 0, + "w": -0.6494480967521667 + }, + "position": { + "x":1986.197998046875, + "y":1995.7080078125, + "z":1997.4066162109375 + }, + "grab": { + "grabbable": false + }, + "collisionless": true, + "ignoreForCollisions": true, + "text": "QUICK SETUP >>>", + "lineHeight": 0.20000000298023224, + "textColor": { + "red": 211, + "green": 184, + "blue": 255 + }, + "backgroundAlpha": 0, + "unlit": true, + "textEffect": "outline fill", + "textEffectColor": { + "red": 106, + "green": 0, + "blue": 255 + }, + "textEffectThickness": 0.3100000023841858, + "alignment": "center" + } ], "Id": "{2fef14da-af5c-43f2-855c-b36bfa23d90f}", "Version": 133