From 6e39e048be3f5f8d883c16a01beda828c230d49d Mon Sep 17 00:00:00 2001 From: Kalila L Date: Mon, 31 Aug 2020 00:43:30 -0400 Subject: [PATCH 01/46] First pass at centralizing some URLs. --- .../networking/src/NetworkingConstants.h | 1 + script-archive/acScripts/ControlACs.js | 5 +-- .../acScripts/botProceduralWayPoints.js | 15 +++++---- .../acScripts/bot_randomExpression.js | 9 ++--- script-archive/acScripts/playbackMaster.js | 7 ++-- script-archive/acScripts/simpleBot.js | 3 +- script-archive/airship/airship.js | 7 ++-- script-archive/avatarSelector.js | 15 +++++---- script-archive/blockWorld.js | 7 ++-- script-archive/controlPanel.js | 10 +++--- script-archive/controllers/hydra/airGuitar.js | 29 ++++++++-------- script-archive/controllers/hydra/drumStick.js | 7 ++-- script-archive/controllers/hydra/frisbee.js | 5 +-- script-archive/controllers/hydra/gun.js | 21 ++++++------ .../controllers/hydra/paddleBall.js | 11 ++++--- script-archive/controllers/hydra/toyball.js | 5 +-- script-archive/controllers/oculus/goTo.js | 4 +-- .../virtualKeyboardTextEntityExample.js | 2 +- script-archive/controllers/toybox.js | 5 +-- .../entityScripts/recordingMaster.js | 9 ++--- script-archive/example/audio/audioBall.js | 5 +-- .../example/audio/jsstreamplayer.js | 5 +-- script-archive/example/audio/radio.js | 7 ++-- script-archive/example/brownianFun.js | 7 ++-- script-archive/example/dynamicLandscape.js | 5 +-- .../example/entities/editModelExample.js | 5 +-- .../example/entities/entityModelExample.js | 5 +-- .../example/entities/zoneEntityExample.js | 3 +- .../example/entities/zoneSkyboxExample.js | 3 +- script-archive/example/games/airHockey.js | 7 ++-- script-archive/example/games/billiards.js | 10 +++--- script-archive/example/games/make-dummy.js | 5 +-- script-archive/example/games/planky.js | 10 +++--- .../example/games/spaceInvadersExample.js | 33 ++++++++++--------- script-archive/example/soundToys.js | 9 ++--- .../example/ui/overlayPanelExample.js | 6 ++-- script-archive/example/ui/overlaysExample.js | 15 +++++---- script-archive/fireworks.js | 5 +-- script-archive/golfclub/golfClub.js | 5 +-- script-archive/grenade.js | 9 ++--- script-archive/libraries/constants.js | 5 +-- script-archive/libraries/virtualKeyboard.js | 4 +-- script-archive/lineRider.js | 5 +-- script-archive/lobby.js | 15 +++++---- script-archive/pointer.js | 5 +-- script-archive/recorder.js | 7 ++-- .../utilities/diagnostics/inWorldTestTone.js | 5 +-- .../utilities/diagnostics/moveJoints.js | 2 +- .../utilities/diagnostics/playSoundLoop.js | 9 ++--- .../utilities/diagnostics/playSoundWave.js | 5 +-- script-archive/utilities/tools/cookies.js | 9 ++--- script-archive/walk.js | 4 +-- scripts/developer/utilities/tools/cookies.js | 9 ++--- .../emojiApp/simplifiedEmoji.js | 3 +- scripts/system/libraries/globals.js | 3 +- .../system/libraries/networkingConstants.js | 12 ++++++- scripts/system/libraries/progressDialog.js | 5 +-- 57 files changed, 251 insertions(+), 192 deletions(-) diff --git a/libraries/networking/src/NetworkingConstants.h b/libraries/networking/src/NetworkingConstants.h index edc1c1a1ef..b2e9c4c828 100644 --- a/libraries/networking/src/NetworkingConstants.h +++ b/libraries/networking/src/NetworkingConstants.h @@ -4,6 +4,7 @@ // // Created by Stephen Birarda on 2015-03-31. // Copyright 2015 High Fidelity, Inc. +// Copyright 2020 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/script-archive/acScripts/ControlACs.js b/script-archive/acScripts/ControlACs.js index ba066d9750..a66d62b872 100644 --- a/script-archive/acScripts/ControlACs.js +++ b/script-archive/acScripts/ControlACs.js @@ -9,7 +9,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; // Set the following variables to the right value var NUM_AC = 3; // This is the number of AC. Their ID need to be unique and between 0 (included) and NUM_AC (excluded) @@ -35,7 +36,7 @@ var LOAD = 6; var windowDimensions = Controller.getViewportDimensions(); -var TOOL_ICON_URL = HIFI_PUBLIC_BUCKET + "images/tools/"; +var TOOL_ICON_URL = VIRCADIA_PUBLIC_CDN + "images/tools/"; var ALPHA_ON = 1.0; var ALPHA_OFF = 0.7; var COLOR_TOOL_BAR = { red: 0, green: 0, blue: 0 }; diff --git a/script-archive/acScripts/botProceduralWayPoints.js b/script-archive/acScripts/botProceduralWayPoints.js index 1642d0f4db..097819829d 100644 --- a/script-archive/acScripts/botProceduralWayPoints.js +++ b/script-archive/acScripts/botProceduralWayPoints.js @@ -20,8 +20,9 @@ // //For procedural walk animation -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; -Script.include(HIFI_PUBLIC_BUCKET + "scripts/acScripts/proceduralAnimationAPI.js"); +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +Script.include(VIRCADIA_PUBLIC_CDN + "scripts/acScripts/proceduralAnimationAPI.js"); var procAnimAPI = new ProcAnimAPI(); @@ -121,9 +122,9 @@ var newBodyFilePrefix = "bot" + botNumber; // set the face model fst using the bot number // there is no need to change the body model - we're using the default -Avatar.faceModelURL = HIFI_PUBLIC_BUCKET + "meshes/" + newFaceFilePrefix + ".fst"; -Avatar.skeletonModelURL = HIFI_PUBLIC_BUCKET + "meshes/" + newBodyFilePrefix + "_a.fst"; -Avatar.billboardURL = HIFI_PUBLIC_BUCKET + "meshes/billboards/bot" + botNumber + ".png"; +Avatar.faceModelURL = VIRCADIA_PUBLIC_CDN + "meshes/" + newFaceFilePrefix + ".fst"; +Avatar.skeletonModelURL = VIRCADIA_PUBLIC_CDN + "meshes/" + newBodyFilePrefix + "_a.fst"; +Avatar.billboardURL = VIRCADIA_PUBLIC_CDN + "meshes/billboards/bot" + botNumber + ".png"; Agent.isAvatar = true; Agent.isListeningToAudioStream = true; @@ -146,9 +147,9 @@ function loadSounds() { var footstep_filenames = ["FootstepW2Left-12db.wav", "FootstepW2Right-12db.wav", "FootstepW3Left-12db.wav", "FootstepW3Right-12db.wav", "FootstepW5Left-12db.wav", "FootstepW5Right-12db.wav"]; - var SOUND_BASE_URL = HIFI_PUBLIC_BUCKET + "sounds/Cocktail+Party+Snippets/Raws/"; + var SOUND_BASE_URL = VIRCADIA_PUBLIC_CDN + "sounds/Cocktail+Party+Snippets/Raws/"; - var FOOTSTEP_BASE_URL = HIFI_PUBLIC_BUCKET + "sounds/Footsteps/"; + var FOOTSTEP_BASE_URL = VIRCADIA_PUBLIC_CDN + "sounds/Footsteps/"; for (var i = 0; i < sound_filenames.length; i++) { sounds.push(SoundCache.getSound(SOUND_BASE_URL + sound_filenames[i])); diff --git a/script-archive/acScripts/bot_randomExpression.js b/script-archive/acScripts/bot_randomExpression.js index b76e485e4a..6ff1140c6e 100644 --- a/script-archive/acScripts/bot_randomExpression.js +++ b/script-archive/acScripts/bot_randomExpression.js @@ -12,7 +12,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +VIRCADIA_PUBLIC_CDN = networkingConstants.contentCDN; function getRandomFloat(min, max) { return Math.random() * (max - min) + min; @@ -44,9 +45,9 @@ newBodyFilePrefix = "bot" + botNumber; // set the face model fst using the bot number // there is no need to change the body model - we're using the default -Avatar.faceModelURL = HIFI_PUBLIC_BUCKET + "meshes/" + newFaceFilePrefix + ".fst"; -Avatar.skeletonModelURL = HIFI_PUBLIC_BUCKET + "meshes/" + newBodyFilePrefix + ".fst"; -Avatar.billboardURL = HIFI_PUBLIC_BUCKET + "meshes/billboards/bot" + botNumber + ".png"; +Avatar.faceModelURL = VIRCADIA_PUBLIC_CDN + "meshes/" + newFaceFilePrefix + ".fst"; +Avatar.skeletonModelURL = VIRCADIA_PUBLIC_CDN + "meshes/" + newBodyFilePrefix + ".fst"; +Avatar.billboardURL = VIRCADIA_PUBLIC_CDN + "meshes/billboards/bot" + botNumber + ".png"; Agent.isAvatar = true; Agent.isListeningToAudioStream = true; diff --git a/script-archive/acScripts/playbackMaster.js b/script-archive/acScripts/playbackMaster.js index dff0b1d852..e2ce2d8f3b 100644 --- a/script-archive/acScripts/playbackMaster.js +++ b/script-archive/acScripts/playbackMaster.js @@ -10,7 +10,8 @@ // Script.include("./AgentPoolController.js"); -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var masterController = new MasterController(); @@ -18,7 +19,7 @@ var input_text = null; // Script. DO NOT MODIFY BEYOND THIS LINE. //Script.include("../libraries/toolBars.js"); -Script.include(HIFI_PUBLIC_BUCKET + "scripts/libraries/toolBars.js"); +Script.include(VIRCADIA_PUBLIC_CDN + "scripts/libraries/toolBars.js"); // We want small icons Tool.IMAGE_HEIGHT /= 2; Tool.IMAGE_WIDTH /= 2; @@ -29,7 +30,7 @@ var STOP = 3; var LOAD = 6; var windowDimensions = Controller.getViewportDimensions(); -var TOOL_ICON_URL = HIFI_PUBLIC_BUCKET + "images/tools/"; +var TOOL_ICON_URL = VIRCADIA_PUBLIC_CDN + "images/tools/"; var ALPHA_ON = 1.0; var ALPHA_OFF = 0.7; var COLOR_TOOL_BAR = { red: 0, green: 0, blue: 0 }; diff --git a/script-archive/acScripts/simpleBot.js b/script-archive/acScripts/simpleBot.js index a79e44484b..abe8894db7 100644 --- a/script-archive/acScripts/simpleBot.js +++ b/script-archive/acScripts/simpleBot.js @@ -9,7 +9,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; function getRandomFloat(min, max) { return Math.random() * (max - min) + min; diff --git a/script-archive/airship/airship.js b/script-archive/airship/airship.js index 80f37603eb..38debb9909 100644 --- a/script-archive/airship/airship.js +++ b/script-archive/airship/airship.js @@ -29,9 +29,10 @@ lightTimeoutID = undefined, audioInjector = null; - var HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; - var cannonSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "philip/cannonShot.wav"); - var explosionSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "philip/explosion.wav"); + var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; + var cannonSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "philip/cannonShot.wav"); + var explosionSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "philip/explosion.wav"); var NO_SHOOT_COLOR = { red: 100, green: 100, blue: 100 }; diff --git a/script-archive/avatarSelector.js b/script-archive/avatarSelector.js index 119044e35a..e7ebfbf73c 100644 --- a/script-archive/avatarSelector.js +++ b/script-archive/avatarSelector.js @@ -11,7 +11,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var panelWall = false; var orbShell = false; @@ -47,16 +48,16 @@ var panelsCenterShift = Vec3.subtract(panelsCenter, orbCenter); var ORB_SHIFT = { x: 0, y: -1.4, z: -0.8 }; -var LOBBY_PANEL_WALL_URL = HIFI_PUBLIC_BUCKET + "models/sets/Lobby/PanelWallForInterface.fbx"; -var LOBBY_BLANK_PANEL_TEXTURE_URL = HIFI_PUBLIC_BUCKET + "models/sets/Lobby/Texture.jpg"; -var LOBBY_SHELL_URL = HIFI_PUBLIC_BUCKET + "models/sets/Lobby/LobbyShellForInterface.fbx"; +var LOBBY_PANEL_WALL_URL = VIRCADIA_PUBLIC_CDN + "models/sets/Lobby/PanelWallForInterface.fbx"; +var LOBBY_BLANK_PANEL_TEXTURE_URL = VIRCADIA_PUBLIC_CDN + "models/sets/Lobby/Texture.jpg"; +var LOBBY_SHELL_URL = VIRCADIA_PUBLIC_CDN + "models/sets/Lobby/LobbyShellForInterface.fbx"; -var droneSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Lobby/drone.stereo.raw") +var droneSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Lobby/drone.stereo.raw") var currentDrone = null; -var latinSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Lobby/latin.stereo.raw") +var latinSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Lobby/latin.stereo.raw") var latinInjector = null; -var elevatorSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Lobby/elevator.stereo.raw") +var elevatorSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Lobby/elevator.stereo.raw") var elevatorInjector = null; var currentMuzakInjector = null; var currentSound = null; diff --git a/script-archive/blockWorld.js b/script-archive/blockWorld.js index 12e531e8de..a1a5366939 100644 --- a/script-archive/blockWorld.js +++ b/script-archive/blockWorld.js @@ -19,7 +19,8 @@ var floorTiles = []; var blocks = []; var blockSpawner; -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var floorPos = Vec3.sum(MyAvatar.position, { @@ -61,7 +62,7 @@ var offButton = Overlays.addOverlay("image", { y: screenSize.y - (BUTTON_SIZE + PADDING), width: BUTTON_SIZE, height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/close.png", + imageURL: VIRCADIA_PUBLIC_CDN + "images/close.png", color: { red: 255, green: 255, @@ -75,7 +76,7 @@ var deleteButton = Overlays.addOverlay("image", { y: screenSize.y - (BUTTON_SIZE + PADDING), width: BUTTON_SIZE, height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/delete.png", + imageURL: VIRCADIA_PUBLIC_CDN + "images/delete.png", color: { red: 255, green: 255, diff --git a/script-archive/controlPanel.js b/script-archive/controlPanel.js index 76fbd49577..d911c32035 100644 --- a/script-archive/controlPanel.js +++ b/script-archive/controlPanel.js @@ -16,11 +16,11 @@ Script.include([ "libraries/overlayManager.js", ]); -var BG_IMAGE_URL = HIFI_PUBLIC_BUCKET + "images/card-bg.svg"; -var CLOSE_IMAGE_URL = HIFI_PUBLIC_BUCKET + "images/tools/close.svg"; -var MIC_IMAGE_URL = HIFI_PUBLIC_BUCKET + "images/tools/mic-toggle.svg"; -var FACE_IMAGE_URL = HIFI_PUBLIC_BUCKET + "images/tools/face-toggle.svg"; -var ADDRESS_BAR_IMAGE_URL = HIFI_PUBLIC_BUCKET + "images/tools/address-bar-toggle.svg"; +var BG_IMAGE_URL = VIRCADIA_PUBLIC_CDN + "images/card-bg.svg"; +var CLOSE_IMAGE_URL = VIRCADIA_PUBLIC_CDN + "images/tools/close.svg"; +var MIC_IMAGE_URL = VIRCADIA_PUBLIC_CDN + "images/tools/mic-toggle.svg"; +var FACE_IMAGE_URL = VIRCADIA_PUBLIC_CDN + "images/tools/face-toggle.svg"; +var ADDRESS_BAR_IMAGE_URL = VIRCADIA_PUBLIC_CDN + "images/tools/address-bar-toggle.svg"; var panel = new OverlayPanel({ anchorPositionBinding: { avatar: "MyAvatar" }, diff --git a/script-archive/controllers/hydra/airGuitar.js b/script-archive/controllers/hydra/airGuitar.js index 73c7099eed..785136fa65 100644 --- a/script-archive/controllers/hydra/airGuitar.js +++ b/script-archive/controllers/hydra/airGuitar.js @@ -10,7 +10,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; function length(v) { return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z); @@ -28,7 +29,7 @@ function vMinus(a, b) { } // The model file to be used for the guitar -var guitarModel = HIFI_PUBLIC_BUCKET + "models/attachments/guitar.fst"; +var guitarModel = VIRCADIA_PUBLIC_CDN + "models/attachments/guitar.fst"; // Load sounds that will be played @@ -36,22 +37,22 @@ var heyManWave = SoundCache.getSound("https://hifi-public.s3.amazonaws.com/sound var chords = new Array(); // Nylon string guitar -chords[1] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guitars/Guitar+-+Nylon+A.raw"); -chords[2] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guitars/Guitar+-+Nylon+B.raw"); -chords[3] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guitars/Guitar+-+Nylon+E.raw"); -chords[4] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guitars/Guitar+-+Nylon+G.raw"); +chords[1] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guitars/Guitar+-+Nylon+A.raw"); +chords[2] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guitars/Guitar+-+Nylon+B.raw"); +chords[3] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guitars/Guitar+-+Nylon+E.raw"); +chords[4] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guitars/Guitar+-+Nylon+G.raw"); // Electric guitar -chords[5] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guitars/Guitar+-+Metal+A+short.raw"); -chords[6] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guitars/Guitar+-+Metal+B+short.raw"); -chords[7] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guitars/Guitar+-+Metal+E+short.raw"); -chords[8] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guitars/Guitar+-+Metal+G+short.raw"); +chords[5] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guitars/Guitar+-+Metal+A+short.raw"); +chords[6] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guitars/Guitar+-+Metal+B+short.raw"); +chords[7] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guitars/Guitar+-+Metal+E+short.raw"); +chords[8] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guitars/Guitar+-+Metal+G+short.raw"); // Steel Guitar -chords[9] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guitars/Guitar+-+Steel+A.raw"); -chords[10] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guitars/Guitar+-+Steel+B.raw"); -chords[11] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guitars/Guitar+-+Steel+E.raw"); -chords[12] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guitars/Guitar+-+Steel+G.raw"); +chords[9] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guitars/Guitar+-+Steel+A.raw"); +chords[10] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guitars/Guitar+-+Steel+B.raw"); +chords[11] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guitars/Guitar+-+Steel+E.raw"); +chords[12] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guitars/Guitar+-+Steel+G.raw"); var NUM_CHORDS = 4; var NUM_GUITARS = 3; diff --git a/script-archive/controllers/hydra/drumStick.js b/script-archive/controllers/hydra/drumStick.js index 97a8bd856d..c3389e9a05 100644 --- a/script-archive/controllers/hydra/drumStick.js +++ b/script-archive/controllers/hydra/drumStick.js @@ -10,7 +10,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; function length(v) { return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z); @@ -28,8 +29,8 @@ function vMinus(a, b) { // First, load two percussion sounds to be used on the sticks -var drum1 = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Drums/RackTomHi.raw"); -var drum2 = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Drums/RackTomLo.raw"); +var drum1 = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Drums/RackTomHi.raw"); +var drum2 = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Drums/RackTomLo.raw"); // State Machine: // 0 = not triggered diff --git a/script-archive/controllers/hydra/frisbee.js b/script-archive/controllers/hydra/frisbee.js index 46550d8e76..2b392da992 100644 --- a/script-archive/controllers/hydra/frisbee.js +++ b/script-archive/controllers/hydra/frisbee.js @@ -15,7 +15,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; Script.include("../../libraries/toolBars.js"); const LEFT_PALM = 0; @@ -171,7 +172,7 @@ var currentMouseControl = false; var newSound = SoundCache.getSound("https://dl.dropboxusercontent.com/u/1864924/hifi-sounds/throw.raw"); var catchSound = SoundCache.getSound("https://dl.dropboxusercontent.com/u/1864924/hifi-sounds/catch.raw"); -var throwSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Switches%20and%20sliders/slider%20-%20whoosh1.raw"); +var throwSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Switches%20and%20sliders/slider%20-%20whoosh1.raw"); var simulatedFrisbees = []; diff --git a/script-archive/controllers/hydra/gun.js b/script-archive/controllers/hydra/gun.js index 42dd1144eb..2499bcbc6e 100644 --- a/script-archive/controllers/hydra/gun.js +++ b/script-archive/controllers/hydra/gun.js @@ -22,7 +22,8 @@ Script.include("../../libraries/utils.js"); Script.include("../../libraries/constants.js"); Script.include("../../libraries/toolBars.js"); -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var LASER_WIDTH = 2; var POSE_CONTROLS = [ Controller.Standard.LeftHand, Controller.Standard.RightHand ]; @@ -30,7 +31,7 @@ var TRIGGER_CONTROLS = [ Controller.Standard.LT, Controller.Standard.RT ]; var MIN_THROWER_DELAY = 1000; var MAX_THROWER_DELAY = 1000; var RELOAD_INTERVAL = 5; -var GUN_MODEL = HIFI_PUBLIC_BUCKET + "cozza13/gun/m1911-handgun+1.fbx?v=4"; +var GUN_MODEL = VIRCADIA_PUBLIC_CDN + "cozza13/gun/m1911-handgun+1.fbx?v=4"; var BULLET_VELOCITY = 10.0; var GUN_OFFSETS = [ { x: -0.04, @@ -84,11 +85,11 @@ function getRandomFloat(min, max) { var showScore = false; // Load some sound to use for loading and firing -var fireSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guns/GUN-SHOT2.raw"); -var loadSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guns/Gun_Reload_Weapon22.raw"); -var impactSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guns/BulletImpact2.raw"); -var targetHitSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Space%20Invaders/hit.raw"); -var targetLaunchSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Space%20Invaders/shoot.raw"); +var fireSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guns/GUN-SHOT2.raw"); +var loadSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guns/Gun_Reload_Weapon22.raw"); +var impactSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guns/BulletImpact2.raw"); +var targetHitSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Space%20Invaders/hit.raw"); +var targetLaunchSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Space%20Invaders/shoot.raw"); var audioOptions = { volume: 0.9 @@ -118,7 +119,7 @@ var toolBar = new ToolBar(0, 0, ToolBar.HORIZONTAL, "highfidelity.gun.toolbar", var offButton = toolBar.addOverlay("image", { width: BUTTON_SIZE, height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/gun/close.svg", + imageURL: VIRCADIA_PUBLIC_CDN + "images/gun/close.svg", alpha: 1 }); @@ -128,7 +129,7 @@ var platformButton = toolBar.addOverlay("image", { y: screenSize.y - (BUTTON_SIZE + PADDING), width: BUTTON_SIZE, height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/gun/platform-targets.svg", + imageURL: VIRCADIA_PUBLIC_CDN + "images/gun/platform-targets.svg", alpha: 1 }); @@ -138,7 +139,7 @@ var gridButton = toolBar.addOverlay("image", { y: screenSize.y - (BUTTON_SIZE + PADDING), width: BUTTON_SIZE, height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/gun/floating-targets.svg", + imageURL: VIRCADIA_PUBLIC_CDN + "images/gun/floating-targets.svg", alpha: 1 }); diff --git a/script-archive/controllers/hydra/paddleBall.js b/script-archive/controllers/hydra/paddleBall.js index 9bf558ef21..a8253a8c33 100644 --- a/script-archive/controllers/hydra/paddleBall.js +++ b/script-archive/controllers/hydra/paddleBall.js @@ -10,11 +10,12 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; -hitSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"); -var rightHandAnimation = HIFI_PUBLIC_BUCKET + "animations/RightHandAnimPhilip.fbx"; -var leftHandAnimation = HIFI_PUBLIC_BUCKET + "animations/LeftHandAnimPhilip.fbx"; +hitSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"); +var rightHandAnimation = VIRCADIA_PUBLIC_CDN + "animations/RightHandAnimPhilip.fbx"; +var leftHandAnimation = VIRCADIA_PUBLIC_CDN + "animations/LeftHandAnimPhilip.fbx"; var BALL_SIZE = 0.08; var PADDLE_SIZE = 0.20; @@ -43,7 +44,7 @@ var offButton = Overlays.addOverlay("image", { y: 96, width: 32, height: 32, - imageURL: HIFI_PUBLIC_BUCKET + "images/close.png", + imageURL: VIRCADIA_PUBLIC_CDN + "images/close.png", color: { red: 255, green: 255, blue: 255}, alpha: 1 }); diff --git a/script-archive/controllers/hydra/toyball.js b/script-archive/controllers/hydra/toyball.js index 0d5faea317..deb6523fe1 100644 --- a/script-archive/controllers/hydra/toyball.js +++ b/script-archive/controllers/hydra/toyball.js @@ -15,7 +15,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; // maybe we should make these constants... var LEFT_PALM = 0; @@ -40,7 +41,7 @@ var rightHandEntity = false; var newSound = SoundCache.getSound("https://dl.dropboxusercontent.com/u/1864924/hifi-sounds/throw.raw"); var catchSound = SoundCache.getSound("https://dl.dropboxusercontent.com/u/1864924/hifi-sounds/catch.raw"); -var throwSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Switches%20and%20sliders/slider%20-%20whoosh1.raw"); +var throwSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Switches%20and%20sliders/slider%20-%20whoosh1.raw"); var targetRadius = 0.25; diff --git a/script-archive/controllers/oculus/goTo.js b/script-archive/controllers/oculus/goTo.js index 5a5c3429ed..c7274f254f 100644 --- a/script-archive/controllers/oculus/goTo.js +++ b/script-archive/controllers/oculus/goTo.js @@ -72,7 +72,7 @@ function Instructions(imageURL, originalWidth, originalHeight) { this.rescale(); }; -var theInstruction = new Instructions(HIFI_PUBLIC_BUCKET + "images/tutorial-goTo.svg", 457, 284.1); +var theInstruction = new Instructions(VIRCADIA_PUBLIC_CDN + "images/tutorial-goTo.svg", 457, 284.1); var firstControllerPlugged = false; @@ -86,7 +86,7 @@ var locationURL = ""; var randomSounds = new SoundArray({}, true); var numberOfSounds = 7; for (var i = 1; i <= numberOfSounds; i++) { - randomSounds.addSound(HIFI_PUBLIC_BUCKET + "sounds/UI/virtualKeyboard-press" + i + ".raw"); + randomSounds.addSound(VIRCADIA_PUBLIC_CDN + "sounds/UI/virtualKeyboard-press" + i + ".raw"); } function appendChar(char) { diff --git a/script-archive/controllers/oculus/virtualKeyboardTextEntityExample.js b/script-archive/controllers/oculus/virtualKeyboardTextEntityExample.js index 15025831e7..b0fee07182 100644 --- a/script-archive/controllers/oculus/virtualKeyboardTextEntityExample.js +++ b/script-archive/controllers/oculus/virtualKeyboardTextEntityExample.js @@ -38,7 +38,7 @@ var textSizeMeasureOverlay = Overlays.addOverlay("text3d", {visible: false}); var randomSounds = new SoundArray({}, true); var numberOfSounds = 7; for (var i = 1; i <= numberOfSounds; i++) { - randomSounds.addSound(HIFI_PUBLIC_BUCKET + "sounds/UI/virtualKeyboard-press" + i + ".raw"); + randomSounds.addSound(VIRCADIA_PUBLIC_CDN + "sounds/UI/virtualKeyboard-press" + i + ".raw"); } function appendChar(char) { diff --git a/script-archive/controllers/toybox.js b/script-archive/controllers/toybox.js index 9ca0a069fc..77895aa8b2 100644 --- a/script-archive/controllers/toybox.js +++ b/script-archive/controllers/toybox.js @@ -11,7 +11,8 @@ // Script.include("http://s3.amazonaws.com/hifi-public/scripts/libraries/toolBars.js"); -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; @@ -139,7 +140,7 @@ function createTable() { dimensions: TABLE_DIMENSIONS, rotation: MyAvatar.orientation, // color: { red: 102, green: 51, blue: 0 }, - modelURL: HIFI_PUBLIC_BUCKET + 'eric/models/woodFloor.fbx', + modelURL: VIRCADIA_PUBLIC_CDN + 'eric/models/woodFloor.fbx', collisionSoundURL: "http://public.highfidelity.io/sounds/dice/diceCollide.wav" }); diff --git a/script-archive/entityScripts/recordingMaster.js b/script-archive/entityScripts/recordingMaster.js index 0aa3e6f866..00a6fcccc1 100644 --- a/script-archive/entityScripts/recordingMaster.js +++ b/script-archive/entityScripts/recordingMaster.js @@ -10,15 +10,16 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; -Script.include(HIFI_PUBLIC_BUCKET + "scripts/libraries/toolBars.js"); -Script.include(HIFI_PUBLIC_BUCKET + "scripts/libraries/utils.js"); +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +Script.include(VIRCADIA_PUBLIC_CDN + "scripts/libraries/toolBars.js"); +Script.include(VIRCADIA_PUBLIC_CDN + "scripts/libraries/utils.js"); var rotation = Quat.safeEulerAngles(Camera.getOrientation()); rotation = Quat.fromPitchYawRollDegrees(0, rotation.y, 0); var center = Vec3.sum(MyAvatar.position, Vec3.multiply(1, Quat.getFront(rotation))); -var TOOL_ICON_URL = HIFI_PUBLIC_BUCKET + "images/tools/"; +var TOOL_ICON_URL = VIRCADIA_PUBLIC_CDN + "images/tools/"; var ALPHA_ON = 1.0; var ALPHA_OFF = 0.7; var COLOR_TOOL_BAR = { red: 0, green: 0, blue: 0 }; diff --git a/script-archive/example/audio/audioBall.js b/script-archive/example/audio/audioBall.js index 4f352ff1a3..af5227ea39 100644 --- a/script-archive/example/audio/audioBall.js +++ b/script-archive/example/audio/audioBall.js @@ -13,9 +13,10 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; -var sound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Animals/mexicanWhipoorwill.raw"); +var sound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Animals/mexicanWhipoorwill.raw"); var CHANCE_OF_PLAYING_SOUND = 0.01; var FACTOR = 0.05; diff --git a/script-archive/example/audio/jsstreamplayer.js b/script-archive/example/audio/jsstreamplayer.js index 27ed32e3b5..262cb6bb29 100644 --- a/script-archive/example/audio/jsstreamplayer.js +++ b/script-archive/example/audio/jsstreamplayer.js @@ -14,12 +14,13 @@ // Declare HiFi public bucket. -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; // Declare variables and set up new WebWindow. var stream; var volume = 1; -var streamWindow = new WebWindow('Stream', HIFI_PUBLIC_BUCKET + "examples/html/jsstreamplayer.html", 0, 0, false); +var streamWindow = new WebWindow('Stream', VIRCADIA_PUBLIC_CDN + "examples/html/jsstreamplayer.html", 0, 0, false); // Set up toggleStreamURLButton overlay. var toggleStreamURLButton = Overlays.addOverlay("text", { diff --git a/script-archive/example/audio/radio.js b/script-archive/example/audio/radio.js index 5a8b4cbb88..791986ad59 100644 --- a/script-archive/example/audio/radio.js +++ b/script-archive/example/audio/radio.js @@ -9,10 +9,11 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; -var modelURL = HIFI_PUBLIC_BUCKET + "models/entities/radio/Speakers.fbx"; -var soundURL = HIFI_PUBLIC_BUCKET + "sounds/family.stereo.raw"; +var modelURL = VIRCADIA_PUBLIC_CDN + "models/entities/radio/Speakers.fbx"; +var soundURL = VIRCADIA_PUBLIC_CDN + "sounds/family.stereo.raw"; var AudioRotationOffset = Quat.fromPitchYawRollDegrees(0, -90, 0); var audioOptions = { diff --git a/script-archive/example/brownianFun.js b/script-archive/example/brownianFun.js index 533fb170dd..fd60a36070 100644 --- a/script-archive/example/brownianFun.js +++ b/script-archive/example/brownianFun.js @@ -1,5 +1,6 @@ -var HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; -var SOUND_PATH = HIFI_PUBLIC_BUCKET + "sounds/Collisions-hitsandslaps/"; +var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var SOUND_PATH = VIRCADIA_PUBLIC_CDN + "sounds/Collisions-hitsandslaps/"; var soundURLS = ["67LCollision01.wav", "67LCollision02.wav", "airhockey_hit1.wav"]; var FLOOR_SIZE = 10; var center = Vec3.sum(MyAvatar.position, Vec3.multiply(FLOOR_SIZE * 1.5, Quat.getFront(Camera.getOrientation()))); @@ -43,7 +44,7 @@ var brownianButton = Overlays.addOverlay("image", { y: screenSize.y - (BUTTON_SIZE + PADDING), width: BUTTON_SIZE, height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/blocks.png", + imageURL: VIRCADIA_PUBLIC_CDN + "images/blocks.png", color: buttonOffColor, alpha: 1 }); diff --git a/script-archive/example/dynamicLandscape.js b/script-archive/example/dynamicLandscape.js index ad247963fd..81acbde85e 100644 --- a/script-archive/example/dynamicLandscape.js +++ b/script-archive/example/dynamicLandscape.js @@ -10,8 +10,9 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; -Script.include(HIFI_PUBLIC_BUCKET + 'scripts/utilities.js') +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +Script.include(VIRCADIA_PUBLIC_CDN + 'scripts/utilities.js') var NUM_ROWS = 10; var CUBE_SIZE = 1; diff --git a/script-archive/example/entities/editModelExample.js b/script-archive/example/entities/editModelExample.js index cb8d5b39ae..38c7eb8bf5 100644 --- a/script-archive/example/entities/editModelExample.js +++ b/script-archive/example/entities/editModelExample.js @@ -11,7 +11,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var count = 0; var moveUntil = 2000; @@ -37,7 +38,7 @@ type: "Model", green: 255, blue: 0 }, - modelURL: HIFI_PUBLIC_BUCKET + "meshes/Feisar_Ship.FBX", + modelURL: VIRCADIA_PUBLIC_CDN + "meshes/Feisar_Ship.FBX", rotation: rotation diff --git a/script-archive/example/entities/entityModelExample.js b/script-archive/example/entities/entityModelExample.js index 35f29b6a62..b19bc79d9b 100644 --- a/script-archive/example/entities/entityModelExample.js +++ b/script-archive/example/entities/entityModelExample.js @@ -11,7 +11,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var count = 0; var stopAfter = 1000; @@ -26,7 +27,7 @@ var modelPropertiesA = { y: 3.34, z: 0.54 }, - modelURL: HIFI_PUBLIC_BUCKET + "meshes/Feisar_Ship.FBX", + modelURL: VIRCADIA_PUBLIC_CDN + "meshes/Feisar_Ship.FBX", lifetime: 20 }; diff --git a/script-archive/example/entities/zoneEntityExample.js b/script-archive/example/entities/zoneEntityExample.js index 2d8b587d53..080dae1216 100644 --- a/script-archive/example/entities/zoneEntityExample.js +++ b/script-archive/example/entities/zoneEntityExample.js @@ -11,7 +11,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var count = 0; var stopAfter = 1000; diff --git a/script-archive/example/entities/zoneSkyboxExample.js b/script-archive/example/entities/zoneSkyboxExample.js index 420482f14d..bc04c21662 100644 --- a/script-archive/example/entities/zoneSkyboxExample.js +++ b/script-archive/example/entities/zoneSkyboxExample.js @@ -11,7 +11,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var count = 0; var stopAfter = 600; diff --git a/script-archive/example/games/airHockey.js b/script-archive/example/games/airHockey.js index ffd237c89c..cb20338c6f 100755 --- a/script-archive/example/games/airHockey.js +++ b/script-archive/example/games/airHockey.js @@ -60,7 +60,8 @@ var puckCollisionModel = "http://headache.hungry.com/~seth/hifi/airHockeyPuck-hu var paddleModel = "https://hifi-public.s3.amazonaws.com/ozan/props/airHockeyTable/airHockeyPaddle.obj" var paddleCollisionModel = "http://headache.hungry.com/~seth/hifi/paddle-hull.obj" -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var screenSize = Controller.getViewportDimensions(); var BUTTON_SIZE = 32; var PADDING = 3; @@ -113,7 +114,7 @@ var deleteButton = Overlays.addOverlay("image", { y: screenSize.y - (BUTTON_SIZE * 2 + PADDING), width: BUTTON_SIZE, height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/delete.png", + imageURL: VIRCADIA_PUBLIC_CDN + "images/delete.png", color: { red: 255, green: 255, @@ -127,7 +128,7 @@ var spawnButton = Overlays.addOverlay("image", { y: screenSize.y - (BUTTON_SIZE * 2 + PADDING), width: BUTTON_SIZE, height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/puck.png", + imageURL: VIRCADIA_PUBLIC_CDN + "images/puck.png", color: { red: 255, green: 255, diff --git a/script-archive/example/games/billiards.js b/script-archive/example/games/billiards.js index f1329987b2..644463f925 100644 --- a/script-archive/example/games/billiards.js +++ b/script-archive/example/games/billiards.js @@ -10,7 +10,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var tableParts = []; var balls = []; @@ -33,17 +34,18 @@ var cuePosition; var startStroke = 0; // Sounds to use -var hitSound = HIFI_PUBLIC_BUCKET + "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"; +var hitSound = VIRCADIA_PUBLIC_CDN + "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"; SoundCache.getSound(hitSound); -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var screenSize = Controller.getViewportDimensions(); var reticle = Overlays.addOverlay("image", { x: screenSize.x / 2 - 16, y: screenSize.y / 2 - 16, width: 32, height: 32, - imageURL: HIFI_PUBLIC_BUCKET + "images/billiardsReticle.png", + imageURL: VIRCADIA_PUBLIC_CDN + "images/billiardsReticle.png", color: { red: 255, green: 255, blue: 255}, alpha: 1 }); diff --git a/script-archive/example/games/make-dummy.js b/script-archive/example/games/make-dummy.js index c74433aedf..370ccdfb75 100644 --- a/script-archive/example/games/make-dummy.js +++ b/script-archive/example/games/make-dummy.js @@ -15,14 +15,15 @@ /*jslint vars: true*/ var Overlays, Entities, Controller, Script, MyAvatar, Vec3; // Referenced globals provided by High Fidelity. -var HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var rezButton = Overlays.addOverlay("image", { x: 100, y: 350, width: 32, height: 32, - imageURL: HIFI_PUBLIC_BUCKET + "images/close.png", + imageURL: VIRCADIA_PUBLIC_CDN + "images/close.png", color: { red: 255, green: 255, diff --git a/script-archive/example/games/planky.js b/script-archive/example/games/planky.js index 9a88c81384..87aab32dc8 100644 --- a/script-archive/example/games/planky.js +++ b/script-archive/example/games/planky.js @@ -10,7 +10,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = 'http://s3.amazonaws.com/hifi-public/'; +VIRCADIA_PUBLIC_CDN = 'http://s3.amazonaws.com/hifi-public/'; Script.include('/~/system/libraries/toolBars.js'); @@ -190,7 +190,7 @@ PlankyStack = function() { if (!_this.ground) { _this.ground = Entities.addEntity({ type: 'Model', - modelURL: HIFI_PUBLIC_BUCKET + 'eric/models/woodFloor.fbx', + modelURL: VIRCADIA_PUBLIC_CDN + 'eric/models/woodFloor.fbx', dimensions: _this.options.baseDimension, position: Vec3.sum(_this.basePosition, {y: -(_this.options.baseDimension.y / 2)}), rotation: _this.baseRotation, @@ -247,7 +247,7 @@ PlankyStack = function() { }); var newProperties = { type: 'Model', - modelURL: HIFI_PUBLIC_BUCKET + 'marketplace/hificontent/Games/blocks/block.fbx', + modelURL: VIRCADIA_PUBLIC_CDN + 'marketplace/hificontent/Games/blocks/block.fbx', shapeType: 'box', name: 'PlankyBlock' + layer + '-' + row, dimensions: Vec3.sum(_this.options.blockSize, {x: 0, y: -((_this.options.blockSize.y * (_this.options.blockHeightVariation / MAXIMUM_PERCENTAGE)) * Math.random()), z: 0}), @@ -334,7 +334,7 @@ toolBar = new ToolBar(0, 0, ToolBar.HORIZONTAL, "highfidelity.games.planky", fun button = toolBar.addTool({ width: BUTTON_DIMENSIONS.width, height: BUTTON_DIMENSIONS.height, - imageURL: HIFI_PUBLIC_BUCKET + 'marketplace/hificontent/Games/blocks/planky_button.svg', + imageURL: VIRCADIA_PUBLIC_CDN + 'marketplace/hificontent/Games/blocks/planky_button.svg', alpha: 0.8, visible: true }); @@ -342,7 +342,7 @@ button = toolBar.addTool({ cogButton = toolBar.addTool({ width: BUTTON_DIMENSIONS.width, height: BUTTON_DIMENSIONS.height, - imageURL: HIFI_PUBLIC_BUCKET + 'marketplace/hificontent/Games/blocks/cog.svg', + imageURL: VIRCADIA_PUBLIC_CDN + 'marketplace/hificontent/Games/blocks/cog.svg', subImage: { x: 0, y: BUTTON_DIMENSIONS.height, width: BUTTON_DIMENSIONS.width, height: BUTTON_DIMENSIONS.height }, alpha: 0.8, visible: true diff --git a/script-archive/example/games/spaceInvadersExample.js b/script-archive/example/games/spaceInvadersExample.js index df7649d942..7c2f7c2ab1 100644 --- a/script-archive/example/games/spaceInvadersExample.js +++ b/script-archive/example/games/spaceInvadersExample.js @@ -11,7 +11,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var iteration = 0; @@ -93,13 +94,13 @@ var maxInvaderRowOffset=stepsToGround; var myMissile; // sounds -var hitSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Space%20Invaders/hit.raw"); -var shootSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Space%20Invaders/shoot.raw"); +var hitSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Space%20Invaders/hit.raw"); +var shootSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Space%20Invaders/shoot.raw"); var moveSounds = new Array(); -moveSounds[0] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Space%20Invaders/Lo1.raw"); -moveSounds[1] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Space%20Invaders/Lo2.raw"); -moveSounds[2] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Space%20Invaders/Lo3.raw"); -moveSounds[3] = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Space%20Invaders/Lo4.raw"); +moveSounds[0] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Space%20Invaders/Lo1.raw"); +moveSounds[1] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Space%20Invaders/Lo2.raw"); +moveSounds[2] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Space%20Invaders/Lo3.raw"); +moveSounds[3] = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Space%20Invaders/Lo4.raw"); var currentMoveSound = 0; var numberOfSounds = 4; var stepsPerSound = invaderStepsPerCycle / numberOfSounds; @@ -110,36 +111,36 @@ var soundInMyHead = true; // models... var invaderModels = new Array(); invaderModels[0] = { - modelURL: HIFI_PUBLIC_BUCKET + "meshes/space_invader.fbx", + modelURL: VIRCADIA_PUBLIC_CDN + "meshes/space_invader.fbx", modelScale: 450, modelTranslation: { x: -1.3, y: -1.3, z: -1.3 }, }; invaderModels[1] = { - modelURL: HIFI_PUBLIC_BUCKET + "meshes/space_invader.fbx", + modelURL: VIRCADIA_PUBLIC_CDN + "meshes/space_invader.fbx", modelScale: 450, modelTranslation: { x: -1.3, y: -1.3, z: -1.3 }, }; invaderModels[2] = { - modelURL: HIFI_PUBLIC_BUCKET + "meshes/space_invader.fbx", + modelURL: VIRCADIA_PUBLIC_CDN + "meshes/space_invader.fbx", modelScale: 450, modelTranslation: { x: -1.3, y: -1.3, z: -1.3 }, }; invaderModels[3] = { - modelURL: HIFI_PUBLIC_BUCKET + "meshes/space_invader.fbx", + modelURL: VIRCADIA_PUBLIC_CDN + "meshes/space_invader.fbx", modelScale: 450, modelTranslation: { x: -1.3, y: -1.3, z: -1.3 }, }; invaderModels[4] = { - modelURL: HIFI_PUBLIC_BUCKET + "meshes/space_invader.fbx", + modelURL: VIRCADIA_PUBLIC_CDN + "meshes/space_invader.fbx", modelScale: 450, modelTranslation: { x: -1.3, y: -1.3, z: -1.3 }, }; -//modelURL: HIFI_PUBLIC_BUCKET + "meshes/Feisar_Ship.FBX", -//modelURL: HIFI_PUBLIC_BUCKET + "meshes/invader.svo", -// HIFI_PUBLIC_BUCKET + "meshes/spaceInvader3.fbx" +//modelURL: VIRCADIA_PUBLIC_CDN + "meshes/Feisar_Ship.FBX", +//modelURL: VIRCADIA_PUBLIC_CDN + "meshes/invader.svo", +// VIRCADIA_PUBLIC_CDN + "meshes/spaceInvader3.fbx" function initializeMyShip() { myShipProperties = { @@ -150,7 +151,7 @@ function initializeMyShip() { damping: 0, dimensions: { x: shipSize * 2, y: shipSize * 2, z: shipSize * 2 }, color: { red: 0, green: 255, blue: 0 }, - modelURL: HIFI_PUBLIC_BUCKET + "meshes/space_invader.fbx", + modelURL: VIRCADIA_PUBLIC_CDN + "meshes/space_invader.fbx", lifetime: itemLifetimes }; myShip = Entities.addEntity(myShipProperties); diff --git a/script-archive/example/soundToys.js b/script-archive/example/soundToys.js index d46d5d8b60..c976b656b7 100644 --- a/script-archive/example/soundToys.js +++ b/script-archive/example/soundToys.js @@ -8,7 +8,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html var Camera, Vec3, Quat, Entities, Script; // Globals defined by HiFi, var'ed here to keep jslint happy. -var HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var SOUND_BUCKET = "http://public.highfidelity.io/sounds/Collisions-hitsandslaps/"; var MAX_ANGULAR_SPEED = Math.PI; var N_EACH_OBJECTS = 3; @@ -22,8 +23,8 @@ function makeAll() { right = Vec3.multiply(0.6, Quat.getRight(Camera.getOrientation())), currentDimensions, data = [ - ["models/props/Dice/goldDie.fbx", HIFI_PUBLIC_BUCKET + "sounds/dice/diceCollide.wav"], - ["models/props/Pool/ball_8.fbx", HIFI_PUBLIC_BUCKET + "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"], + ["models/props/Dice/goldDie.fbx", VIRCADIA_PUBLIC_CDN + "sounds/dice/diceCollide.wav"], + ["models/props/Pool/ball_8.fbx", VIRCADIA_PUBLIC_CDN + "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"], ["eric/models/woodFloor.fbx", SOUND_BUCKET + "67LCollision05.wav"] ]; currentPosition = Vec3.sum(currentPosition, Vec3.multiply(-1 * data.length * N_EACH_OBJECTS / 2, right)); @@ -35,7 +36,7 @@ function makeAll() { } thisEntity = Entities.addEntity({ type: "Model", - modelURL: HIFI_PUBLIC_BUCKET + model, + modelURL: VIRCADIA_PUBLIC_CDN + model, collisionSoundURL: sound, dynamic: true, shapeType: "box", diff --git a/script-archive/example/ui/overlayPanelExample.js b/script-archive/example/ui/overlayPanelExample.js index c27123c9ad..281a19d3b9 100644 --- a/script-archive/example/ui/overlayPanelExample.js +++ b/script-archive/example/ui/overlayPanelExample.js @@ -14,9 +14,9 @@ Script.include([ "../../libraries/overlayManager.js", ]); -var BG_IMAGE_URL = HIFI_PUBLIC_BUCKET + "images/card-bg.svg"; -var RED_DOT_IMAGE_URL = HIFI_PUBLIC_BUCKET + "images/red-dot.svg"; -var BLUE_SQUARE_IMAGE_URL = HIFI_PUBLIC_BUCKET + "images/blue-square.svg"; +var BG_IMAGE_URL = VIRCADIA_PUBLIC_CDN + "images/card-bg.svg"; +var RED_DOT_IMAGE_URL = VIRCADIA_PUBLIC_CDN + "images/red-dot.svg"; +var BLUE_SQUARE_IMAGE_URL = VIRCADIA_PUBLIC_CDN + "images/blue-square.svg"; var mainPanel = new OverlayPanel({ anchorPositionBinding: { avatar: "MyAvatar" }, diff --git a/script-archive/example/ui/overlaysExample.js b/script-archive/example/ui/overlaysExample.js index e4e8bf463b..54b6cd665d 100644 --- a/script-archive/example/ui/overlaysExample.js +++ b/script-archive/example/ui/overlaysExample.js @@ -11,7 +11,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; // The "Swatches" example of this script will create 9 different image overlays, that use the color feature to // display different colors as color swatches. The overlays can be clicked on, to change the "selectedSwatch" variable @@ -52,7 +53,7 @@ for (s = 0; s < numberOfSwatches; s++) { width: 31, height: 54, subImage: { x: imageFromX, y: imageFromY, width: 30, height: 54 }, - imageURL: HIFI_PUBLIC_BUCKET + "images/testing-swatches.svg", + imageURL: VIRCADIA_PUBLIC_CDN + "images/testing-swatches.svg", color: swatchColors[s], alpha: 1 }); @@ -80,7 +81,7 @@ var toolA = Overlays.addOverlay("image", { width: 62, height: 40, subImage: { x: 0, y: 0, width: 62, height: 40 }, - imageURL: HIFI_PUBLIC_BUCKET + "images/hifi-interface-tools.svg", + imageURL: VIRCADIA_PUBLIC_CDN + "images/hifi-interface-tools.svg", color: { red: 255, green: 255, blue: 255}, visible: false }); @@ -90,7 +91,7 @@ var toolA = Overlays.addOverlay("image", { var slider = Overlays.addOverlay("image", { // alternate form of expressing bounds bounds: { x: 100, y: 300, width: 158, height: 35}, - imageURL: HIFI_PUBLIC_BUCKET + "images/slider.png", + imageURL: VIRCADIA_PUBLIC_CDN + "images/slider.png", color: { red: 255, green: 255, blue: 255}, alpha: 1 }); @@ -104,7 +105,7 @@ var thumb = Overlays.addOverlay("image", { y: 309, width: 18, height: 17, - imageURL: HIFI_PUBLIC_BUCKET + "images/thumb.png", + imageURL: VIRCADIA_PUBLIC_CDN + "images/thumb.png", color: { red: 255, green: 255, blue: 255}, alpha: 1 }); @@ -200,8 +201,8 @@ print("Cube overlay color =\n" // This model overlay example causes intermittent crashes in NetworkGeometry::setTextureWithNameToURL() //var modelOverlayProperties = { // textures: { -// filename1: HIFI_PUBLIC_BUCKET + "images/testing-swatches.svg", -// filename2: HIFI_PUBLIC_BUCKET + "images/hifi-interface-tools.svg" +// filename1: VIRCADIA_PUBLIC_CDN + "images/testing-swatches.svg", +// filename2: VIRCADIA_PUBLIC_CDN + "images/hifi-interface-tools.svg" // } //} //var modelOverlay = Overlays.addOverlay("model", modelOverlayProperties); diff --git a/script-archive/fireworks.js b/script-archive/fireworks.js index 610db389ba..42aa16cea1 100644 --- a/script-archive/fireworks.js +++ b/script-archive/fireworks.js @@ -1,5 +1,6 @@ -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; -var fireSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guns/GUN-SHOT2.raw"); +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var fireSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guns/GUN-SHOT2.raw"); var audioOptions = { volume: 0.9, position: Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())) diff --git a/script-archive/golfclub/golfClub.js b/script-archive/golfclub/golfClub.js index eecca891a4..eb4592e278 100644 --- a/script-archive/golfclub/golfClub.js +++ b/script-archive/golfclub/golfClub.js @@ -13,8 +13,9 @@ (function () { var ball = null; - var HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; - var collisionSoundURL = HIFI_PUBLIC_BUCKET + "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"; + var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; + var collisionSoundURL = VIRCADIA_PUBLIC_CDN + "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"; var triggerState = false; var BALL_GRAVITY = -9.8; var BALL_START_VELOCITY = 0.1; diff --git a/script-archive/grenade.js b/script-archive/grenade.js index ab0e6b5a47..053f32f099 100644 --- a/script-archive/grenade.js +++ b/script-archive/grenade.js @@ -9,11 +9,12 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; -var grenadeURL = HIFI_PUBLIC_BUCKET + "models/props/grenade/grenade.fbx"; -var fuseSoundURL = HIFI_PUBLIC_BUCKET + "sounds/burningFuse.wav"; -var boomSoundURL = HIFI_PUBLIC_BUCKET + "sounds/explosion.wav"; +var grenadeURL = VIRCADIA_PUBLIC_CDN + "models/props/grenade/grenade.fbx"; +var fuseSoundURL = VIRCADIA_PUBLIC_CDN + "sounds/burningFuse.wav"; +var boomSoundURL = VIRCADIA_PUBLIC_CDN + "sounds/explosion.wav"; var AudioRotationOffset = Quat.fromPitchYawRollDegrees(0, -90, 0); var audioOptions = { diff --git a/script-archive/libraries/constants.js b/script-archive/libraries/constants.js index 117e72267c..fb724150f1 100644 --- a/script-archive/libraries/constants.js +++ b/script-archive/libraries/constants.js @@ -6,8 +6,9 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; -STICK_URL = HIFI_PUBLIC_BUCKET + "models/props/geo_stick.fbx"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +STICK_URL = VIRCADIA_PUBLIC_CDN + "models/props/geo_stick.fbx"; ZERO_VECTOR = { x: 0, y: 0, z: 0 }; diff --git a/script-archive/libraries/virtualKeyboard.js b/script-archive/libraries/virtualKeyboard.js index eca723dbcc..0774fe6f95 100644 --- a/script-archive/libraries/virtualKeyboard.js +++ b/script-archive/libraries/virtualKeyboard.js @@ -22,8 +22,8 @@ KBD_UPPERCASE_HOVER = 2; KBD_LOWERCASE_HOVER = 3; KBD_BACKGROUND = 4; -KEYBOARD_URL = HIFI_PUBLIC_BUCKET + "images/keyboard.svg"; -CURSOR_URL = HIFI_PUBLIC_BUCKET + "images/cursor.svg"; +KEYBOARD_URL = VIRCADIA_PUBLIC_CDN + "images/keyboard.svg"; +CURSOR_URL = VIRCADIA_PUBLIC_CDN + "images/cursor.svg"; RETURN_CHARCODE = 0x01000004; ENTER_CHARCODE = 0x01000005; diff --git a/script-archive/lineRider.js b/script-archive/lineRider.js index 21a690fc63..d5a95bcc84 100644 --- a/script-archive/lineRider.js +++ b/script-archive/lineRider.js @@ -11,7 +11,8 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html LineRider = function() { - HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; + var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var screenSize = Controller.getViewportDimensions(); var BUTTON_SIZE = 32; @@ -34,7 +35,7 @@ LineRider = function() { y: screenSize.y - (BUTTON_SIZE + PADDING), width: BUTTON_SIZE, height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/coaster.png?v2", + imageURL: VIRCADIA_PUBLIC_CDN + "images/coaster.png?v2", color: this.buttonOffColor, alpha: 1 }); diff --git a/script-archive/lobby.js b/script-archive/lobby.js index 7a06cdd906..017a144d39 100644 --- a/script-archive/lobby.js +++ b/script-archive/lobby.js @@ -9,7 +9,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var panelWall = false; var orbShell = false; @@ -45,16 +46,16 @@ var panelsCenterShift = Vec3.subtract(panelsCenter, orbCenter); var ORB_SHIFT = { x: 0, y: -1.4, z: -0.8}; -var LOBBY_PANEL_WALL_URL = HIFI_PUBLIC_BUCKET + "models/sets/Lobby/PanelWallForInterface.fbx"; -var LOBBY_BLANK_PANEL_TEXTURE_URL = HIFI_PUBLIC_BUCKET + "models/sets/Lobby/Texture.jpg"; -var LOBBY_SHELL_URL = HIFI_PUBLIC_BUCKET + "models/sets/Lobby/LobbyShellForInterface.fbx"; +var LOBBY_PANEL_WALL_URL = VIRCADIA_PUBLIC_CDN + "models/sets/Lobby/PanelWallForInterface.fbx"; +var LOBBY_BLANK_PANEL_TEXTURE_URL = VIRCADIA_PUBLIC_CDN + "models/sets/Lobby/Texture.jpg"; +var LOBBY_SHELL_URL = VIRCADIA_PUBLIC_CDN + "models/sets/Lobby/LobbyShellForInterface.fbx"; -var droneSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Lobby/drone.stereo.raw") +var droneSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Lobby/drone.stereo.raw") var currentDrone = null; -var latinSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Lobby/latin.stereo.raw") +var latinSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Lobby/latin.stereo.raw") var latinInjector = null; -var elevatorSound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Lobby/elevator.stereo.raw") +var elevatorSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Lobby/elevator.stereo.raw") var elevatorInjector = null; var currentMuzakInjector = null; var currentSound = null; diff --git a/script-archive/pointer.js b/script-archive/pointer.js index 7d24bfab6b..9fd45b018a 100644 --- a/script-archive/pointer.js +++ b/script-archive/pointer.js @@ -29,7 +29,8 @@ var buttonOnColor = { blue: 100 }; -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var userCanPoint = false; Script.include(["libraries/toolBars.js"]); @@ -39,7 +40,7 @@ var toolBar = new ToolBar(0, 0, ToolBar.HORIZONTAL, "highfidelity.pointer.toolba var pointerButton = toolBar.addOverlay("image", { width: BUTTON_SIZE, height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/laser.png", + imageURL: VIRCADIA_PUBLIC_CDN + "images/laser.png", color: buttonOffColor, alpha: 1 }); diff --git a/script-archive/recorder.js b/script-archive/recorder.js index bda4edc125..35183ed50b 100644 --- a/script-archive/recorder.js +++ b/script-archive/recorder.js @@ -9,9 +9,10 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -/* globals HIFI_PUBLIC_BUCKET:true, Tool, ToolBar */ +/* globals VIRCADIA_PUBLIC_CDN:true, Tool, ToolBar */ -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; Script.include("/~/system/libraries/toolBars.js"); var recordingFile = "recording.hfr"; @@ -25,7 +26,7 @@ function setDefaultPlayerOptions() { } var windowDimensions = Controller.getViewportDimensions(); -var TOOL_ICON_URL = HIFI_PUBLIC_BUCKET + "images/tools/"; +var TOOL_ICON_URL = VIRCADIA_PUBLIC_CDN + "images/tools/"; var ALPHA_ON = 1.0; var ALPHA_OFF = 0.7; var COLOR_ON = { red: 128, green: 0, blue: 0 }; diff --git a/script-archive/utilities/diagnostics/inWorldTestTone.js b/script-archive/utilities/diagnostics/inWorldTestTone.js index 4596bfe2ad..433dd3ba7e 100644 --- a/script-archive/utilities/diagnostics/inWorldTestTone.js +++ b/script-archive/utilities/diagnostics/inWorldTestTone.js @@ -11,9 +11,10 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; -var sound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/220Sine.wav"); +var sound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/220Sine.wav"); var soundPlaying = false; diff --git a/script-archive/utilities/diagnostics/moveJoints.js b/script-archive/utilities/diagnostics/moveJoints.js index b989cab705..a997dc69a0 100644 --- a/script-archive/utilities/diagnostics/moveJoints.js +++ b/script-archive/utilities/diagnostics/moveJoints.js @@ -11,7 +11,7 @@ Script.include("../../libraries/globals.js"); -var testAnimation = HIFI_PUBLIC_BUCKET + "ozan/animations/forStephen/sniperJump.fbx"; +var testAnimation = VIRCADIA_PUBLIC_CDN + "ozan/animations/forStephen/sniperJump.fbx"; var FRAME_RATE = 24.0; // frames per second var isAnimating = false; diff --git a/script-archive/utilities/diagnostics/playSoundLoop.js b/script-archive/utilities/diagnostics/playSoundLoop.js index 83c0ccf6d0..5e2eb73a32 100644 --- a/script-archive/utilities/diagnostics/playSoundLoop.js +++ b/script-archive/utilities/diagnostics/playSoundLoop.js @@ -11,13 +11,14 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; // A few sample files you may want to try: -var sound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Guitars/Guitar+-+Nylon+A.raw"); -//var sound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/220Sine.wav"); -//var sound = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Cocktail+Party+Snippets/Bandcamp.wav"); +var sound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guitars/Guitar+-+Nylon+A.raw"); +//var sound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/220Sine.wav"); +//var sound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Cocktail+Party+Snippets/Bandcamp.wav"); var soundPlaying = false; var options = { diff --git a/script-archive/utilities/diagnostics/playSoundWave.js b/script-archive/utilities/diagnostics/playSoundWave.js index e9bf534e35..7e4a34bfd1 100644 --- a/script-archive/utilities/diagnostics/playSoundWave.js +++ b/script-archive/utilities/diagnostics/playSoundWave.js @@ -9,9 +9,10 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; -var soundClip = SoundCache.getSound(HIFI_PUBLIC_BUCKET + "sounds/Cocktail%20Party%20Snippets/Walken1.wav"); +var soundClip = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Cocktail%20Party%20Snippets/Walken1.wav"); function playSound() { Audio.playSound(soundClip, { diff --git a/script-archive/utilities/tools/cookies.js b/script-archive/utilities/tools/cookies.js index 0e08f80d0e..99173db03e 100644 --- a/script-archive/utilities/tools/cookies.js +++ b/script-archive/utilities/tools/cookies.js @@ -10,7 +10,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var SLIDER_RANGE_INCREMENT_SCALE = 1 / 1000; var THUMB_COLOR = { @@ -784,7 +785,7 @@ var CHECK_MARK_COLOR = { green: 255, blue: 255 }, - imageURL: HIFI_PUBLIC_BUCKET + 'images/tools/expand-ui.svg', + imageURL: VIRCADIA_PUBLIC_CDN + 'images/tools/expand-ui.svg', x: x, y: y, width: rawHeight, @@ -1147,13 +1148,13 @@ var CHECK_MARK_COLOR = { if (!item.isCollapsed && item.isCollapsable && clickedOverlay == item.thumb) { Overlays.editOverlay(item.thumb, { - imageURL: HIFI_PUBLIC_BUCKET + 'images/tools/expand-right.svg' + imageURL: VIRCADIA_PUBLIC_CDN + 'images/tools/expand-right.svg' }); this.collapse(clickedOverlay); item.isCollapsed = true; } else if (item.isCollapsed && item.isCollapsable && clickedOverlay == item.thumb) { Overlays.editOverlay(item.thumb, { - imageURL: HIFI_PUBLIC_BUCKET + 'images/tools/expand-ui.svg' + imageURL: VIRCADIA_PUBLIC_CDN + 'images/tools/expand-ui.svg' }); this.expand(clickedOverlay); item.isCollapsed = false; diff --git a/script-archive/walk.js b/script-archive/walk.js index 048a192522..1901450c81 100644 --- a/script-archive/walk.js +++ b/script-archive/walk.js @@ -14,8 +14,8 @@ // // animations, reach poses, reach pose parameters, transitions, transition parameters, sounds, image/s and reference files -const HIFI_PUBLIC_BUCKET = "https://hifi-public.s3.amazonaws.com/"; -var pathToAssets = HIFI_PUBLIC_BUCKET + "procedural-animator/assets/"; +const VIRCADIA_PUBLIC_CDN = "https://hifi-public.s3.amazonaws.com/"; +var pathToAssets = VIRCADIA_PUBLIC_CDN + "procedural-animator/assets/"; Script.include([ "./libraries/walkConstants.js", diff --git a/scripts/developer/utilities/tools/cookies.js b/scripts/developer/utilities/tools/cookies.js index 0e08f80d0e..99173db03e 100644 --- a/scripts/developer/utilities/tools/cookies.js +++ b/scripts/developer/utilities/tools/cookies.js @@ -10,7 +10,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; var SLIDER_RANGE_INCREMENT_SCALE = 1 / 1000; var THUMB_COLOR = { @@ -784,7 +785,7 @@ var CHECK_MARK_COLOR = { green: 255, blue: 255 }, - imageURL: HIFI_PUBLIC_BUCKET + 'images/tools/expand-ui.svg', + imageURL: VIRCADIA_PUBLIC_CDN + 'images/tools/expand-ui.svg', x: x, y: y, width: rawHeight, @@ -1147,13 +1148,13 @@ var CHECK_MARK_COLOR = { if (!item.isCollapsed && item.isCollapsable && clickedOverlay == item.thumb) { Overlays.editOverlay(item.thumb, { - imageURL: HIFI_PUBLIC_BUCKET + 'images/tools/expand-right.svg' + imageURL: VIRCADIA_PUBLIC_CDN + 'images/tools/expand-right.svg' }); this.collapse(clickedOverlay); item.isCollapsed = true; } else if (item.isCollapsed && item.isCollapsable && clickedOverlay == item.thumb) { Overlays.editOverlay(item.thumb, { - imageURL: HIFI_PUBLIC_BUCKET + 'images/tools/expand-ui.svg' + imageURL: VIRCADIA_PUBLIC_CDN + 'images/tools/expand-ui.svg' }); this.expand(clickedOverlay); item.isCollapsed = false; diff --git a/scripts/simplifiedUI/simplifiedEmote/emojiApp/simplifiedEmoji.js b/scripts/simplifiedUI/simplifiedEmote/emojiApp/simplifiedEmoji.js index d8db41e488..4509cf37ad 100644 --- a/scripts/simplifiedUI/simplifiedEmote/emojiApp/simplifiedEmoji.js +++ b/scripts/simplifiedUI/simplifiedEmote/emojiApp/simplifiedEmoji.js @@ -22,7 +22,8 @@ var EasingFunctions = Script.require("./resources/modules/easing.js"); var emojiList = Script.require("./resources/modules/emojiList.js"); var customEmojiList = Script.require("./resources/modules/customEmojiList.js"); // The contents of this remote folder must always contain all possible emojis for users of `simplifiedEmoji.js` -var imageURLBase = "https://content.highfidelity.com/Experiences/Releases/simplifiedUI/simplifiedEmote/emojiApp/resources/images/emojis/512px/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var imageURLBase = networkingConstants.contentCDN + "MarketplaceItems/avimoji/appResources/appData/resources/images/emojis/png512/"; // Uncomment below for local testing //imageURLBase = Script.resolvePath("./resources/images/emojis/512px/"); diff --git a/scripts/system/libraries/globals.js b/scripts/system/libraries/globals.js index b51a905e0a..64d18548a1 100644 --- a/scripts/system/libraries/globals.js +++ b/scripts/system/libraries/globals.js @@ -8,6 +8,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; +var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; isInterstitialOverlaysVisible = false; diff --git a/scripts/system/libraries/networkingConstants.js b/scripts/system/libraries/networkingConstants.js index 95e91c7f85..98cfb67180 100644 --- a/scripts/system/libraries/networkingConstants.js +++ b/scripts/system/libraries/networkingConstants.js @@ -9,6 +9,16 @@ // Interface Metadata Source var interfaceMetadataSource = "https://cdn.vircadia.com/dist/launcher/vircadiaMeta.json"; +// Base CDN URLs +var contentCDN = "https://content.highfidelity.com/"; // "https://content.vircadia.com/"; +var publicBucketCDN = "http://s3.amazonaws.com/hifi-public/"; +var euCDN = "eu-c-1/"; +var usCDN = "us-c-1/"; + module.exports = { - interfaceMetadataSource: interfaceMetadataSource + interfaceMetadataSource: interfaceMetadataSource. + contentCDN: contentCDN, + publicBucketCDN: publicBucketCDN, + euCDN: euCDN, + usCDN: usCDN } diff --git a/scripts/system/libraries/progressDialog.js b/scripts/system/libraries/progressDialog.js index 4cb2644004..ede913eb24 100644 --- a/scripts/system/libraries/progressDialog.js +++ b/scripts/system/libraries/progressDialog.js @@ -8,8 +8,9 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/"; -var toolIconUrl = HIFI_PUBLIC_BUCKET + "images/tools/"; +var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var toolIconUrl = VIRCADIA_PUBLIC_CDN + "images/tools/"; progressDialog = (function () { var that = {}, From 58c1518d0bb97a486958e43c7a3beeb239b75c4a Mon Sep 17 00:00:00 2001 From: Kalila L Date: Mon, 31 Aug 2020 01:00:05 -0400 Subject: [PATCH 02/46] Updating some .cpp and .h URLs. --- interface/src/avatar/MyAvatar.cpp | 17 +++++++++-------- .../scripting/ScreenshareScriptingInterface.cpp | 3 ++- interface/src/ui/overlays/Overlays.h | 2 +- libraries/entities/src/EntityItemProperties.cpp | 2 +- libraries/networking/src/NetworkingConstants.h | 2 ++ 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 570ac5fce2..dfa3bfb21f 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -25,28 +25,29 @@ #include #include #include +#include +#include +#include #include #include +#include +#include #include +#include #include #include +#include #include +#include #include #include #include #include #include #include -#include #include #include -#include -#include -#include -#include #include -#include -#include #include #include #include @@ -82,7 +83,7 @@ const int SCRIPTED_MOTOR_AVATAR_FRAME = 1; const int SCRIPTED_MOTOR_WORLD_FRAME = 2; const int SCRIPTED_MOTOR_SIMPLE_MODE = 0; const int SCRIPTED_MOTOR_DYNAMIC_MODE = 1; -const QString& DEFAULT_AVATAR_COLLISION_SOUND_URL = "https://hifi-public.s3.amazonaws.com/sounds/Collisions-otherorganic/Body_Hits_Impact.wav"; +const QString& DEFAULT_AVATAR_COLLISION_SOUND_URL = NetworkingConstants::PUBLIC_BUCKET_CDN_URL + "sounds/Collisions-otherorganic/Body_Hits_Impact.wav"; const float MyAvatar::ZOOM_MIN = 0.5f; const float MyAvatar::ZOOM_MAX = 25.0f; diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 3bf8336fe4..3f3a0d8b17 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -129,7 +130,7 @@ static const uint8_t LOCAL_SCREENSHARE_WEB_ENTITY_FPS = 30; static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION(0.0128f, -0.0918f, 0.0f); static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS(3.6790f, 2.0990f, 0.0100f); static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = - "https://content.highfidelity.com/Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"; + NetworkingConstants::CONTENT_CDN_URL + "Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"; static const QString LOCAL_SCREENSHARE_WEB_ENTITY_HOST_TYPE = "local"; void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZoneID, const QUuid& smartboardEntityID, diff --git a/interface/src/ui/overlays/Overlays.h b/interface/src/ui/overlays/Overlays.h index 739f5ba45a..a6d4414bec 100644 --- a/interface/src/ui/overlays/Overlays.h +++ b/interface/src/ui/overlays/Overlays.h @@ -455,7 +455,7 @@ public slots: * @example Create an image overlay and report whether its image is loaded after 1s. * var overlay = Overlays.addOverlay("image", { * bounds: { x: 100, y: 100, width: 200, height: 200 }, - * imageURL: "https://content.highfidelity.com/DomainContent/production/Particles/wispy-smoke.png" + * imageURL: "https://content.vircadia.com/eu-c-1/vircadia-assets/interface/default/default_particle.png" * }); * Script.setTimeout(function () { * var isLoaded = Overlays.isLoaded(overlay); diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index d671d46c22..f4a37fa947 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -1160,7 +1160,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * speedSpread: 0.01, * emitAcceleration: { x: 0, y: 0.02, z: 0 }, * polarFinish: Math.PI, - * textures: "https://content.highfidelity.com/DomainContent/production/Particles/wispy-smoke.png", + * textures: "https://content.vircadia.com/eu-c-1/vircadia-assets/interface/default/default_particle.png", * particleRadius: 0.1, * color: { red: 0, green: 255, blue: 0 }, * alphaFinish: 0, diff --git a/libraries/networking/src/NetworkingConstants.h b/libraries/networking/src/NetworkingConstants.h index b2e9c4c828..ede95830c6 100644 --- a/libraries/networking/src/NetworkingConstants.h +++ b/libraries/networking/src/NetworkingConstants.h @@ -43,6 +43,8 @@ namespace NetworkingConstants { const QUrl BUILDS_XML_URL("https://highfidelity.com/builds.xml"); const QUrl MASTER_BUILDS_XML_URL("https://highfidelity.com/dev-builds.xml"); + const QString CONTENT_CDN_URL = "https://content.highfidelity.com/"; + const QString PUBLIC_BUCKET_CDN_URL = "https://hifi-public.s3.amazonaws.com/"; #if USE_STABLE_GLOBAL_SERVICES const QString ICE_SERVER_DEFAULT_HOSTNAME = "ice.highfidelity.com"; From 61d12c66413492ded29622b7f79809283370b3a5 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Mon, 31 Aug 2020 01:03:24 -0400 Subject: [PATCH 03/46] Caps the variables. --- script-archive/acScripts/ControlACs.js | 2 +- script-archive/acScripts/botProceduralWayPoints.js | 2 +- script-archive/acScripts/bot_randomExpression.js | 2 +- script-archive/acScripts/playbackMaster.js | 2 +- script-archive/acScripts/simpleBot.js | 2 +- script-archive/airship/airship.js | 2 +- script-archive/avatarSelector.js | 2 +- script-archive/blockWorld.js | 2 +- script-archive/controllers/hydra/airGuitar.js | 2 +- script-archive/controllers/hydra/drumStick.js | 2 +- script-archive/controllers/hydra/frisbee.js | 2 +- script-archive/controllers/hydra/gun.js | 2 +- script-archive/controllers/hydra/paddleBall.js | 2 +- script-archive/controllers/hydra/toyball.js | 2 +- script-archive/controllers/toybox.js | 2 +- script-archive/entityScripts/recordingMaster.js | 2 +- script-archive/example/audio/audioBall.js | 2 +- script-archive/example/audio/jsstreamplayer.js | 2 +- script-archive/example/audio/radio.js | 2 +- script-archive/example/brownianFun.js | 2 +- script-archive/example/dynamicLandscape.js | 2 +- script-archive/example/entities/editModelExample.js | 2 +- .../example/entities/entityModelExample.js | 2 +- script-archive/example/entities/zoneEntityExample.js | 2 +- script-archive/example/entities/zoneSkyboxExample.js | 2 +- script-archive/example/games/airHockey.js | 2 +- script-archive/example/games/billiards.js | 4 ++-- script-archive/example/games/make-dummy.js | 2 +- script-archive/example/games/spaceInvadersExample.js | 2 +- script-archive/example/soundToys.js | 2 +- script-archive/example/ui/overlaysExample.js | 2 +- script-archive/fireworks.js | 2 +- script-archive/golfclub/golfClub.js | 2 +- script-archive/grenade.js | 2 +- script-archive/libraries/constants.js | 2 +- script-archive/lineRider.js | 2 +- script-archive/lobby.js | 2 +- script-archive/pointer.js | 2 +- script-archive/recorder.js | 2 +- .../utilities/diagnostics/inWorldTestTone.js | 2 +- .../utilities/diagnostics/playSoundLoop.js | 2 +- .../utilities/diagnostics/playSoundWave.js | 2 +- script-archive/utilities/tools/cookies.js | 2 +- scripts/developer/utilities/tools/cookies.js | 2 +- .../simplifiedEmote/emojiApp/simplifiedEmoji.js | 2 +- scripts/system/checkForUpdates.js | 2 +- scripts/system/libraries/globals.js | 2 +- scripts/system/libraries/networkingConstants.js | 12 ++++++------ scripts/system/libraries/progressDialog.js | 2 +- 49 files changed, 55 insertions(+), 55 deletions(-) diff --git a/script-archive/acScripts/ControlACs.js b/script-archive/acScripts/ControlACs.js index a66d62b872..0208aefab6 100644 --- a/script-archive/acScripts/ControlACs.js +++ b/script-archive/acScripts/ControlACs.js @@ -10,7 +10,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; // Set the following variables to the right value var NUM_AC = 3; // This is the number of AC. Their ID need to be unique and between 0 (included) and NUM_AC (excluded) diff --git a/script-archive/acScripts/botProceduralWayPoints.js b/script-archive/acScripts/botProceduralWayPoints.js index 097819829d..0b757bebee 100644 --- a/script-archive/acScripts/botProceduralWayPoints.js +++ b/script-archive/acScripts/botProceduralWayPoints.js @@ -21,7 +21,7 @@ //For procedural walk animation var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; Script.include(VIRCADIA_PUBLIC_CDN + "scripts/acScripts/proceduralAnimationAPI.js"); var procAnimAPI = new ProcAnimAPI(); diff --git a/script-archive/acScripts/bot_randomExpression.js b/script-archive/acScripts/bot_randomExpression.js index 6ff1140c6e..30d30b79b5 100644 --- a/script-archive/acScripts/bot_randomExpression.js +++ b/script-archive/acScripts/bot_randomExpression.js @@ -13,7 +13,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -VIRCADIA_PUBLIC_CDN = networkingConstants.contentCDN; +VIRCADIA_PUBLIC_CDN = networkingConstants.CONTENT_CDN_URL; function getRandomFloat(min, max) { return Math.random() * (max - min) + min; diff --git a/script-archive/acScripts/playbackMaster.js b/script-archive/acScripts/playbackMaster.js index e2ce2d8f3b..83b9374d67 100644 --- a/script-archive/acScripts/playbackMaster.js +++ b/script-archive/acScripts/playbackMaster.js @@ -11,7 +11,7 @@ Script.include("./AgentPoolController.js"); var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var masterController = new MasterController(); diff --git a/script-archive/acScripts/simpleBot.js b/script-archive/acScripts/simpleBot.js index abe8894db7..284b92f103 100644 --- a/script-archive/acScripts/simpleBot.js +++ b/script-archive/acScripts/simpleBot.js @@ -10,7 +10,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; function getRandomFloat(min, max) { return Math.random() * (max - min) + min; diff --git a/script-archive/airship/airship.js b/script-archive/airship/airship.js index 38debb9909..ecf15300f0 100644 --- a/script-archive/airship/airship.js +++ b/script-archive/airship/airship.js @@ -30,7 +30,7 @@ audioInjector = null; var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var cannonSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "philip/cannonShot.wav"); var explosionSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "philip/explosion.wav"); diff --git a/script-archive/avatarSelector.js b/script-archive/avatarSelector.js index e7ebfbf73c..6d5460af74 100644 --- a/script-archive/avatarSelector.js +++ b/script-archive/avatarSelector.js @@ -12,7 +12,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var panelWall = false; var orbShell = false; diff --git a/script-archive/blockWorld.js b/script-archive/blockWorld.js index a1a5366939..5f292b4061 100644 --- a/script-archive/blockWorld.js +++ b/script-archive/blockWorld.js @@ -20,7 +20,7 @@ var blocks = []; var blockSpawner; var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var floorPos = Vec3.sum(MyAvatar.position, { diff --git a/script-archive/controllers/hydra/airGuitar.js b/script-archive/controllers/hydra/airGuitar.js index 785136fa65..73520e3694 100644 --- a/script-archive/controllers/hydra/airGuitar.js +++ b/script-archive/controllers/hydra/airGuitar.js @@ -11,7 +11,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; function length(v) { return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z); diff --git a/script-archive/controllers/hydra/drumStick.js b/script-archive/controllers/hydra/drumStick.js index c3389e9a05..46036ef824 100644 --- a/script-archive/controllers/hydra/drumStick.js +++ b/script-archive/controllers/hydra/drumStick.js @@ -11,7 +11,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; function length(v) { return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z); diff --git a/script-archive/controllers/hydra/frisbee.js b/script-archive/controllers/hydra/frisbee.js index 2b392da992..ba737b5439 100644 --- a/script-archive/controllers/hydra/frisbee.js +++ b/script-archive/controllers/hydra/frisbee.js @@ -16,7 +16,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; Script.include("../../libraries/toolBars.js"); const LEFT_PALM = 0; diff --git a/script-archive/controllers/hydra/gun.js b/script-archive/controllers/hydra/gun.js index 2499bcbc6e..b65910dd1d 100644 --- a/script-archive/controllers/hydra/gun.js +++ b/script-archive/controllers/hydra/gun.js @@ -23,7 +23,7 @@ Script.include("../../libraries/constants.js"); Script.include("../../libraries/toolBars.js"); var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var LASER_WIDTH = 2; var POSE_CONTROLS = [ Controller.Standard.LeftHand, Controller.Standard.RightHand ]; diff --git a/script-archive/controllers/hydra/paddleBall.js b/script-archive/controllers/hydra/paddleBall.js index a8253a8c33..f50a2bd060 100644 --- a/script-archive/controllers/hydra/paddleBall.js +++ b/script-archive/controllers/hydra/paddleBall.js @@ -11,7 +11,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; hitSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"); var rightHandAnimation = VIRCADIA_PUBLIC_CDN + "animations/RightHandAnimPhilip.fbx"; diff --git a/script-archive/controllers/hydra/toyball.js b/script-archive/controllers/hydra/toyball.js index deb6523fe1..d41c8431e1 100644 --- a/script-archive/controllers/hydra/toyball.js +++ b/script-archive/controllers/hydra/toyball.js @@ -16,7 +16,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; // maybe we should make these constants... var LEFT_PALM = 0; diff --git a/script-archive/controllers/toybox.js b/script-archive/controllers/toybox.js index 77895aa8b2..c4fa9e8c27 100644 --- a/script-archive/controllers/toybox.js +++ b/script-archive/controllers/toybox.js @@ -12,7 +12,7 @@ Script.include("http://s3.amazonaws.com/hifi-public/scripts/libraries/toolBars.js"); var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; diff --git a/script-archive/entityScripts/recordingMaster.js b/script-archive/entityScripts/recordingMaster.js index 00a6fcccc1..47b2791105 100644 --- a/script-archive/entityScripts/recordingMaster.js +++ b/script-archive/entityScripts/recordingMaster.js @@ -11,7 +11,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; Script.include(VIRCADIA_PUBLIC_CDN + "scripts/libraries/toolBars.js"); Script.include(VIRCADIA_PUBLIC_CDN + "scripts/libraries/utils.js"); diff --git a/script-archive/example/audio/audioBall.js b/script-archive/example/audio/audioBall.js index af5227ea39..44b0d37157 100644 --- a/script-archive/example/audio/audioBall.js +++ b/script-archive/example/audio/audioBall.js @@ -14,7 +14,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var sound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Animals/mexicanWhipoorwill.raw"); var CHANCE_OF_PLAYING_SOUND = 0.01; diff --git a/script-archive/example/audio/jsstreamplayer.js b/script-archive/example/audio/jsstreamplayer.js index 262cb6bb29..93b3cd55b5 100644 --- a/script-archive/example/audio/jsstreamplayer.js +++ b/script-archive/example/audio/jsstreamplayer.js @@ -15,7 +15,7 @@ // Declare HiFi public bucket. var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; // Declare variables and set up new WebWindow. var stream; diff --git a/script-archive/example/audio/radio.js b/script-archive/example/audio/radio.js index 791986ad59..fc614a5eb4 100644 --- a/script-archive/example/audio/radio.js +++ b/script-archive/example/audio/radio.js @@ -10,7 +10,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var modelURL = VIRCADIA_PUBLIC_CDN + "models/entities/radio/Speakers.fbx"; var soundURL = VIRCADIA_PUBLIC_CDN + "sounds/family.stereo.raw"; diff --git a/script-archive/example/brownianFun.js b/script-archive/example/brownianFun.js index fd60a36070..5a29b03768 100644 --- a/script-archive/example/brownianFun.js +++ b/script-archive/example/brownianFun.js @@ -1,5 +1,5 @@ var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var SOUND_PATH = VIRCADIA_PUBLIC_CDN + "sounds/Collisions-hitsandslaps/"; var soundURLS = ["67LCollision01.wav", "67LCollision02.wav", "airhockey_hit1.wav"]; var FLOOR_SIZE = 10; diff --git a/script-archive/example/dynamicLandscape.js b/script-archive/example/dynamicLandscape.js index 81acbde85e..e2ada16612 100644 --- a/script-archive/example/dynamicLandscape.js +++ b/script-archive/example/dynamicLandscape.js @@ -11,7 +11,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; Script.include(VIRCADIA_PUBLIC_CDN + 'scripts/utilities.js') var NUM_ROWS = 10; diff --git a/script-archive/example/entities/editModelExample.js b/script-archive/example/entities/editModelExample.js index 38c7eb8bf5..4caf68e729 100644 --- a/script-archive/example/entities/editModelExample.js +++ b/script-archive/example/entities/editModelExample.js @@ -12,7 +12,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var count = 0; var moveUntil = 2000; diff --git a/script-archive/example/entities/entityModelExample.js b/script-archive/example/entities/entityModelExample.js index b19bc79d9b..0d5991392d 100644 --- a/script-archive/example/entities/entityModelExample.js +++ b/script-archive/example/entities/entityModelExample.js @@ -12,7 +12,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var count = 0; var stopAfter = 1000; diff --git a/script-archive/example/entities/zoneEntityExample.js b/script-archive/example/entities/zoneEntityExample.js index 080dae1216..76e770f9a7 100644 --- a/script-archive/example/entities/zoneEntityExample.js +++ b/script-archive/example/entities/zoneEntityExample.js @@ -12,7 +12,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var count = 0; var stopAfter = 1000; diff --git a/script-archive/example/entities/zoneSkyboxExample.js b/script-archive/example/entities/zoneSkyboxExample.js index bc04c21662..6088307b2f 100644 --- a/script-archive/example/entities/zoneSkyboxExample.js +++ b/script-archive/example/entities/zoneSkyboxExample.js @@ -12,7 +12,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var count = 0; var stopAfter = 600; diff --git a/script-archive/example/games/airHockey.js b/script-archive/example/games/airHockey.js index cb20338c6f..517e5ab28c 100755 --- a/script-archive/example/games/airHockey.js +++ b/script-archive/example/games/airHockey.js @@ -61,7 +61,7 @@ var paddleModel = "https://hifi-public.s3.amazonaws.com/ozan/props/airHockeyTabl var paddleCollisionModel = "http://headache.hungry.com/~seth/hifi/paddle-hull.obj" var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var screenSize = Controller.getViewportDimensions(); var BUTTON_SIZE = 32; var PADDING = 3; diff --git a/script-archive/example/games/billiards.js b/script-archive/example/games/billiards.js index 644463f925..c7782c6cd4 100644 --- a/script-archive/example/games/billiards.js +++ b/script-archive/example/games/billiards.js @@ -11,7 +11,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var tableParts = []; var balls = []; @@ -38,7 +38,7 @@ var hitSound = VIRCADIA_PUBLIC_CDN + "sounds/Collisions-ballhitsandcatches/billi SoundCache.getSound(hitSound); var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var screenSize = Controller.getViewportDimensions(); var reticle = Overlays.addOverlay("image", { x: screenSize.x / 2 - 16, diff --git a/script-archive/example/games/make-dummy.js b/script-archive/example/games/make-dummy.js index 370ccdfb75..bdb1f347fe 100644 --- a/script-archive/example/games/make-dummy.js +++ b/script-archive/example/games/make-dummy.js @@ -16,7 +16,7 @@ var Overlays, Entities, Controller, Script, MyAvatar, Vec3; // Referenced globals provided by High Fidelity. var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var rezButton = Overlays.addOverlay("image", { x: 100, diff --git a/script-archive/example/games/spaceInvadersExample.js b/script-archive/example/games/spaceInvadersExample.js index 7c2f7c2ab1..ecd24c5eb9 100644 --- a/script-archive/example/games/spaceInvadersExample.js +++ b/script-archive/example/games/spaceInvadersExample.js @@ -12,7 +12,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var iteration = 0; diff --git a/script-archive/example/soundToys.js b/script-archive/example/soundToys.js index c976b656b7..c021599639 100644 --- a/script-archive/example/soundToys.js +++ b/script-archive/example/soundToys.js @@ -9,7 +9,7 @@ var Camera, Vec3, Quat, Entities, Script; // Globals defined by HiFi, var'ed here to keep jslint happy. var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var SOUND_BUCKET = "http://public.highfidelity.io/sounds/Collisions-hitsandslaps/"; var MAX_ANGULAR_SPEED = Math.PI; var N_EACH_OBJECTS = 3; diff --git a/script-archive/example/ui/overlaysExample.js b/script-archive/example/ui/overlaysExample.js index 54b6cd665d..13324fa9f1 100644 --- a/script-archive/example/ui/overlaysExample.js +++ b/script-archive/example/ui/overlaysExample.js @@ -12,7 +12,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; // The "Swatches" example of this script will create 9 different image overlays, that use the color feature to // display different colors as color swatches. The overlays can be clicked on, to change the "selectedSwatch" variable diff --git a/script-archive/fireworks.js b/script-archive/fireworks.js index 42aa16cea1..11f50fb478 100644 --- a/script-archive/fireworks.js +++ b/script-archive/fireworks.js @@ -1,5 +1,5 @@ var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var fireSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guns/GUN-SHOT2.raw"); var audioOptions = { volume: 0.9, diff --git a/script-archive/golfclub/golfClub.js b/script-archive/golfclub/golfClub.js index eb4592e278..0fb13a47ad 100644 --- a/script-archive/golfclub/golfClub.js +++ b/script-archive/golfclub/golfClub.js @@ -14,7 +14,7 @@ (function () { var ball = null; var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var collisionSoundURL = VIRCADIA_PUBLIC_CDN + "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"; var triggerState = false; var BALL_GRAVITY = -9.8; diff --git a/script-archive/grenade.js b/script-archive/grenade.js index 053f32f099..264c884162 100644 --- a/script-archive/grenade.js +++ b/script-archive/grenade.js @@ -10,7 +10,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var grenadeURL = VIRCADIA_PUBLIC_CDN + "models/props/grenade/grenade.fbx"; var fuseSoundURL = VIRCADIA_PUBLIC_CDN + "sounds/burningFuse.wav"; diff --git a/script-archive/libraries/constants.js b/script-archive/libraries/constants.js index fb724150f1..fa9fe7def9 100644 --- a/script-archive/libraries/constants.js +++ b/script-archive/libraries/constants.js @@ -7,7 +7,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; STICK_URL = VIRCADIA_PUBLIC_CDN + "models/props/geo_stick.fbx"; ZERO_VECTOR = { x: 0, y: 0, z: 0 }; diff --git a/script-archive/lineRider.js b/script-archive/lineRider.js index d5a95bcc84..d2e8b67070 100644 --- a/script-archive/lineRider.js +++ b/script-archive/lineRider.js @@ -12,7 +12,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html LineRider = function() { var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var screenSize = Controller.getViewportDimensions(); var BUTTON_SIZE = 32; diff --git a/script-archive/lobby.js b/script-archive/lobby.js index 017a144d39..714a329f09 100644 --- a/script-archive/lobby.js +++ b/script-archive/lobby.js @@ -10,7 +10,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var panelWall = false; var orbShell = false; diff --git a/script-archive/pointer.js b/script-archive/pointer.js index 9fd45b018a..d7e9ec9914 100644 --- a/script-archive/pointer.js +++ b/script-archive/pointer.js @@ -30,7 +30,7 @@ var buttonOnColor = { }; var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var userCanPoint = false; Script.include(["libraries/toolBars.js"]); diff --git a/script-archive/recorder.js b/script-archive/recorder.js index 35183ed50b..c5f379c0e2 100644 --- a/script-archive/recorder.js +++ b/script-archive/recorder.js @@ -12,7 +12,7 @@ /* globals VIRCADIA_PUBLIC_CDN:true, Tool, ToolBar */ var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; Script.include("/~/system/libraries/toolBars.js"); var recordingFile = "recording.hfr"; diff --git a/script-archive/utilities/diagnostics/inWorldTestTone.js b/script-archive/utilities/diagnostics/inWorldTestTone.js index 433dd3ba7e..43b22f9ca7 100644 --- a/script-archive/utilities/diagnostics/inWorldTestTone.js +++ b/script-archive/utilities/diagnostics/inWorldTestTone.js @@ -12,7 +12,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var sound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/220Sine.wav"); diff --git a/script-archive/utilities/diagnostics/playSoundLoop.js b/script-archive/utilities/diagnostics/playSoundLoop.js index 5e2eb73a32..27a01a500f 100644 --- a/script-archive/utilities/diagnostics/playSoundLoop.js +++ b/script-archive/utilities/diagnostics/playSoundLoop.js @@ -12,7 +12,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; // A few sample files you may want to try: diff --git a/script-archive/utilities/diagnostics/playSoundWave.js b/script-archive/utilities/diagnostics/playSoundWave.js index 7e4a34bfd1..00febbeecb 100644 --- a/script-archive/utilities/diagnostics/playSoundWave.js +++ b/script-archive/utilities/diagnostics/playSoundWave.js @@ -10,7 +10,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var soundClip = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Cocktail%20Party%20Snippets/Walken1.wav"); diff --git a/script-archive/utilities/tools/cookies.js b/script-archive/utilities/tools/cookies.js index 99173db03e..8dd6a1d6da 100644 --- a/script-archive/utilities/tools/cookies.js +++ b/script-archive/utilities/tools/cookies.js @@ -11,7 +11,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var SLIDER_RANGE_INCREMENT_SCALE = 1 / 1000; var THUMB_COLOR = { diff --git a/scripts/developer/utilities/tools/cookies.js b/scripts/developer/utilities/tools/cookies.js index 99173db03e..8dd6a1d6da 100644 --- a/scripts/developer/utilities/tools/cookies.js +++ b/scripts/developer/utilities/tools/cookies.js @@ -11,7 +11,7 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var SLIDER_RANGE_INCREMENT_SCALE = 1 / 1000; var THUMB_COLOR = { diff --git a/scripts/simplifiedUI/simplifiedEmote/emojiApp/simplifiedEmoji.js b/scripts/simplifiedUI/simplifiedEmote/emojiApp/simplifiedEmoji.js index 4509cf37ad..0c5eac5126 100644 --- a/scripts/simplifiedUI/simplifiedEmote/emojiApp/simplifiedEmoji.js +++ b/scripts/simplifiedUI/simplifiedEmote/emojiApp/simplifiedEmoji.js @@ -23,7 +23,7 @@ var emojiList = Script.require("./resources/modules/emojiList.js"); var customEmojiList = Script.require("./resources/modules/customEmojiList.js"); // The contents of this remote folder must always contain all possible emojis for users of `simplifiedEmoji.js` var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var imageURLBase = networkingConstants.contentCDN + "MarketplaceItems/avimoji/appResources/appData/resources/images/emojis/png512/"; +var imageURLBase = networkingConstants.CONTENT_CDN_URL + "MarketplaceItems/avimoji/appResources/appData/resources/images/emojis/png512/"; // Uncomment below for local testing //imageURLBase = Script.resolvePath("./resources/images/emojis/512px/"); diff --git a/scripts/system/checkForUpdates.js b/scripts/system/checkForUpdates.js index 724cd0a68d..f2d12ed759 100644 --- a/scripts/system/checkForUpdates.js +++ b/scripts/system/checkForUpdates.js @@ -21,7 +21,7 @@ var notificationText = "An update is available: "; var notificationColor = { red: 137, green: 63, blue: 255 }; function retrieveMetadata() { - var requireMetadata = Script.require(networkingConstants.interfaceMetadataSource + '?' + Date.now()); + var requireMetadata = Script.require(networkingConstants.INTERFACE_METADATA_SOURCE + '?' + Date.now()); if (requireMetadata) { return requireMetadata; diff --git a/scripts/system/libraries/globals.js b/scripts/system/libraries/globals.js index 64d18548a1..27ccc6f8aa 100644 --- a/scripts/system/libraries/globals.js +++ b/scripts/system/libraries/globals.js @@ -9,6 +9,6 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; isInterstitialOverlaysVisible = false; diff --git a/scripts/system/libraries/networkingConstants.js b/scripts/system/libraries/networkingConstants.js index 98cfb67180..5c390eec0b 100644 --- a/scripts/system/libraries/networkingConstants.js +++ b/scripts/system/libraries/networkingConstants.js @@ -7,18 +7,18 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // Interface Metadata Source -var interfaceMetadataSource = "https://cdn.vircadia.com/dist/launcher/vircadiaMeta.json"; +var INTERFACE_METADATA_SOURCE = "https://cdn.vircadia.com/dist/launcher/vircadiaMeta.json"; // Base CDN URLs -var contentCDN = "https://content.highfidelity.com/"; // "https://content.vircadia.com/"; -var publicBucketCDN = "http://s3.amazonaws.com/hifi-public/"; +var CONTENT_CDN_URL = "https://content.highfidelity.com/"; // "https://content.vircadia.com/"; +var PUBLIC_BUCKET_CDN_URL = "http://s3.amazonaws.com/hifi-public/"; var euCDN = "eu-c-1/"; var usCDN = "us-c-1/"; module.exports = { - interfaceMetadataSource: interfaceMetadataSource. - contentCDN: contentCDN, - publicBucketCDN: publicBucketCDN, + INTERFACE_METADATA_SOURCE: INTERFACE_METADATA_SOURCE. + CONTENT_CDN_URL: CONTENT_CDN_URL, + PUBLIC_BUCKET_CDN_URL: PUBLIC_BUCKET_CDN_URL, euCDN: euCDN, usCDN: usCDN } diff --git a/scripts/system/libraries/progressDialog.js b/scripts/system/libraries/progressDialog.js index ede913eb24..e1ec11b4b7 100644 --- a/scripts/system/libraries/progressDialog.js +++ b/scripts/system/libraries/progressDialog.js @@ -9,7 +9,7 @@ // var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.publicBucketCDN; +var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var toolIconUrl = VIRCADIA_PUBLIC_CDN + "images/tools/"; progressDialog = (function () { From c65cc9570d5d846855b963cdbdc00adcc89aed78 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Sun, 6 Sep 2020 23:10:23 +0200 Subject: [PATCH 04/46] Prototype for moving content away from hifi infrastructure --- interface/src/Application.cpp | 11 ++ .../ScreenshareScriptingInterface.cpp | 5 +- libraries/networking/src/ExternalResource.cpp | 56 +++++++ libraries/networking/src/ExternalResource.h | 141 ++++++++++++++++++ scripts/system/create/edit.js | 4 +- 5 files changed, 213 insertions(+), 4 deletions(-) create mode 100644 libraries/networking/src/ExternalResource.cpp create mode 100644 libraries/networking/src/ExternalResource.h diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 643600f5d5..bbbc51ecf1 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -253,6 +253,7 @@ #include #include "AboutUtil.h" +#include "ExternalResource.h" #if defined(Q_OS_WIN) #include @@ -3294,6 +3295,7 @@ void Application::initializeUi() { qmlRegisterType("Hifi", 1, 0, "ResourceImageItem"); qmlRegisterType("Hifi", 1, 0, "Preference"); qmlRegisterType("HifiWeb", 1, 0, "WebBrowserSuggestionsEngine"); + // qmlRegisterType("ExternalResource", 1, 0, "ExternalResource"); { auto tabletScriptingInterface = DependencyManager::get(); @@ -7535,6 +7537,15 @@ void Application::registerScriptEngineWithApplicationServices(const ScriptEngine scriptEngine->registerGlobalObject("HifiAbout", AboutUtil::getInstance()); // Deprecated. scriptEngine->registerGlobalObject("ResourceRequestObserver", DependencyManager::get().data()); + // This is obviously wrong -- FIXME! + scriptEngine->registerValue("Bucket.Public", static_cast(ExternalResource::Bucket::Public)); + scriptEngine->registerValue("Bucket.Content", static_cast(ExternalResource::Bucket::Content)); + scriptEngine->registerValue("Bucket.MPAssets", static_cast(ExternalResource::Bucket::MPAssets)); + scriptEngine->registerValue("Bucket.Assets", static_cast(ExternalResource::Bucket::Assets)); + + + scriptEngine->registerGlobalObject("ExternalResource", ExternalResource::getInstance()); + registerInteractiveWindowMetaType(scriptEngine.data()); auto pickScriptingInterface = DependencyManager::get(); diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 7ef437a609..21d19f6466 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -23,6 +23,7 @@ #include "EntityScriptingInterface.h" #include "ScreenshareScriptingInterface.h" +#include "ExternalResource.h" static const int SCREENSHARE_INFO_REQUEST_RETRY_TIMEOUT_MS = 300; ScreenshareScriptingInterface::ScreenshareScriptingInterface() { @@ -128,8 +129,8 @@ static const uint8_t LOCAL_SCREENSHARE_WEB_ENTITY_FPS = 30; // The `z` value here is dynamic. static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION(0.0128f, -0.0918f, 0.0f); static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS(3.6790f, 2.0990f, 0.0100f); -static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = - "https://content.highfidelity.com/Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"; +static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = ExternalResource::getInstance()->getUrl(ExternalResource::Bucket::Content, + "Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"); static const QString LOCAL_SCREENSHARE_WEB_ENTITY_HOST_TYPE = "local"; void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZoneID, const QUuid& smartboardEntityID, diff --git a/libraries/networking/src/ExternalResource.cpp b/libraries/networking/src/ExternalResource.cpp new file mode 100644 index 0000000000..9b816ece9f --- /dev/null +++ b/libraries/networking/src/ExternalResource.cpp @@ -0,0 +1,56 @@ +// +// ExternalResource.h +// +// Created by Dale Glass on 6 Sep 2020 +// Copyright 2020 Vircadia contributors. +// +// Flexible management for external resources (eg, on S3) +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html + +#include "ExternalResource.h" +#include +#include + + +Q_LOGGING_CATEGORY(external_resource, "vircadia.networking.external_resource") + + +ExternalResource::ExternalResource(QObject *parent) : QObject(parent) { + +} + + +ExternalResource * ExternalResource::getInstance() { + static ExternalResource instance; + return &instance; +} + +QUrl ExternalResource::getQUrl(Bucket bucket, const QUrl &relative_path) { + qCDebug(external_resource) << "Requested URL for bucket " << bucket << ", path " << relative_path; + + if ( !_bucketBases.contains(bucket)) { + qCCritical(external_resource) << "External resource " << relative_path << " was requested from unrecognized bucket " << bucket; + return QUrl(); + } + + if ( !relative_path.isValid() ) { + qCCritical(external_resource) << "External resource " << relative_path << " was requested from bucket " << bucket << " with an invalid path. Error: " << relative_path.errorString(); + return QUrl(); + } + + if ( !relative_path.isRelative() ) { + qCWarning(external_resource) << "External resource " << relative_path << " was requested from bucket " << bucket << " without using a relative path, returning as-is."; + return relative_path; + } + + QUrl base = _bucketBases[bucket]; + QUrl merged = base.resolved(relative_path); + + + qCDebug(external_resource) << "External resource resolved to " << merged; + + return merged; +} + diff --git a/libraries/networking/src/ExternalResource.h b/libraries/networking/src/ExternalResource.h new file mode 100644 index 0000000000..c07208c452 --- /dev/null +++ b/libraries/networking/src/ExternalResource.h @@ -0,0 +1,141 @@ +// +// ExternalResource.h +// +// Created by Dale Glass on 6 Sep 2020 +// Copyright 2020 Vircadia contributors. +// +// Flexible management for external resources (eg, on S3) +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html + +#ifndef vircadia_ExternalResource_h +#define vircadia_ExternalResource_h + +#include +#include +#include + + +/** + * Flexible management for external resources + * + * With the death of the original High Fidelity and the transition of the project to a community-managed + * one, it became necessary to deal with that the various assets that used to be located under the + * highfidelity.com domain will disappear, and there won't be a fixed place for them afterwards. Data + * hosted by community members may not remain forever, reorganization may be necessary, people may want + * to run mirrors, and some might want to run without external internet access at all. + * + * This class makes it possible to deal with this in a more flexible manner: rather than hardcoding URLs + * all over the codebase, now it's possible to easily change where all those things are downloaded from. + * + * + */ +class ExternalResource : public QObject { + Q_OBJECT + + public: + + static ExternalResource *getInstance(); + ~ExternalResource() {}; + + + /** + * Bucket from which to retrieve the resource + * + * The original High Fidelity used the Public, Content and MPAssets buckets. The intention is that the + * community-run versions of these will keep the original data and structure, and any new additions + * will be done to the Assets bucket instead. This should ease the transition and ensure a clean + * separation. + */ + enum class Bucket { + /** Assets that used to be in the hifi-public S3 bucket */ + Public, + + /** Assets that used to be in the hifi-content S3 bucket */ + Content, + + /** Assets that used to be in the mpassets S3 bucket (hifi marketplace) */ + MPAssets, + + /** Vircadia assets */ + Assets + }; + + Q_ENUM(Bucket) + + /** + * Returns the location of a resource as a QUrl + * + * Returns the location of the resource \p relative_path in bucket \p bucket + * + * @note The resulting path will be sanitized by condensing multiple instances of '/' to one. + * This is done for easier usage with Amazon S3 and compatible systems. + * + * @param bucket The bucket in which the resource is found + * @param relative_path The path of the resource within the bucket + * @returns The resulting URL as a QUrl + */ + Q_INVOKABLE QUrl getQUrl(Bucket bucket, const QUrl& relative_path); + + + /** + * Returns the location of a resource as a QUrl + * + * Returns the location of the resource \p relative_path in bucket \p bucket + * + * @note The resulting path will be sanitized by condensing multiple instances of '/' to one. + * This is done for easier usage with Amazon S3 and compatible systems. + * + * @param bucket The bucket in which the resource is found + * @param relative_path The path of the resource within the bucket + * @returns The resulting URL as a QUrl + */ + Q_INVOKABLE QUrl getQUrl(Bucket bucket, QString path) { + return getQUrl(bucket, QUrl(path)); + } + + /** + * Returns the location of a resource as a QString + * + * Returns the location of the resource \p relative_path in bucket \p bucket + * + * @note The resulting path will be sanitized by condensing multiple instances of '/' to one. + * This is done for easier usage with Amazon S3 and compatible systems. + * + * @param bucket The bucket in which the resource is found + * @param relative_path The path of the resource within the bucket + * @returns The resulting URL as a QString + */ + Q_INVOKABLE QString getUrl(Bucket bucket, const QUrl &relative_path) { + return ExternalResource::getQUrl(bucket, relative_path).toString(); + }; + + /** + * Returns the location of a resource as a QString + * + * Returns the location of the resource \p relative_path in bucket \p bucket + * + * @note The resulting path will be sanitized by condensing multiple instances of '/' to one. + * This is done for easier usage with Amazon S3 and compatible systems. + * + * @param bucket The bucket in which the resource is found + * @param relative_path The path of the resource within the bucket + * @returns The resulting URL as a QString + */ + Q_INVOKABLE QString getUrl(Bucket bucket, const QString &relative_path) { + return ExternalResource::getQUrl(bucket, QUrl(relative_path)).toString(); + }; + + private: + ExternalResource(QObject* parent = nullptr); + + QMap _bucketBases { + { Bucket::Public, QUrl("https://public.vircadia.com")}, + { Bucket::Content, QUrl("https://content.vircadia.com")}, + { Bucket::Assets, QUrl("https://assets.vircadia.com")}, + { Bucket::MPAssets, QUrl("https://mpassets.vircadia.com")}, + }; +}; + +#endif \ No newline at end of file diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index e01e761cb4..9b071c2b73 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -44,8 +44,8 @@ var CREATE_TOOLS_WIDTH = 490; var MAX_DEFAULT_ENTITY_LIST_HEIGHT = 942; var ENTIRE_DOMAIN_SCAN_RADIUS = 27713; -var DEFAULT_IMAGE = "http://eu-central-1.linodeobjects.com/vircadia-assets/interface/default/default_image.jpg"; -var DEFAULT_PARTICLE = "http://eu-central-1.linodeobjects.com/vircadia-assets/interface/default/default_particle.png"; +var DEFAULT_IMAGE = ExternalResource.getUrl(Bucket.Assets, "interface/default/default_image.jpg"); +var DEFAULT_PARTICLE = ExternalResource.getUrl(Bucket.Assets, "interface/default/default_particle.png"); var createToolsWindow = new CreateWindow( Script.resolvePath("qml/EditTools.qml"), From 26bcaa420db385a22c87f63e3efc1a0126feedf3 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Mon, 7 Sep 2020 18:57:05 +0200 Subject: [PATCH 05/46] Better enum registration --- interface/src/Application.cpp | 8 +------- libraries/script-engine/src/ScriptEngine.cpp | 13 +++++++++++++ libraries/script-engine/src/ScriptEngine.h | 10 ++++++++++ 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index bbbc51ecf1..ee9cd212a3 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7537,13 +7537,7 @@ void Application::registerScriptEngineWithApplicationServices(const ScriptEngine scriptEngine->registerGlobalObject("HifiAbout", AboutUtil::getInstance()); // Deprecated. scriptEngine->registerGlobalObject("ResourceRequestObserver", DependencyManager::get().data()); - // This is obviously wrong -- FIXME! - scriptEngine->registerValue("Bucket.Public", static_cast(ExternalResource::Bucket::Public)); - scriptEngine->registerValue("Bucket.Content", static_cast(ExternalResource::Bucket::Content)); - scriptEngine->registerValue("Bucket.MPAssets", static_cast(ExternalResource::Bucket::MPAssets)); - scriptEngine->registerValue("Bucket.Assets", static_cast(ExternalResource::Bucket::Assets)); - - + scriptEngine->registerEnum("Bucket", QMetaEnum::fromType()); scriptEngine->registerGlobalObject("ExternalResource", ExternalResource::getInstance()); registerInteractiveWindowMetaType(scriptEngine.data()); diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 3b2a122e71..164ea03d54 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -827,6 +827,19 @@ void ScriptEngine::init() { })); } +void ScriptEngine::registerEnum(const QString& enumName, QMetaEnum newEnum) { + if (!newEnum.isValid()) { + qCCritical(scriptengine) << "registerEnum called on invalid enum with name " << enumName; + return; + } + + for(int i=0;i #include #include +#include #include @@ -230,6 +231,15 @@ public: Q_INVOKABLE void registerFunction(const QString& parent, const QString& name, QScriptEngine::FunctionSignature fun, int numArguments = -1); + /**jsdoc + * @function Script.registerEnum + * @param {string} enumName - Name. + * @param {object} newEnum - Enumeration to be added + * @deprecated This function is deprecated and will be removed. + */ + /// registers a global enum + Q_INVOKABLE void registerEnum(const QString& enumName, QMetaEnum newEnum); + /**jsdoc * @function Script.registerValue * @param {string} name - Name. From cd901f9e3283b5d8f858b3e4b476aa2d0ea58c02 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Mon, 7 Sep 2020 23:52:33 +0200 Subject: [PATCH 06/46] Move enum into ExternalResources namespace --- interface/src/Application.cpp | 3 ++- libraries/networking/src/ExternalResource.cpp | 1 - libraries/networking/src/ExternalResource.h | 2 -- libraries/script-engine/src/ScriptEngine.h | 2 ++ scripts/system/create/edit.js | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ee9cd212a3..4fe492d60d 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7537,8 +7537,9 @@ void Application::registerScriptEngineWithApplicationServices(const ScriptEngine scriptEngine->registerGlobalObject("HifiAbout", AboutUtil::getInstance()); // Deprecated. scriptEngine->registerGlobalObject("ResourceRequestObserver", DependencyManager::get().data()); - scriptEngine->registerEnum("Bucket", QMetaEnum::fromType()); + scriptEngine->registerGlobalObject("ExternalResource", ExternalResource::getInstance()); + scriptEngine->registerEnum("ExternalResource.Bucket", QMetaEnum::fromType()); registerInteractiveWindowMetaType(scriptEngine.data()); diff --git a/libraries/networking/src/ExternalResource.cpp b/libraries/networking/src/ExternalResource.cpp index 9b816ece9f..884bcbb4be 100644 --- a/libraries/networking/src/ExternalResource.cpp +++ b/libraries/networking/src/ExternalResource.cpp @@ -21,7 +21,6 @@ ExternalResource::ExternalResource(QObject *parent) : QObject(parent) { } - ExternalResource * ExternalResource::getInstance() { static ExternalResource instance; return &instance; diff --git a/libraries/networking/src/ExternalResource.h b/libraries/networking/src/ExternalResource.h index c07208c452..71ba4f8162 100644 --- a/libraries/networking/src/ExternalResource.h +++ b/libraries/networking/src/ExternalResource.h @@ -16,7 +16,6 @@ #include #include - /** * Flexible management for external resources * @@ -39,7 +38,6 @@ class ExternalResource : public QObject { static ExternalResource *getInstance(); ~ExternalResource() {}; - /** * Bucket from which to retrieve the resource * diff --git a/libraries/script-engine/src/ScriptEngine.h b/libraries/script-engine/src/ScriptEngine.h index 2a30cc1ed2..ec538e8fa8 100644 --- a/libraries/script-engine/src/ScriptEngine.h +++ b/libraries/script-engine/src/ScriptEngine.h @@ -235,6 +235,8 @@ public: * @function Script.registerEnum * @param {string} enumName - Name. * @param {object} newEnum - Enumeration to be added + * @warning This function must be called after a registerGlobalObject that creates the namespace this enum is located in, + * or the globalObject won't function. Eg, if you have a Foo object and a Foo.FooType enum, Foo must be registered first. * @deprecated This function is deprecated and will be removed. */ /// registers a global enum diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 9b071c2b73..b5dd95fb3b 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -44,8 +44,8 @@ var CREATE_TOOLS_WIDTH = 490; var MAX_DEFAULT_ENTITY_LIST_HEIGHT = 942; var ENTIRE_DOMAIN_SCAN_RADIUS = 27713; -var DEFAULT_IMAGE = ExternalResource.getUrl(Bucket.Assets, "interface/default/default_image.jpg"); -var DEFAULT_PARTICLE = ExternalResource.getUrl(Bucket.Assets, "interface/default/default_particle.png"); +var DEFAULT_IMAGE = ExternalResource.getUrl(ExternalResource.Bucket.Assets, "interface/default/default_image.jpg"); +var DEFAULT_PARTICLE = ExternalResource.getUrl(ExternalResource.Bucket.Assets, "interface/default/default_particle.png"); var createToolsWindow = new CreateWindow( Script.resolvePath("qml/EditTools.qml"), From e0e4ffb214b8eba20e3b0880fe660feffd812c65 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Thu, 10 Sep 2020 00:34:53 +0200 Subject: [PATCH 07/46] Review fixes --- interface/src/Application.cpp | 5 ++++- libraries/networking/src/ExternalResource.h | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 4fe492d60d..109b7525c8 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3517,6 +3517,7 @@ void Application::onDesktopRootContextCreated(QQmlContext* surfaceContext) { surfaceContext->setContextProperty("About", AboutUtil::getInstance()); surfaceContext->setContextProperty("HiFiAbout", AboutUtil::getInstance()); // Deprecated surfaceContext->setContextProperty("ResourceRequestObserver", DependencyManager::get().data()); + surfaceContext->setContextProperty("ExternalResource", ExternalResource::getInstance()); if (auto steamClient = PluginManager::getInstance()->getSteamClientPlugin()) { surfaceContext->setContextProperty("Steam", new SteamScriptingInterface(engine, steamClient.get())); @@ -3631,6 +3632,8 @@ void Application::setupQmlSurface(QQmlContext* surfaceContext, bool setAdditiona surfaceContext->setContextProperty("WalletScriptingInterface", DependencyManager::get().data()); surfaceContext->setContextProperty("ResourceRequestObserver", DependencyManager::get().data()); surfaceContext->setContextProperty("PlatformInfo", PlatformInfoScriptingInterface::getInstance()); + surfaceContext->setContextProperty("ExternalResource", ExternalResource::getInstance()); + // This `module` context property is blank for the QML scripting interface so that we don't get log errors when importing // certain JS files from both scripts (in the JS context) and QML (in the QML context). surfaceContext->setContextProperty("module", ""); @@ -7539,7 +7542,7 @@ void Application::registerScriptEngineWithApplicationServices(const ScriptEngine scriptEngine->registerGlobalObject("ExternalResource", ExternalResource::getInstance()); - scriptEngine->registerEnum("ExternalResource.Bucket", QMetaEnum::fromType()); + scriptEngine->registerEnum("ExternalResource", QMetaEnum::fromType()); registerInteractiveWindowMetaType(scriptEngine.data()); diff --git a/libraries/networking/src/ExternalResource.h b/libraries/networking/src/ExternalResource.h index 71ba4f8162..b8ee830c34 100644 --- a/libraries/networking/src/ExternalResource.h +++ b/libraries/networking/src/ExternalResource.h @@ -74,7 +74,7 @@ class ExternalResource : public QObject { * @param relative_path The path of the resource within the bucket * @returns The resulting URL as a QUrl */ - Q_INVOKABLE QUrl getQUrl(Bucket bucket, const QUrl& relative_path); + QUrl getQUrl(Bucket bucket, const QUrl& relative_path); /** @@ -89,7 +89,7 @@ class ExternalResource : public QObject { * @param relative_path The path of the resource within the bucket * @returns The resulting URL as a QUrl */ - Q_INVOKABLE QUrl getQUrl(Bucket bucket, QString path) { + QUrl getQUrl(Bucket bucket, QString path) { return getQUrl(bucket, QUrl(path)); } @@ -105,7 +105,7 @@ class ExternalResource : public QObject { * @param relative_path The path of the resource within the bucket * @returns The resulting URL as a QString */ - Q_INVOKABLE QString getUrl(Bucket bucket, const QUrl &relative_path) { + QString getUrl(Bucket bucket, const QUrl &relative_path) { return ExternalResource::getQUrl(bucket, relative_path).toString(); }; From 0310764013b286b271c852552d32c66d59c3565d Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Thu, 10 Sep 2020 01:03:39 +0200 Subject: [PATCH 08/46] More review fixes --- scripts/system/create/edit.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index b5dd95fb3b..a07178a768 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -44,8 +44,8 @@ var CREATE_TOOLS_WIDTH = 490; var MAX_DEFAULT_ENTITY_LIST_HEIGHT = 942; var ENTIRE_DOMAIN_SCAN_RADIUS = 27713; -var DEFAULT_IMAGE = ExternalResource.getUrl(ExternalResource.Bucket.Assets, "interface/default/default_image.jpg"); -var DEFAULT_PARTICLE = ExternalResource.getUrl(ExternalResource.Bucket.Assets, "interface/default/default_particle.png"); +var DEFAULT_IMAGE = ExternalResource.getUrl(ExternalResource.Assets, "interface/default/default_image.jpg"); +var DEFAULT_PARTICLE = ExternalResource.getUrl(ExternalResource.Assets, "interface/default/default_particle.png"); var createToolsWindow = new CreateWindow( Script.resolvePath("qml/EditTools.qml"), From 84e01630ee2cbf87460b666985c451638cfb502e Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Thu, 10 Sep 2020 01:03:49 +0200 Subject: [PATCH 09/46] Make base URLs for external resources modifiable --- interface/src/Application.cpp | 27 +++++++++++++++++++ libraries/networking/src/ExternalResource.cpp | 25 +++++++++++++++++ libraries/networking/src/ExternalResource.h | 9 +++++++ 3 files changed, 61 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 109b7525c8..43ffe9e4f4 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5544,6 +5544,21 @@ void Application::loadSettings() { } getMyAvatar()->loadData(); + + + auto bucketEnum = QMetaEnum::fromType(); + auto er = ExternalResource::getInstance(); + + for(int i=0;i(bucketEnum.keyToValue(keyName)); + Setting::Handle url(setting, er->getBase(bucket)); + er->setBase( bucket, url.get() ); + } + + _settingsLoaded = true; } @@ -5560,6 +5575,18 @@ void Application::saveSettings() const { Menu::getInstance()->saveSettings(); getMyAvatar()->saveData(); PluginManager::getInstance()->saveSettings(); + + auto bucketEnum = QMetaEnum::fromType(); + auto er = ExternalResource::getInstance(); + + for(int i=0;i(bucketEnum.keyToValue(keyName)); + Setting::Handle url(setting, er->getBase(bucket)); + url.set(er->getBase(bucket)); + } } bool Application::importEntities(const QString& urlOrFilename, const bool isObservable, const qint64 callerId) { diff --git a/libraries/networking/src/ExternalResource.cpp b/libraries/networking/src/ExternalResource.cpp index 884bcbb4be..54f56b4520 100644 --- a/libraries/networking/src/ExternalResource.cpp +++ b/libraries/networking/src/ExternalResource.cpp @@ -44,6 +44,7 @@ QUrl ExternalResource::getQUrl(Bucket bucket, const QUrl &relative_path) { return relative_path; } + std::lock_guard guard(_bucketMutex); QUrl base = _bucketBases[bucket]; QUrl merged = base.resolved(relative_path); @@ -53,3 +54,27 @@ QUrl ExternalResource::getQUrl(Bucket bucket, const QUrl &relative_path) { return merged; } + +QString ExternalResource::getBase(Bucket bucket) { + std::lock_guard guard(_bucketMutex); + return _bucketBases.value(bucket).toString(); +}; + +void ExternalResource::setBase(Bucket bucket, const QString &url) { + QUrl new_url(url); + + if (!new_url.isValid() || new_url.isRelative()) { + qCCritical(external_resource) << "Attempted to set bucket " << bucket << " to invalid URL " << url; + return; + } + + if (!_bucketBases.contains(bucket)) { + qCritical(external_resource) << "Invalid bucket " << bucket; + return; + } + + qCDebug(external_resource) << "Setting base URL for " << bucket << " to " << new_url; + + std::lock_guard guard(_bucketMutex); + _bucketBases[bucket] = new_url; +} diff --git a/libraries/networking/src/ExternalResource.h b/libraries/networking/src/ExternalResource.h index b8ee830c34..4185fbe297 100644 --- a/libraries/networking/src/ExternalResource.h +++ b/libraries/networking/src/ExternalResource.h @@ -16,6 +16,9 @@ #include #include +#include + + /** * Flexible management for external resources * @@ -125,9 +128,15 @@ class ExternalResource : public QObject { return ExternalResource::getQUrl(bucket, QUrl(relative_path)).toString(); }; + Q_INVOKABLE QString getBase(Bucket bucket); + + Q_INVOKABLE void setBase(Bucket bucket, const QString &url); + private: ExternalResource(QObject* parent = nullptr); + std::mutex _bucketMutex; + QMap _bucketBases { { Bucket::Public, QUrl("https://public.vircadia.com")}, { Bucket::Content, QUrl("https://content.vircadia.com")}, From 792854ccb72529802ec91b27c5c2a8029bd08357 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Thu, 10 Sep 2020 01:04:54 +0200 Subject: [PATCH 10/46] Applied code formatter --- libraries/networking/src/ExternalResource.cpp | 28 +++++++-------- libraries/networking/src/ExternalResource.h | 34 ++++++++----------- 2 files changed, 28 insertions(+), 34 deletions(-) diff --git a/libraries/networking/src/ExternalResource.cpp b/libraries/networking/src/ExternalResource.cpp index 54f56b4520..eceed37175 100644 --- a/libraries/networking/src/ExternalResource.cpp +++ b/libraries/networking/src/ExternalResource.cpp @@ -13,34 +13,34 @@ #include #include - Q_LOGGING_CATEGORY(external_resource, "vircadia.networking.external_resource") - -ExternalResource::ExternalResource(QObject *parent) : QObject(parent) { - +ExternalResource::ExternalResource(QObject* parent) : QObject(parent) { } -ExternalResource * ExternalResource::getInstance() { +ExternalResource* ExternalResource::getInstance() { static ExternalResource instance; return &instance; } -QUrl ExternalResource::getQUrl(Bucket bucket, const QUrl &relative_path) { +QUrl ExternalResource::getQUrl(Bucket bucket, const QUrl& relative_path) { qCDebug(external_resource) << "Requested URL for bucket " << bucket << ", path " << relative_path; - if ( !_bucketBases.contains(bucket)) { - qCCritical(external_resource) << "External resource " << relative_path << " was requested from unrecognized bucket " << bucket; + if (!_bucketBases.contains(bucket)) { + qCCritical(external_resource) << "External resource " << relative_path << " was requested from unrecognized bucket " + << bucket; return QUrl(); } - if ( !relative_path.isValid() ) { - qCCritical(external_resource) << "External resource " << relative_path << " was requested from bucket " << bucket << " with an invalid path. Error: " << relative_path.errorString(); + if (!relative_path.isValid()) { + qCCritical(external_resource) << "External resource " << relative_path << " was requested from bucket " << bucket + << " with an invalid path. Error: " << relative_path.errorString(); return QUrl(); } - if ( !relative_path.isRelative() ) { - qCWarning(external_resource) << "External resource " << relative_path << " was requested from bucket " << bucket << " without using a relative path, returning as-is."; + if (!relative_path.isRelative()) { + qCWarning(external_resource) << "External resource " << relative_path << " was requested from bucket " << bucket + << " without using a relative path, returning as-is."; return relative_path; } @@ -48,19 +48,17 @@ QUrl ExternalResource::getQUrl(Bucket bucket, const QUrl &relative_path) { QUrl base = _bucketBases[bucket]; QUrl merged = base.resolved(relative_path); - qCDebug(external_resource) << "External resource resolved to " << merged; return merged; } - QString ExternalResource::getBase(Bucket bucket) { std::lock_guard guard(_bucketMutex); return _bucketBases.value(bucket).toString(); }; -void ExternalResource::setBase(Bucket bucket, const QString &url) { +void ExternalResource::setBase(Bucket bucket, const QString& url) { QUrl new_url(url); if (!new_url.isValid() || new_url.isRelative()) { diff --git a/libraries/networking/src/ExternalResource.h b/libraries/networking/src/ExternalResource.h index 4185fbe297..2beb070ebe 100644 --- a/libraries/networking/src/ExternalResource.h +++ b/libraries/networking/src/ExternalResource.h @@ -18,7 +18,6 @@ #include - /** * Flexible management for external resources * @@ -36,10 +35,9 @@ class ExternalResource : public QObject { Q_OBJECT - public: - - static ExternalResource *getInstance(); - ~ExternalResource() {}; +public: + static ExternalResource* getInstance(); + ~ExternalResource(){}; /** * Bucket from which to retrieve the resource @@ -49,7 +47,8 @@ class ExternalResource : public QObject { * will be done to the Assets bucket instead. This should ease the transition and ensure a clean * separation. */ - enum class Bucket { + enum class Bucket + { /** Assets that used to be in the hifi-public S3 bucket */ Public, @@ -79,7 +78,6 @@ class ExternalResource : public QObject { */ QUrl getQUrl(Bucket bucket, const QUrl& relative_path); - /** * Returns the location of a resource as a QUrl * @@ -92,9 +90,7 @@ class ExternalResource : public QObject { * @param relative_path The path of the resource within the bucket * @returns The resulting URL as a QUrl */ - QUrl getQUrl(Bucket bucket, QString path) { - return getQUrl(bucket, QUrl(path)); - } + QUrl getQUrl(Bucket bucket, QString path) { return getQUrl(bucket, QUrl(path)); } /** * Returns the location of a resource as a QString @@ -108,7 +104,7 @@ class ExternalResource : public QObject { * @param relative_path The path of the resource within the bucket * @returns The resulting URL as a QString */ - QString getUrl(Bucket bucket, const QUrl &relative_path) { + QString getUrl(Bucket bucket, const QUrl& relative_path) { return ExternalResource::getQUrl(bucket, relative_path).toString(); }; @@ -124,24 +120,24 @@ class ExternalResource : public QObject { * @param relative_path The path of the resource within the bucket * @returns The resulting URL as a QString */ - Q_INVOKABLE QString getUrl(Bucket bucket, const QString &relative_path) { + Q_INVOKABLE QString getUrl(Bucket bucket, const QString& relative_path) { return ExternalResource::getQUrl(bucket, QUrl(relative_path)).toString(); }; Q_INVOKABLE QString getBase(Bucket bucket); - Q_INVOKABLE void setBase(Bucket bucket, const QString &url); + Q_INVOKABLE void setBase(Bucket bucket, const QString& url); - private: +private: ExternalResource(QObject* parent = nullptr); std::mutex _bucketMutex; - QMap _bucketBases { - { Bucket::Public, QUrl("https://public.vircadia.com")}, - { Bucket::Content, QUrl("https://content.vircadia.com")}, - { Bucket::Assets, QUrl("https://assets.vircadia.com")}, - { Bucket::MPAssets, QUrl("https://mpassets.vircadia.com")}, + QMap _bucketBases{ + { Bucket::Public, QUrl("https://public.vircadia.com") }, + { Bucket::Content, QUrl("https://content.vircadia.com") }, + { Bucket::Assets, QUrl("https://assets.vircadia.com") }, + { Bucket::MPAssets, QUrl("https://mpassets.vircadia.com") }, }; }; From 89aa89e9d382f7d1cddf77644afde6e61b9d0069 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Fri, 18 Sep 2020 00:58:17 +0200 Subject: [PATCH 11/46] Review fixes (non-working) Trouble with: > Script.getExternalPath(Script.ExternalPaths.Assets, "hi") [UncaughtException evaluate] Error: cannot call getExternalPath(): argument 1 has unknown type `ExternalResource::Bucket' (register the type with qScriptRegisterMetaType()) in about:console:1 [Backtrace] () at about:console:1 TypeError: cannot call getExternalPath(): argument 1 has unknown type `ExternalResource::Bucket' (register the type with qScriptRegisterMetaType()) --- interface/src/Application.cpp | 28 +++++++-------- .../ScreenshareScriptingInterface.cpp | 2 +- libraries/networking/src/ExternalResource.cpp | 7 ++-- libraries/networking/src/ExternalResource.h | 34 ++++++++++++++----- libraries/script-engine/src/ScriptEngine.cpp | 5 +++ libraries/script-engine/src/ScriptEngine.h | 4 +++ 6 files changed, 52 insertions(+), 28 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 43ffe9e4f4..ee92f03541 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5545,20 +5545,18 @@ void Application::loadSettings() { getMyAvatar()->loadData(); - auto bucketEnum = QMetaEnum::fromType(); - auto er = ExternalResource::getInstance(); + auto externalResource = ExternalResource::getInstance(); - for(int i=0;i(bucketEnum.keyToValue(keyName)); - Setting::Handle url(setting, er->getBase(bucket)); - er->setBase( bucket, url.get() ); + Setting::Handle url(setting, externalResource->getBase(bucket)); + externalResource->setBase(bucket, url.get()); } - _settingsLoaded = true; } @@ -5577,16 +5575,16 @@ void Application::saveSettings() const { PluginManager::getInstance()->saveSettings(); auto bucketEnum = QMetaEnum::fromType(); - auto er = ExternalResource::getInstance(); + auto externalResource = ExternalResource::getInstance(); - for(int i=0;i(bucketEnum.keyToValue(keyName)); - Setting::Handle url(setting, er->getBase(bucket)); - url.set(er->getBase(bucket)); - } + Setting::Handle url(setting, externalResource->getBase(bucket)); + url.set(externalResource->getBase(bucket)); + } } bool Application::importEntities(const QString& urlOrFilename, const bool isObservable, const qint64 callerId) { @@ -7568,8 +7566,8 @@ void Application::registerScriptEngineWithApplicationServices(const ScriptEngine scriptEngine->registerGlobalObject("ResourceRequestObserver", DependencyManager::get().data()); - scriptEngine->registerGlobalObject("ExternalResource", ExternalResource::getInstance()); - scriptEngine->registerEnum("ExternalResource", QMetaEnum::fromType()); + //scriptEngine->registerGlobalObject("ExternalResource", ExternalResource::getInstance()); + // scriptEngine->registerEnum("Script.ExternalPaths", QMetaEnum::fromType()); registerInteractiveWindowMetaType(scriptEngine.data()); diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 21d19f6466..00c4d03c7a 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -129,7 +129,7 @@ static const uint8_t LOCAL_SCREENSHARE_WEB_ENTITY_FPS = 30; // The `z` value here is dynamic. static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION(0.0128f, -0.0918f, 0.0f); static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS(3.6790f, 2.0990f, 0.0100f); -static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = ExternalResource::getInstance()->getUrl(ExternalResource::Bucket::Content, +static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = ExternalResource::getInstance()->getUrl(ExternalResource::Bucket::HF_Content, "Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"); static const QString LOCAL_SCREENSHARE_WEB_ENTITY_HOST_TYPE = "local"; void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZoneID, diff --git a/libraries/networking/src/ExternalResource.cpp b/libraries/networking/src/ExternalResource.cpp index eceed37175..ef9a877e8d 100644 --- a/libraries/networking/src/ExternalResource.cpp +++ b/libraries/networking/src/ExternalResource.cpp @@ -58,21 +58,22 @@ QString ExternalResource::getBase(Bucket bucket) { return _bucketBases.value(bucket).toString(); }; -void ExternalResource::setBase(Bucket bucket, const QString& url) { +bool ExternalResource::setBase(Bucket bucket, const QString& url) { QUrl new_url(url); if (!new_url.isValid() || new_url.isRelative()) { qCCritical(external_resource) << "Attempted to set bucket " << bucket << " to invalid URL " << url; - return; + return false; } if (!_bucketBases.contains(bucket)) { qCritical(external_resource) << "Invalid bucket " << bucket; - return; + return false; } qCDebug(external_resource) << "Setting base URL for " << bucket << " to " << new_url; std::lock_guard guard(_bucketMutex); _bucketBases[bucket] = new_url; + return true; } diff --git a/libraries/networking/src/ExternalResource.h b/libraries/networking/src/ExternalResource.h index 2beb070ebe..403938650b 100644 --- a/libraries/networking/src/ExternalResource.h +++ b/libraries/networking/src/ExternalResource.h @@ -30,7 +30,8 @@ * This class makes it possible to deal with this in a more flexible manner: rather than hardcoding URLs * all over the codebase, now it's possible to easily change where all those things are downloaded from. * - * + * The term 'bucket' refers to the buckets used on Amazon S3, but there's no requirement for S3 or anything + * similar to be used. The term should just be taken as referring to the name of a data set. */ class ExternalResource : public QObject { Q_OBJECT @@ -50,13 +51,13 @@ public: enum class Bucket { /** Assets that used to be in the hifi-public S3 bucket */ - Public, + HF_Public, /** Assets that used to be in the hifi-content S3 bucket */ - Content, + HF_Content, /** Assets that used to be in the mpassets S3 bucket (hifi marketplace) */ - MPAssets, + HF_Marketplace, /** Vircadia assets */ Assets @@ -124,9 +125,24 @@ public: return ExternalResource::getQUrl(bucket, QUrl(relative_path)).toString(); }; - Q_INVOKABLE QString getBase(Bucket bucket); + /** + * Returns the base path for a bucket + * + * @param bucket Bucket whose path to return + */ + QString getBase(Bucket bucket); - Q_INVOKABLE void setBase(Bucket bucket, const QString& url); + /** + * Sets the base path for a bucket + * + * The \p url parameter will be validated, and the action will not be performed + * if the URL isn't a valid one, or if the bucket wasn't valid. + * + * @param bucket Bucket whose path to set + * @param url Base URL for the bucket. + * @returns Whether the base was set. + */ + bool setBase(Bucket bucket, const QString& url); private: ExternalResource(QObject* parent = nullptr); @@ -134,10 +150,10 @@ private: std::mutex _bucketMutex; QMap _bucketBases{ - { Bucket::Public, QUrl("https://public.vircadia.com") }, - { Bucket::Content, QUrl("https://content.vircadia.com") }, + { Bucket::HF_Public, QUrl("https://public.vircadia.com") }, + { Bucket::HF_Content, QUrl("https://content.vircadia.com") }, { Bucket::Assets, QUrl("https://assets.vircadia.com") }, - { Bucket::MPAssets, QUrl("https://mpassets.vircadia.com") }, + { Bucket::HF_Marketplace, QUrl("https://mpassets.vircadia.com") }, }; }; diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 164ea03d54..1ee5f11f04 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -769,6 +769,7 @@ void ScriptEngine::init() { require.setProperty("resolve", resolve, READONLY_PROP_FLAGS); resetModuleCache(); } + registerEnum("Script.ExternalPaths", QMetaEnum::fromType()); registerGlobalObject("Audio", DependencyManager::get().data()); @@ -2869,3 +2870,7 @@ void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QS } } } + +QString ScriptEngine::getExternalPath(ExternalResource::Bucket bucket, const QString &relative_path) { + return ExternalResource::getInstance()->getUrl(bucket, relative_path); +} diff --git a/libraries/script-engine/src/ScriptEngine.h b/libraries/script-engine/src/ScriptEngine.h index ec538e8fa8..ce77b36674 100644 --- a/libraries/script-engine/src/ScriptEngine.h +++ b/libraries/script-engine/src/ScriptEngine.h @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -38,6 +39,7 @@ #include "AssetScriptingInterface.h" #include "AudioScriptingInterface.h" #include "BaseScriptEngine.h" +#include "ExternalResource.h" #include "Quat.h" #include "Mat4.h" #include "ScriptCache.h" @@ -682,6 +684,8 @@ public: void setScriptEngines(QSharedPointer& scriptEngines) { _scriptEngines = scriptEngines; } + Q_INVOKABLE QString getExternalPath(ExternalResource::Bucket bucket, const QString &relative_path); + public slots: /**jsdoc From 2c84478dc1d57a037c23a7913e293f2c8a2d9452 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 18 Sep 2020 22:39:44 +1200 Subject: [PATCH 12/46] Register metatype --- libraries/networking/src/ExternalResource.h | 4 +--- libraries/script-engine/src/ScriptEngine.cpp | 19 +++++++++++++++++-- libraries/script-engine/src/ScriptEngine.h | 2 +- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/libraries/networking/src/ExternalResource.h b/libraries/networking/src/ExternalResource.h index 403938650b..6122759b67 100644 --- a/libraries/networking/src/ExternalResource.h +++ b/libraries/networking/src/ExternalResource.h @@ -48,8 +48,7 @@ public: * will be done to the Assets bucket instead. This should ease the transition and ensure a clean * separation. */ - enum class Bucket - { + enum class Bucket { /** Assets that used to be in the hifi-public S3 bucket */ HF_Public, @@ -62,7 +61,6 @@ public: /** Vircadia assets */ Assets }; - Q_ENUM(Bucket) /** diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 1ee5f11f04..a4f1e29e2a 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -108,6 +108,8 @@ int functionSignatureMetaID = qRegisterMetaType(); +Q_DECLARE_METATYPE(ExternalResource::Bucket); + static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine) { QString message = ""; for (int i = 0; i < context->argumentCount(); i++) { @@ -663,6 +665,17 @@ void avatarDataFromScriptValue(const QScriptValue& object, ScriptAvatarData*& ou out = nullptr; } +QScriptValue externalResourceBucketToScriptValue(QScriptEngine* engine, ExternalResource::Bucket const& in) { + //return engine->newQObject(in, QScriptEngine::ScriptOwnership, DEFAULT_QOBJECT_WRAP_OPTIONS); + return QScriptValue((int)in); +} + +void externalResourceBucketFromScriptValue(const QScriptValue& object, ExternalResource::Bucket& out) { + // This is not implemented because there are no slots/properties that take an AvatarSharedPointer from a script + assert(false); + out = ExternalResource::Bucket::Assets; +} + void ScriptEngine::resetModuleCache(bool deleteScriptCache) { if (QThread::currentThread() != thread()) { executeOnScriptThread([=]() { resetModuleCache(deleteScriptCache); }); @@ -769,6 +782,8 @@ void ScriptEngine::init() { require.setProperty("resolve", resolve, READONLY_PROP_FLAGS); resetModuleCache(); } + + qScriptRegisterMetaType(this, externalResourceBucketToScriptValue, externalResourceBucketFromScriptValue); registerEnum("Script.ExternalPaths", QMetaEnum::fromType()); registerGlobalObject("Audio", DependencyManager::get().data()); @@ -2871,6 +2886,6 @@ void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QS } } -QString ScriptEngine::getExternalPath(ExternalResource::Bucket bucket, const QString &relative_path) { - return ExternalResource::getInstance()->getUrl(bucket, relative_path); +QString ScriptEngine::getExternalPath(ExternalResource::Bucket bucket, const QString& relativePath) { + return ExternalResource::getInstance()->getUrl(bucket, relativePath); } diff --git a/libraries/script-engine/src/ScriptEngine.h b/libraries/script-engine/src/ScriptEngine.h index ce77b36674..abb232a0f5 100644 --- a/libraries/script-engine/src/ScriptEngine.h +++ b/libraries/script-engine/src/ScriptEngine.h @@ -684,7 +684,7 @@ public: void setScriptEngines(QSharedPointer& scriptEngines) { _scriptEngines = scriptEngines; } - Q_INVOKABLE QString getExternalPath(ExternalResource::Bucket bucket, const QString &relative_path); + Q_INVOKABLE QString getExternalPath(ExternalResource::Bucket bucket, const QString& relativePath); public slots: From 2de0934598854bff7929818df0f51a31ad6230b7 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Sun, 20 Sep 2020 01:57:44 +0200 Subject: [PATCH 13/46] Some missed review fixes --- libraries/networking/src/ExternalResource.h | 2 +- libraries/script-engine/src/ScriptEngine.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/networking/src/ExternalResource.h b/libraries/networking/src/ExternalResource.h index 6122759b67..63eba59d9a 100644 --- a/libraries/networking/src/ExternalResource.h +++ b/libraries/networking/src/ExternalResource.h @@ -155,4 +155,4 @@ private: }; }; -#endif \ No newline at end of file +#endif diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index a4f1e29e2a..c5953b5730 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -849,8 +849,8 @@ void ScriptEngine::registerEnum(const QString& enumName, QMetaEnum newEnum) { return; } - for(int i=0;i Date: Sun, 20 Sep 2020 02:08:22 +0200 Subject: [PATCH 14/46] Fix crash due to incorrect assert --- libraries/script-engine/src/ScriptEngine.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index c5953b5730..fe3bccd543 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -666,14 +666,11 @@ void avatarDataFromScriptValue(const QScriptValue& object, ScriptAvatarData*& ou } QScriptValue externalResourceBucketToScriptValue(QScriptEngine* engine, ExternalResource::Bucket const& in) { - //return engine->newQObject(in, QScriptEngine::ScriptOwnership, DEFAULT_QOBJECT_WRAP_OPTIONS); return QScriptValue((int)in); } void externalResourceBucketFromScriptValue(const QScriptValue& object, ExternalResource::Bucket& out) { - // This is not implemented because there are no slots/properties that take an AvatarSharedPointer from a script - assert(false); - out = ExternalResource::Bucket::Assets; + out = static_cast(object.toInt32()); } void ScriptEngine::resetModuleCache(bool deleteScriptCache) { From 929f395503f8d3a880fa0a73746d4a628fe2b458 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Sun, 20 Sep 2020 02:09:54 +0200 Subject: [PATCH 15/46] Spend more less time in the lock, do a sanity check, normalize path --- libraries/networking/src/ExternalResource.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/libraries/networking/src/ExternalResource.cpp b/libraries/networking/src/ExternalResource.cpp index ef9a877e8d..d3aef1171b 100644 --- a/libraries/networking/src/ExternalResource.cpp +++ b/libraries/networking/src/ExternalResource.cpp @@ -44,11 +44,20 @@ QUrl ExternalResource::getQUrl(Bucket bucket, const QUrl& relative_path) { return relative_path; } - std::lock_guard guard(_bucketMutex); - QUrl base = _bucketBases[bucket]; - QUrl merged = base.resolved(relative_path); + QUrl base; + { + std::lock_guard guard(_bucketMutex); + base = _bucketBases[bucket]; + } - qCDebug(external_resource) << "External resource resolved to " << merged; + QUrl merged = base.resolved(relative_path).adjusted(QUrl::NormalizePathSegments); + + if ( merged.isValid() ) { + qCDebug(external_resource) << "External resource resolved to " << merged; + } else { + qCCritical(external_resource) << "External resource resolved to invalid URL " << merged << "; Error " << merged.errorString() + << "; base = " << base << "; relative_path = " << relative_path; + } return merged; } From f465ecb53b80b2e27fc6698e4d137117cc4d09e7 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Sun, 20 Sep 2020 17:56:54 -0400 Subject: [PATCH 16/46] Update STUN server --- libraries/networking/src/LimitedNodeList.h | 6 ++++-- libraries/networking/src/NetworkingConstants.h | 10 ++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libraries/networking/src/LimitedNodeList.h b/libraries/networking/src/LimitedNodeList.h index a61deeef96..1f43428b4c 100644 --- a/libraries/networking/src/LimitedNodeList.h +++ b/libraries/networking/src/LimitedNodeList.h @@ -4,6 +4,7 @@ // // Created by Stephen Birarda on 2/15/13. // Copyright 2013 High Fidelity, Inc. +// Copyright 2020 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -37,6 +38,7 @@ #include #include "DomainHandler.h" +#include "NetworkingConstants.h" #include "Node.h" #include "NLPacket.h" #include "NLPacketList.h" @@ -55,8 +57,8 @@ static const size_t DEFAULT_MAX_CONNECTION_RATE { std::numeric_limits::m const char DEFAULT_ASSIGNMENT_SERVER_HOSTNAME[] = "localhost"; -const char STUN_SERVER_HOSTNAME[] = "stun.highfidelity.io"; -const unsigned short STUN_SERVER_PORT = 3478; +const char STUN_SERVER_HOSTNAME = NetworkingConstants::STUN_SERVER_DEFAULT_HOSTNAME.toUtf8().constData(); +const unsigned short STUN_SERVER_PORT = NetworkingConstants::STUN_SERVER_DEFAULT_PORT; const QString DOMAIN_SERVER_LOCAL_PORT_SMEM_KEY = "domain-server.local-port"; const QString DOMAIN_SERVER_LOCAL_HTTP_PORT_SMEM_KEY = "domain-server.local-http-port"; diff --git a/libraries/networking/src/NetworkingConstants.h b/libraries/networking/src/NetworkingConstants.h index ede95830c6..4d03179f57 100644 --- a/libraries/networking/src/NetworkingConstants.h +++ b/libraries/networking/src/NetworkingConstants.h @@ -47,9 +47,15 @@ namespace NetworkingConstants { const QString PUBLIC_BUCKET_CDN_URL = "https://hifi-public.s3.amazonaws.com/"; #if USE_STABLE_GLOBAL_SERVICES - const QString ICE_SERVER_DEFAULT_HOSTNAME = "ice.highfidelity.com"; + const QString ICE_SERVER_DEFAULT_HOSTNAME = "ice.vircadia.com"; + + const QString STUN_SERVER_DEFAULT_HOSTNAME = "stun1.l.google.com"; + const unsigned short STUN_SERVER_DEFAULT_PORT = 19302; #else - const QString ICE_SERVER_DEFAULT_HOSTNAME = "dev-ice.highfidelity.com"; + const QString ICE_SERVER_DEFAULT_HOSTNAME = "ice.vircadia.com"; + + const QString STUN_SERVER_DEFAULT_HOSTNAME = "stun2.l.google.com"; + const unsigned short STUN_SERVER_DEFAULT_PORT = 19302; #endif const QString MARKETPLACE_CDN_HOSTNAME = "mpassets.highfidelity.com"; From d423b51e5f1e1ad5204f33b5068ef6a03877972c Mon Sep 17 00:00:00 2001 From: Kalila L Date: Sun, 20 Sep 2020 22:55:40 -0400 Subject: [PATCH 17/46] Change content.vircadia.com -> cdn-1.vircadia.com --- domain-server/resources/web/js/shared.js | 2 +- hifi_android.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/domain-server/resources/web/js/shared.js b/domain-server/resources/web/js/shared.js index dd0cda0f5f..5081b5aa6a 100644 --- a/domain-server/resources/web/js/shared.js +++ b/domain-server/resources/web/js/shared.js @@ -52,7 +52,7 @@ var URLs = { // STABLE METAVERSE_URL: https://metaverse.highfidelity.com // STAGING METAVERSE_URL: https://staging.highfidelity.com DEFAULT_METAVERSE_URL: "https://metaverse.vircadia.com/live", - CDN_URL: 'https://content.vircadia.com/eu-c-1', + CDN_URL: 'https://cdn-1.vircadia.com/eu-c-1', PLACE_URL: 'https://xr.place' }; diff --git a/hifi_android.py b/hifi_android.py index a8fec01035..06640390d4 100644 --- a/hifi_android.py +++ b/hifi_android.py @@ -10,7 +10,7 @@ import zipfile print = functools.partial(print, flush=True) -ANDROID_PACKAGE_URL = 'https://content.vircadia.com/eu-c-1/vircadia-public/dependencies/android/' +ANDROID_PACKAGE_URL = 'https://cdn-1.vircadia.com/eu-c-1/vircadia-public/dependencies/android/' ANDROID_PACKAGES = { 'qt' : { @@ -68,7 +68,7 @@ ANDROID_PACKAGES = { 'includeLibs': ['libtbb.so', 'libtbbmalloc.so'], }, 'hifiAC': { - 'baseUrl': 'https://content.vircadia.com/eu-c-1/vircadia-public/dependencies/', + 'baseUrl': 'https://cdn-1.vircadia.com/eu-c-1/vircadia-public/dependencies/', 'file': 'codecSDK-android_armv8-2.0.zip', 'checksum': '1cbef929675818fc64c4101b72f84a6a' }, From 0d08254a07eae90591dda4c8aa3b90f777877ef8 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Sun, 20 Sep 2020 23:37:29 -0400 Subject: [PATCH 18/46] Some updates to URLs in C++ --- interface/src/Application.cpp | 4 ++-- interface/src/avatar/MyAvatar.cpp | 2 +- libraries/networking/src/ExternalResource.h | 16 +++++++++++----- libraries/networking/src/LimitedNodeList.h | 2 +- libraries/networking/src/NetworkingConstants.h | 14 ++++++++------ 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ee92f03541..88db77b314 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7703,7 +7703,7 @@ bool Application::askToLoadScript(const QString& scriptFilenameOrURL) { QUrl scriptURL { scriptFilenameOrURL }; - if (scriptURL.host().endsWith(NetworkingConstants::MARKETPLACE_CDN_HOSTNAME)) { + if (scriptURL.host().endsWith(NetworkingConstants::HF_MARKETPLACE_CDN_HOSTNAME)) { int startIndex = shortName.lastIndexOf('/') + 1; int endIndex = shortName.lastIndexOf('?'); shortName = shortName.mid(startIndex, endIndex - startIndex); @@ -7826,7 +7826,7 @@ bool Application::askToReplaceDomainContent(const QString& url) { const int MAX_CHARACTERS_PER_LINE = 90; if (DependencyManager::get()->getThisNodeCanReplaceContent()) { QUrl originURL { url }; - if (originURL.host().endsWith(NetworkingConstants::MARKETPLACE_CDN_HOSTNAME)) { + if (originURL.host().endsWith(NetworkingConstants::HF_MARKETPLACE_CDN_HOSTNAME)) { // Create a confirmation dialog when this call is made static const QString infoText = simpleWordWrap("Your domain's content will be replaced with a new content set. " "If you want to save what you have now, create a backup before proceeding. For more information about backing up " diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index dfa3bfb21f..a30d7adb18 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -83,7 +83,7 @@ const int SCRIPTED_MOTOR_AVATAR_FRAME = 1; const int SCRIPTED_MOTOR_WORLD_FRAME = 2; const int SCRIPTED_MOTOR_SIMPLE_MODE = 0; const int SCRIPTED_MOTOR_DYNAMIC_MODE = 1; -const QString& DEFAULT_AVATAR_COLLISION_SOUND_URL = NetworkingConstants::PUBLIC_BUCKET_CDN_URL + "sounds/Collisions-otherorganic/Body_Hits_Impact.wav"; +const QString& DEFAULT_AVATAR_COLLISION_SOUND_URL = NetworkingConstants::HF_PUBLIC_CDN_URL + "sounds/Collisions-otherorganic/Body_Hits_Impact.wav"; const float MyAvatar::ZOOM_MIN = 0.5f; const float MyAvatar::ZOOM_MAX = 25.0f; diff --git a/libraries/networking/src/ExternalResource.h b/libraries/networking/src/ExternalResource.h index 63eba59d9a..4f410e8015 100644 --- a/libraries/networking/src/ExternalResource.h +++ b/libraries/networking/src/ExternalResource.h @@ -18,6 +18,8 @@ #include +#include "NetworkingConstants.h" + /** * Flexible management for external resources * @@ -59,7 +61,9 @@ public: HF_Marketplace, /** Vircadia assets */ - Assets + Assets, + Public, + Content }; Q_ENUM(Bucket) @@ -148,10 +152,12 @@ private: std::mutex _bucketMutex; QMap _bucketBases{ - { Bucket::HF_Public, QUrl("https://public.vircadia.com") }, - { Bucket::HF_Content, QUrl("https://content.vircadia.com") }, - { Bucket::Assets, QUrl("https://assets.vircadia.com") }, - { Bucket::HF_Marketplace, QUrl("https://mpassets.vircadia.com") }, + { Bucket::HF_Public, NetworkingConstants::HF_PUBLIC_CDN_URL }, + { Bucket::HF_Content, NetworkingConstants::HF_CONTENT_CDN_URL }, + { Bucket::HF_Marketplace, NetworkingConstants::HF_MPASSETS_CDN_URL }, + { Bucket::Assets, NetworkingConstants::VIRCADIA_CONTENT_CDN_URL }, + { Bucket::Public, NetworkingConstants::VIRCADIA_CONTENT_CDN_URL }, + { Bucket::Content, NetworkingConstants::VIRCADIA_CONTENT_CDN_URL } }; }; diff --git a/libraries/networking/src/LimitedNodeList.h b/libraries/networking/src/LimitedNodeList.h index 1f43428b4c..59d18fe047 100644 --- a/libraries/networking/src/LimitedNodeList.h +++ b/libraries/networking/src/LimitedNodeList.h @@ -57,7 +57,7 @@ static const size_t DEFAULT_MAX_CONNECTION_RATE { std::numeric_limits::m const char DEFAULT_ASSIGNMENT_SERVER_HOSTNAME[] = "localhost"; -const char STUN_SERVER_HOSTNAME = NetworkingConstants::STUN_SERVER_DEFAULT_HOSTNAME.toUtf8().constData(); +const char STUN_SERVER_HOSTNAME[] = "stun1.l.google.com"; const unsigned short STUN_SERVER_PORT = NetworkingConstants::STUN_SERVER_DEFAULT_PORT; const QString DOMAIN_SERVER_LOCAL_PORT_SMEM_KEY = "domain-server.local-port"; diff --git a/libraries/networking/src/NetworkingConstants.h b/libraries/networking/src/NetworkingConstants.h index 64b19419b0..2d5511e30e 100644 --- a/libraries/networking/src/NetworkingConstants.h +++ b/libraries/networking/src/NetworkingConstants.h @@ -31,8 +31,8 @@ namespace NetworkingConstants { const QUrl METAVERSE_SERVER_URL_STAGING { "https://metaverse.vircadia.com/live" }; // Web Engine requests to this parent domain have an account authorization header added - const QString AUTH_HOSTNAME_BASE = "highfidelity.com"; - const QStringList IS_AUTHABLE_HOSTNAME = { "highfidelity.com", "highfidelity.io" }; + const QString AUTH_HOSTNAME_BASE = "vircadia.com"; + const QStringList IS_AUTHABLE_HOSTNAME = { "vircadia.com", "vircadia.io" }; // Use a custom User-Agent to avoid ModSecurity filtering, e.g. by hosting providers. const QByteArray VIRCADIA_USER_AGENT = "Mozilla/5.0 (VircadiaInterface)"; @@ -44,8 +44,12 @@ namespace NetworkingConstants { const QUrl BUILDS_XML_URL("https://highfidelity.com/builds.xml"); const QUrl MASTER_BUILDS_XML_URL("https://highfidelity.com/dev-builds.xml"); - const QString CONTENT_CDN_URL = "https://content.highfidelity.com/"; - const QString PUBLIC_BUCKET_CDN_URL = "https://hifi-public.s3.amazonaws.com/"; + // CDN URLs + const QString HF_CONTENT_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1"; + const QString HF_MPASSETS_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1"; + const QString HF_PUBLIC_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1"; + const QString HF_MARKETPLACE_CDN_HOSTNAME = "mpassets.highfidelity.com"; + const QString VIRCADIA_CONTENT_CDN_URL = "https://cdn-1.vircadia.com/us-c-1"; #if USE_STABLE_GLOBAL_SERVICES const QString ICE_SERVER_DEFAULT_HOSTNAME = "ice.vircadia.com"; @@ -59,8 +63,6 @@ namespace NetworkingConstants { const unsigned short STUN_SERVER_DEFAULT_PORT = 19302; #endif - const QString MARKETPLACE_CDN_HOSTNAME = "mpassets.highfidelity.com"; - const QUrl HELP_DOCS_URL { "https://docs.vircadia.dev" }; const QUrl HELP_FORUM_URL { "https://forums.vircadia.dev" }; const QUrl HELP_SCRIPTING_REFERENCE_URL{ "https://apidocs.vircadia.dev/" }; From a95c45749902633fc43d881ba388a5303ab6b111 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Sun, 20 Sep 2020 23:37:44 -0400 Subject: [PATCH 19/46] Update active scripts. --- scripts/developer/utilities/tools/cookies.js | 7 +++---- scripts/system/libraries/globals.js | 1 - scripts/system/libraries/progressDialog.js | 3 +-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/scripts/developer/utilities/tools/cookies.js b/scripts/developer/utilities/tools/cookies.js index 8dd6a1d6da..e28fd62d73 100644 --- a/scripts/developer/utilities/tools/cookies.js +++ b/scripts/developer/utilities/tools/cookies.js @@ -11,7 +11,6 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var SLIDER_RANGE_INCREMENT_SCALE = 1 / 1000; var THUMB_COLOR = { @@ -785,7 +784,7 @@ var CHECK_MARK_COLOR = { green: 255, blue: 255 }, - imageURL: VIRCADIA_PUBLIC_CDN + 'images/tools/expand-ui.svg', + imageURL: ExternalResource.getUrl(ExternalResource.Assets, 'images/tools/expand-ui.svg'), x: x, y: y, width: rawHeight, @@ -1148,13 +1147,13 @@ var CHECK_MARK_COLOR = { if (!item.isCollapsed && item.isCollapsable && clickedOverlay == item.thumb) { Overlays.editOverlay(item.thumb, { - imageURL: VIRCADIA_PUBLIC_CDN + 'images/tools/expand-right.svg' + imageURL: ExternalResource.getUrl(ExternalResource.Assets, 'images/tools/expand-right.svg') }); this.collapse(clickedOverlay); item.isCollapsed = true; } else if (item.isCollapsed && item.isCollapsable && clickedOverlay == item.thumb) { Overlays.editOverlay(item.thumb, { - imageURL: VIRCADIA_PUBLIC_CDN + 'images/tools/expand-ui.svg' + imageURL: ExternalResource.getUrl(ExternalResource.Assets, 'images/tools/expand-ui.svg') }); this.expand(clickedOverlay); item.isCollapsed = false; diff --git a/scripts/system/libraries/globals.js b/scripts/system/libraries/globals.js index 27ccc6f8aa..0951adb0fa 100644 --- a/scripts/system/libraries/globals.js +++ b/scripts/system/libraries/globals.js @@ -9,6 +9,5 @@ // var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; isInterstitialOverlaysVisible = false; diff --git a/scripts/system/libraries/progressDialog.js b/scripts/system/libraries/progressDialog.js index e1ec11b4b7..56da5e0e13 100644 --- a/scripts/system/libraries/progressDialog.js +++ b/scripts/system/libraries/progressDialog.js @@ -9,8 +9,7 @@ // var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; -var toolIconUrl = VIRCADIA_PUBLIC_CDN + "images/tools/"; +var toolIconUrl = ExternalResource.getUrl(ExternalResource.Assets, "images/tools/"); progressDialog = (function () { var that = {}, From aeae078b67ad31f531d9134822e7336d96859e65 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Sun, 20 Sep 2020 23:37:55 -0400 Subject: [PATCH 20/46] Update some archived scripts. --- script-archive/acScripts/ControlACs.js | 5 +---- .../acScripts/botProceduralWayPoints.js | 14 ++++++-------- script-archive/acScripts/bot_randomExpression.js | 9 +++------ script-archive/acScripts/playbackMaster.js | 7 ++----- script-archive/example/ui/overlaysExample.js | 16 ++++++---------- script-archive/fireworks.js | 4 +--- script-archive/golfclub/golfClub.js | 4 +--- script-archive/grenade.js | 9 +++------ script-archive/libraries/constants.js | 4 +--- script-archive/libraries/virtualKeyboard.js | 4 ++-- script-archive/lineRider.js | 4 +--- script-archive/lobby.js | 15 ++++++--------- script-archive/pointer.js | 7 +------ script-archive/recorder.js | 6 ++---- .../utilities/diagnostics/inWorldTestTone.js | 5 +---- .../utilities/diagnostics/moveJoints.js | 4 +--- .../utilities/diagnostics/playSoundLoop.js | 8 +++----- .../utilities/diagnostics/playSoundWave.js | 5 +---- script-archive/utilities/tools/cookies.js | 9 +++------ script-archive/walk.js | 3 +-- 20 files changed, 46 insertions(+), 96 deletions(-) diff --git a/script-archive/acScripts/ControlACs.js b/script-archive/acScripts/ControlACs.js index 0208aefab6..688efa3b6e 100644 --- a/script-archive/acScripts/ControlACs.js +++ b/script-archive/acScripts/ControlACs.js @@ -9,9 +9,6 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; - // Set the following variables to the right value var NUM_AC = 3; // This is the number of AC. Their ID need to be unique and between 0 (included) and NUM_AC (excluded) var NAMES = new Array("Craig", "Clement", "Jeff"); // ACs names ordered by IDs (Default name is "ACx", x = ID + 1)) @@ -36,7 +33,7 @@ var LOAD = 6; var windowDimensions = Controller.getViewportDimensions(); -var TOOL_ICON_URL = VIRCADIA_PUBLIC_CDN + "images/tools/"; +var TOOL_ICON_URL = ExternalResource.getUrl(ExternalResource.Assets, "images/tools/"); var ALPHA_ON = 1.0; var ALPHA_OFF = 0.7; var COLOR_TOOL_BAR = { red: 0, green: 0, blue: 0 }; diff --git a/script-archive/acScripts/botProceduralWayPoints.js b/script-archive/acScripts/botProceduralWayPoints.js index 0b757bebee..393633cb5f 100644 --- a/script-archive/acScripts/botProceduralWayPoints.js +++ b/script-archive/acScripts/botProceduralWayPoints.js @@ -20,9 +20,7 @@ // //For procedural walk animation -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; -Script.include(VIRCADIA_PUBLIC_CDN + "scripts/acScripts/proceduralAnimationAPI.js"); +Script.include(ExternalResource.getUrl(ExternalResource.Assets, "scripts/acScripts/proceduralAnimationAPI.js"); var procAnimAPI = new ProcAnimAPI(); @@ -122,9 +120,9 @@ var newBodyFilePrefix = "bot" + botNumber; // set the face model fst using the bot number // there is no need to change the body model - we're using the default -Avatar.faceModelURL = VIRCADIA_PUBLIC_CDN + "meshes/" + newFaceFilePrefix + ".fst"; -Avatar.skeletonModelURL = VIRCADIA_PUBLIC_CDN + "meshes/" + newBodyFilePrefix + "_a.fst"; -Avatar.billboardURL = VIRCADIA_PUBLIC_CDN + "meshes/billboards/bot" + botNumber + ".png"; +Avatar.faceModelURL = ExternalResource.getUrl(ExternalResource.Assets, "meshes/" + newFaceFilePrefix + ".fst"); +Avatar.skeletonModelURL = ExternalResource.getUrl(ExternalResource.Assets, "meshes/" + newBodyFilePrefix + "_a.fst"); +Avatar.billboardURL = ExternalResource.getUrl(ExternalResource.Assets, "meshes/billboards/bot" + botNumber + ".png"); Agent.isAvatar = true; Agent.isListeningToAudioStream = true; @@ -147,9 +145,9 @@ function loadSounds() { var footstep_filenames = ["FootstepW2Left-12db.wav", "FootstepW2Right-12db.wav", "FootstepW3Left-12db.wav", "FootstepW3Right-12db.wav", "FootstepW5Left-12db.wav", "FootstepW5Right-12db.wav"]; - var SOUND_BASE_URL = VIRCADIA_PUBLIC_CDN + "sounds/Cocktail+Party+Snippets/Raws/"; + var SOUND_BASE_URL = ExternalResource.getUrl(ExternalResource.Assets, "sounds/Cocktail+Party+Snippets/Raws/"); - var FOOTSTEP_BASE_URL = VIRCADIA_PUBLIC_CDN + "sounds/Footsteps/"; + var FOOTSTEP_BASE_URL = ExternalResource.getUrl(ExternalResource.Assets, "sounds/Footsteps/"); for (var i = 0; i < sound_filenames.length; i++) { sounds.push(SoundCache.getSound(SOUND_BASE_URL + sound_filenames[i])); diff --git a/script-archive/acScripts/bot_randomExpression.js b/script-archive/acScripts/bot_randomExpression.js index 30d30b79b5..dfd26b54b5 100644 --- a/script-archive/acScripts/bot_randomExpression.js +++ b/script-archive/acScripts/bot_randomExpression.js @@ -12,9 +12,6 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -VIRCADIA_PUBLIC_CDN = networkingConstants.CONTENT_CDN_URL; - function getRandomFloat(min, max) { return Math.random() * (max - min) + min; } @@ -45,9 +42,9 @@ newBodyFilePrefix = "bot" + botNumber; // set the face model fst using the bot number // there is no need to change the body model - we're using the default -Avatar.faceModelURL = VIRCADIA_PUBLIC_CDN + "meshes/" + newFaceFilePrefix + ".fst"; -Avatar.skeletonModelURL = VIRCADIA_PUBLIC_CDN + "meshes/" + newBodyFilePrefix + ".fst"; -Avatar.billboardURL = VIRCADIA_PUBLIC_CDN + "meshes/billboards/bot" + botNumber + ".png"; +Avatar.faceModelURL = ExternalResource.getUrl(ExternalResource.Assets, "meshes/" + newFaceFilePrefix + ".fst"); +Avatar.skeletonModelURL = ExternalResource.getUrl(ExternalResource.Assets, "meshes/" + newBodyFilePrefix + ".fst"); +Avatar.billboardURL = ExternalResource.getUrl(ExternalResource.Assets, "meshes/billboards/bot" + botNumber + ".png"); Agent.isAvatar = true; Agent.isListeningToAudioStream = true; diff --git a/script-archive/acScripts/playbackMaster.js b/script-archive/acScripts/playbackMaster.js index 83b9374d67..65105f531b 100644 --- a/script-archive/acScripts/playbackMaster.js +++ b/script-archive/acScripts/playbackMaster.js @@ -10,16 +10,13 @@ // Script.include("./AgentPoolController.js"); -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; - var masterController = new MasterController(); var input_text = null; // Script. DO NOT MODIFY BEYOND THIS LINE. //Script.include("../libraries/toolBars.js"); -Script.include(VIRCADIA_PUBLIC_CDN + "scripts/libraries/toolBars.js"); +Script.include(ExternalResource.getUrl(ExternalResource.Assets, "scripts/libraries/toolBars.js")); // We want small icons Tool.IMAGE_HEIGHT /= 2; Tool.IMAGE_WIDTH /= 2; @@ -30,7 +27,7 @@ var STOP = 3; var LOAD = 6; var windowDimensions = Controller.getViewportDimensions(); -var TOOL_ICON_URL = VIRCADIA_PUBLIC_CDN + "images/tools/"; +var TOOL_ICON_URL = ExternalResource.getUrl(ExternalResource.Assets, "images/tools/"); var ALPHA_ON = 1.0; var ALPHA_OFF = 0.7; var COLOR_TOOL_BAR = { red: 0, green: 0, blue: 0 }; diff --git a/script-archive/example/ui/overlaysExample.js b/script-archive/example/ui/overlaysExample.js index 13324fa9f1..a4c15ee831 100644 --- a/script-archive/example/ui/overlaysExample.js +++ b/script-archive/example/ui/overlaysExample.js @@ -10,10 +10,6 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // - -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; - // The "Swatches" example of this script will create 9 different image overlays, that use the color feature to // display different colors as color swatches. The overlays can be clicked on, to change the "selectedSwatch" variable // and update the image used for the overlay so that it appears to have a selected indicator. @@ -53,7 +49,7 @@ for (s = 0; s < numberOfSwatches; s++) { width: 31, height: 54, subImage: { x: imageFromX, y: imageFromY, width: 30, height: 54 }, - imageURL: VIRCADIA_PUBLIC_CDN + "images/testing-swatches.svg", + imageURL: ExternalResource.getUrl(ExternalResource.Assets, "images/testing-swatches.svg"), color: swatchColors[s], alpha: 1 }); @@ -81,7 +77,7 @@ var toolA = Overlays.addOverlay("image", { width: 62, height: 40, subImage: { x: 0, y: 0, width: 62, height: 40 }, - imageURL: VIRCADIA_PUBLIC_CDN + "images/hifi-interface-tools.svg", + imageURL: ExternalResource.getUrl(ExternalResource.Assets, "images/hifi-interface-tools.svg"), color: { red: 255, green: 255, blue: 255}, visible: false }); @@ -91,7 +87,7 @@ var toolA = Overlays.addOverlay("image", { var slider = Overlays.addOverlay("image", { // alternate form of expressing bounds bounds: { x: 100, y: 300, width: 158, height: 35}, - imageURL: VIRCADIA_PUBLIC_CDN + "images/slider.png", + imageURL: ExternalResource.getUrl(ExternalResource.Assets, "images/slider.png"), color: { red: 255, green: 255, blue: 255}, alpha: 1 }); @@ -105,7 +101,7 @@ var thumb = Overlays.addOverlay("image", { y: 309, width: 18, height: 17, - imageURL: VIRCADIA_PUBLIC_CDN + "images/thumb.png", + imageURL: ExternalResource.getUrl(ExternalResource.Assets, "images/thumb.png"), color: { red: 255, green: 255, blue: 255}, alpha: 1 }); @@ -201,8 +197,8 @@ print("Cube overlay color =\n" // This model overlay example causes intermittent crashes in NetworkGeometry::setTextureWithNameToURL() //var modelOverlayProperties = { // textures: { -// filename1: VIRCADIA_PUBLIC_CDN + "images/testing-swatches.svg", -// filename2: VIRCADIA_PUBLIC_CDN + "images/hifi-interface-tools.svg" +// filename1: ExternalResource.getUrl(ExternalResource.Assets, "images/testing-swatches.svg",) +// filename2: ExternalResource.getUrl(ExternalResource.Assets, "images/hifi-interface-tools.svg") // } //} //var modelOverlay = Overlays.addOverlay("model", modelOverlayProperties); diff --git a/script-archive/fireworks.js b/script-archive/fireworks.js index 11f50fb478..fe0ff81203 100644 --- a/script-archive/fireworks.js +++ b/script-archive/fireworks.js @@ -1,6 +1,4 @@ -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; -var fireSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guns/GUN-SHOT2.raw"); +var fireSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/Guns/GUN-SHOT2.raw")); var audioOptions = { volume: 0.9, position: Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())) diff --git a/script-archive/golfclub/golfClub.js b/script-archive/golfclub/golfClub.js index 0fb13a47ad..4b1e76d3d0 100644 --- a/script-archive/golfclub/golfClub.js +++ b/script-archive/golfclub/golfClub.js @@ -13,9 +13,7 @@ (function () { var ball = null; - var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; - var collisionSoundURL = VIRCADIA_PUBLIC_CDN + "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"; + var collisionSoundURL = ExternalResource.getUrl(ExternalResource.Assets, "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"); var triggerState = false; var BALL_GRAVITY = -9.8; var BALL_START_VELOCITY = 0.1; diff --git a/script-archive/grenade.js b/script-archive/grenade.js index 264c884162..57d8be4ef5 100644 --- a/script-archive/grenade.js +++ b/script-archive/grenade.js @@ -9,12 +9,9 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; - -var grenadeURL = VIRCADIA_PUBLIC_CDN + "models/props/grenade/grenade.fbx"; -var fuseSoundURL = VIRCADIA_PUBLIC_CDN + "sounds/burningFuse.wav"; -var boomSoundURL = VIRCADIA_PUBLIC_CDN + "sounds/explosion.wav"; +var grenadeURL = ExternalResource.getUrl(ExternalResource.Assets, "models/props/grenade/grenade.fbx"); +var fuseSoundURL = ExternalResource.getUrl(ExternalResource.Assets, "sounds/burningFuse.wav"); +var boomSoundURL = ExternalResource.getUrl(ExternalResource.Assets, "sounds/explosion.wav"); var AudioRotationOffset = Quat.fromPitchYawRollDegrees(0, -90, 0); var audioOptions = { diff --git a/script-archive/libraries/constants.js b/script-archive/libraries/constants.js index fa9fe7def9..774c69bd39 100644 --- a/script-archive/libraries/constants.js +++ b/script-archive/libraries/constants.js @@ -6,9 +6,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; -STICK_URL = VIRCADIA_PUBLIC_CDN + "models/props/geo_stick.fbx"; +STICK_URL = ExternalResource.getUrl(ExternalResource.Assets, "models/props/geo_stick.fbx"); ZERO_VECTOR = { x: 0, y: 0, z: 0 }; diff --git a/script-archive/libraries/virtualKeyboard.js b/script-archive/libraries/virtualKeyboard.js index 0774fe6f95..674be2a9fc 100644 --- a/script-archive/libraries/virtualKeyboard.js +++ b/script-archive/libraries/virtualKeyboard.js @@ -22,8 +22,8 @@ KBD_UPPERCASE_HOVER = 2; KBD_LOWERCASE_HOVER = 3; KBD_BACKGROUND = 4; -KEYBOARD_URL = VIRCADIA_PUBLIC_CDN + "images/keyboard.svg"; -CURSOR_URL = VIRCADIA_PUBLIC_CDN + "images/cursor.svg"; +KEYBOARD_URL = ExternalResource.getUrl(ExternalResource.Assets, "images/keyboard.svg"); +CURSOR_URL = ExternalResource.getUrl(ExternalResource.Assets, "images/cursor.svg"); RETURN_CHARCODE = 0x01000004; ENTER_CHARCODE = 0x01000005; diff --git a/script-archive/lineRider.js b/script-archive/lineRider.js index d2e8b67070..b3fcb3e74a 100644 --- a/script-archive/lineRider.js +++ b/script-archive/lineRider.js @@ -11,8 +11,6 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html LineRider = function() { - var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var screenSize = Controller.getViewportDimensions(); var BUTTON_SIZE = 32; @@ -35,7 +33,7 @@ var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; y: screenSize.y - (BUTTON_SIZE + PADDING), width: BUTTON_SIZE, height: BUTTON_SIZE, - imageURL: VIRCADIA_PUBLIC_CDN + "images/coaster.png?v2", + imageURL: ExternalResource.getUrl(ExternalResource.Assets, "images/coaster.png?v2"), color: this.buttonOffColor, alpha: 1 }); diff --git a/script-archive/lobby.js b/script-archive/lobby.js index 714a329f09..bed34ccb82 100644 --- a/script-archive/lobby.js +++ b/script-archive/lobby.js @@ -9,9 +9,6 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; - var panelWall = false; var orbShell = false; var descriptionText = false; @@ -46,16 +43,16 @@ var panelsCenterShift = Vec3.subtract(panelsCenter, orbCenter); var ORB_SHIFT = { x: 0, y: -1.4, z: -0.8}; -var LOBBY_PANEL_WALL_URL = VIRCADIA_PUBLIC_CDN + "models/sets/Lobby/PanelWallForInterface.fbx"; -var LOBBY_BLANK_PANEL_TEXTURE_URL = VIRCADIA_PUBLIC_CDN + "models/sets/Lobby/Texture.jpg"; -var LOBBY_SHELL_URL = VIRCADIA_PUBLIC_CDN + "models/sets/Lobby/LobbyShellForInterface.fbx"; +var LOBBY_PANEL_WALL_URL = ExternalResource.getUrl(ExternalResource.Assets, "models/sets/Lobby/PanelWallForInterface.fbx"); +var LOBBY_BLANK_PANEL_TEXTURE_URL = ExternalResource.getUrl(ExternalResource.Assets, "models/sets/Lobby/Texture.jpg"); +var LOBBY_SHELL_URL = ExternalResource.getUrl(ExternalResource.Assets, "models/sets/Lobby/LobbyShellForInterface.fbx"); -var droneSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Lobby/drone.stereo.raw") +var droneSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/Lobby/drone.stereo.raw")); var currentDrone = null; -var latinSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Lobby/latin.stereo.raw") +var latinSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/Lobby/latin.stereo.raw")); var latinInjector = null; -var elevatorSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Lobby/elevator.stereo.raw") +var elevatorSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/Lobby/elevator.stereo.raw")); var elevatorInjector = null; var currentMuzakInjector = null; var currentSound = null; diff --git a/script-archive/pointer.js b/script-archive/pointer.js index d7e9ec9914..68f36c488f 100644 --- a/script-archive/pointer.js +++ b/script-archive/pointer.js @@ -29,9 +29,6 @@ var buttonOnColor = { blue: 100 }; -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; - var userCanPoint = false; Script.include(["libraries/toolBars.js"]); var toolBar = new ToolBar(0, 0, ToolBar.HORIZONTAL, "highfidelity.pointer.toolbar", function (screenSize) { @@ -40,14 +37,12 @@ var toolBar = new ToolBar(0, 0, ToolBar.HORIZONTAL, "highfidelity.pointer.toolba var pointerButton = toolBar.addOverlay("image", { width: BUTTON_SIZE, height: BUTTON_SIZE, - imageURL: VIRCADIA_PUBLIC_CDN + "images/laser.png", + imageURL: ExternalResource.getUrl(ExternalResource.Assets, "images/laser.png"), color: buttonOffColor, alpha: 1 }); - - function nearLinePoint(targetPosition) { var handPosition = MyAvatar.getRightPalmPosition(); var along = Vec3.subtract(targetPosition, handPosition); diff --git a/script-archive/recorder.js b/script-archive/recorder.js index c5f379c0e2..cb597f7491 100644 --- a/script-archive/recorder.js +++ b/script-archive/recorder.js @@ -9,10 +9,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -/* globals VIRCADIA_PUBLIC_CDN:true, Tool, ToolBar */ +/* globals Tool, ToolBar */ -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; Script.include("/~/system/libraries/toolBars.js"); var recordingFile = "recording.hfr"; @@ -26,7 +24,7 @@ function setDefaultPlayerOptions() { } var windowDimensions = Controller.getViewportDimensions(); -var TOOL_ICON_URL = VIRCADIA_PUBLIC_CDN + "images/tools/"; +var TOOL_ICON_URL = ExternalResource.getUrl(ExternalResource.Assets, + "images/tools/"); var ALPHA_ON = 1.0; var ALPHA_OFF = 0.7; var COLOR_ON = { red: 128, green: 0, blue: 0 }; diff --git a/script-archive/utilities/diagnostics/inWorldTestTone.js b/script-archive/utilities/diagnostics/inWorldTestTone.js index 43b22f9ca7..950d6783bc 100644 --- a/script-archive/utilities/diagnostics/inWorldTestTone.js +++ b/script-archive/utilities/diagnostics/inWorldTestTone.js @@ -11,10 +11,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; - -var sound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/220Sine.wav"); +var sound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/220Sine.wav")); var soundPlaying = false; diff --git a/script-archive/utilities/diagnostics/moveJoints.js b/script-archive/utilities/diagnostics/moveJoints.js index a997dc69a0..62ca70b313 100644 --- a/script-archive/utilities/diagnostics/moveJoints.js +++ b/script-archive/utilities/diagnostics/moveJoints.js @@ -9,9 +9,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -Script.include("../../libraries/globals.js"); - -var testAnimation = VIRCADIA_PUBLIC_CDN + "ozan/animations/forStephen/sniperJump.fbx"; +var testAnimation = ExternalResource.getUrl(ExternalResource.Assets, "ozan/animations/forStephen/sniperJump.fbx"); var FRAME_RATE = 24.0; // frames per second var isAnimating = false; diff --git a/script-archive/utilities/diagnostics/playSoundLoop.js b/script-archive/utilities/diagnostics/playSoundLoop.js index 27a01a500f..59a76cc3f8 100644 --- a/script-archive/utilities/diagnostics/playSoundLoop.js +++ b/script-archive/utilities/diagnostics/playSoundLoop.js @@ -11,14 +11,12 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; // A few sample files you may want to try: -var sound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Guitars/Guitar+-+Nylon+A.raw"); -//var sound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/220Sine.wav"); -//var sound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Cocktail+Party+Snippets/Bandcamp.wav"); +var sound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/Guitars/Guitar+-+Nylon+A.raw")); +//var sound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/220Sine.wav")); +//var sound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/Cocktail+Party+Snippets/Bandcamp.wav")); var soundPlaying = false; var options = { diff --git a/script-archive/utilities/diagnostics/playSoundWave.js b/script-archive/utilities/diagnostics/playSoundWave.js index 00febbeecb..f09457ed33 100644 --- a/script-archive/utilities/diagnostics/playSoundWave.js +++ b/script-archive/utilities/diagnostics/playSoundWave.js @@ -9,10 +9,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; - -var soundClip = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Cocktail%20Party%20Snippets/Walken1.wav"); +var soundClip = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/Cocktail%20Party%20Snippets/Walken1.wav")); function playSound() { Audio.playSound(soundClip, { diff --git a/script-archive/utilities/tools/cookies.js b/script-archive/utilities/tools/cookies.js index 8dd6a1d6da..aee45a8230 100644 --- a/script-archive/utilities/tools/cookies.js +++ b/script-archive/utilities/tools/cookies.js @@ -10,9 +10,6 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; - var SLIDER_RANGE_INCREMENT_SCALE = 1 / 1000; var THUMB_COLOR = { red: 150, @@ -785,7 +782,7 @@ var CHECK_MARK_COLOR = { green: 255, blue: 255 }, - imageURL: VIRCADIA_PUBLIC_CDN + 'images/tools/expand-ui.svg', + imageURL: ExternalResource.getUrl(ExternalResource.Assets, 'images/tools/expand-ui.svg'), x: x, y: y, width: rawHeight, @@ -1148,13 +1145,13 @@ var CHECK_MARK_COLOR = { if (!item.isCollapsed && item.isCollapsable && clickedOverlay == item.thumb) { Overlays.editOverlay(item.thumb, { - imageURL: VIRCADIA_PUBLIC_CDN + 'images/tools/expand-right.svg' + imageURL: ExternalResource.getUrl(ExternalResource.Assets, 'images/tools/expand-right.svg') }); this.collapse(clickedOverlay); item.isCollapsed = true; } else if (item.isCollapsed && item.isCollapsable && clickedOverlay == item.thumb) { Overlays.editOverlay(item.thumb, { - imageURL: VIRCADIA_PUBLIC_CDN + 'images/tools/expand-ui.svg' + imageURL: ExternalResource.getUrl(ExternalResource.Assets, 'images/tools/expand-ui.svg') }); this.expand(clickedOverlay); item.isCollapsed = false; diff --git a/script-archive/walk.js b/script-archive/walk.js index 1901450c81..bfea51d7aa 100644 --- a/script-archive/walk.js +++ b/script-archive/walk.js @@ -14,8 +14,7 @@ // // animations, reach poses, reach pose parameters, transitions, transition parameters, sounds, image/s and reference files -const VIRCADIA_PUBLIC_CDN = "https://hifi-public.s3.amazonaws.com/"; -var pathToAssets = VIRCADIA_PUBLIC_CDN + "procedural-animator/assets/"; +var pathToAssets = ExternalResource.getUrl(ExternalResource.Assets, "procedural-animator/assets/"); Script.include([ "./libraries/walkConstants.js", From d3a97832a34273d2b320824565eba43dbed1fc52 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Mon, 21 Sep 2020 00:14:22 -0400 Subject: [PATCH 21/46] Update the rest of non /script-archive/ script URLs. --- scripts/developer/accelerationFilterApp.js | 6 +++--- scripts/developer/automaticLookAt.js | 4 ++-- scripts/developer/exponentialFilterApp.js | 6 +++--- scripts/developer/facialExpressions.js | 4 ++-- scripts/developer/tests/agentAPITest.js | 2 +- .../developer/tests/avatarAttachmentTest.js | 18 +++++++++--------- .../batonSoundTestEntityScript.js | 2 +- .../developer/tests/filtered-puck-attach.js | 8 ++++---- scripts/developer/tests/injectorTest.js | 2 +- .../tests/performance/domain-check.js | 10 +++++----- .../tests/performance/rayPickPerformance.js | 2 +- scripts/developer/tests/performance/summon.js | 10 +++++----- scripts/developer/tests/puck-attach.js | 8 ++++---- .../rapidProceduralChangeTest.js | 4 ++-- .../developer/tests/scriptableResource/lib.js | 2 +- scripts/developer/tests/skybox/skyboxTest.js | 2 +- .../developer/tests/tabletEventBridgeTest.js | 10 +++++----- .../utilities/tools/disableAvatarAnimations.js | 2 +- .../utilities/workload/test_physics_scene.js | 2 +- scripts/system/audio.js | 2 +- scripts/system/avatarFinderBeacon.js | 4 ++-- scripts/system/commerce/wallet.js | 2 +- .../controllerModules/equipEntity.js | 2 +- scripts/system/controllers/grab.js | 4 ++-- scripts/system/libraries/WebTablet.js | 2 +- .../system/libraries/networkingConstants.js | 4 ++-- scripts/system/makeUserConnection.js | 8 ++++---- scripts/system/menu.js | 2 +- scripts/system/snapshot.js | 2 +- scripts/system/tablet-users.js | 2 +- scripts/tutorials/createFloatingLanternBox.js | 4 ++-- scripts/tutorials/createTetherballStick.js | 6 +++--- .../tutorials/entity_scripts/ambientSound.js | 2 +- scripts/tutorials/entity_scripts/flashlight.js | 6 +++--- .../entity_scripts/floatingLanternBox.js | 2 +- scripts/tutorials/entity_scripts/sit.js | 2 +- scripts/tutorials/nBody.js | 4 ++-- .../DomainContent/Cupcake/eatable.js | 2 +- .../DomainContent/Toybox/doll/doll.js | 2 +- .../Toybox/flashlight/flashlight.js | 2 +- .../DomainContent/Toybox/pistol/pistol.js | 2 +- .../marketplace/blocks/blocksApp.js | 6 +++--- .../marketplace/boppo/boppoClownEntity.js | 3 +-- .../marketplace/boppo/boppoServer.js | 17 ++++++++--------- .../marketplace/boppo/clownGloveDispenser.js | 4 ++-- .../marketplace/boppo/createElBoppo.js | 9 ++++----- .../marketplace/dart/createDart.js | 2 +- unpublishedScripts/marketplace/dart/dart.js | 2 +- .../marketplace/emoji-tablet/emojiTablet.js | 6 +++--- .../gameTable/games/deckOfCards/deckOfCards.js | 4 ++-- .../gameTable/games/deckOfCards/playingCard.js | 6 +++--- .../marketplace/shortbow/enemyClientEntity.js | 2 +- 52 files changed, 115 insertions(+), 118 deletions(-) diff --git a/scripts/developer/accelerationFilterApp.js b/scripts/developer/accelerationFilterApp.js index a2ef937e52..adda9d216e 100644 --- a/scripts/developer/accelerationFilterApp.js +++ b/scripts/developer/accelerationFilterApp.js @@ -82,13 +82,13 @@ var mappingJson = { // var TABLET_BUTTON_NAME = "ACCFILT"; -var HTML_URL = "https://s3.amazonaws.com/hifi-public/tony/html/accelerationFilterApp.html?2"; +var HTML_URL = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/html/accelerationFilterApp.html?2"); var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var tabletButton = tablet.addButton({ text: TABLET_BUTTON_NAME, - icon: "https://s3.amazonaws.com/hifi-public/tony/icons/tpose-i.svg", - activeIcon: "https://s3.amazonaws.com/hifi-public/tony/icons/tpose-a.svg" + icon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/tpose-i.svg"), + activeIcon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/tpose-a.svg") }); tabletButton.clicked.connect(function () { diff --git a/scripts/developer/automaticLookAt.js b/scripts/developer/automaticLookAt.js index 542d0df0d8..7778fcef55 100644 --- a/scripts/developer/automaticLookAt.js +++ b/scripts/developer/automaticLookAt.js @@ -39,8 +39,8 @@ var LookAtDebugger = function() { var self = this; var IMAGE_DIMENSIONS = {x: 0.2, y: 0.2, z:0.2}; - var TARGET_ICON_PATH = "https://hifi-content.s3.amazonaws.com/luis/test_scripts/LookAtApp/eyeFocus.png"; - var INFINITY_ICON_PATH = "https://hifi-content.s3.amazonaws.com/luis/test_scripts/LookAtApp/noFocus.png"; + var TARGET_ICON_PATH = ExternalResource.getUrl(ExternalResource.HF_Content, "/luis/test_scripts/LookAtApp/eyeFocus.png"); + var INFINITY_ICON_PATH = ExternalResource.getUrl(ExternalResource.HF_Content, "/luis/test_scripts/LookAtApp/noFocus.png"); this.items = {}; this.active = false; diff --git a/scripts/developer/exponentialFilterApp.js b/scripts/developer/exponentialFilterApp.js index 774ea95533..99717bfccc 100644 --- a/scripts/developer/exponentialFilterApp.js +++ b/scripts/developer/exponentialFilterApp.js @@ -89,13 +89,13 @@ var mappingJson = { // var TABLET_BUTTON_NAME = "EXPFILT"; -var HTML_URL = "https://s3.amazonaws.com/hifi-public/tony/html/exponentialFilterApp.html?7"; +var HTML_URL = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/html/exponentialFilterApp.html?7"); var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var tabletButton = tablet.addButton({ text: TABLET_BUTTON_NAME, - icon: "https://s3.amazonaws.com/hifi-public/tony/icons/tpose-i.svg", - activeIcon: "https://s3.amazonaws.com/hifi-public/tony/icons/tpose-a.svg" + icon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/tpose-i.svg"), + activeIcon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/tpose-a.svg") }); tabletButton.clicked.connect(function () { diff --git a/scripts/developer/facialExpressions.js b/scripts/developer/facialExpressions.js index 37a4f4f796..24392976a6 100644 --- a/scripts/developer/facialExpressions.js +++ b/scripts/developer/facialExpressions.js @@ -20,8 +20,8 @@ var TRANSITION_TIME_SECONDS = 0.25; var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - var icon = "https://hifi-content.s3.amazonaws.com/elisalj/emoji_scripts/icons/emoji-i.svg"; - var activeIcon = "https://hifi-content.s3.amazonaws.com/elisalj/emoji_scripts/icons/emoji-a.svg"; + var icon = ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/emoji_scripts/icons/emoji-i.svg"); + var activeIcon = ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/emoji_scripts/icons/emoji-a.svg"); var isActive = true; var controllerMappingName; diff --git a/scripts/developer/tests/agentAPITest.js b/scripts/developer/tests/agentAPITest.js index b7d21efbdf..f9d9d53ae0 100644 --- a/scripts/developer/tests/agentAPITest.js +++ b/scripts/developer/tests/agentAPITest.js @@ -7,7 +7,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -var SOUND_DATA = { url: "http://hifi-content.s3.amazonaws.com/howard/sounds/piano1.wav" }; +var SOUND_DATA = { url: ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/sounds/piano1.wav") }; // getSound function from crowd-agent.js function getSound(data, callback) { // callback(sound) when downloaded (which may be immediate). diff --git a/scripts/developer/tests/avatarAttachmentTest.js b/scripts/developer/tests/avatarAttachmentTest.js index b9dfcf9596..9c3756ef36 100644 --- a/scripts/developer/tests/avatarAttachmentTest.js +++ b/scripts/developer/tests/avatarAttachmentTest.js @@ -76,20 +76,20 @@ var buttonPositionX = windowDimensions.x - BUTTON_PADDING - BUTTON_WIDTH; var buttonPositionY = (windowDimensions.y - BUTTON_HEIGHT) / 2 - (BUTTON_HEIGHT + BUTTON_PADDING); var hatButton = new ToggleButtonBuddy(buttonPositionX, buttonPositionY, BUTTON_WIDTH, BUTTON_HEIGHT, { - up: "https://s3.amazonaws.com/hifi-public/tony/icons/hat-up.svg", - down: "https://s3.amazonaws.com/hifi-public/tony/icons/hat-down.svg" + up: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/hat-up.svg"), + down: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/hat-down.svg") }); buttonPositionY += BUTTON_HEIGHT + BUTTON_PADDING; var coatButton = new ToggleButtonBuddy(buttonPositionX, buttonPositionY, BUTTON_WIDTH, BUTTON_HEIGHT, { - up: "https://s3.amazonaws.com/hifi-public/tony/icons/coat-up.svg", - down: "https://s3.amazonaws.com/hifi-public/tony/icons/coat-down.svg" + up: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/coat-up.svg"), + down: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/coat-down.svg") }); buttonPositionY += BUTTON_HEIGHT + BUTTON_PADDING; var coatButton2 = new ToggleButtonBuddy(buttonPositionX, buttonPositionY, BUTTON_WIDTH, BUTTON_HEIGHT, { - up: "https://s3.amazonaws.com/hifi-public/tony/icons/coat-up.svg", - down: "https://s3.amazonaws.com/hifi-public/tony/icons/coat-down.svg" + up: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/coat-up.svg"), + down: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/coat-down.svg") }); var AVATAR_ATTACHMENT = 0; @@ -97,7 +97,7 @@ var AVATAR_SOFT_ATTACHMENT = 1; var ENTITY_ATTACHMENT = 2; var HAT_ATTACHMENT = { - modelURL: "https://s3.amazonaws.com/hifi-public/tony/cowboy-hat.fbx", + modelURL: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/cowboy-hat.fbx"), jointName: "Head", translation: {"x": 0, "y": 0.25, "z": 0.03}, rotation: {"x": 0, "y": 0, "z": 0, "w": 1}, @@ -106,7 +106,7 @@ var HAT_ATTACHMENT = { }; var COAT_ATTACHMENT = { - modelURL: "https://hifi-content.s3.amazonaws.com/ozan/dev/clothes/coat/coat_rig.fbx", + modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/ozan/dev/clothes/coat/coat_rig.fbx"), jointName: "Hips", translation: {"x": 0, "y": 0, "z": 0}, rotation: {"x": 0, "y": 0, "z": 0, "w": 1}, @@ -115,7 +115,7 @@ var COAT_ATTACHMENT = { }; var COAT_ENTITY_ATTACHMENT = { - modelURL: "https://hifi-content.s3.amazonaws.com/ozan/dev/clothes/coat/coat_rig.fbx", + modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/ozan/dev/clothes/coat/coat_rig.fbx"), jointName: "Hips", translation: {"x": 0, "y": 0, "z": 0}, rotation: {"x": 0, "y": 0, "z": 0, "w": 1}, diff --git a/scripts/developer/tests/batonSoundEntityTest/batonSoundTestEntityScript.js b/scripts/developer/tests/batonSoundEntityTest/batonSoundTestEntityScript.js index 910378e04e..2075937c4b 100644 --- a/scripts/developer/tests/batonSoundEntityTest/batonSoundTestEntityScript.js +++ b/scripts/developer/tests/batonSoundEntityTest/batonSoundTestEntityScript.js @@ -7,7 +7,7 @@ var _this; BatonSoundEntity = function() { _this = this; - _this.drumSound = SoundCache.getSound("https://s3.amazonaws.com/hifi-public/sounds/Drums/deepdrum1.wav"); + _this.drumSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Public, "/sounds/Drums/deepdrum1.wav")); _this.injectorOptions = {position: MyAvatar.position, loop: false, volume: 1}; _this.soundIntervalConnected = false; _this.batonDebugModel = Entities.addEntity({ diff --git a/scripts/developer/tests/filtered-puck-attach.js b/scripts/developer/tests/filtered-puck-attach.js index ad9b17a0e4..907442ac84 100644 --- a/scripts/developer/tests/filtered-puck-attach.js +++ b/scripts/developer/tests/filtered-puck-attach.js @@ -17,14 +17,14 @@ Script.include("/~/system/libraries/Xform.js"); (function() { // BEGIN LOCAL_SCOPE var TABLET_BUTTON_NAME = "PUCKATTACH"; -var TABLET_APP_URL = "https://s3.amazonaws.com/hifi-public/tony/html/filtered-puck-attach.html?2"; +var TABLET_APP_URL = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/html/filtered-puck-attach.html?2"); var NUM_TRACKED_OBJECTS = 16; var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var tabletButton = tablet.addButton({ text: TABLET_BUTTON_NAME, - icon: "https://s3.amazonaws.com/hifi-public/tony/icons/puck-i.svg", - activeIcon: "https://s3.amazonaws.com/hifi-public/tony/icons/puck-a.svg" + icon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/puck-i.svg"), + activeIcon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/puck-a.svg") }); var shown = false; @@ -87,7 +87,7 @@ function entityExists(entityID) { return Object.keys(Entities.getEntityProperties(entityID)).length > 0; } -var VIVE_PUCK_MODEL = "https://s3.amazonaws.com/hifi-public/tony/vive_tracker_puck_y180z180.obj"; +var VIVE_PUCK_MODEL = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/vive_tracker_puck_y180z180.obj"); var VIVE_PUCK_DIMENSIONS = { x: 0.0945, y: 0.0921, z: 0.0423 }; // 1/1000th scale of model var VIVE_PUCK_SEARCH_DISTANCE = 1.5; // metres var VIVE_PUCK_SPAWN_DISTANCE = 0.5; // metres diff --git a/scripts/developer/tests/injectorTest.js b/scripts/developer/tests/injectorTest.js index 171186c91e..a1844f4cae 100644 --- a/scripts/developer/tests/injectorTest.js +++ b/scripts/developer/tests/injectorTest.js @@ -9,7 +9,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var soundURL = "http://hifi-public.s3.amazonaws.com/birarda/medium-crowd.wav"; +var soundURL = ExternalResource.getUrl(ExternalResource.HF_Public, "/birarda/medium-crowd.wav"); var audioOptions = { position: { x: 0.0, y: 0.0, z: 0.0 }, volume: 0.5 diff --git a/scripts/developer/tests/performance/domain-check.js b/scripts/developer/tests/performance/domain-check.js index c715a2ada8..ec8e6fdbc6 100644 --- a/scripts/developer/tests/performance/domain-check.js +++ b/scripts/developer/tests/performance/domain-check.js @@ -26,12 +26,12 @@ var MINIMUM_AVATARS = 25; // changeable by prompt var SPREAD_TIME_MS = 500; var DENSITY = 0.3; // square meters per person. Some say 10 sq ft is arm's length (0.9m^2), 4.5 is crowd (0.4m^2), 2.5 is mosh pit (0.2m^2). -var SOUND_DATA = {url: "http://hifi-content.s3.amazonaws.com/howard/sounds/piano1.wav"}; +var SOUND_DATA = {url: ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/sounds/piano1.wav"}; var AVATARS_CHATTERING_AT_ONCE = 4; // How many of the agents should we request to play SOUND at once. var NEXT_SOUND_SPREAD = 500; // millisecond range of how long to wait after one sound finishes, before playing the next var ANIMATION_DATA = { - "url": "http://hifi-content.s3.amazonaws.com/howard/resources/avatar/animations/idle.fbx", - // "url": "http://hifi-content.s3.amazonaws.com/howard/resources/avatar/animations/walk_fwd.fbx", // alternative example + "url": ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/resources/avatar/animations/idle.fbx"), + // "url": ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/resources/avatar/animations/walk_fwd.fbx"), // alternative example "startFrame": 0.0, "endFrame": 300.0, "timeScale": 1.0, @@ -128,7 +128,7 @@ function messageHandler(channel, messageString, senderID) { orientation: Quat.fromPitchYawRollDegrees(0, Quat.safeEulerAngles(MyAvatar.orientation).y + (turnSpread * (Math.random() - 0.5)), 0), soundData: chatter && SOUND_DATA, listen: true, - skeletonModelURL: "http://hifi-content.s3.amazonaws.com/howard/resources/meshes/defaultAvatar_full.fst", + skeletonModelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/resources/meshes/defaultAvatar_full.fst"), animationData: ANIMATION_DATA }); } @@ -278,7 +278,7 @@ function doRender(continuation) { if (MINIMUM_AVATARS && !fail) { if (0 === summonedAgents.length) { fail = "FAIL: No agents reported.\nPlease run " + MINIMUM_AVATARS + " instances of\n\ -http://hifi-content.s3.amazonaws.com/howard/scripts/tests/performance/crowd-agent.js?v=3\n\ +https://cdn-1.vircadia.com/eu-c-1/howard/scripts/tests/performance/crowd-agent.js?v=3\n\ on your domain server."; } else if (total < MINIMUM_AVATARS) { fail = "FAIL: Only " + summonedAgents.length + " agents reported. Now missing " + (MINIMUM_AVATARS - total) + " avatars, total."; diff --git a/scripts/developer/tests/performance/rayPickPerformance.js b/scripts/developer/tests/performance/rayPickPerformance.js index 92d12c0e71..ff6ad28eda 100644 --- a/scripts/developer/tests/performance/rayPickPerformance.js +++ b/scripts/developer/tests/performance/rayPickPerformance.js @@ -22,7 +22,7 @@ var EXPECTED_INTERSECTIONS = 1286 * OUTER_LOOPS; var center = Vec3.sum(MyAvatar.position, Vec3.multiply(3, Quat.getFront(Camera.getOrientation()))); -var model_url = "http://hifi-content.s3.amazonaws.com/caitlyn/production/Scansite/buddhaReduced.fbx"; +var model_url = ExternalResource.getUrl(ExternalResource.HF_Content, "/caitlyn/production/Scansite/buddhaReduced.fbx"); var rayPickOverlays = Array(); diff --git a/scripts/developer/tests/performance/summon.js b/scripts/developer/tests/performance/summon.js index 663a549a2a..88f9f4ca8b 100644 --- a/scripts/developer/tests/performance/summon.js +++ b/scripts/developer/tests/performance/summon.js @@ -31,11 +31,11 @@ debug('startup seeking:', MINIMUM_AVATARS, 'listening:', N_LISTENING, 'chatterin var SPREAD_TIME_MS = 500; var DENSITY = 0.3; // square meters per person. Some say 10 sq ft is arm's length (0.9m^2), 4.5 is crowd (0.4m^2), 2.5 is mosh pit (0.2m^2). -var SOUND_DATA = {url: "http://hifi-content.s3.amazonaws.com/howard/sounds/piano1.wav"}; +var SOUND_DATA = {url: ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/sounds/piano1.wav")}; var NEXT_SOUND_SPREAD = 500; // millisecond range of how long to wait after one sound finishes, before playing the next var ANIMATION_DATA = { - "url": "http://hifi-content.s3.amazonaws.com/howard/resources/avatar/animations/idle.fbx", - // "url": "http://hifi-content.s3.amazonaws.com/howard/resources/avatar/animations/walk_fwd.fbx", // alternative example + "url": ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/resources/avatar/animations/idle.fbx"), + // "url": ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/resources/avatar/animations/walk_fwd.fbx"), // alternative example "startFrame": 0.0, "endFrame": 300.0, "timeScale": 1.0, @@ -100,7 +100,7 @@ function messageHandler(channel, messageString, senderID) { orientation: Quat.fromPitchYawRollDegrees(0, Quat.safeEulerAngles(MyAvatar.orientation).y + (turnSpread * (Math.random() - 0.5)), 0), soundData: chatter && SOUND_DATA, listen: listen, - skeletonModelURL: "http://hifi-content.s3.amazonaws.com/howard/resources/meshes/defaultAvatar_full.fst", + skeletonModelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/resources/meshes/defaultAvatar_full.fst"), animationData: ANIMATION_DATA }); } @@ -148,7 +148,7 @@ Script.setTimeout(function () { var total = AvatarList.getAvatarIdentifiers().length; if (0 === summonedAgents.length) { Window.alert("No agents reported.\n\Please run " + MINIMUM_AVATARS + " instances of\n\ -http://hifi-content.s3.amazonaws.com/howard/scripts/tests/performance/crowd-agent.js?v=someDate\n\ +https://cdn-1.vircadia.com/eu-c-1/howard/scripts/tests/performance/crowd-agent.js?v=someDate\n\ on your domain server."); } else if (total < MINIMUM_AVATARS) { Window.alert("Only " + summonedAgents.length + " agents reported. Now missing " + (MINIMUM_AVATARS - total) + " avatars, total."); diff --git a/scripts/developer/tests/puck-attach.js b/scripts/developer/tests/puck-attach.js index 019a911535..ca057fc8c4 100644 --- a/scripts/developer/tests/puck-attach.js +++ b/scripts/developer/tests/puck-attach.js @@ -17,13 +17,13 @@ Script.include("/~/system/libraries/Xform.js"); (function() { // BEGIN LOCAL_SCOPE var TABLET_BUTTON_NAME = "PUCKTACH"; -var TABLET_APP_URL = "https://hifi-content.s3.amazonaws.com/seefo/production/puck-attach/puck-attach.html"; +var TABLET_APP_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/seefo/production/puck-attach/puck-attach.html"); var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var tabletButton = tablet.addButton({ text: TABLET_BUTTON_NAME, - icon: "https://s3.amazonaws.com/hifi-public/tony/icons/puck-i.svg", - activeIcon: "https://s3.amazonaws.com/hifi-public/tony/icons/puck-a.svg" + icon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/puck-i.svg"), + activeIcon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/puck-a.svg") }); var shown = false; @@ -85,7 +85,7 @@ function entityExists(entityID) { return Object.keys(Entities.getEntityProperties(entityID)).length > 0; } -var VIVE_PUCK_MODEL = "https://s3.amazonaws.com/hifi-public/tony/vive_tracker_puck_y180z180.obj"; +var VIVE_PUCK_MODEL = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/vive_tracker_puck_y180z180.obj"); var VIVE_PUCK_DIMENSIONS = { x: 0.0945, y: 0.0921, z: 0.0423 }; // 1/1000th scale of model var VIVE_PUCK_SEARCH_DISTANCE = 1.5; // metres var VIVE_PUCK_SPAWN_DISTANCE = 0.5; // metres diff --git a/scripts/developer/tests/rapidProceduralChange/rapidProceduralChangeTest.js b/scripts/developer/tests/rapidProceduralChange/rapidProceduralChangeTest.js index e28a7b01e2..e4d9619abd 100644 --- a/scripts/developer/tests/rapidProceduralChange/rapidProceduralChangeTest.js +++ b/scripts/developer/tests/rapidProceduralChange/rapidProceduralChangeTest.js @@ -25,8 +25,8 @@ centerUp.y += 0.5; var centerDown = Vec3.sum(MyAvatar.position, Vec3.multiply(3, Quat.getForward(orientation))); centerDown.y -= 0.5; -var ENTITY_SHADER_URL = "https://s3-us-west-1.amazonaws.com/hifi-content/eric/shaders/uniformTest.fs"; -var SKYBOX_SHADER_URL = "https://s3-us-west-1.amazonaws.com/hifi-content/eric/shaders/timerTest.fs"; +var ENTITY_SHADER_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/eric/shaders/uniformTest.fs"); +var SKYBOX_SHADER_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/eric/shaders/timerTest.fs"); var entityData = { ProceduralEntity: { diff --git a/scripts/developer/tests/scriptableResource/lib.js b/scripts/developer/tests/scriptableResource/lib.js index 255b3bd036..bb8dc6a713 100644 --- a/scripts/developer/tests/scriptableResource/lib.js +++ b/scripts/developer/tests/scriptableResource/lib.js @@ -56,7 +56,7 @@ function getFrame(callback) { function prefetch(callback) { // A folder full of individual frames. - var MOVIE_URL = "http://hifi-content.s3.amazonaws.com/james/vidtest/"; + var MOVIE_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/james/vidtest/"); var frames = []; diff --git a/scripts/developer/tests/skybox/skyboxTest.js b/scripts/developer/tests/skybox/skyboxTest.js index 76d80ab153..e0b95a34c7 100644 --- a/scripts/developer/tests/skybox/skyboxTest.js +++ b/scripts/developer/tests/skybox/skyboxTest.js @@ -27,7 +27,7 @@ var PX_RGBA_URL = Script.resolvePath('px_rgba.fs'); var PX_TEX_URL = Script.resolvePath('px_tex.fs'); var PX_TEX_RGBA_URL = Script.resolvePath('px_tex_rgba.fs'); -var TEX_URL = 'https://hifi-public.s3.amazonaws.com/alan/Playa/Skies/Test-Sky_out.png'; +var TEX_URL = ExternalResource.getUrl(ExternalResource.HF_Public, "/alan/Playa/Skies/Test-Sky_out.png"); var NO_TEX = ''; var COLOR = { red: 255, green: 0, blue: 255 }; diff --git a/scripts/developer/tests/tabletEventBridgeTest.js b/scripts/developer/tests/tabletEventBridgeTest.js index 83031741fc..7b58aa45c1 100644 --- a/scripts/developer/tests/tabletEventBridgeTest.js +++ b/scripts/developer/tests/tabletEventBridgeTest.js @@ -17,13 +17,13 @@ var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var tabletButton = tablet.addButton({ text: "SOUNDS", - icon: "http://s3.amazonaws.com/hifi-public/tony/icons/trombone-i.png", - activeIcon: "http://s3.amazonaws.com/hifi-public/tony/icons/trombone-a.png" + icon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/trombone-i.png"), + activeIcon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/trombone-a.png") }); -var WEB_BRIDGE_TEST_HTML = "https://s3.amazonaws.com/hifi-public/tony/webBridgeTest.html?2"; -var TROMBONE_URL = "https://s3.amazonaws.com/hifi-public/tony/audio/sad-trombone.wav"; -var SCREAM_URL = "https://s3.amazonaws.com/hifi-public/tony/audio/wilhelm-scream.wav"; +var WEB_BRIDGE_TEST_HTML = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/webBridgeTest.html?2"); +var TROMBONE_URL = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/audio/sad-trombone.wav"); +var SCREAM_URL = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/audio/wilhelm-scream.wav"); tabletButton.clicked.connect(function () { if (shown) { diff --git a/scripts/developer/utilities/tools/disableAvatarAnimations.js b/scripts/developer/utilities/tools/disableAvatarAnimations.js index fc3415fb80..ed524491e6 100644 --- a/scripts/developer/utilities/tools/disableAvatarAnimations.js +++ b/scripts/developer/utilities/tools/disableAvatarAnimations.js @@ -15,7 +15,7 @@ var skeletonModelURL = ""; var jointCount = 0; var excludedRoles = ["rightHandGraspOpen", "rightHandGraspClosed", "leftHandGraspOpen", "leftHandGraspClosed"]; -var IDLE_URL = "http://hifi-content.s3.amazonaws.com/ozan/dev/anim/standard_anims_160127/idle.fbx"; +var IDLE_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/ozan/dev/anim/standard_anims_160127/idle.fbx"); function overrideAnims() { var roles = MyAvatar.getAnimationRoles(); diff --git a/scripts/developer/utilities/workload/test_physics_scene.js b/scripts/developer/utilities/workload/test_physics_scene.js index e923bd0fea..833bbf10a1 100644 --- a/scripts/developer/utilities/workload/test_physics_scene.js +++ b/scripts/developer/utilities/workload/test_physics_scene.js @@ -85,7 +85,7 @@ function addObject(a, b, c, lifetime) { rotation: stageOrientation, dimensions: OBJECT_DIM, lifetime: (lifetime === undefined) ? DEFAULT_LIFETIME : lifetime, - modelURL: "https://hifi-content.s3.amazonaws.com/jimi/props/cones/trafficCone.fbx", + modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/jimi/props/cones/trafficCone.fbx"), shapeType:shapeTypes[4], dynamic: true, gravity:{"x":0,"y":-9.8,"z":0}, diff --git a/scripts/system/audio.js b/scripts/system/audio.js index a161b40ffd..5727f78a35 100644 --- a/scripts/system/audio.js +++ b/scripts/system/audio.js @@ -14,7 +14,7 @@ (function() { // BEGIN LOCAL_SCOPE var TABLET_BUTTON_NAME = "AUDIO"; -var HOME_BUTTON_TEXTURE = "http://hifi-content.s3.amazonaws.com/alan/dev/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-root.png"; +var HOME_BUTTON_TEXTURE = ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-root.png"); var AUDIO_QML_SOURCE = "hifi/audio/Audio.qml"; var MUTE_ICONS = { diff --git a/scripts/system/avatarFinderBeacon.js b/scripts/system/avatarFinderBeacon.js index 00f3d15fbb..8679b1427c 100644 --- a/scripts/system/avatarFinderBeacon.js +++ b/scripts/system/avatarFinderBeacon.js @@ -20,8 +20,8 @@ var beacons = {}; // List of .fst files used by AC scripts, that should be ignored in the script in case TRY_TO_IGNORE_AC_AGENTS is enabled var POSSIBLE_AC_AVATARS = [ - 'http://hifi-content.s3.amazonaws.com/ozan/dev/avatars/invisible_avatar/invisible_avatar.fst', - 'http://hifi-content.s3.amazonaws.com/ozan/dev/avatars/camera_man/pod/_latest/camera_man_pod.fst' + ExternalResource.getUrl(ExternalResource.HF_Content, "/ozan/dev/avatars/invisible_avatar/invisible_avatar.fst"), + ExternalResource.getUrl(ExternalResource.HF_Content, "/ozan/dev/avatars/camera_man/pod/_latest/camera_man_pod.fst") ]; AvatarFinderBeacon = function(avatar) { diff --git a/scripts/system/commerce/wallet.js b/scripts/system/commerce/wallet.js index 86806fd8b4..1dac9d111a 100644 --- a/scripts/system/commerce/wallet.js +++ b/scripts/system/commerce/wallet.js @@ -338,7 +338,7 @@ var SEND_MONEY_PARTICLE_PROPERTIES = { radiusSpread: 0, radiusStart: 0.2, speedSpread: 0, - textures: "http://hifi-content.s3.amazonaws.com/alan/dev/Particles/Bokeh-Particle-HFC.png", + textures: ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/Particles/Bokeh-Particle-HFC.png"), type: 'ParticleEffect' }; diff --git a/scripts/system/controllers/controllerModules/equipEntity.js b/scripts/system/controllers/controllerModules/equipEntity.js index 1deb97c20e..0540f8d669 100644 --- a/scripts/system/controllers/controllerModules/equipEntity.js +++ b/scripts/system/controllers/controllerModules/equipEntity.js @@ -20,7 +20,7 @@ Script.include("/~/system/libraries/cloneEntityUtils.js"); Script.include("/~/system/libraries/utils.js"); -var DEFAULT_SPHERE_MODEL_URL = "http://hifi-content.s3.amazonaws.com/alan/dev/equip-Fresnel-3.fbx"; +var DEFAULT_SPHERE_MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/equip-Fresnel-3.fbx"); var EQUIP_SPHERE_SCALE_FACTOR = 0.65; diff --git a/scripts/system/controllers/grab.js b/scripts/system/controllers/grab.js index 0bd2e9df9a..1a3ff052c2 100644 --- a/scripts/system/controllers/grab.js +++ b/scripts/system/controllers/grab.js @@ -164,8 +164,8 @@ var beacon = { }; // TODO: play sounds again when we aren't leaking AudioInjector threads -// var grabSound = SoundCache.getSound("https://hifi-public.s3.amazonaws.com/eric/sounds/CloseClamp.wav"); -// var releaseSound = SoundCache.getSound("https://hifi-public.s3.amazonaws.com/eric/sounds/ReleaseClamp.wav"); +// var grabSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Public, "/eric/sounds/CloseClamp.wav")); +// var releaseSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Public, "/eric/sounds/ReleaseClamp.wav")); // var VOLUME = 0.0; diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index 9f2142504c..287cdf0da1 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -37,7 +37,7 @@ var TABLET_NATURAL_DIMENSIONS = {x: 32.083, y: 48.553, z: 2.269}; var HOME_BUTTON_TEXTURE = Script.resourcesPath() + "images/button-close.png"; // var HOME_BUTTON_TEXTURE = Script.resourcesPath() + "meshes/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-close.png"; -// var TABLET_MODEL_PATH = "http://hifi-content.s3.amazonaws.com/alan/dev/tablet-with-home-button.fbx"; +// var TABLET_MODEL_PATH = ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/tablet-with-home-button.fbx"); var LOCAL_TABLET_MODEL_PATH = Script.resourcesPath() + "meshes/tablet-with-home-button-small-bezel.fbx"; var HIGH_PRIORITY = 1; diff --git a/scripts/system/libraries/networkingConstants.js b/scripts/system/libraries/networkingConstants.js index 5c390eec0b..a83d2cb4b4 100644 --- a/scripts/system/libraries/networkingConstants.js +++ b/scripts/system/libraries/networkingConstants.js @@ -10,8 +10,8 @@ var INTERFACE_METADATA_SOURCE = "https://cdn.vircadia.com/dist/launcher/vircadiaMeta.json"; // Base CDN URLs -var CONTENT_CDN_URL = "https://content.highfidelity.com/"; // "https://content.vircadia.com/"; -var PUBLIC_BUCKET_CDN_URL = "http://s3.amazonaws.com/hifi-public/"; +var CONTENT_CDN_URL = ExternalResource.HF_Content; // "https://cdn-1.vircadia.com/" + usCDN; +var PUBLIC_BUCKET_CDN_URL = ExternalResource.HF_Public; var euCDN = "eu-c-1/"; var usCDN = "us-c-1/"; diff --git a/scripts/system/makeUserConnection.js b/scripts/system/makeUserConnection.js index 37d7d898bc..1483b65a9b 100644 --- a/scripts/system/makeUserConnection.js +++ b/scripts/system/makeUserConnection.js @@ -35,8 +35,8 @@ var CONNECTING_TIME = 100; // ms One interval. var PARTICLE_RADIUS = 0.15; // m var PARTICLE_ANGLE_INCREMENT = 360 / 45; // 1hz - var HANDSHAKE_SOUND_URL = "https://s3-us-west-1.amazonaws.com/hifi-content/davidkelly/production/audio/4beat_sweep.wav"; - var SUCCESSFUL_HANDSHAKE_SOUND_URL = "https://s3-us-west-1.amazonaws.com/hifi-content/davidkelly/production/audio/3rdbeat_success_bell.wav"; + var HANDSHAKE_SOUND_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/davidkelly/production/audio/4beat_sweep.wav"); + var SUCCESSFUL_HANDSHAKE_SOUND_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/davidkelly/production/audio/3rdbeat_success_bell.wav"); var PREFERRER_HAND_JOINT_POSTFIX_ORDER = ['Middle1', 'Index1', '']; var HAPTIC_DATA = { initial: { duration: 20, strength: 0.6 }, // duration is in ms @@ -60,7 +60,7 @@ "radiusStart": 0.0025, "emitSpeed": 0.02, "speedSpread": 0.015, - "textures": "http://hifi-content.s3.amazonaws.com/alan/dev/Particles/Bokeh-Particle.png", + "textures": ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/Particles/Bokeh-Particle.png"), "color": {"red": 255, "green": 255, "blue": 255}, "colorFinish": {"red": 0, "green": 164, "blue": 255}, "colorStart": {"red": 255, "green": 255, "blue": 255}, @@ -92,7 +92,7 @@ "radiusStart": 0.04, "speedSpread": 0.00, "radiusSpread": 0.0, - "textures": "http://hifi-content.s3.amazonaws.com/alan/dev/Particles/Bokeh-Particle.png", + "textures": ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/Particles/Bokeh-Particle.png"), "color": {"red": 200, "green": 170, "blue": 255}, "colorFinish": {"red": 0, "green": 134, "blue": 255}, "colorStart": {"red": 185, "green": 222, "blue": 255}, diff --git a/scripts/system/menu.js b/scripts/system/menu.js index d669d3d918..2fbb3d7b0d 100644 --- a/scripts/system/menu.js +++ b/scripts/system/menu.js @@ -13,7 +13,7 @@ /* global Script, HMD, Tablet, Entities */ -var HOME_BUTTON_TEXTURE = "http://hifi-content.s3.amazonaws.com/alan/dev/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-root.png"; +var HOME_BUTTON_TEXTURE = ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-root.png"); // var HOME_BUTTON_TEXTURE = Script.resourcesPath() + "meshes/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-root.png"; (function() { diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 3c361b1644..0d60e2331a 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -271,7 +271,7 @@ function onMessage(message) { } var POLAROID_PRINT_SOUND = SoundCache.getSound(Script.resourcesPath() + "sounds/snapshot/sound-print-photo.wav"); -var POLAROID_MODEL_URL = 'http://hifi-content.s3.amazonaws.com/alan/dev/Test/snapshot.fbx'; +var POLAROID_MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/Test/snapshot.fbx"); var POLAROID_RATE_LIMIT_MS = 1000; var polaroidPrintingIsRateLimited = false; diff --git a/scripts/system/tablet-users.js b/scripts/system/tablet-users.js index 92aefd1e80..af72e951fc 100644 --- a/scripts/system/tablet-users.js +++ b/scripts/system/tablet-users.js @@ -11,7 +11,7 @@ // (function() { // BEGIN LOCAL_SCOPE - var USERS_URL = "https://hifi-content.s3.amazonaws.com/faye/tablet-dev/users.html"; + var USERS_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/faye/tablet-dev/users.html"); var HOME_BUTTON_TEXTURE = Script.resourcesPath() + "meshes/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-root.png"; var FRIENDS_WINDOW_URL = Account.metaverseServerURL + "/user/friends"; diff --git a/scripts/tutorials/createFloatingLanternBox.js b/scripts/tutorials/createFloatingLanternBox.js index c84214e295..3cf2facdc9 100644 --- a/scripts/tutorials/createFloatingLanternBox.js +++ b/scripts/tutorials/createFloatingLanternBox.js @@ -13,8 +13,8 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -var COMPOUND_SHAPE_URL = "http://hifi-content.s3.amazonaws.com/Examples%20Content/production/maracas/woodenCrate_phys.obj"; -var MODEL_URL = "http://hifi-content.s3.amazonaws.com/Examples%20Content/production/maracas/woodenCrate_VR.fbx"; +var COMPOUND_SHAPE_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/Examples%20Content/production/maracas/woodenCrate_phys.obj"); +var MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/Examples%20Content/production/maracas/woodenCrate_VR.fbx"); var SCRIPT_URL = Script.resolvePath("./entity_scripts/floatingLanternBox.js?v=" + Date.now()); var START_POSITION = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getFront(MyAvatar.orientation), 2)); START_POSITION.y -= .6; diff --git a/scripts/tutorials/createTetherballStick.js b/scripts/tutorials/createTetherballStick.js index b940762137..e976110db2 100644 --- a/scripts/tutorials/createTetherballStick.js +++ b/scripts/tutorials/createTetherballStick.js @@ -24,7 +24,7 @@ var ACTION_DISTANCE = 0.35; var ACTION_TIMESCALE = 0.035; var MAX_DISTANCE_MULTIPLIER = 4; var STICK_SCRIPT_URL = Script.resolvePath("./entity_scripts/tetherballStick.js"); -var STICK_MODEL_URL = "http://hifi-content.s3.amazonaws.com/caitlyn/production/raveStick/newRaveStick2.fbx"; +var STICK_MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/caitlyn/production/raveStick/newRaveStick2.fbx"); var COLLISION_SOUND_URL = "http://public.highfidelity.io/sounds/Footsteps/FootstepW3Left-12db.wav"; var avatarOrientation = MyAvatar.orientation; @@ -37,7 +37,7 @@ var ballStartPosition = Vec3.sum(stickStartPosition, Vec3.multiply(0.36, front)) var ballID = Entities.addEntity({ type: "Model", - modelURL: "http://hifi-content.s3.amazonaws.com/Examples%20Content/production/marblecollection/Star.fbx", + modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/Examples%20Content/production/marblecollection/Star.fbx"), name: "TetherballStick Ball", shapeType: "Sphere", position: ballStartPosition, @@ -70,7 +70,7 @@ var lineID = Entities.addEntity({ green: 120, blue: 250 }, - textures: "https://hifi-public.s3.amazonaws.com/alan/Particles/Particle-Sprite-Smoke-1.png", + textures: ExternalResource.getUrl(ExternalResource.HF_Public, "/alan/Particles/Particle-Sprite-Smoke-1.png"), position: ballStartPosition, dimensions: { x: 10, diff --git a/scripts/tutorials/entity_scripts/ambientSound.js b/scripts/tutorials/entity_scripts/ambientSound.js index cbd94c22e4..662af792a7 100644 --- a/scripts/tutorials/entity_scripts/ambientSound.js +++ b/scripts/tutorials/entity_scripts/ambientSound.js @@ -24,7 +24,7 @@ (function(){ // This sample clip and range will be used if you don't add userData to the entity (see above) var DEFAULT_RANGE = 100; - var DEFAULT_URL = "http://hifi-content.s3.amazonaws.com/ken/samples/forest_ambiX.wav"; + var DEFAULT_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/ken/samples/forest_ambiX.wav"); var DEFAULT_VOLUME = 1.0; var DEFAULT_USERDATA = { diff --git a/scripts/tutorials/entity_scripts/flashlight.js b/scripts/tutorials/entity_scripts/flashlight.js index caa5cc626a..bc19cee926 100644 --- a/scripts/tutorials/entity_scripts/flashlight.js +++ b/scripts/tutorials/entity_scripts/flashlight.js @@ -8,7 +8,7 @@ // Copyright 2015 High Fidelity, Inc. // // This is a toy script that can be added to the Flashlight model entity: -// "https://hifi-public.s3.amazonaws.com/models/props/flashlight.fbx" +// ExternalResource.getUrl(ExternalResource.HF_Public, "/models/props/flashlight.fbx") // that creates a spotlight attached with the flashlight model while the entity is grabbed // // Distributed under the Apache License, Version 2.0. @@ -17,8 +17,8 @@ (function() { - var ON_SOUND_URL = 'http://hifi-public.s3.amazonaws.com/sounds/Switches%20and%20sliders/flashlight_on.wav'; - var OFF_SOUND_URL = 'http://hifi-public.s3.amazonaws.com/sounds/Switches%20and%20sliders/flashlight_off.wav'; + var ON_SOUND_URL = ExternalResource.getUrl(ExternalResource.HF_Public, '/sounds/Switches%20and%20sliders/flashlight_on.wav'); + var OFF_SOUND_URL = ExternalResource.getUrl(ExternalResource.HF_Public, '/sounds/Switches%20and%20sliders/flashlight_off.wav'); //we are creating lights that we don't want to get stranded so lets make sure that we can get rid of them //if you're going to be using this in a dungeon or something and holding it for a long time, increase this lifetime value. diff --git a/scripts/tutorials/entity_scripts/floatingLanternBox.js b/scripts/tutorials/entity_scripts/floatingLanternBox.js index b5fb0c27d9..859897c06a 100644 --- a/scripts/tutorials/entity_scripts/floatingLanternBox.js +++ b/scripts/tutorials/entity_scripts/floatingLanternBox.js @@ -16,7 +16,7 @@ (function() { var _this; - var LANTERN_MODEL_URL = "http://hifi-content.s3.amazonaws.com/DomainContent/Welcome%20Area/Models/chinaLantern_capsule.fbx"; + var LANTERN_MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/DomainContent/Welcome%20Area/Models/chinaLantern_capsule.fbx"); var LANTERN_SCRIPT_URL = Script.resolvePath("floatingLantern.js?v=" + Date.now()); var LIFETIME = 120; var RESPAWN_INTERVAL = 1000; diff --git a/scripts/tutorials/entity_scripts/sit.js b/scripts/tutorials/entity_scripts/sit.js index 7afc9b30f4..7cc097722b 100644 --- a/scripts/tutorials/entity_scripts/sit.js +++ b/scripts/tutorials/entity_scripts/sit.js @@ -18,7 +18,7 @@ } var SETTING_KEY = "com.highfidelity.avatar.isSitting"; - var ANIMATION_URL = "https://s3-us-west-1.amazonaws.com/hifi-content/clement/production/animations/sitting_idle.fbx"; + var ANIMATION_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/clement/production/animations/sitting_idle.fbx"); var ANIMATION_FPS = 30; var ANIMATION_FIRST_FRAME = 1; var ANIMATION_LAST_FRAME = 10; diff --git a/scripts/tutorials/nBody.js b/scripts/tutorials/nBody.js index 01797201b2..5a39e10f4c 100644 --- a/scripts/tutorials/nBody.js +++ b/scripts/tutorials/nBody.js @@ -18,8 +18,8 @@ var bodies = []; var n = 3; var radius = 0.1; var G = 0.25; -var EARTH = "https://s3-us-west-1.amazonaws.com/hifi-content/seth/production/NBody/earth.fbx"; -var MOON = "https://s3-us-west-1.amazonaws.com/hifi-content/seth/production/NBody/moon.fbx"; +var EARTH = ExternalResource.getUrl(ExternalResource.HF_Content, "/seth/production/NBody/earth.fbx"); +var MOON = ExternalResource.getUrl(ExternalResource.HF_Content, "/seth/production/NBody/moon.fbx"); var COLOR1 = { red: 51, green: 51, blue: 255 }; var COLOR2 = { red: 51, green: 51, blue: 255 }; diff --git a/unpublishedScripts/DomainContent/Cupcake/eatable.js b/unpublishedScripts/DomainContent/Cupcake/eatable.js index 8b261b7ea2..732982adcd 100644 --- a/unpublishedScripts/DomainContent/Cupcake/eatable.js +++ b/unpublishedScripts/DomainContent/Cupcake/eatable.js @@ -10,7 +10,7 @@ // (function () { - var NOMNOM_SOUND = SoundCache.getSound('http://hifi-content.s3.amazonaws.com/DomainContent/production/audio/vegcrunch.wav'); + var NOMNOM_SOUND = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Content, "/DomainContent/production/audio/vegcrunch.wav")); var _entityID; diff --git a/unpublishedScripts/DomainContent/Toybox/doll/doll.js b/unpublishedScripts/DomainContent/Toybox/doll/doll.js index c2e2ef2cda..59e14e5946 100644 --- a/unpublishedScripts/DomainContent/Toybox/doll/doll.js +++ b/unpublishedScripts/DomainContent/Toybox/doll/doll.js @@ -67,7 +67,7 @@ animation: { // Providing actual model fbx for animation used to work, now contorts doll into a weird ball // See bug: https://app.asana.com/0/26225263936266/70097355490098 - // url: "http://hifi-public.s3.amazonaws.com/models/Bboys/bboy2/bboy2.fbx", + // url: ExternalResource.getUrl(ExternalResource.HF_Public, '/models/Bboys/bboy2/bboy2.fbx"), running: false, } }); diff --git a/unpublishedScripts/DomainContent/Toybox/flashlight/flashlight.js b/unpublishedScripts/DomainContent/Toybox/flashlight/flashlight.js index 5cbf93538a..45f26e79e5 100644 --- a/unpublishedScripts/DomainContent/Toybox/flashlight/flashlight.js +++ b/unpublishedScripts/DomainContent/Toybox/flashlight/flashlight.js @@ -8,7 +8,7 @@ // Copyright 2015 High Fidelity, Inc. // // This is a toy script that can be added to the Flashlight model entity: -// "https://hifi-public.s3.amazonaws.com/models/props/flashlight.fbx" +// ExternalResource.getUrl(ExternalResource.HF_Public, "/models/props/flashlight.fbx") // that creates a spotlight attached with the flashlight model while the entity is grabbed // // Distributed under the Apache License, Version 2.0. diff --git a/unpublishedScripts/DomainContent/Toybox/pistol/pistol.js b/unpublishedScripts/DomainContent/Toybox/pistol/pistol.js index 038c53054c..7a887692c3 100644 --- a/unpublishedScripts/DomainContent/Toybox/pistol/pistol.js +++ b/unpublishedScripts/DomainContent/Toybox/pistol/pistol.js @@ -266,7 +266,7 @@ "alphaStart": 0, "alphaFinish": 0, "additiveBlending": 0, - "textures": "https://hifi-public.s3.amazonaws.com/alan/Particles/Particle-Sprite-Smoke-1.png" + "textures": ExternalResource.getUrl(ExternalResource.HF_Public, "/alan/Particles/Particle-Sprite-Smoke-1.png") }); Script.setTimeout(function() { Entities.editEntity(smoke, { diff --git a/unpublishedScripts/marketplace/blocks/blocksApp.js b/unpublishedScripts/marketplace/blocks/blocksApp.js index 9c10ba8197..4d3518b03f 100644 --- a/unpublishedScripts/marketplace/blocks/blocksApp.js +++ b/unpublishedScripts/marketplace/blocks/blocksApp.js @@ -15,9 +15,9 @@ (function () { var APP_NAME = "BLOCKS"; var APP_URL = "https://poly.google.com/"; - var APP_OUTDATED_URL = "https://hifi-content.s3.amazonaws.com/elisalj/blocks/updateToBlocks.html"; - var APP_ICON = "https://hifi-content.s3.amazonaws.com/elisalj/blocks/blocks-i.svg"; - var APP_ICON_ACTIVE = "https://hifi-content.s3.amazonaws.com/elisalj/blocks/blocks-a.svg"; + var APP_OUTDATED_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/blocks/updateToBlocks.html"); + var APP_ICON = ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/blocks/blocks-i.svg"); + var APP_ICON_ACTIVE = ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/blocks/blocks-a.svg"); try { print("Current Interface version: " + Window.checkVersion()); diff --git a/unpublishedScripts/marketplace/boppo/boppoClownEntity.js b/unpublishedScripts/marketplace/boppo/boppoClownEntity.js index 36f2bf5ab0..f5b57a7426 100644 --- a/unpublishedScripts/marketplace/boppo/boppoClownEntity.js +++ b/unpublishedScripts/marketplace/boppo/boppoClownEntity.js @@ -11,7 +11,6 @@ /* globals LookAtTarget */ (function() { - var SFX_PREFIX = 'https://hifi-content.s3-us-west-1.amazonaws.com/caitlyn/production/elBoppo/sfx/'; var CHANNEL_PREFIX = 'io.highfidelity.boppo_server_'; var PUNCH_SOUNDS = [ 'punch_1.wav', @@ -41,7 +40,7 @@ var BoppoClownEntity = function () { _this = this; PUNCH_SOUNDS.forEach(function(punch) { - _punchSounds.push(SoundCache.getSound(SFX_PREFIX + punch)); + _punchSounds.push(SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Content, '/caitlyn/production/elBoppo/sfx/' + punch))); }); }; diff --git a/unpublishedScripts/marketplace/boppo/boppoServer.js b/unpublishedScripts/marketplace/boppo/boppoServer.js index f03154573c..3831290d91 100644 --- a/unpublishedScripts/marketplace/boppo/boppoServer.js +++ b/unpublishedScripts/marketplace/boppo/boppoServer.js @@ -9,7 +9,6 @@ // (function() { - var SFX_PREFIX = 'https://hifi-content.s3-us-west-1.amazonaws.com/caitlyn/production/elBoppo/sfx/'; var CLOWN_LAUGHS = [ 'clown_laugh_1.wav', 'clown_laugh_2.wav', @@ -168,12 +167,12 @@ _boppoClownID = null; _coolDown = false; CLOWN_LAUGHS.forEach(function(clownLaugh) { - _clownLaughs.push(SoundCache.getSound(SFX_PREFIX + clownLaugh)); + _clownLaughs.push(SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Content, + clownLaugh))); }); - _tickTockSound = SoundCache.getSound(SFX_PREFIX + TICK_TOCK_SOUND); - _boxingBellRingStart = SoundCache.getSound(SFX_PREFIX + BOXING_RING_BELL_START); - _boxingBellRingEnd = SoundCache.getSound(SFX_PREFIX + BOXING_RING_BELL_END); - _music = SoundCache.getSound(SFX_PREFIX + BOPPO_MUSIC); + _tickTockSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Content, TICK_TOCK_SOUND)); + _boxingBellRingStart = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Content, BOXING_RING_BELL_START)); + _boxingBellRingEnd = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Content, BOXING_RING_BELL_END)); + _music = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Content, BOPPO_MUSIC)); _boppoEntities = {}; }; @@ -200,9 +199,9 @@ var boppoBaseProperties = Entities.getEntityProperties(_entityID, ['position', 'rotation']); _boppoClownID = Entities.addEntity({ angularDamping: 0.0, - collisionSoundURL: 'https://hifi-content.s3.amazonaws.com/caitlyn/production/elBoppo/51460__andre-rocha-nascimento__basket-ball-01-bounce.wav', + collisionSoundURL: ExternalResource.getUrl(ExternalResource.HF_Content, 'caitlyn/production/elBoppo/51460__andre-rocha-nascimento__basket-ball-01-bounce.wav'), collisionsWillMove: true, - compoundShapeURL: 'https://hifi-content.s3.amazonaws.com/caitlyn/production/elBoppo/bopo_phys.obj', + compoundShapeURL: ExternalResource.getUrl(ExternalResource.HF_Content, 'caitlyn/production/elBoppo/bopo_phys.obj'), damping: 1.0, density: 10000, dimensions: { @@ -217,7 +216,7 @@ y: -25, z: 0 }, - modelURL: 'https://hifi-content.s3.amazonaws.com/caitlyn/production/elBoppo/elBoppo3_VR.fbx', + modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, 'caitlyn/production/elBoppo/elBoppo3_VR.fbx'), name: 'El Boppo the Punching Bag Clown', registrationPoint: { x: 0.5, diff --git a/unpublishedScripts/marketplace/boppo/clownGloveDispenser.js b/unpublishedScripts/marketplace/boppo/clownGloveDispenser.js index cd0a0c0614..0fe915146b 100644 --- a/unpublishedScripts/marketplace/boppo/clownGloveDispenser.js +++ b/unpublishedScripts/marketplace/boppo/clownGloveDispenser.js @@ -35,7 +35,7 @@ y: -9.8, z: 0 }, - modelURL: "https://hifi-content.s3.amazonaws.com/caitlyn/production/elBoppo/LFT_glove_VR3.fbx", + modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/caitlyn/production/elBoppo/LFT_glove_VR3.fbx"), name: "Boxing Glove - Left", registrationPoint: { x: 0.5, @@ -76,7 +76,7 @@ y: -9.8, z: 0 }, - modelURL: "https://hifi-content.s3.amazonaws.com/caitlyn/production/elBoppo/RT_glove_VR2.fbx", + modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/caitlyn/production/elBoppo/RT_glove_VR2.fbx"), name: "Boxing Glove - Right", registrationPoint: { x: 0.5, diff --git a/unpublishedScripts/marketplace/boppo/createElBoppo.js b/unpublishedScripts/marketplace/boppo/createElBoppo.js index 4df6a2acda..2769c357a2 100644 --- a/unpublishedScripts/marketplace/boppo/createElBoppo.js +++ b/unpublishedScripts/marketplace/boppo/createElBoppo.js @@ -10,12 +10,11 @@ /* globals SCRIPT_IMPORT_PROPERTIES */ -var MODELS_PATH = 'https://hifi-content.s3.amazonaws.com/DomainContent/Welcome%20Area/production/models/boxingRing/'; var WANT_CLEANUP_ON_SCRIPT_ENDING = false; var getScriptPath = function(localPath) { if (this.isCleanupAndSpawnScript) { - return 'https://hifi-content.s3.amazonaws.com/DomainContent/Welcome%20Area/Scripts/boppo/' + localPath; + return ExternalResource.getUrl(ExternalResource.HF_Content, 'DomainContent/Welcome%20Area/Scripts/boppo/' + localPath); } return Script.resolvePath(localPath); }; @@ -34,7 +33,7 @@ var boxingRing = Entities.addEntity({ y: 4.0418000221252441, z: 3.0490000247955322 }, - modelURL: MODELS_PATH + 'assembled/boppoBoxingRingAssembly.fbx', + modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, 'DomainContent/Welcome%20Area/production/models/boxingRing/assembled/boppoBoxingRingAssembly.fbx'), name: 'Boxing Ring Assembly', rotation: { w: 0.9996337890625, @@ -62,7 +61,7 @@ var boppoEntities = [ y: 0.25536194443702698, z: 0.059455446898937225 }, - modelURL: MODELS_PATH + 'boxingGameSign/boppoSignFrame.fbx', + modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, 'DomainContent/Welcome%20Area/production/models/boxingGameSign/boppoSignFrame.fbx'), parentID: boxingRing, localPosition: { x: -1.0251024961471558, @@ -150,7 +149,7 @@ var boppoEntities = [ y: 0.1884911060333252, z: 0.059455446898937225 }, - modelURL: MODELS_PATH + 'boxingGameSign/boppoSignFrame.fbx', + modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, 'DomainContent/Welcome%20Area/production/models/boxingGameSign/boppoSignFrame.fbx'), parentID: boxingRing, localPosition: { x: -0.78200173377990723, diff --git a/unpublishedScripts/marketplace/dart/createDart.js b/unpublishedScripts/marketplace/dart/createDart.js index ff13a695a8..d031a94eb0 100644 --- a/unpublishedScripts/marketplace/dart/createDart.js +++ b/unpublishedScripts/marketplace/dart/createDart.js @@ -10,7 +10,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -var MODEL_URL = "https://hifi-content.s3.amazonaws.com/wadewatts/dart.fbx"; +var MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/wadewatts/dart.fbx"); var SCRIPT_URL = Script.resolvePath("./dart.js?v=" + Date.now()); var START_POSITION = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getFront(MyAvatar.orientation), 0.75)); var START_ROTATION = MyAvatar.orientation diff --git a/unpublishedScripts/marketplace/dart/dart.js b/unpublishedScripts/marketplace/dart/dart.js index 9debe910e3..5968eb8335 100644 --- a/unpublishedScripts/marketplace/dart/dart.js +++ b/unpublishedScripts/marketplace/dart/dart.js @@ -12,7 +12,7 @@ (function() { var THROW_FACTOR = 3; - var DART_SOUND_URL = Script.resolvePath('https://hifi-content.s3.amazonaws.com/wadewatts/dart.wav?v=' + Date.now()); + var DART_SOUND_URL = Script.resolvePath(ExternalResource.getUrl(ExternalResource.HF_Content, '/wadewatts/dart.wav?v=') + "?" + Date.now()); var Dart = function() {}; diff --git a/unpublishedScripts/marketplace/emoji-tablet/emojiTablet.js b/unpublishedScripts/marketplace/emoji-tablet/emojiTablet.js index b4d01e77cf..e6ada1ed79 100644 --- a/unpublishedScripts/marketplace/emoji-tablet/emojiTablet.js +++ b/unpublishedScripts/marketplace/emoji-tablet/emojiTablet.js @@ -12,13 +12,13 @@ /// http://creativecommons.org/licenses/ /// -var lib = Script.require("https://hifi-content.s3.amazonaws.com/elisalj/emoji_scripts/emojiLib.js?" + Date.now()); +var lib = Script.require(ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/emoji_scripts/emojiLib.js") + "?" + Date.now()); (function() { var APP_NAME = "EMOJIS"; - var APP_URL = "https://hifi-content.s3.amazonaws.com/elisalj/emoji_scripts/emojiTabletUI.html?" + Date.now(); - var APP_ICON = "https://hifi-content.s3.amazonaws.com/elisalj/emoji_scripts/icons/emoji-i.svg"; + var APP_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/emoji_scripts/emojiTabletUI.html") + "?" + Date.now(); + var APP_ICON = ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/emoji_scripts/icons/emoji-i.svg"); var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var button = tablet.addButton({ diff --git a/unpublishedScripts/marketplace/gameTable/games/deckOfCards/deckOfCards.js b/unpublishedScripts/marketplace/gameTable/games/deckOfCards/deckOfCards.js index 4fd47fcb0e..f37560132c 100644 --- a/unpublishedScripts/marketplace/gameTable/games/deckOfCards/deckOfCards.js +++ b/unpublishedScripts/marketplace/gameTable/games/deckOfCards/deckOfCards.js @@ -13,8 +13,8 @@ var _this; var MAPPING_NAME = "hifi-gametable-cards-dev-" + Math.random(); var PLAYING_CARD_SCRIPT_URL = Script.resolvePath('playingCard.js'); - var PLAYING_CARD_MODEL_URL = 'http://hifi-content.s3.amazonaws.com/thoys/production/gameTable/assets/deckOfCards/playing_card.fbx'; - var PLAYING_CARD_BACK_IMAGE_URL = "http://hifi-content.s3.amazonaws.com/thoys/production/gameTable/assets/deckOfCards/back.jpg"; + var PLAYING_CARD_MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/playing_card.fbx"); + var PLAYING_CARD_BACK_IMAGE_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/back.jpg"); var PLAYING_CARD_DIMENSIONS = { x: 0.2621, y: 0.1, diff --git a/unpublishedScripts/marketplace/gameTable/games/deckOfCards/playingCard.js b/unpublishedScripts/marketplace/gameTable/games/deckOfCards/playingCard.js index 4a28fc09fd..9c12bf7ce0 100644 --- a/unpublishedScripts/marketplace/gameTable/games/deckOfCards/playingCard.js +++ b/unpublishedScripts/marketplace/gameTable/games/deckOfCards/playingCard.js @@ -13,9 +13,9 @@ var _this; - var CARD_MODEL_URL = 'http://hifi-content.s3.amazonaws.com/thoys/production/gameTable/assets/deckOfCards/playing_card.fbx'; - var CARD_BACK_IMAGE_URL = "http://hifi-content.s3.amazonaws.com/thoys/production/gameTable/assets/deckOfCards/images/back.jpg"; - var CARD_IMAGE_BASE_URL = "http://hifi-content.s3.amazonaws.com/thoys/production/gameTable/assets/deckOfCards/images/playingcard_old-"; + var CARD_MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/playing_card.fbx"); + var CARD_BACK_IMAGE_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/images/back.jpg"); + var CARD_IMAGE_BASE_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/images/playingcard_old-"); function PlayingCard() { _this = this; diff --git a/unpublishedScripts/marketplace/shortbow/enemyClientEntity.js b/unpublishedScripts/marketplace/shortbow/enemyClientEntity.js index 1ff114012c..8e954a37c8 100644 --- a/unpublishedScripts/marketplace/shortbow/enemyClientEntity.js +++ b/unpublishedScripts/marketplace/shortbow/enemyClientEntity.js @@ -110,7 +110,7 @@ "y": 0.80860012769699097, "z": -0.23394235968589783 }, - "textures": "https://hifi-public.s3.amazonaws.com/alan/Particles/Particle-Sprite-Smoke-1.png", + "textures": ExternalResource.getUrl(ExternalResource.HF_Public, "/alan/Particles/Particle-Sprite-Smoke-1.png"), "type": "ParticleEffect" }; From 7b7038fae1ccaaa049fa0d5a315812753552ea4a Mon Sep 17 00:00:00 2001 From: Kalila L Date: Mon, 21 Sep 2020 00:54:49 -0400 Subject: [PATCH 22/46] Bunch of URL updates later... --- android/build.gradle | 2 +- android/setupGVR.gradle | 2 +- interface/resources/qml/hifi/avatarapp/Settings.qml | 2 +- interface/resources/qml/hifi/models/S3Model.qml | 2 +- interface/src/scripting/TestScriptingInterface.cpp | 5 +++-- interface/src/ui/ModelsBrowser.cpp | 4 ++-- libraries/networking/src/ResourceCache.h | 2 +- libraries/script-engine/src/AudioScriptingInterface.h | 2 +- scripts/system/html/users.html | 2 +- tests-manual/render-texture-load/src/main.cpp | 3 ++- tests/animation/src/AnimTests.cpp | 7 ++++--- tests/gpu/src/TextureTest.cpp | 4 +++- tests/networking/src/ResourceTests.cpp | 5 +++-- tools/nitpick/src/AWSInterface.cpp | 2 ++ tools/qt-builder/README.md | 4 ++-- tools/qt-builder/qt-lite-build-steps.md | 4 ++-- 16 files changed, 30 insertions(+), 22 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 5a4dbc0033..f0ff096614 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -48,7 +48,7 @@ ext { def appDir = new File(projectDir, 'apps/interface') def jniFolder = new File(appDir, 'src/main/jniLibs/arm64-v8a') -def baseUrl = 'https://hifi-public.s3.amazonaws.com/dependencies/android/' +def baseUrl = 'https://cdn-1.vircadia.com/eu-c-1/vircadia-public/dependencies/android/' def breakpadDumpSymsDir = new File("${appDir}/build/tmp/breakpadDumpSyms") task extractGvrBinaries() { diff --git a/android/setupGVR.gradle b/android/setupGVR.gradle index c91674068f..cc3023d391 100644 --- a/android/setupGVR.gradle +++ b/android/setupGVR.gradle @@ -11,7 +11,7 @@ buildscript { def file='gvrsdk_v1.101.0.tgz' -def url='https://hifi-public.s3.amazonaws.com/austin/android/' + file +def url='https://cdn-1.vircadia.com/eu-c-1/vircadia-public/austin/android/' + file def destFile = new File(HIFI_ANDROID_PRECOMPILED, file) // FIXME find a way to only download if the file doesn't exist diff --git a/interface/resources/qml/hifi/avatarapp/Settings.qml b/interface/resources/qml/hifi/avatarapp/Settings.qml index c59fe42608..c9df12afb9 100644 --- a/interface/resources/qml/hifi/avatarapp/Settings.qml +++ b/interface/resources/qml/hifi/avatarapp/Settings.qml @@ -456,7 +456,7 @@ Rectangle { id: avatarCollisionSoundUrlInputText font.pixelSize: 17 Layout.fillWidth: true - placeholderText: 'https://hifi-public.s3.amazonaws.com/sounds/Collisions-' + placeholderText: ExternalResource.getUrl(ExternalResource.HF_Public, '/sounds/Collisions-') onFocusChanged: { keyboardRaised = (avatarAnimationUrlInputText.focus || avatarCollisionSoundUrlInputText.focus); diff --git a/interface/resources/qml/hifi/models/S3Model.qml b/interface/resources/qml/hifi/models/S3Model.qml index 565965c124..3c92cc893f 100644 --- a/interface/resources/qml/hifi/models/S3Model.qml +++ b/interface/resources/qml/hifi/models/S3Model.qml @@ -25,7 +25,7 @@ XmlListModel { readonly property string realPrefix: prefix.match('.*/$') ? prefix : (prefix + "/") readonly property string nameRegex: realPrefix + (filter ? (".*" + filter) : "") + ".*\." + extension readonly property string nameQuery: "Key/substring-before(substring-after(string(), '" + prefix + "'), '." + extension + "')" - readonly property string baseUrl: "http://s3.amazonaws.com/hifi-public" + readonly property string baseUrl: ExternalResource.HF_Public // FIXME need to urlencode prefix? source: baseUrl + "?prefix=" + realPrefix diff --git a/interface/src/scripting/TestScriptingInterface.cpp b/interface/src/scripting/TestScriptingInterface.cpp index 6a694ce27b..fc17d4c978 100644 --- a/interface/src/scripting/TestScriptingInterface.cpp +++ b/interface/src/scripting/TestScriptingInterface.cpp @@ -20,6 +20,7 @@ #include #include "Application.h" +#include "NetworkingConstants.h" Q_LOGGING_CATEGORY(trace_test, "trace.test") @@ -66,8 +67,8 @@ bool TestScriptingInterface::loadTestScene(QString scene) { return result; } - static const QString TEST_ROOT = "https://raw.githubusercontent.com/highfidelity/hifi_tests/master/"; - static const QString TEST_BINARY_ROOT = "https://hifi-public.s3.amazonaws.com/test_scene_data/"; + static const QString TEST_ROOT = "https://raw.githubusercontent.com/hifi-archive/hifi_tests/master/"; + static const QString TEST_BINARY_ROOT = NetworkingConstants::HF_CONTENT_CDN_URL + "/test_scene_data/"; static const QString TEST_SCRIPTS_ROOT = TEST_ROOT + "scripts/"; static const QString TEST_SCENES_ROOT = TEST_ROOT + "scenes/"; diff --git a/interface/src/ui/ModelsBrowser.cpp b/interface/src/ui/ModelsBrowser.cpp index 96c10be212..6ee589f098 100644 --- a/interface/src/ui/ModelsBrowser.cpp +++ b/interface/src/ui/ModelsBrowser.cpp @@ -32,8 +32,8 @@ const char* MODEL_TYPE_NAMES[] = { "entities", "heads", "skeletons", "skeletons", "attachments" }; -static const QString S3_URL = "http://s3.amazonaws.com/hifi-public"; -static const QString PUBLIC_URL = "http://public.highfidelity.io"; +static const QString S3_URL = NetworkingConstants::HF_PUBLIC_CDN_URL; +static const QString PUBLIC_URL = "http://public.highfidelity.io"; // Needs to change to Vircadia...? static const QString MODELS_LOCATION = "models/"; static const QString PREFIX_PARAMETER_NAME = "prefix"; diff --git a/libraries/networking/src/ResourceCache.h b/libraries/networking/src/ResourceCache.h index 35261298b9..4d5e8964ce 100644 --- a/libraries/networking/src/ResourceCache.h +++ b/libraries/networking/src/ResourceCache.h @@ -358,7 +358,7 @@ public: * // Replace AnimationCache with MaterialCache, ModelCache, SoundCache, or TextureCache as appropriate. * // TextureCache has its own version of this function. * - * var resourceURL = "https://s3-us-west-1.amazonaws.com/hifi-content/clement/production/animations/sitting_idle.fbx"; + * var resourceURL = "https://cdn-1.vircadia.com/eu-c-1/vircadia-public/clement/production/animations/sitting_idle.fbx"; * var resourceObject = AnimationCache.prefetch(resourceURL); * * function checkIfResourceLoaded(state) { diff --git a/libraries/script-engine/src/AudioScriptingInterface.h b/libraries/script-engine/src/AudioScriptingInterface.h index 10af9214c1..0553679f8a 100644 --- a/libraries/script-engine/src/AudioScriptingInterface.h +++ b/libraries/script-engine/src/AudioScriptingInterface.h @@ -169,7 +169,7 @@ protected: * audio file. * @returns {AudioInjector} The audio injector that plays the audio file. * @example Play a sound. - * var sound = SoundCache.getSound("http://hifi-content.s3.amazonaws.com/ken/samples/forest_ambiX.wav"); + * var sound = SoundCache.getSound("https://cdn-1.vircadia.com/us-c-1/ken/samples/forest_ambiX.wav"); * * function playSound() { * var injectorOptions = { diff --git a/scripts/system/html/users.html b/scripts/system/html/users.html index 0e593cc799..bf483484bc 100644 --- a/scripts/system/html/users.html +++ b/scripts/system/html/users.html @@ -252,7 +252,7 @@
Users Online
- +
diff --git a/tests-manual/render-texture-load/src/main.cpp b/tests-manual/render-texture-load/src/main.cpp index b6dca48979..f12daa8519 100644 --- a/tests-manual/render-texture-load/src/main.cpp +++ b/tests-manual/render-texture-load/src/main.cpp @@ -52,6 +52,7 @@ #include #include +#include #include #include #include @@ -62,7 +63,7 @@ extern QThread* RENDER_THREAD; -static const QString DATA_SET = "https://hifi-content.s3.amazonaws.com/austin/textures.zip"; +static const QString DATA_SET = ExternalResource::getInstance()->getUrl(ExternalResource::Bucket::HF_Content, "/austin/textures.zip"); static QDir DATA_DIR = QDir(QString("h:/textures")); static QTemporaryDir* DOWNLOAD_DIR = nullptr; diff --git a/tests/animation/src/AnimTests.cpp b/tests/animation/src/AnimTests.cpp index 8a30ba8f56..38b5ca5987 100644 --- a/tests/animation/src/AnimTests.cpp +++ b/tests/animation/src/AnimTests.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -46,7 +47,7 @@ void AnimTests::cleanupTestCase() { void AnimTests::testClipInternalState() { QString id = "my anim clip"; - QString url = "https://hifi-public.s3.amazonaws.com/ozan/support/FightClubBotTest1/Animations/standard_idle.fbx"; + QString url = ExternalResource::getInstance()->getUrl(ExternalResource::Bucket::HF_Content, "/ozan/support/FightClubBotTest1/Animations/standard_idle.fbx"); float startFrame = 2.0f; float endFrame = 20.0f; float timeScale = 1.1f; @@ -74,7 +75,7 @@ static float framesToSec(float secs) { void AnimTests::testClipEvaulate() { AnimContext context(false, false, false, glm::mat4(), glm::mat4(), 0); QString id = "myClipNode"; - QString url = "https://hifi-public.s3.amazonaws.com/ozan/support/FightClubBotTest1/Animations/standard_idle.fbx"; + QString url = ExternalResource::getInstance()->getUrl(ExternalResource::Bucket::HF_Content, "/ozan/support/FightClubBotTest1/Animations/standard_idle.fbx"); float startFrame = 2.0f; float endFrame = 22.0f; float timeScale = 1.0f; @@ -111,7 +112,7 @@ void AnimTests::testClipEvaulate() { void AnimTests::testClipEvaulateWithVars() { AnimContext context(false, false, false, glm::mat4(), glm::mat4(), 0); QString id = "myClipNode"; - QString url = "https://hifi-public.s3.amazonaws.com/ozan/support/FightClubBotTest1/Animations/standard_idle.fbx"; + QString url = ExternalResource::getInstance()->getUrl(ExternalResource::Bucket::HF_Content, "/ozan/support/FightClubBotTest1/Animations/standard_idle.fbx"; float startFrame = 2.0f; float endFrame = 22.0f; float timeScale = 1.0f; diff --git a/tests/gpu/src/TextureTest.cpp b/tests/gpu/src/TextureTest.cpp index 23e9c35dcc..70a30631ed 100644 --- a/tests/gpu/src/TextureTest.cpp +++ b/tests/gpu/src/TextureTest.cpp @@ -23,12 +23,14 @@ #include #include +#include + QTEST_MAIN(TextureTest) #define LOAD_TEXTURE_COUNT 100 #define FAIL_AFTER_SECONDS 30 -static const QString TEST_DATA("https://hifi-public.s3.amazonaws.com/austin/test_data/test_ktx.zip"); +static const QString TEST_DATA(ExternalResource::getInstance()->getUrl(ExternalResource::Bucket::HF_Public, "/austin/test_data/test_ktx.zip")); static const QString TEST_DIR_NAME("{630b8f02-52af-4cdf-a896-24e472b94b28}"); static const QString KTX_TEST_DIR_ENV("HIFI_KTX_TEST_DIR"); diff --git a/tests/networking/src/ResourceTests.cpp b/tests/networking/src/ResourceTests.cpp index 6af3629bc7..770fa77a07 100644 --- a/tests/networking/src/ResourceTests.cpp +++ b/tests/networking/src/ResourceTests.cpp @@ -11,6 +11,7 @@ #include +#include #include #include #include @@ -50,7 +51,7 @@ static QSharedPointer resource; void ResourceTests::downloadFirst() { // download the Mery fst file - QUrl meryUrl = QUrl("http://hifi-public.s3.amazonaws.com/marketplace/contents/e21c0b95-e502-4d15-8c41-ea2fc40f1125/3585ddf674869a67d31d5964f7b52de1.fst"); + QUrl meryUrl = QUrl(ExternalResource::getInstance()->getUrl(ExternalResource::Bucket::HF_Public, "/marketplace/contents/e21c0b95-e502-4d15-8c41-ea2fc40f1125/3585ddf674869a67d31d5964f7b52de1.fst")); resource = QSharedPointer::create(meryUrl); resource->setSelf(resource); @@ -73,7 +74,7 @@ void ResourceTests::downloadFirst() { void ResourceTests::downloadAgain() { // download the Mery fst file - QUrl meryUrl = QUrl("http://hifi-public.s3.amazonaws.com/marketplace/contents/e21c0b95-e502-4d15-8c41-ea2fc40f1125/3585ddf674869a67d31d5964f7b52de1.fst"); + QUrl meryUrl = QUrl(ExternalResource::getInstance()->getUrl(ExternalResource::Bucket::HF_Public, "/marketplace/contents/e21c0b95-e502-4d15-8c41-ea2fc40f1125/3585ddf674869a67d31d5964f7b52de1.fst")); resource = QSharedPointer::create(meryUrl); resource->setSelf(resource); diff --git a/tools/nitpick/src/AWSInterface.cpp b/tools/nitpick/src/AWSInterface.cpp index 82b7dd4f7a..4efafa4a2a 100644 --- a/tools/nitpick/src/AWSInterface.cpp +++ b/tools/nitpick/src/AWSInterface.cpp @@ -7,6 +7,8 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +// ##### NOTICE: THIS FILE NEEDS TO BE UPDATED WITH THE CORRECT LATEST BUCKET. +// #include "AWSInterface.h" #include "common.h" diff --git a/tools/qt-builder/README.md b/tools/qt-builder/README.md index 59db078aa9..75f085f8ea 100644 --- a/tools/qt-builder/README.md +++ b/tools/qt-builder/README.md @@ -156,7 +156,7 @@ The *.prl* files have an absolute path that needs to be removed (see http://www. 1. Copy *qt.conf* to *qt5-install\bin* #### Uploading Create a tar file called qt5-install-5.12.3-windows.tar.gz from the qt5-install folder. -Upload qt5-install-5.12.3-windows.tar.gz to our Amazon S3 hifi-public bucket, under the dependencies/vckpg directory. +Upload qt5-install-5.12.3-windows.tar.gz to our Amazon S3 vircadia-public bucket, under the dependencies/vckpg directory. Update hifi_vcpkg.py to use this new URL. Additionally, you should make a small change to any file in the hifi/cmake/ports directory to force the re-download of the qt-install.tar.gz during the build process for hifi. #### Preparing Symbols Run `python3 prepare-windows-symbols-for-backtrace.py qt5-install` to scan the qt5-install directory for any dlls and pdbs. After running this command the backtrace directory will be created. Zip this directory up, but make sure that all dlls and pdbs are in the root of the zip file, not under a sub-directory. This file can then be uploaded to backtrace here: https://highfidelity.sp.backtrace.io/p/Interface/settings/symbol/upload @@ -243,7 +243,7 @@ git clone --recursive git://code.qt.io/qt/qt5.git -b 5.12.3 --single-branch 1. Copy *qt.conf* to *qt5-install\bin* #### Uploading `tar -zcvf qt5-install-5.13.2-macos.tar.gz qt5-install` -Upload qt5-install-5.13.2-macos.tar.gz to our Amazon S3 hifi-public bucket, under the dependencies/vckpg directory +Upload qt5-install-5.13.2-macos.tar.gz to our Amazon S3 vircadia-public bucket, under the dependencies/vckpg directory #### Creating symbols Run `python3 prepare-mac-symbols-for-backtrace.py qt5-install` to scan the qt5-build directory for any dylibs and execute dsymutil to create dSYM bundles. After running this command the backtrace directory will be created. Zip this directory up, but make sure that all dylibs and dSYM fiels are in the root of the zip file, not under a sub-directory. This file can then be uploaded to backtrace here: https://highfidelity.sp.backtrace.io/p/Interface/settings/symbol/upload ## Problems diff --git a/tools/qt-builder/qt-lite-build-steps.md b/tools/qt-builder/qt-lite-build-steps.md index 2f8d115a24..6e393f19cb 100644 --- a/tools/qt-builder/qt-lite-build-steps.md +++ b/tools/qt-builder/qt-lite-build-steps.md @@ -30,7 +30,7 @@ cd qt-build ``` Download ssl-static.zip and unzip to ssl-static folder next to qt5 folder -`https://hifi-content.s3.amazonaws.com/dante/ssl-static-windows.zip` +`https://cdn-1.vircadia.com/eu-c-1/vircadia-public/dante/ssl-static-windows.zip` remove config.opt in the build folder copy over the config file from qt-builder ``` @@ -71,7 +71,7 @@ cd qt-build ``` Download ssl-static.zip and unzip to ssl-static folder next to qt5 folder -`https://hifi-content.s3.amazonaws.com/dante/openssl-static-osx.zip` +`https://cdn-1.vircadia.com/eu-c-1/vircadia-public/dante/openssl-static-osx.zip` copy over the config file from qt-builder ``` cp path-to-your-hifi-directory/tools/qt-builder/qt-lite-osx-config ./config.opt From 9db333a555add08e5a2fa1ab08816e87fe879d08 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Mon, 21 Sep 2020 16:07:56 -0400 Subject: [PATCH 23/46] Update CDN URLs in NetworkingConstants.h --- libraries/networking/src/NetworkingConstants.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/networking/src/NetworkingConstants.h b/libraries/networking/src/NetworkingConstants.h index 2d5511e30e..533b5ccca4 100644 --- a/libraries/networking/src/NetworkingConstants.h +++ b/libraries/networking/src/NetworkingConstants.h @@ -45,11 +45,11 @@ namespace NetworkingConstants { const QUrl MASTER_BUILDS_XML_URL("https://highfidelity.com/dev-builds.xml"); // CDN URLs - const QString HF_CONTENT_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1"; - const QString HF_MPASSETS_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1"; - const QString HF_PUBLIC_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1"; + const QString HF_CONTENT_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1/vircadia-content"; + const QString HF_MPASSETS_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1/vircadia-mpassets"; + const QString HF_PUBLIC_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1/vircadia-public"; const QString HF_MARKETPLACE_CDN_HOSTNAME = "mpassets.highfidelity.com"; - const QString VIRCADIA_CONTENT_CDN_URL = "https://cdn-1.vircadia.com/us-c-1"; + const QString VIRCADIA_CONTENT_CDN_URL = "https://cdn-1.vircadia.com/us-e-1"; #if USE_STABLE_GLOBAL_SERVICES const QString ICE_SERVER_DEFAULT_HOSTNAME = "ice.vircadia.com"; From 5a321cdaa809d77f16e90c7c38cb18eb864aa4e9 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Mon, 21 Sep 2020 16:23:30 -0400 Subject: [PATCH 24/46] Fix links. --- scripts/developer/utilities/tools/cookies.js | 6 +++--- scripts/system/libraries/progressDialog.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/developer/utilities/tools/cookies.js b/scripts/developer/utilities/tools/cookies.js index e28fd62d73..a1e375c2c4 100644 --- a/scripts/developer/utilities/tools/cookies.js +++ b/scripts/developer/utilities/tools/cookies.js @@ -784,7 +784,7 @@ var CHECK_MARK_COLOR = { green: 255, blue: 255 }, - imageURL: ExternalResource.getUrl(ExternalResource.Assets, 'images/tools/expand-ui.svg'), + imageURL: ExternalResource.getUrl(ExternalResource.HF_Public, 'images/tools/expand-ui.svg'), x: x, y: y, width: rawHeight, @@ -1147,13 +1147,13 @@ var CHECK_MARK_COLOR = { if (!item.isCollapsed && item.isCollapsable && clickedOverlay == item.thumb) { Overlays.editOverlay(item.thumb, { - imageURL: ExternalResource.getUrl(ExternalResource.Assets, 'images/tools/expand-right.svg') + imageURL: ExternalResource.getUrl(ExternalResource.HF_Public, 'images/tools/expand-right.svg') }); this.collapse(clickedOverlay); item.isCollapsed = true; } else if (item.isCollapsed && item.isCollapsable && clickedOverlay == item.thumb) { Overlays.editOverlay(item.thumb, { - imageURL: ExternalResource.getUrl(ExternalResource.Assets, 'images/tools/expand-ui.svg') + imageURL: ExternalResource.getUrl(ExternalResource.HF_Public, 'images/tools/expand-ui.svg') }); this.expand(clickedOverlay); item.isCollapsed = false; diff --git a/scripts/system/libraries/progressDialog.js b/scripts/system/libraries/progressDialog.js index 56da5e0e13..a06c5c6778 100644 --- a/scripts/system/libraries/progressDialog.js +++ b/scripts/system/libraries/progressDialog.js @@ -9,7 +9,7 @@ // var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var toolIconUrl = ExternalResource.getUrl(ExternalResource.Assets, "images/tools/"); +var toolIconUrl = ExternalResource.getUrl(ExternalResource.HF_Public, "images/tools/"); progressDialog = (function () { var that = {}, From 3344c7423def9ec8754a40694024608444e29a36 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 22 Sep 2020 20:52:15 +1200 Subject: [PATCH 25/46] Fix up types --- libraries/networking/src/ExternalResource.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libraries/networking/src/ExternalResource.h b/libraries/networking/src/ExternalResource.h index 4f410e8015..c2a08c02a5 100644 --- a/libraries/networking/src/ExternalResource.h +++ b/libraries/networking/src/ExternalResource.h @@ -151,13 +151,13 @@ private: std::mutex _bucketMutex; - QMap _bucketBases{ - { Bucket::HF_Public, NetworkingConstants::HF_PUBLIC_CDN_URL }, - { Bucket::HF_Content, NetworkingConstants::HF_CONTENT_CDN_URL }, - { Bucket::HF_Marketplace, NetworkingConstants::HF_MPASSETS_CDN_URL }, - { Bucket::Assets, NetworkingConstants::VIRCADIA_CONTENT_CDN_URL }, - { Bucket::Public, NetworkingConstants::VIRCADIA_CONTENT_CDN_URL }, - { Bucket::Content, NetworkingConstants::VIRCADIA_CONTENT_CDN_URL } + QMap _bucketBases { + { Bucket::HF_Public, QUrl(NetworkingConstants::HF_PUBLIC_CDN_URL) }, + { Bucket::HF_Content, QUrl(NetworkingConstants::HF_CONTENT_CDN_URL) }, + { Bucket::HF_Marketplace, QUrl(NetworkingConstants::HF_MPASSETS_CDN_URL) }, + { Bucket::Assets, QUrl(NetworkingConstants::VIRCADIA_CONTENT_CDN_URL) }, + { Bucket::Public, QUrl(NetworkingConstants::VIRCADIA_CONTENT_CDN_URL) }, + { Bucket::Content, QUrl(NetworkingConstants::VIRCADIA_CONTENT_CDN_URL) } }; }; From 4959ca4975a66f8a43a697a93eecf2fce6891e87 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 22 Sep 2020 20:52:52 +1200 Subject: [PATCH 26/46] Move ExternalResource call into method Fixes Interface crash on Windows. --- interface/src/scripting/ScreenshareScriptingInterface.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 4b7bbf90cc..c2d36ecef0 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -130,8 +130,9 @@ static const uint8_t LOCAL_SCREENSHARE_WEB_ENTITY_FPS = 30; // The `z` value here is dynamic. static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION(0.0128f, -0.0918f, 0.0f); static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS(3.6790f, 2.0990f, 0.0100f); -static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = ExternalResource::getInstance()->getUrl(ExternalResource::Bucket::HF_Content, - "Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"); +static const ExternalResource::Bucket LOCAL_SCREENSHARE_WEB_ENTITY_BUCKET = ExternalResource::Bucket::HF_Content; +static const QString LOCAL_SCREENSHARE_WEB_ENTITY_PATH = + "Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"; static const QString LOCAL_SCREENSHARE_WEB_ENTITY_HOST_TYPE = "local"; void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZoneID, const QUuid& smartboardEntityID, @@ -283,6 +284,8 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR glm::vec3 localPosition(LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION); localPosition.z = _localWebEntityZOffset; localScreenshareWebEntityProps.setLocalPosition(localPosition); + auto LOCAL_SCREENSHARE_WEB_ENTITY_URL = ExternalResource::getInstance()->getUrl(LOCAL_SCREENSHARE_WEB_ENTITY_BUCKET, + LOCAL_SCREENSHARE_WEB_ENTITY_PATH); localScreenshareWebEntityProps.setSourceUrl(LOCAL_SCREENSHARE_WEB_ENTITY_URL); localScreenshareWebEntityProps.setParentID(_smartboardEntityID); localScreenshareWebEntityProps.setDimensions(LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS); From 154a95ac86db9bfb8d943f152d17f305e666e08d Mon Sep 17 00:00:00 2001 From: Kalila L Date: Tue, 22 Sep 2020 19:24:58 -0400 Subject: [PATCH 27/46] Update all scripts, script-archive scripts still broken. --- .../resources/qml/hifi/avatarapp/Settings.qml | 2 +- .../resources/qml/hifi/models/S3Model.qml | 2 +- script-archive/acScripts/ControlACs.js | 2 +- .../acScripts/botProceduralWayPoints.js | 12 ++++++------ .../acScripts/bot_randomExpression.js | 6 +++--- script-archive/acScripts/playbackMaster.js | 4 ++-- script-archive/acScripts/simpleBot.js | 2 +- script-archive/airship/airship.js | 5 ++--- script-archive/avatarSelector.js | 2 +- script-archive/blockWorld.js | 2 +- script-archive/controllers/hydra/airGuitar.js | 2 +- script-archive/controllers/hydra/drumStick.js | 2 +- script-archive/controllers/hydra/frisbee.js | 2 +- script-archive/controllers/hydra/gun.js | 2 +- script-archive/controllers/hydra/paddleBall.js | 2 +- script-archive/controllers/hydra/toyball.js | 2 +- script-archive/controllers/toybox.js | 2 +- .../entityScripts/recordingMaster.js | 2 +- script-archive/example/audio/audioBall.js | 2 +- script-archive/example/audio/jsstreamplayer.js | 2 +- script-archive/example/audio/radio.js | 2 +- script-archive/example/brownianFun.js | 2 +- script-archive/example/dynamicLandscape.js | 2 +- .../example/entities/editModelExample.js | 2 +- .../example/entities/entityModelExample.js | 2 +- .../example/entities/zoneEntityExample.js | 2 +- .../example/entities/zoneSkyboxExample.js | 2 +- script-archive/example/games/airHockey.js | 2 +- script-archive/example/games/billiards.js | 4 ++-- script-archive/example/games/make-dummy.js | 1 - .../example/games/spaceInvadersExample.js | 2 +- script-archive/example/soundToys.js | 2 +- script-archive/example/ui/overlaysExample.js | 12 ++++++------ .../example/ui/textInputOverlayExample.js | 2 +- script-archive/fireworks.js | 2 +- script-archive/golfclub/golfClub.js | 2 +- script-archive/grenade.js | 6 +++--- script-archive/libraries/constants.js | 2 +- script-archive/libraries/virtualKeyboard.js | 4 ++-- script-archive/lineRider.js | 2 +- script-archive/lobby.js | 12 ++++++------ script-archive/pointer.js | 2 +- script-archive/recorder.js | 2 +- .../utilities/diagnostics/inWorldTestTone.js | 2 +- .../utilities/diagnostics/moveJoints.js | 2 +- .../utilities/diagnostics/playSoundLoop.js | 6 +++--- .../utilities/diagnostics/playSoundWave.js | 2 +- script-archive/utilities/tools/cookies.js | 6 +++--- script-archive/walk.js | 2 +- scripts/developer/accelerationFilterApp.js | 6 +++--- scripts/developer/automaticLookAt.js | 4 ++-- scripts/developer/exponentialFilterApp.js | 6 +++--- scripts/developer/facialExpressions.js | 4 ++-- scripts/developer/tests/agentAPITest.js | 2 +- .../developer/tests/avatarAttachmentTest.js | 18 +++++++++--------- .../batonSoundTestEntityScript.js | 2 +- .../developer/tests/filtered-puck-attach.js | 8 ++++---- scripts/developer/tests/injectorTest.js | 2 +- .../tests/performance/domain-check.js | 8 ++++---- .../tests/performance/rayPickPerformance.js | 2 +- scripts/developer/tests/performance/summon.js | 8 ++++---- scripts/developer/tests/puck-attach.js | 8 ++++---- .../rapidProceduralChangeTest.js | 4 ++-- .../developer/tests/scriptableResource/lib.js | 2 +- scripts/developer/tests/skybox/skyboxTest.js | 2 +- .../developer/tests/tabletEventBridgeTest.js | 10 +++++----- scripts/developer/utilities/tools/cookies.js | 8 ++++---- .../utilities/tools/disableAvatarAnimations.js | 2 +- .../utilities/workload/test_physics_scene.js | 2 +- .../emojiApp/simplifiedEmoji.js | 3 +-- scripts/system/audio.js | 2 +- scripts/system/avatarFinderBeacon.js | 4 ++-- scripts/system/commerce/wallet.js | 2 +- .../controllerModules/equipEntity.js | 2 +- scripts/system/controllers/grab.js | 4 ++-- scripts/system/create/edit.js | 4 ++-- scripts/system/libraries/WebTablet.js | 2 +- scripts/system/libraries/globals.js | 4 +--- .../system/libraries/networkingConstants.js | 12 ++++-------- scripts/system/libraries/progressDialog.js | 3 +-- scripts/system/makeUserConnection.js | 8 ++++---- scripts/system/menu.js | 2 +- scripts/system/snapshot.js | 2 +- scripts/system/tablet-users.js | 2 +- scripts/tutorials/createFloatingLanternBox.js | 4 ++-- scripts/tutorials/createTetherballStick.js | 6 +++--- .../tutorials/entity_scripts/ambientSound.js | 2 +- scripts/tutorials/entity_scripts/flashlight.js | 6 +++--- .../entity_scripts/floatingLanternBox.js | 2 +- scripts/tutorials/entity_scripts/sit.js | 2 +- scripts/tutorials/nBody.js | 4 ++-- .../nitpick/AppDataHighFidelity/Interface.json | 2 +- .../DomainContent/Cupcake/eatable.js | 2 +- .../DomainContent/Toybox/doll/doll.js | 2 +- .../Toybox/flashlight/flashlight.js | 2 +- .../DomainContent/Toybox/pistol/pistol.js | 2 +- .../marketplace/blocks/blocksApp.js | 6 +++--- .../marketplace/boppo/boppoClownEntity.js | 2 +- .../marketplace/boppo/boppoServer.js | 16 ++++++++-------- .../marketplace/boppo/clownGloveDispenser.js | 4 ++-- .../marketplace/boppo/createElBoppo.js | 8 ++++---- .../marketplace/dart/createDart.js | 2 +- unpublishedScripts/marketplace/dart/dart.js | 2 +- .../marketplace/emoji-tablet/emojiTablet.js | 6 +++--- .../gameTable/games/deckOfCards/deckOfCards.js | 4 ++-- .../gameTable/games/deckOfCards/playingCard.js | 6 +++--- .../marketplace/shortbow/enemyClientEntity.js | 2 +- 107 files changed, 200 insertions(+), 210 deletions(-) diff --git a/interface/resources/qml/hifi/avatarapp/Settings.qml b/interface/resources/qml/hifi/avatarapp/Settings.qml index c9df12afb9..4d4a0ee809 100644 --- a/interface/resources/qml/hifi/avatarapp/Settings.qml +++ b/interface/resources/qml/hifi/avatarapp/Settings.qml @@ -456,7 +456,7 @@ Rectangle { id: avatarCollisionSoundUrlInputText font.pixelSize: 17 Layout.fillWidth: true - placeholderText: ExternalResource.getUrl(ExternalResource.HF_Public, '/sounds/Collisions-') + placeholderText: "https://cdn-1.vircadia.com/eu-c-1/vircadia-public/sounds/Collisions-" onFocusChanged: { keyboardRaised = (avatarAnimationUrlInputText.focus || avatarCollisionSoundUrlInputText.focus); diff --git a/interface/resources/qml/hifi/models/S3Model.qml b/interface/resources/qml/hifi/models/S3Model.qml index 3c92cc893f..0e25e9bff9 100644 --- a/interface/resources/qml/hifi/models/S3Model.qml +++ b/interface/resources/qml/hifi/models/S3Model.qml @@ -25,7 +25,7 @@ XmlListModel { readonly property string realPrefix: prefix.match('.*/$') ? prefix : (prefix + "/") readonly property string nameRegex: realPrefix + (filter ? (".*" + filter) : "") + ".*\." + extension readonly property string nameQuery: "Key/substring-before(substring-after(string(), '" + prefix + "'), '." + extension + "')" - readonly property string baseUrl: ExternalResource.HF_Public + readonly property string baseUrl: "https://cdn-1.vircadia.com/eu-c-1/vircadia-public" // FIXME need to urlencode prefix? source: baseUrl + "?prefix=" + realPrefix diff --git a/script-archive/acScripts/ControlACs.js b/script-archive/acScripts/ControlACs.js index 688efa3b6e..40c41396c1 100644 --- a/script-archive/acScripts/ControlACs.js +++ b/script-archive/acScripts/ControlACs.js @@ -33,7 +33,7 @@ var LOAD = 6; var windowDimensions = Controller.getViewportDimensions(); -var TOOL_ICON_URL = ExternalResource.getUrl(ExternalResource.Assets, "images/tools/"); +var TOOL_ICON_URL = Script.getExternalPath(Script.ExternalPaths.Assets, "images/tools/"); var ALPHA_ON = 1.0; var ALPHA_OFF = 0.7; var COLOR_TOOL_BAR = { red: 0, green: 0, blue: 0 }; diff --git a/script-archive/acScripts/botProceduralWayPoints.js b/script-archive/acScripts/botProceduralWayPoints.js index 393633cb5f..072312ec24 100644 --- a/script-archive/acScripts/botProceduralWayPoints.js +++ b/script-archive/acScripts/botProceduralWayPoints.js @@ -20,7 +20,7 @@ // //For procedural walk animation -Script.include(ExternalResource.getUrl(ExternalResource.Assets, "scripts/acScripts/proceduralAnimationAPI.js"); +Script.include(Script.getExternalPath(Script.ExternalPaths.Assets, "scripts/acScripts/proceduralAnimationAPI.js"); var procAnimAPI = new ProcAnimAPI(); @@ -120,9 +120,9 @@ var newBodyFilePrefix = "bot" + botNumber; // set the face model fst using the bot number // there is no need to change the body model - we're using the default -Avatar.faceModelURL = ExternalResource.getUrl(ExternalResource.Assets, "meshes/" + newFaceFilePrefix + ".fst"); -Avatar.skeletonModelURL = ExternalResource.getUrl(ExternalResource.Assets, "meshes/" + newBodyFilePrefix + "_a.fst"); -Avatar.billboardURL = ExternalResource.getUrl(ExternalResource.Assets, "meshes/billboards/bot" + botNumber + ".png"); +Avatar.faceModelURL = Script.getExternalPath(Script.ExternalPaths.Assets, "meshes/" + newFaceFilePrefix + ".fst"); +Avatar.skeletonModelURL = Script.getExternalPath(Script.ExternalPaths.Assets, "meshes/" + newBodyFilePrefix + "_a.fst"); +Avatar.billboardURL = Script.getExternalPath(Script.ExternalPaths.Assets, "meshes/billboards/bot" + botNumber + ".png"); Agent.isAvatar = true; Agent.isListeningToAudioStream = true; @@ -145,9 +145,9 @@ function loadSounds() { var footstep_filenames = ["FootstepW2Left-12db.wav", "FootstepW2Right-12db.wav", "FootstepW3Left-12db.wav", "FootstepW3Right-12db.wav", "FootstepW5Left-12db.wav", "FootstepW5Right-12db.wav"]; - var SOUND_BASE_URL = ExternalResource.getUrl(ExternalResource.Assets, "sounds/Cocktail+Party+Snippets/Raws/"); + var SOUND_BASE_URL = Script.getExternalPath(Script.ExternalPaths.Assets, "sounds/Cocktail+Party+Snippets/Raws/"); - var FOOTSTEP_BASE_URL = ExternalResource.getUrl(ExternalResource.Assets, "sounds/Footsteps/"); + var FOOTSTEP_BASE_URL = Script.getExternalPath(Script.ExternalPaths.Assets, "sounds/Footsteps/"); for (var i = 0; i < sound_filenames.length; i++) { sounds.push(SoundCache.getSound(SOUND_BASE_URL + sound_filenames[i])); diff --git a/script-archive/acScripts/bot_randomExpression.js b/script-archive/acScripts/bot_randomExpression.js index dfd26b54b5..fd4cf57bd1 100644 --- a/script-archive/acScripts/bot_randomExpression.js +++ b/script-archive/acScripts/bot_randomExpression.js @@ -42,9 +42,9 @@ newBodyFilePrefix = "bot" + botNumber; // set the face model fst using the bot number // there is no need to change the body model - we're using the default -Avatar.faceModelURL = ExternalResource.getUrl(ExternalResource.Assets, "meshes/" + newFaceFilePrefix + ".fst"); -Avatar.skeletonModelURL = ExternalResource.getUrl(ExternalResource.Assets, "meshes/" + newBodyFilePrefix + ".fst"); -Avatar.billboardURL = ExternalResource.getUrl(ExternalResource.Assets, "meshes/billboards/bot" + botNumber + ".png"); +Avatar.faceModelURL = Script.getExternalPath(Script.ExternalPaths.Assets, "meshes/" + newFaceFilePrefix + ".fst"); +Avatar.skeletonModelURL = Script.getExternalPath(Script.ExternalPaths.Assets, "meshes/" + newBodyFilePrefix + ".fst"); +Avatar.billboardURL = Script.getExternalPath(Script.ExternalPaths.Assets, "meshes/billboards/bot" + botNumber + ".png"); Agent.isAvatar = true; Agent.isListeningToAudioStream = true; diff --git a/script-archive/acScripts/playbackMaster.js b/script-archive/acScripts/playbackMaster.js index 65105f531b..db2abf349f 100644 --- a/script-archive/acScripts/playbackMaster.js +++ b/script-archive/acScripts/playbackMaster.js @@ -16,7 +16,7 @@ var input_text = null; // Script. DO NOT MODIFY BEYOND THIS LINE. //Script.include("../libraries/toolBars.js"); -Script.include(ExternalResource.getUrl(ExternalResource.Assets, "scripts/libraries/toolBars.js")); +Script.include(Script.getExternalPath(Script.ExternalPaths.Assets, "scripts/libraries/toolBars.js")); // We want small icons Tool.IMAGE_HEIGHT /= 2; Tool.IMAGE_WIDTH /= 2; @@ -27,7 +27,7 @@ var STOP = 3; var LOAD = 6; var windowDimensions = Controller.getViewportDimensions(); -var TOOL_ICON_URL = ExternalResource.getUrl(ExternalResource.Assets, "images/tools/"); +var TOOL_ICON_URL = Script.getExternalPath(Script.ExternalPaths.Assets, "images/tools/"); var ALPHA_ON = 1.0; var ALPHA_OFF = 0.7; var COLOR_TOOL_BAR = { red: 0, green: 0, blue: 0 }; diff --git a/script-archive/acScripts/simpleBot.js b/script-archive/acScripts/simpleBot.js index 284b92f103..f6cece6ff1 100644 --- a/script-archive/acScripts/simpleBot.js +++ b/script-archive/acScripts/simpleBot.js @@ -9,7 +9,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; function getRandomFloat(min, max) { diff --git a/script-archive/airship/airship.js b/script-archive/airship/airship.js index ecf15300f0..68d481149c 100644 --- a/script-archive/airship/airship.js +++ b/script-archive/airship/airship.js @@ -28,9 +28,8 @@ lightTimer = 0, lightTimeoutID = undefined, audioInjector = null; - - var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; + + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var cannonSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "philip/cannonShot.wav"); var explosionSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "philip/explosion.wav"); diff --git a/script-archive/avatarSelector.js b/script-archive/avatarSelector.js index 6d5460af74..59eea17e83 100644 --- a/script-archive/avatarSelector.js +++ b/script-archive/avatarSelector.js @@ -11,7 +11,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var panelWall = false; diff --git a/script-archive/blockWorld.js b/script-archive/blockWorld.js index 5f292b4061..f3226ac4c1 100644 --- a/script-archive/blockWorld.js +++ b/script-archive/blockWorld.js @@ -19,7 +19,7 @@ var floorTiles = []; var blocks = []; var blockSpawner; -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; diff --git a/script-archive/controllers/hydra/airGuitar.js b/script-archive/controllers/hydra/airGuitar.js index 73520e3694..4e4758a228 100644 --- a/script-archive/controllers/hydra/airGuitar.js +++ b/script-archive/controllers/hydra/airGuitar.js @@ -10,7 +10,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; function length(v) { diff --git a/script-archive/controllers/hydra/drumStick.js b/script-archive/controllers/hydra/drumStick.js index 46036ef824..6a4a73a48a 100644 --- a/script-archive/controllers/hydra/drumStick.js +++ b/script-archive/controllers/hydra/drumStick.js @@ -10,7 +10,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; function length(v) { diff --git a/script-archive/controllers/hydra/frisbee.js b/script-archive/controllers/hydra/frisbee.js index ba737b5439..449464c652 100644 --- a/script-archive/controllers/hydra/frisbee.js +++ b/script-archive/controllers/hydra/frisbee.js @@ -15,7 +15,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; Script.include("../../libraries/toolBars.js"); diff --git a/script-archive/controllers/hydra/gun.js b/script-archive/controllers/hydra/gun.js index b65910dd1d..7cb7f8f6de 100644 --- a/script-archive/controllers/hydra/gun.js +++ b/script-archive/controllers/hydra/gun.js @@ -22,7 +22,7 @@ Script.include("../../libraries/utils.js"); Script.include("../../libraries/constants.js"); Script.include("../../libraries/toolBars.js"); -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var LASER_WIDTH = 2; diff --git a/script-archive/controllers/hydra/paddleBall.js b/script-archive/controllers/hydra/paddleBall.js index f50a2bd060..731c664ed6 100644 --- a/script-archive/controllers/hydra/paddleBall.js +++ b/script-archive/controllers/hydra/paddleBall.js @@ -10,7 +10,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; hitSound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"); diff --git a/script-archive/controllers/hydra/toyball.js b/script-archive/controllers/hydra/toyball.js index d41c8431e1..72b74bc808 100644 --- a/script-archive/controllers/hydra/toyball.js +++ b/script-archive/controllers/hydra/toyball.js @@ -15,7 +15,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; // maybe we should make these constants... diff --git a/script-archive/controllers/toybox.js b/script-archive/controllers/toybox.js index c4fa9e8c27..76042a9673 100644 --- a/script-archive/controllers/toybox.js +++ b/script-archive/controllers/toybox.js @@ -11,7 +11,7 @@ // Script.include("http://s3.amazonaws.com/hifi-public/scripts/libraries/toolBars.js"); -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; diff --git a/script-archive/entityScripts/recordingMaster.js b/script-archive/entityScripts/recordingMaster.js index 47b2791105..aed3a17a75 100644 --- a/script-archive/entityScripts/recordingMaster.js +++ b/script-archive/entityScripts/recordingMaster.js @@ -10,7 +10,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; Script.include(VIRCADIA_PUBLIC_CDN + "scripts/libraries/toolBars.js"); Script.include(VIRCADIA_PUBLIC_CDN + "scripts/libraries/utils.js"); diff --git a/script-archive/example/audio/audioBall.js b/script-archive/example/audio/audioBall.js index 44b0d37157..0a99c0cc89 100644 --- a/script-archive/example/audio/audioBall.js +++ b/script-archive/example/audio/audioBall.js @@ -13,7 +13,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var sound = SoundCache.getSound(VIRCADIA_PUBLIC_CDN + "sounds/Animals/mexicanWhipoorwill.raw"); diff --git a/script-archive/example/audio/jsstreamplayer.js b/script-archive/example/audio/jsstreamplayer.js index 93b3cd55b5..cecbe3e8f5 100644 --- a/script-archive/example/audio/jsstreamplayer.js +++ b/script-archive/example/audio/jsstreamplayer.js @@ -14,7 +14,7 @@ // Declare HiFi public bucket. -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; // Declare variables and set up new WebWindow. diff --git a/script-archive/example/audio/radio.js b/script-archive/example/audio/radio.js index fc614a5eb4..777f3775ac 100644 --- a/script-archive/example/audio/radio.js +++ b/script-archive/example/audio/radio.js @@ -9,7 +9,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var modelURL = VIRCADIA_PUBLIC_CDN + "models/entities/radio/Speakers.fbx"; diff --git a/script-archive/example/brownianFun.js b/script-archive/example/brownianFun.js index 5a29b03768..3ff8ee15ae 100644 --- a/script-archive/example/brownianFun.js +++ b/script-archive/example/brownianFun.js @@ -1,4 +1,4 @@ -var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var SOUND_PATH = VIRCADIA_PUBLIC_CDN + "sounds/Collisions-hitsandslaps/"; var soundURLS = ["67LCollision01.wav", "67LCollision02.wav", "airhockey_hit1.wav"]; diff --git a/script-archive/example/dynamicLandscape.js b/script-archive/example/dynamicLandscape.js index e2ada16612..38209547ed 100644 --- a/script-archive/example/dynamicLandscape.js +++ b/script-archive/example/dynamicLandscape.js @@ -10,7 +10,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; Script.include(VIRCADIA_PUBLIC_CDN + 'scripts/utilities.js') diff --git a/script-archive/example/entities/editModelExample.js b/script-archive/example/entities/editModelExample.js index 4caf68e729..561993af5d 100644 --- a/script-archive/example/entities/editModelExample.js +++ b/script-archive/example/entities/editModelExample.js @@ -11,7 +11,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var count = 0; diff --git a/script-archive/example/entities/entityModelExample.js b/script-archive/example/entities/entityModelExample.js index 0d5991392d..ffd8e33035 100644 --- a/script-archive/example/entities/entityModelExample.js +++ b/script-archive/example/entities/entityModelExample.js @@ -11,7 +11,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var count = 0; diff --git a/script-archive/example/entities/zoneEntityExample.js b/script-archive/example/entities/zoneEntityExample.js index 76e770f9a7..4e870949a9 100644 --- a/script-archive/example/entities/zoneEntityExample.js +++ b/script-archive/example/entities/zoneEntityExample.js @@ -11,7 +11,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var count = 0; diff --git a/script-archive/example/entities/zoneSkyboxExample.js b/script-archive/example/entities/zoneSkyboxExample.js index 6088307b2f..a5d7f9d78a 100644 --- a/script-archive/example/entities/zoneSkyboxExample.js +++ b/script-archive/example/entities/zoneSkyboxExample.js @@ -11,7 +11,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var count = 0; diff --git a/script-archive/example/games/airHockey.js b/script-archive/example/games/airHockey.js index 517e5ab28c..6673750eb4 100755 --- a/script-archive/example/games/airHockey.js +++ b/script-archive/example/games/airHockey.js @@ -60,7 +60,7 @@ var puckCollisionModel = "http://headache.hungry.com/~seth/hifi/airHockeyPuck-hu var paddleModel = "https://hifi-public.s3.amazonaws.com/ozan/props/airHockeyTable/airHockeyPaddle.obj" var paddleCollisionModel = "http://headache.hungry.com/~seth/hifi/paddle-hull.obj" -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var screenSize = Controller.getViewportDimensions(); var BUTTON_SIZE = 32; diff --git a/script-archive/example/games/billiards.js b/script-archive/example/games/billiards.js index c7782c6cd4..a28f24539a 100644 --- a/script-archive/example/games/billiards.js +++ b/script-archive/example/games/billiards.js @@ -10,7 +10,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var tableParts = []; @@ -37,7 +37,7 @@ var startStroke = 0; var hitSound = VIRCADIA_PUBLIC_CDN + "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"; SoundCache.getSound(hitSound); -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var screenSize = Controller.getViewportDimensions(); var reticle = Overlays.addOverlay("image", { diff --git a/script-archive/example/games/make-dummy.js b/script-archive/example/games/make-dummy.js index bdb1f347fe..4dc919628d 100644 --- a/script-archive/example/games/make-dummy.js +++ b/script-archive/example/games/make-dummy.js @@ -15,7 +15,6 @@ /*jslint vars: true*/ var Overlays, Entities, Controller, Script, MyAvatar, Vec3; // Referenced globals provided by High Fidelity. -var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var rezButton = Overlays.addOverlay("image", { diff --git a/script-archive/example/games/spaceInvadersExample.js b/script-archive/example/games/spaceInvadersExample.js index ecd24c5eb9..bd0a351e7c 100644 --- a/script-archive/example/games/spaceInvadersExample.js +++ b/script-archive/example/games/spaceInvadersExample.js @@ -11,7 +11,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var iteration = 0; diff --git a/script-archive/example/soundToys.js b/script-archive/example/soundToys.js index c021599639..2456ff4b06 100644 --- a/script-archive/example/soundToys.js +++ b/script-archive/example/soundToys.js @@ -8,7 +8,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html var Camera, Vec3, Quat, Entities, Script; // Globals defined by HiFi, var'ed here to keep jslint happy. -var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); +var var VIRCADIA_PUBLIC_CDN = networkingConstants.PUBLIC_BUCKET_CDN_URL; var SOUND_BUCKET = "http://public.highfidelity.io/sounds/Collisions-hitsandslaps/"; var MAX_ANGULAR_SPEED = Math.PI; diff --git a/script-archive/example/ui/overlaysExample.js b/script-archive/example/ui/overlaysExample.js index a4c15ee831..f44a3d8719 100644 --- a/script-archive/example/ui/overlaysExample.js +++ b/script-archive/example/ui/overlaysExample.js @@ -49,7 +49,7 @@ for (s = 0; s < numberOfSwatches; s++) { width: 31, height: 54, subImage: { x: imageFromX, y: imageFromY, width: 30, height: 54 }, - imageURL: ExternalResource.getUrl(ExternalResource.Assets, "images/testing-swatches.svg"), + imageURL: Script.getExternalPath(Script.ExternalPaths.Assets, "images/testing-swatches.svg"), color: swatchColors[s], alpha: 1 }); @@ -77,7 +77,7 @@ var toolA = Overlays.addOverlay("image", { width: 62, height: 40, subImage: { x: 0, y: 0, width: 62, height: 40 }, - imageURL: ExternalResource.getUrl(ExternalResource.Assets, "images/hifi-interface-tools.svg"), + imageURL: Script.getExternalPath(Script.ExternalPaths.Assets, "images/hifi-interface-tools.svg"), color: { red: 255, green: 255, blue: 255}, visible: false }); @@ -87,7 +87,7 @@ var toolA = Overlays.addOverlay("image", { var slider = Overlays.addOverlay("image", { // alternate form of expressing bounds bounds: { x: 100, y: 300, width: 158, height: 35}, - imageURL: ExternalResource.getUrl(ExternalResource.Assets, "images/slider.png"), + imageURL: Script.getExternalPath(Script.ExternalPaths.Assets, "images/slider.png"), color: { red: 255, green: 255, blue: 255}, alpha: 1 }); @@ -101,7 +101,7 @@ var thumb = Overlays.addOverlay("image", { y: 309, width: 18, height: 17, - imageURL: ExternalResource.getUrl(ExternalResource.Assets, "images/thumb.png"), + imageURL: Script.getExternalPath(Script.ExternalPaths.Assets, "images/thumb.png"), color: { red: 255, green: 255, blue: 255}, alpha: 1 }); @@ -197,8 +197,8 @@ print("Cube overlay color =\n" // This model overlay example causes intermittent crashes in NetworkGeometry::setTextureWithNameToURL() //var modelOverlayProperties = { // textures: { -// filename1: ExternalResource.getUrl(ExternalResource.Assets, "images/testing-swatches.svg",) -// filename2: ExternalResource.getUrl(ExternalResource.Assets, "images/hifi-interface-tools.svg") +// filename1: Script.getExternalPath(Script.ExternalPaths.Assets, "images/testing-swatches.svg",) +// filename2: Script.getExternalPath(Script.ExternalPaths.Assets, "images/hifi-interface-tools.svg") // } //} //var modelOverlay = Overlays.addOverlay("model", modelOverlayProperties); diff --git a/script-archive/example/ui/textInputOverlayExample.js b/script-archive/example/ui/textInputOverlayExample.js index 04be0b92e9..50710151ec 100644 --- a/script-archive/example/ui/textInputOverlayExample.js +++ b/script-archive/example/ui/textInputOverlayExample.js @@ -180,7 +180,7 @@ function updateWriting(deltaTime){ writing = writing + "\n"; } // add blinking cursor to window during typing - var addCursor = writing + cursor; + var addCursor = writing + cursor; if (clickedText == true){ Overlays.editOverlay(inputWindow, { text: addCursor}); }else{ diff --git a/script-archive/fireworks.js b/script-archive/fireworks.js index fe0ff81203..546a888f68 100644 --- a/script-archive/fireworks.js +++ b/script-archive/fireworks.js @@ -1,4 +1,4 @@ -var fireSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/Guns/GUN-SHOT2.raw")); +var fireSound = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.Assets, "sounds/Guns/GUN-SHOT2.raw")); var audioOptions = { volume: 0.9, position: Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())) diff --git a/script-archive/golfclub/golfClub.js b/script-archive/golfclub/golfClub.js index 4b1e76d3d0..3b7954ec5e 100644 --- a/script-archive/golfclub/golfClub.js +++ b/script-archive/golfclub/golfClub.js @@ -13,7 +13,7 @@ (function () { var ball = null; - var collisionSoundURL = ExternalResource.getUrl(ExternalResource.Assets, "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"); + var collisionSoundURL = Script.getExternalPath(Script.ExternalPaths.Assets, "sounds/Collisions-ballhitsandcatches/billiards/collision1.wav"); var triggerState = false; var BALL_GRAVITY = -9.8; var BALL_START_VELOCITY = 0.1; diff --git a/script-archive/grenade.js b/script-archive/grenade.js index 57d8be4ef5..ebf883adb8 100644 --- a/script-archive/grenade.js +++ b/script-archive/grenade.js @@ -9,9 +9,9 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var grenadeURL = ExternalResource.getUrl(ExternalResource.Assets, "models/props/grenade/grenade.fbx"); -var fuseSoundURL = ExternalResource.getUrl(ExternalResource.Assets, "sounds/burningFuse.wav"); -var boomSoundURL = ExternalResource.getUrl(ExternalResource.Assets, "sounds/explosion.wav"); +var grenadeURL = Script.getExternalPath(Script.ExternalPaths.Assets, "models/props/grenade/grenade.fbx"); +var fuseSoundURL = Script.getExternalPath(Script.ExternalPaths.Assets, "sounds/burningFuse.wav"); +var boomSoundURL = Script.getExternalPath(Script.ExternalPaths.Assets, "sounds/explosion.wav"); var AudioRotationOffset = Quat.fromPitchYawRollDegrees(0, -90, 0); var audioOptions = { diff --git a/script-archive/libraries/constants.js b/script-archive/libraries/constants.js index 774c69bd39..a76eadff20 100644 --- a/script-archive/libraries/constants.js +++ b/script-archive/libraries/constants.js @@ -6,7 +6,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -STICK_URL = ExternalResource.getUrl(ExternalResource.Assets, "models/props/geo_stick.fbx"); +STICK_URL = Script.getExternalPath(Script.ExternalPaths.Assets, "models/props/geo_stick.fbx"); ZERO_VECTOR = { x: 0, y: 0, z: 0 }; diff --git a/script-archive/libraries/virtualKeyboard.js b/script-archive/libraries/virtualKeyboard.js index 674be2a9fc..60cb3367ee 100644 --- a/script-archive/libraries/virtualKeyboard.js +++ b/script-archive/libraries/virtualKeyboard.js @@ -22,8 +22,8 @@ KBD_UPPERCASE_HOVER = 2; KBD_LOWERCASE_HOVER = 3; KBD_BACKGROUND = 4; -KEYBOARD_URL = ExternalResource.getUrl(ExternalResource.Assets, "images/keyboard.svg"); -CURSOR_URL = ExternalResource.getUrl(ExternalResource.Assets, "images/cursor.svg"); +KEYBOARD_URL = Script.getExternalPath(Script.ExternalPaths.Assets, "images/keyboard.svg"); +CURSOR_URL = Script.getExternalPath(Script.ExternalPaths.Assets, "images/cursor.svg"); RETURN_CHARCODE = 0x01000004; ENTER_CHARCODE = 0x01000005; diff --git a/script-archive/lineRider.js b/script-archive/lineRider.js index b3fcb3e74a..967f0ea6bb 100644 --- a/script-archive/lineRider.js +++ b/script-archive/lineRider.js @@ -33,7 +33,7 @@ LineRider = function() { y: screenSize.y - (BUTTON_SIZE + PADDING), width: BUTTON_SIZE, height: BUTTON_SIZE, - imageURL: ExternalResource.getUrl(ExternalResource.Assets, "images/coaster.png?v2"), + imageURL: Script.getExternalPath(Script.ExternalPaths.Assets, "images/coaster.png?v2"), color: this.buttonOffColor, alpha: 1 }); diff --git a/script-archive/lobby.js b/script-archive/lobby.js index bed34ccb82..46ec7c5296 100644 --- a/script-archive/lobby.js +++ b/script-archive/lobby.js @@ -43,16 +43,16 @@ var panelsCenterShift = Vec3.subtract(panelsCenter, orbCenter); var ORB_SHIFT = { x: 0, y: -1.4, z: -0.8}; -var LOBBY_PANEL_WALL_URL = ExternalResource.getUrl(ExternalResource.Assets, "models/sets/Lobby/PanelWallForInterface.fbx"); -var LOBBY_BLANK_PANEL_TEXTURE_URL = ExternalResource.getUrl(ExternalResource.Assets, "models/sets/Lobby/Texture.jpg"); -var LOBBY_SHELL_URL = ExternalResource.getUrl(ExternalResource.Assets, "models/sets/Lobby/LobbyShellForInterface.fbx"); +var LOBBY_PANEL_WALL_URL = Script.getExternalPath(Script.ExternalPaths.Assets, "models/sets/Lobby/PanelWallForInterface.fbx"); +var LOBBY_BLANK_PANEL_TEXTURE_URL = Script.getExternalPath(Script.ExternalPaths.Assets, "models/sets/Lobby/Texture.jpg"); +var LOBBY_SHELL_URL = Script.getExternalPath(Script.ExternalPaths.Assets, "models/sets/Lobby/LobbyShellForInterface.fbx"); -var droneSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/Lobby/drone.stereo.raw")); +var droneSound = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.Assets, "sounds/Lobby/drone.stereo.raw")); var currentDrone = null; -var latinSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/Lobby/latin.stereo.raw")); +var latinSound = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.Assets, "sounds/Lobby/latin.stereo.raw")); var latinInjector = null; -var elevatorSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/Lobby/elevator.stereo.raw")); +var elevatorSound = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.Assets, "sounds/Lobby/elevator.stereo.raw")); var elevatorInjector = null; var currentMuzakInjector = null; var currentSound = null; diff --git a/script-archive/pointer.js b/script-archive/pointer.js index 68f36c488f..010a772394 100644 --- a/script-archive/pointer.js +++ b/script-archive/pointer.js @@ -37,7 +37,7 @@ var toolBar = new ToolBar(0, 0, ToolBar.HORIZONTAL, "highfidelity.pointer.toolba var pointerButton = toolBar.addOverlay("image", { width: BUTTON_SIZE, height: BUTTON_SIZE, - imageURL: ExternalResource.getUrl(ExternalResource.Assets, "images/laser.png"), + imageURL: Script.getExternalPath(Script.ExternalPaths.Assets, "images/laser.png"), color: buttonOffColor, alpha: 1 }); diff --git a/script-archive/recorder.js b/script-archive/recorder.js index cb597f7491..ae5bcbc5d6 100644 --- a/script-archive/recorder.js +++ b/script-archive/recorder.js @@ -24,7 +24,7 @@ function setDefaultPlayerOptions() { } var windowDimensions = Controller.getViewportDimensions(); -var TOOL_ICON_URL = ExternalResource.getUrl(ExternalResource.Assets, + "images/tools/"); +var TOOL_ICON_URL = Script.getExternalPath(Script.ExternalPaths.Assets, + "images/tools/"); var ALPHA_ON = 1.0; var ALPHA_OFF = 0.7; var COLOR_ON = { red: 128, green: 0, blue: 0 }; diff --git a/script-archive/utilities/diagnostics/inWorldTestTone.js b/script-archive/utilities/diagnostics/inWorldTestTone.js index 950d6783bc..3dac9e9739 100644 --- a/script-archive/utilities/diagnostics/inWorldTestTone.js +++ b/script-archive/utilities/diagnostics/inWorldTestTone.js @@ -11,7 +11,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var sound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/220Sine.wav")); +var sound = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.Assets, "sounds/220Sine.wav")); var soundPlaying = false; diff --git a/script-archive/utilities/diagnostics/moveJoints.js b/script-archive/utilities/diagnostics/moveJoints.js index 62ca70b313..3d566b12d3 100644 --- a/script-archive/utilities/diagnostics/moveJoints.js +++ b/script-archive/utilities/diagnostics/moveJoints.js @@ -9,7 +9,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var testAnimation = ExternalResource.getUrl(ExternalResource.Assets, "ozan/animations/forStephen/sniperJump.fbx"); +var testAnimation = Script.getExternalPath(Script.ExternalPaths.Assets, "ozan/animations/forStephen/sniperJump.fbx"); var FRAME_RATE = 24.0; // frames per second var isAnimating = false; diff --git a/script-archive/utilities/diagnostics/playSoundLoop.js b/script-archive/utilities/diagnostics/playSoundLoop.js index 59a76cc3f8..2f70a3e966 100644 --- a/script-archive/utilities/diagnostics/playSoundLoop.js +++ b/script-archive/utilities/diagnostics/playSoundLoop.js @@ -14,9 +14,9 @@ // A few sample files you may want to try: -var sound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/Guitars/Guitar+-+Nylon+A.raw")); -//var sound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/220Sine.wav")); -//var sound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/Cocktail+Party+Snippets/Bandcamp.wav")); +var sound = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.Assets, "sounds/Guitars/Guitar+-+Nylon+A.raw")); +//var sound = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.Assets, "sounds/220Sine.wav")); +//var sound = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.Assets, "sounds/Cocktail+Party+Snippets/Bandcamp.wav")); var soundPlaying = false; var options = { diff --git a/script-archive/utilities/diagnostics/playSoundWave.js b/script-archive/utilities/diagnostics/playSoundWave.js index f09457ed33..e54bea00de 100644 --- a/script-archive/utilities/diagnostics/playSoundWave.js +++ b/script-archive/utilities/diagnostics/playSoundWave.js @@ -9,7 +9,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var soundClip = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.Assets, "sounds/Cocktail%20Party%20Snippets/Walken1.wav")); +var soundClip = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.Assets, "sounds/Cocktail%20Party%20Snippets/Walken1.wav")); function playSound() { Audio.playSound(soundClip, { diff --git a/script-archive/utilities/tools/cookies.js b/script-archive/utilities/tools/cookies.js index aee45a8230..8b789693f4 100644 --- a/script-archive/utilities/tools/cookies.js +++ b/script-archive/utilities/tools/cookies.js @@ -782,7 +782,7 @@ var CHECK_MARK_COLOR = { green: 255, blue: 255 }, - imageURL: ExternalResource.getUrl(ExternalResource.Assets, 'images/tools/expand-ui.svg'), + imageURL: Script.getExternalPath(Script.ExternalPaths.Assets, 'images/tools/expand-ui.svg'), x: x, y: y, width: rawHeight, @@ -1145,13 +1145,13 @@ var CHECK_MARK_COLOR = { if (!item.isCollapsed && item.isCollapsable && clickedOverlay == item.thumb) { Overlays.editOverlay(item.thumb, { - imageURL: ExternalResource.getUrl(ExternalResource.Assets, 'images/tools/expand-right.svg') + imageURL: Script.getExternalPath(Script.ExternalPaths.Assets, 'images/tools/expand-right.svg') }); this.collapse(clickedOverlay); item.isCollapsed = true; } else if (item.isCollapsed && item.isCollapsable && clickedOverlay == item.thumb) { Overlays.editOverlay(item.thumb, { - imageURL: ExternalResource.getUrl(ExternalResource.Assets, 'images/tools/expand-ui.svg') + imageURL: Script.getExternalPath(Script.ExternalPaths.Assets, 'images/tools/expand-ui.svg') }); this.expand(clickedOverlay); item.isCollapsed = false; diff --git a/script-archive/walk.js b/script-archive/walk.js index bfea51d7aa..9fc0215bc1 100644 --- a/script-archive/walk.js +++ b/script-archive/walk.js @@ -14,7 +14,7 @@ // // animations, reach poses, reach pose parameters, transitions, transition parameters, sounds, image/s and reference files -var pathToAssets = ExternalResource.getUrl(ExternalResource.Assets, "procedural-animator/assets/"); +var pathToAssets = Script.getExternalPath(Script.ExternalPaths.Assets, "procedural-animator/assets/"); Script.include([ "./libraries/walkConstants.js", diff --git a/scripts/developer/accelerationFilterApp.js b/scripts/developer/accelerationFilterApp.js index adda9d216e..a05e7bacf0 100644 --- a/scripts/developer/accelerationFilterApp.js +++ b/scripts/developer/accelerationFilterApp.js @@ -82,13 +82,13 @@ var mappingJson = { // var TABLET_BUTTON_NAME = "ACCFILT"; -var HTML_URL = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/html/accelerationFilterApp.html?2"); +var HTML_URL = Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/html/accelerationFilterApp.html?2"); var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var tabletButton = tablet.addButton({ text: TABLET_BUTTON_NAME, - icon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/tpose-i.svg"), - activeIcon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/tpose-a.svg") + icon: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/tpose-i.svg"), + activeIcon: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/tpose-a.svg") }); tabletButton.clicked.connect(function () { diff --git a/scripts/developer/automaticLookAt.js b/scripts/developer/automaticLookAt.js index 7778fcef55..884edd437a 100644 --- a/scripts/developer/automaticLookAt.js +++ b/scripts/developer/automaticLookAt.js @@ -39,8 +39,8 @@ var LookAtDebugger = function() { var self = this; var IMAGE_DIMENSIONS = {x: 0.2, y: 0.2, z:0.2}; - var TARGET_ICON_PATH = ExternalResource.getUrl(ExternalResource.HF_Content, "/luis/test_scripts/LookAtApp/eyeFocus.png"); - var INFINITY_ICON_PATH = ExternalResource.getUrl(ExternalResource.HF_Content, "/luis/test_scripts/LookAtApp/noFocus.png"); + var TARGET_ICON_PATH = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/luis/test_scripts/LookAtApp/eyeFocus.png"); + var INFINITY_ICON_PATH = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/luis/test_scripts/LookAtApp/noFocus.png"); this.items = {}; this.active = false; diff --git a/scripts/developer/exponentialFilterApp.js b/scripts/developer/exponentialFilterApp.js index 99717bfccc..58c0e49e31 100644 --- a/scripts/developer/exponentialFilterApp.js +++ b/scripts/developer/exponentialFilterApp.js @@ -89,13 +89,13 @@ var mappingJson = { // var TABLET_BUTTON_NAME = "EXPFILT"; -var HTML_URL = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/html/exponentialFilterApp.html?7"); +var HTML_URL = Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/html/exponentialFilterApp.html?7"); var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var tabletButton = tablet.addButton({ text: TABLET_BUTTON_NAME, - icon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/tpose-i.svg"), - activeIcon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/tpose-a.svg") + icon: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/tpose-i.svg"), + activeIcon: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/tpose-a.svg") }); tabletButton.clicked.connect(function () { diff --git a/scripts/developer/facialExpressions.js b/scripts/developer/facialExpressions.js index 24392976a6..84f7163203 100644 --- a/scripts/developer/facialExpressions.js +++ b/scripts/developer/facialExpressions.js @@ -20,8 +20,8 @@ var TRANSITION_TIME_SECONDS = 0.25; var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - var icon = ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/emoji_scripts/icons/emoji-i.svg"); - var activeIcon = ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/emoji_scripts/icons/emoji-a.svg"); + var icon = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/elisalj/emoji_scripts/icons/emoji-i.svg"); + var activeIcon = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/elisalj/emoji_scripts/icons/emoji-a.svg"); var isActive = true; var controllerMappingName; diff --git a/scripts/developer/tests/agentAPITest.js b/scripts/developer/tests/agentAPITest.js index f9d9d53ae0..2104e8b827 100644 --- a/scripts/developer/tests/agentAPITest.js +++ b/scripts/developer/tests/agentAPITest.js @@ -7,7 +7,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -var SOUND_DATA = { url: ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/sounds/piano1.wav") }; +var SOUND_DATA = { url: Script.getExternalPath(Script.ExternalPaths.HF_Content, "/howard/sounds/piano1.wav") }; // getSound function from crowd-agent.js function getSound(data, callback) { // callback(sound) when downloaded (which may be immediate). diff --git a/scripts/developer/tests/avatarAttachmentTest.js b/scripts/developer/tests/avatarAttachmentTest.js index 9c3756ef36..87dc0c7093 100644 --- a/scripts/developer/tests/avatarAttachmentTest.js +++ b/scripts/developer/tests/avatarAttachmentTest.js @@ -76,20 +76,20 @@ var buttonPositionX = windowDimensions.x - BUTTON_PADDING - BUTTON_WIDTH; var buttonPositionY = (windowDimensions.y - BUTTON_HEIGHT) / 2 - (BUTTON_HEIGHT + BUTTON_PADDING); var hatButton = new ToggleButtonBuddy(buttonPositionX, buttonPositionY, BUTTON_WIDTH, BUTTON_HEIGHT, { - up: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/hat-up.svg"), - down: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/hat-down.svg") + up: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/hat-up.svg"), + down: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/hat-down.svg") }); buttonPositionY += BUTTON_HEIGHT + BUTTON_PADDING; var coatButton = new ToggleButtonBuddy(buttonPositionX, buttonPositionY, BUTTON_WIDTH, BUTTON_HEIGHT, { - up: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/coat-up.svg"), - down: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/coat-down.svg") + up: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/coat-up.svg"), + down: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/coat-down.svg") }); buttonPositionY += BUTTON_HEIGHT + BUTTON_PADDING; var coatButton2 = new ToggleButtonBuddy(buttonPositionX, buttonPositionY, BUTTON_WIDTH, BUTTON_HEIGHT, { - up: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/coat-up.svg"), - down: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/coat-down.svg") + up: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/coat-up.svg"), + down: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/coat-down.svg") }); var AVATAR_ATTACHMENT = 0; @@ -97,7 +97,7 @@ var AVATAR_SOFT_ATTACHMENT = 1; var ENTITY_ATTACHMENT = 2; var HAT_ATTACHMENT = { - modelURL: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/cowboy-hat.fbx"), + modelURL: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/cowboy-hat.fbx"), jointName: "Head", translation: {"x": 0, "y": 0.25, "z": 0.03}, rotation: {"x": 0, "y": 0, "z": 0, "w": 1}, @@ -106,7 +106,7 @@ var HAT_ATTACHMENT = { }; var COAT_ATTACHMENT = { - modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/ozan/dev/clothes/coat/coat_rig.fbx"), + modelURL: Script.getExternalPath(Script.ExternalPaths.HF_Content, "/ozan/dev/clothes/coat/coat_rig.fbx"), jointName: "Hips", translation: {"x": 0, "y": 0, "z": 0}, rotation: {"x": 0, "y": 0, "z": 0, "w": 1}, @@ -115,7 +115,7 @@ var COAT_ATTACHMENT = { }; var COAT_ENTITY_ATTACHMENT = { - modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/ozan/dev/clothes/coat/coat_rig.fbx"), + modelURL: Script.getExternalPath(Script.ExternalPaths.HF_Content, "/ozan/dev/clothes/coat/coat_rig.fbx"), jointName: "Hips", translation: {"x": 0, "y": 0, "z": 0}, rotation: {"x": 0, "y": 0, "z": 0, "w": 1}, diff --git a/scripts/developer/tests/batonSoundEntityTest/batonSoundTestEntityScript.js b/scripts/developer/tests/batonSoundEntityTest/batonSoundTestEntityScript.js index 2075937c4b..18fcf1c013 100644 --- a/scripts/developer/tests/batonSoundEntityTest/batonSoundTestEntityScript.js +++ b/scripts/developer/tests/batonSoundEntityTest/batonSoundTestEntityScript.js @@ -7,7 +7,7 @@ var _this; BatonSoundEntity = function() { _this = this; - _this.drumSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Public, "/sounds/Drums/deepdrum1.wav")); + _this.drumSound = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.HF_Public, "/sounds/Drums/deepdrum1.wav")); _this.injectorOptions = {position: MyAvatar.position, loop: false, volume: 1}; _this.soundIntervalConnected = false; _this.batonDebugModel = Entities.addEntity({ diff --git a/scripts/developer/tests/filtered-puck-attach.js b/scripts/developer/tests/filtered-puck-attach.js index 907442ac84..2de126a36c 100644 --- a/scripts/developer/tests/filtered-puck-attach.js +++ b/scripts/developer/tests/filtered-puck-attach.js @@ -17,14 +17,14 @@ Script.include("/~/system/libraries/Xform.js"); (function() { // BEGIN LOCAL_SCOPE var TABLET_BUTTON_NAME = "PUCKATTACH"; -var TABLET_APP_URL = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/html/filtered-puck-attach.html?2"); +var TABLET_APP_URL = Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/html/filtered-puck-attach.html?2"); var NUM_TRACKED_OBJECTS = 16; var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var tabletButton = tablet.addButton({ text: TABLET_BUTTON_NAME, - icon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/puck-i.svg"), - activeIcon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/puck-a.svg") + icon: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/puck-i.svg"), + activeIcon: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/puck-a.svg") }); var shown = false; @@ -87,7 +87,7 @@ function entityExists(entityID) { return Object.keys(Entities.getEntityProperties(entityID)).length > 0; } -var VIVE_PUCK_MODEL = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/vive_tracker_puck_y180z180.obj"); +var VIVE_PUCK_MODEL = Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/vive_tracker_puck_y180z180.obj"); var VIVE_PUCK_DIMENSIONS = { x: 0.0945, y: 0.0921, z: 0.0423 }; // 1/1000th scale of model var VIVE_PUCK_SEARCH_DISTANCE = 1.5; // metres var VIVE_PUCK_SPAWN_DISTANCE = 0.5; // metres diff --git a/scripts/developer/tests/injectorTest.js b/scripts/developer/tests/injectorTest.js index a1844f4cae..35e4789cef 100644 --- a/scripts/developer/tests/injectorTest.js +++ b/scripts/developer/tests/injectorTest.js @@ -9,7 +9,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var soundURL = ExternalResource.getUrl(ExternalResource.HF_Public, "/birarda/medium-crowd.wav"); +var soundURL = Script.getExternalPath(Script.ExternalPaths.HF_Public, "/birarda/medium-crowd.wav"); var audioOptions = { position: { x: 0.0, y: 0.0, z: 0.0 }, volume: 0.5 diff --git a/scripts/developer/tests/performance/domain-check.js b/scripts/developer/tests/performance/domain-check.js index ec8e6fdbc6..eb2910c8b5 100644 --- a/scripts/developer/tests/performance/domain-check.js +++ b/scripts/developer/tests/performance/domain-check.js @@ -26,12 +26,12 @@ var MINIMUM_AVATARS = 25; // changeable by prompt var SPREAD_TIME_MS = 500; var DENSITY = 0.3; // square meters per person. Some say 10 sq ft is arm's length (0.9m^2), 4.5 is crowd (0.4m^2), 2.5 is mosh pit (0.2m^2). -var SOUND_DATA = {url: ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/sounds/piano1.wav"}; +var SOUND_DATA = {url: Script.getExternalPath(Script.ExternalPaths.HF_Content, "/howard/sounds/piano1.wav"}; var AVATARS_CHATTERING_AT_ONCE = 4; // How many of the agents should we request to play SOUND at once. var NEXT_SOUND_SPREAD = 500; // millisecond range of how long to wait after one sound finishes, before playing the next var ANIMATION_DATA = { - "url": ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/resources/avatar/animations/idle.fbx"), - // "url": ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/resources/avatar/animations/walk_fwd.fbx"), // alternative example + "url": Script.getExternalPath(Script.ExternalPaths.HF_Content, "/howard/resources/avatar/animations/idle.fbx"), + // "url": Script.getExternalPath(Script.ExternalPaths.HF_Content, "/howard/resources/avatar/animations/walk_fwd.fbx"), // alternative example "startFrame": 0.0, "endFrame": 300.0, "timeScale": 1.0, @@ -128,7 +128,7 @@ function messageHandler(channel, messageString, senderID) { orientation: Quat.fromPitchYawRollDegrees(0, Quat.safeEulerAngles(MyAvatar.orientation).y + (turnSpread * (Math.random() - 0.5)), 0), soundData: chatter && SOUND_DATA, listen: true, - skeletonModelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/resources/meshes/defaultAvatar_full.fst"), + skeletonModelURL: Script.getExternalPath(Script.ExternalPaths.HF_Content, "/howard/resources/meshes/defaultAvatar_full.fst"), animationData: ANIMATION_DATA }); } diff --git a/scripts/developer/tests/performance/rayPickPerformance.js b/scripts/developer/tests/performance/rayPickPerformance.js index ff6ad28eda..6aae1dca7c 100644 --- a/scripts/developer/tests/performance/rayPickPerformance.js +++ b/scripts/developer/tests/performance/rayPickPerformance.js @@ -22,7 +22,7 @@ var EXPECTED_INTERSECTIONS = 1286 * OUTER_LOOPS; var center = Vec3.sum(MyAvatar.position, Vec3.multiply(3, Quat.getFront(Camera.getOrientation()))); -var model_url = ExternalResource.getUrl(ExternalResource.HF_Content, "/caitlyn/production/Scansite/buddhaReduced.fbx"); +var model_url = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/caitlyn/production/Scansite/buddhaReduced.fbx"); var rayPickOverlays = Array(); diff --git a/scripts/developer/tests/performance/summon.js b/scripts/developer/tests/performance/summon.js index 88f9f4ca8b..408078b596 100644 --- a/scripts/developer/tests/performance/summon.js +++ b/scripts/developer/tests/performance/summon.js @@ -31,11 +31,11 @@ debug('startup seeking:', MINIMUM_AVATARS, 'listening:', N_LISTENING, 'chatterin var SPREAD_TIME_MS = 500; var DENSITY = 0.3; // square meters per person. Some say 10 sq ft is arm's length (0.9m^2), 4.5 is crowd (0.4m^2), 2.5 is mosh pit (0.2m^2). -var SOUND_DATA = {url: ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/sounds/piano1.wav")}; +var SOUND_DATA = {url: Script.getExternalPath(Script.ExternalPaths.HF_Content, "/howard/sounds/piano1.wav")}; var NEXT_SOUND_SPREAD = 500; // millisecond range of how long to wait after one sound finishes, before playing the next var ANIMATION_DATA = { - "url": ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/resources/avatar/animations/idle.fbx"), - // "url": ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/resources/avatar/animations/walk_fwd.fbx"), // alternative example + "url": Script.getExternalPath(Script.ExternalPaths.HF_Content, "/howard/resources/avatar/animations/idle.fbx"), + // "url": Script.getExternalPath(Script.ExternalPaths.HF_Content, "/howard/resources/avatar/animations/walk_fwd.fbx"), // alternative example "startFrame": 0.0, "endFrame": 300.0, "timeScale": 1.0, @@ -100,7 +100,7 @@ function messageHandler(channel, messageString, senderID) { orientation: Quat.fromPitchYawRollDegrees(0, Quat.safeEulerAngles(MyAvatar.orientation).y + (turnSpread * (Math.random() - 0.5)), 0), soundData: chatter && SOUND_DATA, listen: listen, - skeletonModelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/howard/resources/meshes/defaultAvatar_full.fst"), + skeletonModelURL: Script.getExternalPath(Script.ExternalPaths.HF_Content, "/howard/resources/meshes/defaultAvatar_full.fst"), animationData: ANIMATION_DATA }); } diff --git a/scripts/developer/tests/puck-attach.js b/scripts/developer/tests/puck-attach.js index ca057fc8c4..24437b950e 100644 --- a/scripts/developer/tests/puck-attach.js +++ b/scripts/developer/tests/puck-attach.js @@ -17,13 +17,13 @@ Script.include("/~/system/libraries/Xform.js"); (function() { // BEGIN LOCAL_SCOPE var TABLET_BUTTON_NAME = "PUCKTACH"; -var TABLET_APP_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/seefo/production/puck-attach/puck-attach.html"); +var TABLET_APP_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/seefo/production/puck-attach/puck-attach.html"); var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var tabletButton = tablet.addButton({ text: TABLET_BUTTON_NAME, - icon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/puck-i.svg"), - activeIcon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/puck-a.svg") + icon: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/puck-i.svg"), + activeIcon: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/puck-a.svg") }); var shown = false; @@ -85,7 +85,7 @@ function entityExists(entityID) { return Object.keys(Entities.getEntityProperties(entityID)).length > 0; } -var VIVE_PUCK_MODEL = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/vive_tracker_puck_y180z180.obj"); +var VIVE_PUCK_MODEL = Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/vive_tracker_puck_y180z180.obj"); var VIVE_PUCK_DIMENSIONS = { x: 0.0945, y: 0.0921, z: 0.0423 }; // 1/1000th scale of model var VIVE_PUCK_SEARCH_DISTANCE = 1.5; // metres var VIVE_PUCK_SPAWN_DISTANCE = 0.5; // metres diff --git a/scripts/developer/tests/rapidProceduralChange/rapidProceduralChangeTest.js b/scripts/developer/tests/rapidProceduralChange/rapidProceduralChangeTest.js index e4d9619abd..8742b97d2c 100644 --- a/scripts/developer/tests/rapidProceduralChange/rapidProceduralChangeTest.js +++ b/scripts/developer/tests/rapidProceduralChange/rapidProceduralChangeTest.js @@ -25,8 +25,8 @@ centerUp.y += 0.5; var centerDown = Vec3.sum(MyAvatar.position, Vec3.multiply(3, Quat.getForward(orientation))); centerDown.y -= 0.5; -var ENTITY_SHADER_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/eric/shaders/uniformTest.fs"); -var SKYBOX_SHADER_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/eric/shaders/timerTest.fs"); +var ENTITY_SHADER_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/eric/shaders/uniformTest.fs"); +var SKYBOX_SHADER_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/eric/shaders/timerTest.fs"); var entityData = { ProceduralEntity: { diff --git a/scripts/developer/tests/scriptableResource/lib.js b/scripts/developer/tests/scriptableResource/lib.js index bb8dc6a713..a8773bbabb 100644 --- a/scripts/developer/tests/scriptableResource/lib.js +++ b/scripts/developer/tests/scriptableResource/lib.js @@ -56,7 +56,7 @@ function getFrame(callback) { function prefetch(callback) { // A folder full of individual frames. - var MOVIE_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/james/vidtest/"); + var MOVIE_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/james/vidtest/"); var frames = []; diff --git a/scripts/developer/tests/skybox/skyboxTest.js b/scripts/developer/tests/skybox/skyboxTest.js index e0b95a34c7..ed72be05c1 100644 --- a/scripts/developer/tests/skybox/skyboxTest.js +++ b/scripts/developer/tests/skybox/skyboxTest.js @@ -27,7 +27,7 @@ var PX_RGBA_URL = Script.resolvePath('px_rgba.fs'); var PX_TEX_URL = Script.resolvePath('px_tex.fs'); var PX_TEX_RGBA_URL = Script.resolvePath('px_tex_rgba.fs'); -var TEX_URL = ExternalResource.getUrl(ExternalResource.HF_Public, "/alan/Playa/Skies/Test-Sky_out.png"); +var TEX_URL = Script.getExternalPath(Script.ExternalPaths.HF_Public, "/alan/Playa/Skies/Test-Sky_out.png"); var NO_TEX = ''; var COLOR = { red: 255, green: 0, blue: 255 }; diff --git a/scripts/developer/tests/tabletEventBridgeTest.js b/scripts/developer/tests/tabletEventBridgeTest.js index 7b58aa45c1..f384b2f053 100644 --- a/scripts/developer/tests/tabletEventBridgeTest.js +++ b/scripts/developer/tests/tabletEventBridgeTest.js @@ -17,13 +17,13 @@ var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var tabletButton = tablet.addButton({ text: "SOUNDS", - icon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/trombone-i.png"), - activeIcon: ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/icons/trombone-a.png") + icon: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/trombone-i.png"), + activeIcon: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/icons/trombone-a.png") }); -var WEB_BRIDGE_TEST_HTML = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/webBridgeTest.html?2"); -var TROMBONE_URL = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/audio/sad-trombone.wav"); -var SCREAM_URL = ExternalResource.getUrl(ExternalResource.HF_Public, "/tony/audio/wilhelm-scream.wav"); +var WEB_BRIDGE_TEST_HTML = Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/webBridgeTest.html?2"); +var TROMBONE_URL = Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/audio/sad-trombone.wav"); +var SCREAM_URL = Script.getExternalPath(Script.ExternalPaths.HF_Public, "/tony/audio/wilhelm-scream.wav"); tabletButton.clicked.connect(function () { if (shown) { diff --git a/scripts/developer/utilities/tools/cookies.js b/scripts/developer/utilities/tools/cookies.js index a1e375c2c4..661926bab6 100644 --- a/scripts/developer/utilities/tools/cookies.js +++ b/scripts/developer/utilities/tools/cookies.js @@ -10,7 +10,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); + var SLIDER_RANGE_INCREMENT_SCALE = 1 / 1000; var THUMB_COLOR = { @@ -784,7 +784,7 @@ var CHECK_MARK_COLOR = { green: 255, blue: 255 }, - imageURL: ExternalResource.getUrl(ExternalResource.HF_Public, 'images/tools/expand-ui.svg'), + imageURL: Script.getExternalPath(Script.ExternalPaths.HF_Public, 'images/tools/expand-ui.svg'), x: x, y: y, width: rawHeight, @@ -1147,13 +1147,13 @@ var CHECK_MARK_COLOR = { if (!item.isCollapsed && item.isCollapsable && clickedOverlay == item.thumb) { Overlays.editOverlay(item.thumb, { - imageURL: ExternalResource.getUrl(ExternalResource.HF_Public, 'images/tools/expand-right.svg') + imageURL: Script.getExternalPath(Script.ExternalPaths.HF_Public, 'images/tools/expand-right.svg') }); this.collapse(clickedOverlay); item.isCollapsed = true; } else if (item.isCollapsed && item.isCollapsable && clickedOverlay == item.thumb) { Overlays.editOverlay(item.thumb, { - imageURL: ExternalResource.getUrl(ExternalResource.HF_Public, 'images/tools/expand-ui.svg') + imageURL: Script.getExternalPath(Script.ExternalPaths.HF_Public, 'images/tools/expand-ui.svg') }); this.expand(clickedOverlay); item.isCollapsed = false; diff --git a/scripts/developer/utilities/tools/disableAvatarAnimations.js b/scripts/developer/utilities/tools/disableAvatarAnimations.js index ed524491e6..44bf61768e 100644 --- a/scripts/developer/utilities/tools/disableAvatarAnimations.js +++ b/scripts/developer/utilities/tools/disableAvatarAnimations.js @@ -15,7 +15,7 @@ var skeletonModelURL = ""; var jointCount = 0; var excludedRoles = ["rightHandGraspOpen", "rightHandGraspClosed", "leftHandGraspOpen", "leftHandGraspClosed"]; -var IDLE_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/ozan/dev/anim/standard_anims_160127/idle.fbx"); +var IDLE_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/ozan/dev/anim/standard_anims_160127/idle.fbx"); function overrideAnims() { var roles = MyAvatar.getAnimationRoles(); diff --git a/scripts/developer/utilities/workload/test_physics_scene.js b/scripts/developer/utilities/workload/test_physics_scene.js index 833bbf10a1..3910bddc2f 100644 --- a/scripts/developer/utilities/workload/test_physics_scene.js +++ b/scripts/developer/utilities/workload/test_physics_scene.js @@ -85,7 +85,7 @@ function addObject(a, b, c, lifetime) { rotation: stageOrientation, dimensions: OBJECT_DIM, lifetime: (lifetime === undefined) ? DEFAULT_LIFETIME : lifetime, - modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/jimi/props/cones/trafficCone.fbx"), + modelURL: Script.getExternalPath(Script.ExternalPaths.HF_Content, "/jimi/props/cones/trafficCone.fbx"), shapeType:shapeTypes[4], dynamic: true, gravity:{"x":0,"y":-9.8,"z":0}, diff --git a/scripts/simplifiedUI/simplifiedEmote/emojiApp/simplifiedEmoji.js b/scripts/simplifiedUI/simplifiedEmote/emojiApp/simplifiedEmoji.js index 0c5eac5126..1a96403404 100644 --- a/scripts/simplifiedUI/simplifiedEmote/emojiApp/simplifiedEmoji.js +++ b/scripts/simplifiedUI/simplifiedEmote/emojiApp/simplifiedEmoji.js @@ -22,8 +22,7 @@ var EasingFunctions = Script.require("./resources/modules/easing.js"); var emojiList = Script.require("./resources/modules/emojiList.js"); var customEmojiList = Script.require("./resources/modules/customEmojiList.js"); // The contents of this remote folder must always contain all possible emojis for users of `simplifiedEmoji.js` -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var imageURLBase = networkingConstants.CONTENT_CDN_URL + "MarketplaceItems/avimoji/appResources/appData/resources/images/emojis/png512/"; +var imageURLBase = Script.getExternalPath(Script.ExternalPaths.HF_Content, "MarketplaceItems/avimoji/appResources/appData/resources/images/emojis/png512/"); // Uncomment below for local testing //imageURLBase = Script.resolvePath("./resources/images/emojis/512px/"); diff --git a/scripts/system/audio.js b/scripts/system/audio.js index 5727f78a35..5b1d1d2dd6 100644 --- a/scripts/system/audio.js +++ b/scripts/system/audio.js @@ -14,7 +14,7 @@ (function() { // BEGIN LOCAL_SCOPE var TABLET_BUTTON_NAME = "AUDIO"; -var HOME_BUTTON_TEXTURE = ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-root.png"); +var HOME_BUTTON_TEXTURE = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/alan/dev/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-root.png"); var AUDIO_QML_SOURCE = "hifi/audio/Audio.qml"; var MUTE_ICONS = { diff --git a/scripts/system/avatarFinderBeacon.js b/scripts/system/avatarFinderBeacon.js index 8679b1427c..7375d4bf4f 100644 --- a/scripts/system/avatarFinderBeacon.js +++ b/scripts/system/avatarFinderBeacon.js @@ -20,8 +20,8 @@ var beacons = {}; // List of .fst files used by AC scripts, that should be ignored in the script in case TRY_TO_IGNORE_AC_AGENTS is enabled var POSSIBLE_AC_AVATARS = [ - ExternalResource.getUrl(ExternalResource.HF_Content, "/ozan/dev/avatars/invisible_avatar/invisible_avatar.fst"), - ExternalResource.getUrl(ExternalResource.HF_Content, "/ozan/dev/avatars/camera_man/pod/_latest/camera_man_pod.fst") + Script.getExternalPath(Script.ExternalPaths.HF_Content, "/ozan/dev/avatars/invisible_avatar/invisible_avatar.fst"), + Script.getExternalPath(Script.ExternalPaths.HF_Content, "/ozan/dev/avatars/camera_man/pod/_latest/camera_man_pod.fst") ]; AvatarFinderBeacon = function(avatar) { diff --git a/scripts/system/commerce/wallet.js b/scripts/system/commerce/wallet.js index 1dac9d111a..c67c46978b 100644 --- a/scripts/system/commerce/wallet.js +++ b/scripts/system/commerce/wallet.js @@ -338,7 +338,7 @@ var SEND_MONEY_PARTICLE_PROPERTIES = { radiusSpread: 0, radiusStart: 0.2, speedSpread: 0, - textures: ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/Particles/Bokeh-Particle-HFC.png"), + textures: Script.getExternalPath(Script.ExternalPaths.HF_Content, "/alan/dev/Particles/Bokeh-Particle-HFC.png"), type: 'ParticleEffect' }; diff --git a/scripts/system/controllers/controllerModules/equipEntity.js b/scripts/system/controllers/controllerModules/equipEntity.js index 0540f8d669..fee38f2cdd 100644 --- a/scripts/system/controllers/controllerModules/equipEntity.js +++ b/scripts/system/controllers/controllerModules/equipEntity.js @@ -20,7 +20,7 @@ Script.include("/~/system/libraries/cloneEntityUtils.js"); Script.include("/~/system/libraries/utils.js"); -var DEFAULT_SPHERE_MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/equip-Fresnel-3.fbx"); +var DEFAULT_SPHERE_MODEL_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/alan/dev/equip-Fresnel-3.fbx"); var EQUIP_SPHERE_SCALE_FACTOR = 0.65; diff --git a/scripts/system/controllers/grab.js b/scripts/system/controllers/grab.js index 1a3ff052c2..cd18c38302 100644 --- a/scripts/system/controllers/grab.js +++ b/scripts/system/controllers/grab.js @@ -164,8 +164,8 @@ var beacon = { }; // TODO: play sounds again when we aren't leaking AudioInjector threads -// var grabSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Public, "/eric/sounds/CloseClamp.wav")); -// var releaseSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Public, "/eric/sounds/ReleaseClamp.wav")); +// var grabSound = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.HF_Public, "/eric/sounds/CloseClamp.wav")); +// var releaseSound = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.HF_Public, "/eric/sounds/ReleaseClamp.wav")); // var VOLUME = 0.0; diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index a07178a768..dc4a480ed8 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -44,8 +44,8 @@ var CREATE_TOOLS_WIDTH = 490; var MAX_DEFAULT_ENTITY_LIST_HEIGHT = 942; var ENTIRE_DOMAIN_SCAN_RADIUS = 27713; -var DEFAULT_IMAGE = ExternalResource.getUrl(ExternalResource.Assets, "interface/default/default_image.jpg"); -var DEFAULT_PARTICLE = ExternalResource.getUrl(ExternalResource.Assets, "interface/default/default_particle.png"); +var DEFAULT_IMAGE = Script.getExternalPath(Script.ExternalPaths.Assets, "interface/default/default_image.jpg"); +var DEFAULT_PARTICLE = Script.getExternalPath(Script.ExternalPaths.Assets, "interface/default/default_particle.png"); var createToolsWindow = new CreateWindow( Script.resolvePath("qml/EditTools.qml"), diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index 287cdf0da1..94143f5bab 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -37,7 +37,7 @@ var TABLET_NATURAL_DIMENSIONS = {x: 32.083, y: 48.553, z: 2.269}; var HOME_BUTTON_TEXTURE = Script.resourcesPath() + "images/button-close.png"; // var HOME_BUTTON_TEXTURE = Script.resourcesPath() + "meshes/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-close.png"; -// var TABLET_MODEL_PATH = ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/tablet-with-home-button.fbx"); +// var TABLET_MODEL_PATH = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/alan/dev/tablet-with-home-button.fbx"); var LOCAL_TABLET_MODEL_PATH = Script.resourcesPath() + "meshes/tablet-with-home-button-small-bezel.fbx"; var HIGH_PRIORITY = 1; diff --git a/scripts/system/libraries/globals.js b/scripts/system/libraries/globals.js index 0951adb0fa..d2be1d0ea9 100644 --- a/scripts/system/libraries/globals.js +++ b/scripts/system/libraries/globals.js @@ -8,6 +8,4 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); - -isInterstitialOverlaysVisible = false; +isInterstitialOverlaysVisible = false; \ No newline at end of file diff --git a/scripts/system/libraries/networkingConstants.js b/scripts/system/libraries/networkingConstants.js index a83d2cb4b4..7da0951eea 100644 --- a/scripts/system/libraries/networkingConstants.js +++ b/scripts/system/libraries/networkingConstants.js @@ -10,15 +10,11 @@ var INTERFACE_METADATA_SOURCE = "https://cdn.vircadia.com/dist/launcher/vircadiaMeta.json"; // Base CDN URLs -var CONTENT_CDN_URL = ExternalResource.HF_Content; // "https://cdn-1.vircadia.com/" + usCDN; -var PUBLIC_BUCKET_CDN_URL = ExternalResource.HF_Public; -var euCDN = "eu-c-1/"; -var usCDN = "us-c-1/"; +var CONTENT_CDN_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/"); // "https://cdn-1.vircadia.com/" + usCDN; +var PUBLIC_BUCKET_CDN_URL = Script.getExternalPath(Script.ExternalPaths.HF_Public, "/"); module.exports = { - INTERFACE_METADATA_SOURCE: INTERFACE_METADATA_SOURCE. + INTERFACE_METADATA_SOURCE: INTERFACE_METADATA_SOURCE, CONTENT_CDN_URL: CONTENT_CDN_URL, - PUBLIC_BUCKET_CDN_URL: PUBLIC_BUCKET_CDN_URL, - euCDN: euCDN, - usCDN: usCDN + PUBLIC_BUCKET_CDN_URL: PUBLIC_BUCKET_CDN_URL } diff --git a/scripts/system/libraries/progressDialog.js b/scripts/system/libraries/progressDialog.js index a06c5c6778..ec71896767 100644 --- a/scripts/system/libraries/progressDialog.js +++ b/scripts/system/libraries/progressDialog.js @@ -8,8 +8,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var var networkingConstants = Script.require("/~/system/libraries/networkingConstants.js"); -var toolIconUrl = ExternalResource.getUrl(ExternalResource.HF_Public, "images/tools/"); +var toolIconUrl = Script.getExternalPath(Script.ExternalPaths.HF_Public, "images/tools/"); progressDialog = (function () { var that = {}, diff --git a/scripts/system/makeUserConnection.js b/scripts/system/makeUserConnection.js index 1483b65a9b..befb0e36b2 100644 --- a/scripts/system/makeUserConnection.js +++ b/scripts/system/makeUserConnection.js @@ -35,8 +35,8 @@ var CONNECTING_TIME = 100; // ms One interval. var PARTICLE_RADIUS = 0.15; // m var PARTICLE_ANGLE_INCREMENT = 360 / 45; // 1hz - var HANDSHAKE_SOUND_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/davidkelly/production/audio/4beat_sweep.wav"); - var SUCCESSFUL_HANDSHAKE_SOUND_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/davidkelly/production/audio/3rdbeat_success_bell.wav"); + var HANDSHAKE_SOUND_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/davidkelly/production/audio/4beat_sweep.wav"); + var SUCCESSFUL_HANDSHAKE_SOUND_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/davidkelly/production/audio/3rdbeat_success_bell.wav"); var PREFERRER_HAND_JOINT_POSTFIX_ORDER = ['Middle1', 'Index1', '']; var HAPTIC_DATA = { initial: { duration: 20, strength: 0.6 }, // duration is in ms @@ -60,7 +60,7 @@ "radiusStart": 0.0025, "emitSpeed": 0.02, "speedSpread": 0.015, - "textures": ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/Particles/Bokeh-Particle.png"), + "textures": Script.getExternalPath(Script.ExternalPaths.HF_Content, "/alan/dev/Particles/Bokeh-Particle.png"), "color": {"red": 255, "green": 255, "blue": 255}, "colorFinish": {"red": 0, "green": 164, "blue": 255}, "colorStart": {"red": 255, "green": 255, "blue": 255}, @@ -92,7 +92,7 @@ "radiusStart": 0.04, "speedSpread": 0.00, "radiusSpread": 0.0, - "textures": ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/Particles/Bokeh-Particle.png"), + "textures": Script.getExternalPath(Script.ExternalPaths.HF_Content, "/alan/dev/Particles/Bokeh-Particle.png"), "color": {"red": 200, "green": 170, "blue": 255}, "colorFinish": {"red": 0, "green": 134, "blue": 255}, "colorStart": {"red": 185, "green": 222, "blue": 255}, diff --git a/scripts/system/menu.js b/scripts/system/menu.js index 2fbb3d7b0d..277a223e07 100644 --- a/scripts/system/menu.js +++ b/scripts/system/menu.js @@ -13,7 +13,7 @@ /* global Script, HMD, Tablet, Entities */ -var HOME_BUTTON_TEXTURE = ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-root.png"); +var HOME_BUTTON_TEXTURE = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/alan/dev/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-root.png"); // var HOME_BUTTON_TEXTURE = Script.resourcesPath() + "meshes/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-root.png"; (function() { diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 0d60e2331a..7769ad8c41 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -271,7 +271,7 @@ function onMessage(message) { } var POLAROID_PRINT_SOUND = SoundCache.getSound(Script.resourcesPath() + "sounds/snapshot/sound-print-photo.wav"); -var POLAROID_MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/alan/dev/Test/snapshot.fbx"); +var POLAROID_MODEL_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/alan/dev/Test/snapshot.fbx"); var POLAROID_RATE_LIMIT_MS = 1000; var polaroidPrintingIsRateLimited = false; diff --git a/scripts/system/tablet-users.js b/scripts/system/tablet-users.js index af72e951fc..bac77f1f03 100644 --- a/scripts/system/tablet-users.js +++ b/scripts/system/tablet-users.js @@ -11,7 +11,7 @@ // (function() { // BEGIN LOCAL_SCOPE - var USERS_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/faye/tablet-dev/users.html"); + var USERS_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/faye/tablet-dev/users.html"); var HOME_BUTTON_TEXTURE = Script.resourcesPath() + "meshes/tablet-with-home-button.fbx/tablet-with-home-button.fbm/button-root.png"; var FRIENDS_WINDOW_URL = Account.metaverseServerURL + "/user/friends"; diff --git a/scripts/tutorials/createFloatingLanternBox.js b/scripts/tutorials/createFloatingLanternBox.js index 3cf2facdc9..574abd410a 100644 --- a/scripts/tutorials/createFloatingLanternBox.js +++ b/scripts/tutorials/createFloatingLanternBox.js @@ -13,8 +13,8 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -var COMPOUND_SHAPE_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/Examples%20Content/production/maracas/woodenCrate_phys.obj"); -var MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/Examples%20Content/production/maracas/woodenCrate_VR.fbx"); +var COMPOUND_SHAPE_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/Examples%20Content/production/maracas/woodenCrate_phys.obj"); +var MODEL_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/Examples%20Content/production/maracas/woodenCrate_VR.fbx"); var SCRIPT_URL = Script.resolvePath("./entity_scripts/floatingLanternBox.js?v=" + Date.now()); var START_POSITION = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getFront(MyAvatar.orientation), 2)); START_POSITION.y -= .6; diff --git a/scripts/tutorials/createTetherballStick.js b/scripts/tutorials/createTetherballStick.js index e976110db2..6c23d8f3e5 100644 --- a/scripts/tutorials/createTetherballStick.js +++ b/scripts/tutorials/createTetherballStick.js @@ -24,7 +24,7 @@ var ACTION_DISTANCE = 0.35; var ACTION_TIMESCALE = 0.035; var MAX_DISTANCE_MULTIPLIER = 4; var STICK_SCRIPT_URL = Script.resolvePath("./entity_scripts/tetherballStick.js"); -var STICK_MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/caitlyn/production/raveStick/newRaveStick2.fbx"); +var STICK_MODEL_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/caitlyn/production/raveStick/newRaveStick2.fbx"); var COLLISION_SOUND_URL = "http://public.highfidelity.io/sounds/Footsteps/FootstepW3Left-12db.wav"; var avatarOrientation = MyAvatar.orientation; @@ -37,7 +37,7 @@ var ballStartPosition = Vec3.sum(stickStartPosition, Vec3.multiply(0.36, front)) var ballID = Entities.addEntity({ type: "Model", - modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/Examples%20Content/production/marblecollection/Star.fbx"), + modelURL: Script.getExternalPath(Script.ExternalPaths.HF_Content, "/Examples%20Content/production/marblecollection/Star.fbx"), name: "TetherballStick Ball", shapeType: "Sphere", position: ballStartPosition, @@ -70,7 +70,7 @@ var lineID = Entities.addEntity({ green: 120, blue: 250 }, - textures: ExternalResource.getUrl(ExternalResource.HF_Public, "/alan/Particles/Particle-Sprite-Smoke-1.png"), + textures: Script.getExternalPath(Script.ExternalPaths.HF_Public, "/alan/Particles/Particle-Sprite-Smoke-1.png"), position: ballStartPosition, dimensions: { x: 10, diff --git a/scripts/tutorials/entity_scripts/ambientSound.js b/scripts/tutorials/entity_scripts/ambientSound.js index 662af792a7..b836ae96c0 100644 --- a/scripts/tutorials/entity_scripts/ambientSound.js +++ b/scripts/tutorials/entity_scripts/ambientSound.js @@ -24,7 +24,7 @@ (function(){ // This sample clip and range will be used if you don't add userData to the entity (see above) var DEFAULT_RANGE = 100; - var DEFAULT_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/ken/samples/forest_ambiX.wav"); + var DEFAULT_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/ken/samples/forest_ambiX.wav"); var DEFAULT_VOLUME = 1.0; var DEFAULT_USERDATA = { diff --git a/scripts/tutorials/entity_scripts/flashlight.js b/scripts/tutorials/entity_scripts/flashlight.js index bc19cee926..f7269dc7ca 100644 --- a/scripts/tutorials/entity_scripts/flashlight.js +++ b/scripts/tutorials/entity_scripts/flashlight.js @@ -8,7 +8,7 @@ // Copyright 2015 High Fidelity, Inc. // // This is a toy script that can be added to the Flashlight model entity: -// ExternalResource.getUrl(ExternalResource.HF_Public, "/models/props/flashlight.fbx") +// Script.getExternalPath(Script.ExternalPaths.HF_Public, "/models/props/flashlight.fbx") // that creates a spotlight attached with the flashlight model while the entity is grabbed // // Distributed under the Apache License, Version 2.0. @@ -17,8 +17,8 @@ (function() { - var ON_SOUND_URL = ExternalResource.getUrl(ExternalResource.HF_Public, '/sounds/Switches%20and%20sliders/flashlight_on.wav'); - var OFF_SOUND_URL = ExternalResource.getUrl(ExternalResource.HF_Public, '/sounds/Switches%20and%20sliders/flashlight_off.wav'); + var ON_SOUND_URL = Script.getExternalPath(Script.ExternalPaths.HF_Public, '/sounds/Switches%20and%20sliders/flashlight_on.wav'); + var OFF_SOUND_URL = Script.getExternalPath(Script.ExternalPaths.HF_Public, '/sounds/Switches%20and%20sliders/flashlight_off.wav'); //we are creating lights that we don't want to get stranded so lets make sure that we can get rid of them //if you're going to be using this in a dungeon or something and holding it for a long time, increase this lifetime value. diff --git a/scripts/tutorials/entity_scripts/floatingLanternBox.js b/scripts/tutorials/entity_scripts/floatingLanternBox.js index 859897c06a..a0eb8a134d 100644 --- a/scripts/tutorials/entity_scripts/floatingLanternBox.js +++ b/scripts/tutorials/entity_scripts/floatingLanternBox.js @@ -16,7 +16,7 @@ (function() { var _this; - var LANTERN_MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/DomainContent/Welcome%20Area/Models/chinaLantern_capsule.fbx"); + var LANTERN_MODEL_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/DomainContent/Welcome%20Area/Models/chinaLantern_capsule.fbx"); var LANTERN_SCRIPT_URL = Script.resolvePath("floatingLantern.js?v=" + Date.now()); var LIFETIME = 120; var RESPAWN_INTERVAL = 1000; diff --git a/scripts/tutorials/entity_scripts/sit.js b/scripts/tutorials/entity_scripts/sit.js index 7cc097722b..bedc4d55d5 100644 --- a/scripts/tutorials/entity_scripts/sit.js +++ b/scripts/tutorials/entity_scripts/sit.js @@ -18,7 +18,7 @@ } var SETTING_KEY = "com.highfidelity.avatar.isSitting"; - var ANIMATION_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/clement/production/animations/sitting_idle.fbx"); + var ANIMATION_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/clement/production/animations/sitting_idle.fbx"); var ANIMATION_FPS = 30; var ANIMATION_FIRST_FRAME = 1; var ANIMATION_LAST_FRAME = 10; diff --git a/scripts/tutorials/nBody.js b/scripts/tutorials/nBody.js index 5a39e10f4c..19044b59fa 100644 --- a/scripts/tutorials/nBody.js +++ b/scripts/tutorials/nBody.js @@ -18,8 +18,8 @@ var bodies = []; var n = 3; var radius = 0.1; var G = 0.25; -var EARTH = ExternalResource.getUrl(ExternalResource.HF_Content, "/seth/production/NBody/earth.fbx"); -var MOON = ExternalResource.getUrl(ExternalResource.HF_Content, "/seth/production/NBody/moon.fbx"); +var EARTH = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/seth/production/NBody/earth.fbx"); +var MOON = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/seth/production/NBody/moon.fbx"); var COLOR1 = { red: 51, green: 51, blue: 255 }; var COLOR2 = { red: 51, green: 51, blue: 255 }; diff --git a/tools/nitpick/AppDataHighFidelity/Interface.json b/tools/nitpick/AppDataHighFidelity/Interface.json index 5991ed64aa..41d63d2c55 100644 --- a/tools/nitpick/AppDataHighFidelity/Interface.json +++ b/tools/nitpick/AppDataHighFidelity/Interface.json @@ -38,7 +38,7 @@ "Avatar/animGraphURL": "", "Avatar/attachmentData/size": 0, "Avatar/avatarEntityData/size": 0, - "Avatar/collisionSoundURL": "https://hifi-public.s3.amazonaws.com/sounds/Collisions-otherorganic/Body_Hits_Impact.wav", + "Avatar/collisionSoundURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-public/sounds/Collisions-otherorganic/Body_Hits_Impact.wav", "Avatar/displayName": "", "Avatar/dominantHand": "right", "Avatar/flyingHMD": false, diff --git a/unpublishedScripts/DomainContent/Cupcake/eatable.js b/unpublishedScripts/DomainContent/Cupcake/eatable.js index 732982adcd..6911ee30cf 100644 --- a/unpublishedScripts/DomainContent/Cupcake/eatable.js +++ b/unpublishedScripts/DomainContent/Cupcake/eatable.js @@ -10,7 +10,7 @@ // (function () { - var NOMNOM_SOUND = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Content, "/DomainContent/production/audio/vegcrunch.wav")); + var NOMNOM_SOUND = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.HF_Content, "/DomainContent/production/audio/vegcrunch.wav")); var _entityID; diff --git a/unpublishedScripts/DomainContent/Toybox/doll/doll.js b/unpublishedScripts/DomainContent/Toybox/doll/doll.js index 59e14e5946..654151a0a7 100644 --- a/unpublishedScripts/DomainContent/Toybox/doll/doll.js +++ b/unpublishedScripts/DomainContent/Toybox/doll/doll.js @@ -67,7 +67,7 @@ animation: { // Providing actual model fbx for animation used to work, now contorts doll into a weird ball // See bug: https://app.asana.com/0/26225263936266/70097355490098 - // url: ExternalResource.getUrl(ExternalResource.HF_Public, '/models/Bboys/bboy2/bboy2.fbx"), + // url: Script.getExternalPath(Script.ExternalPaths.HF_Public, '/models/Bboys/bboy2/bboy2.fbx"), running: false, } }); diff --git a/unpublishedScripts/DomainContent/Toybox/flashlight/flashlight.js b/unpublishedScripts/DomainContent/Toybox/flashlight/flashlight.js index 45f26e79e5..82a354c767 100644 --- a/unpublishedScripts/DomainContent/Toybox/flashlight/flashlight.js +++ b/unpublishedScripts/DomainContent/Toybox/flashlight/flashlight.js @@ -8,7 +8,7 @@ // Copyright 2015 High Fidelity, Inc. // // This is a toy script that can be added to the Flashlight model entity: -// ExternalResource.getUrl(ExternalResource.HF_Public, "/models/props/flashlight.fbx") +// Script.getExternalPath(Script.ExternalPaths.HF_Public, "/models/props/flashlight.fbx") // that creates a spotlight attached with the flashlight model while the entity is grabbed // // Distributed under the Apache License, Version 2.0. diff --git a/unpublishedScripts/DomainContent/Toybox/pistol/pistol.js b/unpublishedScripts/DomainContent/Toybox/pistol/pistol.js index 7a887692c3..d86ffd753a 100644 --- a/unpublishedScripts/DomainContent/Toybox/pistol/pistol.js +++ b/unpublishedScripts/DomainContent/Toybox/pistol/pistol.js @@ -266,7 +266,7 @@ "alphaStart": 0, "alphaFinish": 0, "additiveBlending": 0, - "textures": ExternalResource.getUrl(ExternalResource.HF_Public, "/alan/Particles/Particle-Sprite-Smoke-1.png") + "textures": Script.getExternalPath(Script.ExternalPaths.HF_Public, "/alan/Particles/Particle-Sprite-Smoke-1.png") }); Script.setTimeout(function() { Entities.editEntity(smoke, { diff --git a/unpublishedScripts/marketplace/blocks/blocksApp.js b/unpublishedScripts/marketplace/blocks/blocksApp.js index 4d3518b03f..b01ca64721 100644 --- a/unpublishedScripts/marketplace/blocks/blocksApp.js +++ b/unpublishedScripts/marketplace/blocks/blocksApp.js @@ -15,9 +15,9 @@ (function () { var APP_NAME = "BLOCKS"; var APP_URL = "https://poly.google.com/"; - var APP_OUTDATED_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/blocks/updateToBlocks.html"); - var APP_ICON = ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/blocks/blocks-i.svg"); - var APP_ICON_ACTIVE = ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/blocks/blocks-a.svg"); + var APP_OUTDATED_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/elisalj/blocks/updateToBlocks.html"); + var APP_ICON = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/elisalj/blocks/blocks-i.svg"); + var APP_ICON_ACTIVE = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/elisalj/blocks/blocks-a.svg"); try { print("Current Interface version: " + Window.checkVersion()); diff --git a/unpublishedScripts/marketplace/boppo/boppoClownEntity.js b/unpublishedScripts/marketplace/boppo/boppoClownEntity.js index f5b57a7426..77aa7ff2da 100644 --- a/unpublishedScripts/marketplace/boppo/boppoClownEntity.js +++ b/unpublishedScripts/marketplace/boppo/boppoClownEntity.js @@ -40,7 +40,7 @@ var BoppoClownEntity = function () { _this = this; PUNCH_SOUNDS.forEach(function(punch) { - _punchSounds.push(SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Content, '/caitlyn/production/elBoppo/sfx/' + punch))); + _punchSounds.push(SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.HF_Content, '/caitlyn/production/elBoppo/sfx/' + punch))); }); }; diff --git a/unpublishedScripts/marketplace/boppo/boppoServer.js b/unpublishedScripts/marketplace/boppo/boppoServer.js index 3831290d91..fd7a7e17a9 100644 --- a/unpublishedScripts/marketplace/boppo/boppoServer.js +++ b/unpublishedScripts/marketplace/boppo/boppoServer.js @@ -167,12 +167,12 @@ _boppoClownID = null; _coolDown = false; CLOWN_LAUGHS.forEach(function(clownLaugh) { - _clownLaughs.push(SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Content, + clownLaugh))); + _clownLaughs.push(SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.HF_Content, + clownLaugh))); }); - _tickTockSound = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Content, TICK_TOCK_SOUND)); - _boxingBellRingStart = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Content, BOXING_RING_BELL_START)); - _boxingBellRingEnd = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Content, BOXING_RING_BELL_END)); - _music = SoundCache.getSound(ExternalResource.getUrl(ExternalResource.HF_Content, BOPPO_MUSIC)); + _tickTockSound = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.HF_Content, TICK_TOCK_SOUND)); + _boxingBellRingStart = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.HF_Content, BOXING_RING_BELL_START)); + _boxingBellRingEnd = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.HF_Content, BOXING_RING_BELL_END)); + _music = SoundCache.getSound(Script.getExternalPath(Script.ExternalPaths.HF_Content, BOPPO_MUSIC)); _boppoEntities = {}; }; @@ -199,9 +199,9 @@ var boppoBaseProperties = Entities.getEntityProperties(_entityID, ['position', 'rotation']); _boppoClownID = Entities.addEntity({ angularDamping: 0.0, - collisionSoundURL: ExternalResource.getUrl(ExternalResource.HF_Content, 'caitlyn/production/elBoppo/51460__andre-rocha-nascimento__basket-ball-01-bounce.wav'), + collisionSoundURL: Script.getExternalPath(Script.ExternalPaths.HF_Content, 'caitlyn/production/elBoppo/51460__andre-rocha-nascimento__basket-ball-01-bounce.wav'), collisionsWillMove: true, - compoundShapeURL: ExternalResource.getUrl(ExternalResource.HF_Content, 'caitlyn/production/elBoppo/bopo_phys.obj'), + compoundShapeURL: Script.getExternalPath(Script.ExternalPaths.HF_Content, 'caitlyn/production/elBoppo/bopo_phys.obj'), damping: 1.0, density: 10000, dimensions: { @@ -216,7 +216,7 @@ y: -25, z: 0 }, - modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, 'caitlyn/production/elBoppo/elBoppo3_VR.fbx'), + modelURL: Script.getExternalPath(Script.ExternalPaths.HF_Content, 'caitlyn/production/elBoppo/elBoppo3_VR.fbx'), name: 'El Boppo the Punching Bag Clown', registrationPoint: { x: 0.5, diff --git a/unpublishedScripts/marketplace/boppo/clownGloveDispenser.js b/unpublishedScripts/marketplace/boppo/clownGloveDispenser.js index 0fe915146b..173c0eda53 100644 --- a/unpublishedScripts/marketplace/boppo/clownGloveDispenser.js +++ b/unpublishedScripts/marketplace/boppo/clownGloveDispenser.js @@ -35,7 +35,7 @@ y: -9.8, z: 0 }, - modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/caitlyn/production/elBoppo/LFT_glove_VR3.fbx"), + modelURL: Script.getExternalPath(Script.ExternalPaths.HF_Content, "/caitlyn/production/elBoppo/LFT_glove_VR3.fbx"), name: "Boxing Glove - Left", registrationPoint: { x: 0.5, @@ -76,7 +76,7 @@ y: -9.8, z: 0 }, - modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, "/caitlyn/production/elBoppo/RT_glove_VR2.fbx"), + modelURL: Script.getExternalPath(Script.ExternalPaths.HF_Content, "/caitlyn/production/elBoppo/RT_glove_VR2.fbx"), name: "Boxing Glove - Right", registrationPoint: { x: 0.5, diff --git a/unpublishedScripts/marketplace/boppo/createElBoppo.js b/unpublishedScripts/marketplace/boppo/createElBoppo.js index 2769c357a2..134eddaf10 100644 --- a/unpublishedScripts/marketplace/boppo/createElBoppo.js +++ b/unpublishedScripts/marketplace/boppo/createElBoppo.js @@ -14,7 +14,7 @@ var WANT_CLEANUP_ON_SCRIPT_ENDING = false; var getScriptPath = function(localPath) { if (this.isCleanupAndSpawnScript) { - return ExternalResource.getUrl(ExternalResource.HF_Content, 'DomainContent/Welcome%20Area/Scripts/boppo/' + localPath); + return Script.getExternalPath(Script.ExternalPaths.HF_Content, 'DomainContent/Welcome%20Area/Scripts/boppo/' + localPath); } return Script.resolvePath(localPath); }; @@ -33,7 +33,7 @@ var boxingRing = Entities.addEntity({ y: 4.0418000221252441, z: 3.0490000247955322 }, - modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, 'DomainContent/Welcome%20Area/production/models/boxingRing/assembled/boppoBoxingRingAssembly.fbx'), + modelURL: Script.getExternalPath(Script.ExternalPaths.HF_Content, 'DomainContent/Welcome%20Area/production/models/boxingRing/assembled/boppoBoxingRingAssembly.fbx'), name: 'Boxing Ring Assembly', rotation: { w: 0.9996337890625, @@ -61,7 +61,7 @@ var boppoEntities = [ y: 0.25536194443702698, z: 0.059455446898937225 }, - modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, 'DomainContent/Welcome%20Area/production/models/boxingGameSign/boppoSignFrame.fbx'), + modelURL: Script.getExternalPath(Script.ExternalPaths.HF_Content, 'DomainContent/Welcome%20Area/production/models/boxingGameSign/boppoSignFrame.fbx'), parentID: boxingRing, localPosition: { x: -1.0251024961471558, @@ -149,7 +149,7 @@ var boppoEntities = [ y: 0.1884911060333252, z: 0.059455446898937225 }, - modelURL: ExternalResource.getUrl(ExternalResource.HF_Content, 'DomainContent/Welcome%20Area/production/models/boxingGameSign/boppoSignFrame.fbx'), + modelURL: Script.getExternalPath(Script.ExternalPaths.HF_Content, 'DomainContent/Welcome%20Area/production/models/boxingGameSign/boppoSignFrame.fbx'), parentID: boxingRing, localPosition: { x: -0.78200173377990723, diff --git a/unpublishedScripts/marketplace/dart/createDart.js b/unpublishedScripts/marketplace/dart/createDart.js index d031a94eb0..9ad2feb26a 100644 --- a/unpublishedScripts/marketplace/dart/createDart.js +++ b/unpublishedScripts/marketplace/dart/createDart.js @@ -10,7 +10,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -var MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/wadewatts/dart.fbx"); +var MODEL_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/wadewatts/dart.fbx"); var SCRIPT_URL = Script.resolvePath("./dart.js?v=" + Date.now()); var START_POSITION = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getFront(MyAvatar.orientation), 0.75)); var START_ROTATION = MyAvatar.orientation diff --git a/unpublishedScripts/marketplace/dart/dart.js b/unpublishedScripts/marketplace/dart/dart.js index 5968eb8335..1814e7a09e 100644 --- a/unpublishedScripts/marketplace/dart/dart.js +++ b/unpublishedScripts/marketplace/dart/dart.js @@ -12,7 +12,7 @@ (function() { var THROW_FACTOR = 3; - var DART_SOUND_URL = Script.resolvePath(ExternalResource.getUrl(ExternalResource.HF_Content, '/wadewatts/dart.wav?v=') + "?" + Date.now()); + var DART_SOUND_URL = Script.resolvePath(Script.getExternalPath(Script.ExternalPaths.HF_Content, '/wadewatts/dart.wav?v=') + "?" + Date.now()); var Dart = function() {}; diff --git a/unpublishedScripts/marketplace/emoji-tablet/emojiTablet.js b/unpublishedScripts/marketplace/emoji-tablet/emojiTablet.js index e6ada1ed79..f838077a6f 100644 --- a/unpublishedScripts/marketplace/emoji-tablet/emojiTablet.js +++ b/unpublishedScripts/marketplace/emoji-tablet/emojiTablet.js @@ -12,13 +12,13 @@ /// http://creativecommons.org/licenses/ /// -var lib = Script.require(ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/emoji_scripts/emojiLib.js") + "?" + Date.now()); +var lib = Script.require(Script.getExternalPath(Script.ExternalPaths.HF_Content, "/elisalj/emoji_scripts/emojiLib.js") + "?" + Date.now()); (function() { var APP_NAME = "EMOJIS"; - var APP_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/emoji_scripts/emojiTabletUI.html") + "?" + Date.now(); - var APP_ICON = ExternalResource.getUrl(ExternalResource.HF_Content, "/elisalj/emoji_scripts/icons/emoji-i.svg"); + var APP_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/elisalj/emoji_scripts/emojiTabletUI.html") + "?" + Date.now(); + var APP_ICON = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/elisalj/emoji_scripts/icons/emoji-i.svg"); var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var button = tablet.addButton({ diff --git a/unpublishedScripts/marketplace/gameTable/games/deckOfCards/deckOfCards.js b/unpublishedScripts/marketplace/gameTable/games/deckOfCards/deckOfCards.js index f37560132c..75874cf038 100644 --- a/unpublishedScripts/marketplace/gameTable/games/deckOfCards/deckOfCards.js +++ b/unpublishedScripts/marketplace/gameTable/games/deckOfCards/deckOfCards.js @@ -13,8 +13,8 @@ var _this; var MAPPING_NAME = "hifi-gametable-cards-dev-" + Math.random(); var PLAYING_CARD_SCRIPT_URL = Script.resolvePath('playingCard.js'); - var PLAYING_CARD_MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/playing_card.fbx"); - var PLAYING_CARD_BACK_IMAGE_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/back.jpg"); + var PLAYING_CARD_MODEL_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/playing_card.fbx"); + var PLAYING_CARD_BACK_IMAGE_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/back.jpg"); var PLAYING_CARD_DIMENSIONS = { x: 0.2621, y: 0.1, diff --git a/unpublishedScripts/marketplace/gameTable/games/deckOfCards/playingCard.js b/unpublishedScripts/marketplace/gameTable/games/deckOfCards/playingCard.js index 9c12bf7ce0..5e9473f5e2 100644 --- a/unpublishedScripts/marketplace/gameTable/games/deckOfCards/playingCard.js +++ b/unpublishedScripts/marketplace/gameTable/games/deckOfCards/playingCard.js @@ -13,9 +13,9 @@ var _this; - var CARD_MODEL_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/playing_card.fbx"); - var CARD_BACK_IMAGE_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/images/back.jpg"); - var CARD_IMAGE_BASE_URL = ExternalResource.getUrl(ExternalResource.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/images/playingcard_old-"); + var CARD_MODEL_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/playing_card.fbx"); + var CARD_BACK_IMAGE_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/images/back.jpg"); + var CARD_IMAGE_BASE_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/thoys/production/gameTable/assets/deckOfCards/images/playingcard_old-"); function PlayingCard() { _this = this; diff --git a/unpublishedScripts/marketplace/shortbow/enemyClientEntity.js b/unpublishedScripts/marketplace/shortbow/enemyClientEntity.js index 8e954a37c8..e6dfb27d1c 100644 --- a/unpublishedScripts/marketplace/shortbow/enemyClientEntity.js +++ b/unpublishedScripts/marketplace/shortbow/enemyClientEntity.js @@ -110,7 +110,7 @@ "y": 0.80860012769699097, "z": -0.23394235968589783 }, - "textures": ExternalResource.getUrl(ExternalResource.HF_Public, "/alan/Particles/Particle-Sprite-Smoke-1.png"), + "textures": Script.getExternalPath(Script.ExternalPaths.HF_Public, "/alan/Particles/Particle-Sprite-Smoke-1.png"), "type": "ParticleEffect" }; From ff46a40741a956e3003e6585bd8a11c9b5c92676 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Tue, 22 Sep 2020 20:16:15 -0400 Subject: [PATCH 28/46] Update avatarbookmarks.json and allow parsing of new 'avatarIcon' property. --- .../avatar/bookmarks/avatarbookmarks.json | 914 ++---------------- .../qml/hifi/avatarapp/AvatarsModel.qml | 8 +- interface/src/AvatarBookmarks.cpp | 3 + interface/src/AvatarBookmarks.h | 2 + 4 files changed, 74 insertions(+), 853 deletions(-) diff --git a/interface/resources/avatar/bookmarks/avatarbookmarks.json b/interface/resources/avatar/bookmarks/avatarbookmarks.json index 9976036f8e..02f90bba52 100644 --- a/interface/resources/avatar/bookmarks/avatarbookmarks.json +++ b/interface/resources/avatar/bookmarks/avatarbookmarks.json @@ -1,861 +1,71 @@ { - "Anime boy": { - "attachments": [ - ], - "avatarEntites": [ - { - "properties": { - "acceleration": { - "x": 0, - "y": 0, - "z": 0 - }, - "actionData": "", - "age": 6.915350914001465, - "ageAsText": "0 hours 0 minutes 6 seconds", - "angularDamping": 0.39346998929977417, - "angularVelocity": { - "x": 0, - "y": 0, - "z": 0 - }, - "animation": { - "allowTranslation": true, - "currentFrame": 0, - "firstFrame": 0, - "fps": 30, - "hold": false, - "lastFrame": 100000, - "loop": true, - "running": false, - "url": "" - }, - "boundingBox": { - "brn": { - "x": -0.10961885005235672, - "y": -0.19444090127944946, - "z": -0.15760529041290283 - }, - "center": { - "x": 2.6226043701171875e-06, - "y": -0.13999652862548828, - "z": -0.04999971389770508 - }, - "dimensions": { - "x": 0.21924294531345367, - "y": 0.10888873785734177, - "z": 0.2152111530303955 - }, - "tfl": { - "x": 0.10962409526109695, - "y": -0.0855521634221077, - "z": 0.057605862617492676 - } - }, - "canCastShadow": true, - "certificateID": "", - "clientOnly": true, - "cloneAvatarEntity": false, - "cloneDynamic": false, - "cloneLifetime": 300, - "cloneLimit": 0, - "cloneOriginID": "{00000000-0000-0000-0000-000000000000}", - "cloneable": false, - "collidesWith": "", - "collisionMask": 0, - "collisionSoundURL": "", - "collisionless": false, - "collisionsWillMove": false, - "compoundShapeURL": "", - "created": "2018-06-06T17:27:53Z", - "damping": 0.39346998929977417, - "density": 1000, - "description": "", - "dimensions": { - "x": 0.21924294531345367, - "y": 0.07768379896879196, - "z": 0.2055898904800415 - }, - "dynamic": false, - "editionNumber": 15, - "entityInstanceNumber": 0, - "friction": 0.5, - "gravity": { - "x": 0, - "y": 0, - "z": 0 - }, - "href": "", - "id": "{5d20c775-a0d7-4163-b158-4e0a784a4625}", - "ignoreForCollisions": false, - "itemArtist": "jyoum", - "itemCategories": "Wearables", - "itemDescription": "Wear these, and others will respect your authoritah.", - "itemLicense": "", - "itemName": "Aviators", - "jointRotations": [ - ], - "jointRotationsSet": [ - ], - "jointTranslations": [ - ], - "jointTranslationsSet": [ - ], - "lastEdited": 1528306178314655, - "lastEditedBy": "{439a2669-4626-487f-9dcf-2d15e77c69a2}", - "lifetime": -1, - "limitedRun": 4294967295, - "localPosition": { - "x": 2.6226043701171875e-06, - "y": -0.13999652862548828, - "z": -0.04999971389770508 - }, - "localRotation": { - "w": 0.9969173073768616, - "x": -0.07845909893512726, - "y": 0, - "z": 0 - }, - "locked": false, - "marketplaceID": "40d879ec-93f0-4b4a-8c58-dd6349bdb058", - "modelURL": "http://mpassets.highfidelity.com/40d879ec-93f0-4b4a-8c58-dd6349bdb058-v1/Aviator.fbx", - "name": "", - "naturalDimensions": { - "x": 0.1660931408405304, - "y": 0.05885136127471924, - "z": 0.15574991703033447 - }, - "naturalPosition": { - "x": 0, - "y": 1.6633577346801758, - "z": 0.048884183168411255 - }, - "originalTextures": "{\n \"aviator:Eyewear2F\": \"http://mpassets.highfidelity.com/40d879ec-93f0-4b4a-8c58-dd6349bdb058-v1/Aviator.fbx/Aviator.fbm/aviator_Eyewear_Diffuse.png\",\n \"aviator:Eyewear2F1\": \"http://mpassets.highfidelity.com/40d879ec-93f0-4b4a-8c58-dd6349bdb058-v1/Aviator.fbx/Aviator.fbm/aviator_Eyewear_Specular.png\"\n}\n", - "owningAvatarID": "{439a2669-4626-487f-9dcf-2d15e77c69a2}", - "parentID": "{439a2669-4626-487f-9dcf-2d15e77c69a2}", - "parentJointIndex": 66, - "position": { - "x": 2.6226043701171875e-06, - "y": -0.13999652862548828, - "z": -0.04999971389770508 - }, - "queryAACube": { - "scale": 0.9313028454780579, - "x": -1.4091639518737793, - "y": -10.133878707885742, - "z": 1.9983724355697632 - }, - "registrationPoint": { - "x": 0.5, - "y": 0.5, - "z": 0.5 - }, - "relayParentJoints": false, - "renderInfo": { - "drawCalls": 1, - "hasTransparent": false, - "texturesCount": 2, - "texturesSize": 1310720, - "verticesCount": 982 - }, - "restitution": 0.5, - "rotation": { - "w": 0.9969173073768616, - "x": -0.07845909893512726, - "y": 0, - "z": 0 - }, - "script": "", - "scriptTimestamp": 0, - "serverScripts": "", - "shapeType": "box", - "staticCertificateVersion": 0, - "textures": "", - "type": "Model", - "userData": "{\"Attachment\":{\"action\":\"attach\",\"joint\":\"HeadTop_End\",\"attached\":false,\"options\":{\"translation\":{\"x\":0,\"y\":0,\"z\":0},\"scale\":1}},\"grabbableKey\":{\"cloneable\":false,\"grabbable\":true}}", - "velocity": { - "x": 0, - "y": 0, - "z": 0 - }, - "visible": true - } - } - ], - "avatarScale": 1, - "avatarUrl": "http://mpassets.highfidelity.com/46e0fd52-3cff-462f-ba97-927338d88295-v1/AnimeBoy2.fst", - "version": 3 - }, - "Anime girl": { - "attachments": [ - ], - "avatarEntites": [ - { - "properties": { - "acceleration": { - "x": 0, - "y": 0, - "z": 0 - }, - "actionData": "", - "age": 19.66267967224121, - "ageAsText": "0 hours 0 minutes 19 seconds", - "angularDamping": 0.39346998929977417, - "angularVelocity": { - "x": 0, - "y": 0, - "z": 0 - }, - "animation": { - "allowTranslation": true, - "currentFrame": 0, - "firstFrame": 0, - "fps": 30, - "hold": false, - "lastFrame": 100000, - "loop": true, - "running": false, - "url": "" - }, - "boundingBox": { - "brn": { - "x": -0.10536206513643265, - "y": -0.16647332906723022, - "z": -0.12632352113723755 - }, - "center": { - "x": 0, - "y": -0.12999999523162842, - "z": -0.030000001192092896 - }, - "dimensions": { - "x": 0.2107241302728653, - "y": 0.07294666767120361, - "z": 0.1926470398902893 - }, - "tfl": { - "x": 0.10536206513643265, - "y": -0.09352666139602661, - "z": 0.06632351875305176 - } - }, - "canCastShadow": true, - "certificateID": "", - "clientOnly": true, - "cloneAvatarEntity": false, - "cloneDynamic": false, - "cloneLifetime": 300, - "cloneLimit": 0, - "cloneOriginID": "{00000000-0000-0000-0000-000000000000}", - "cloneable": false, - "collidesWith": "", - "collisionMask": 0, - "collisionSoundURL": "", - "collisionless": false, - "collisionsWillMove": false, - "compoundShapeURL": "", - "created": "2018-06-05T00:10:37Z", - "damping": 0.39346998929977417, - "density": 1000, - "description": "", - "dimensions": { - "x": 0.2107241302728653, - "y": 0.07294666767120361, - "z": 0.1926470398902893 - }, - "dynamic": false, - "editionNumber": 5, - "entityInstanceNumber": 0, - "friction": 0.5, - "gravity": { - "x": 0, - "y": 0, - "z": 0 - }, - "href": "", - "id": "{1586b83a-2af7-4532-9bfb-82fe3f5d5ce9}", - "ignoreForCollisions": false, - "itemArtist": "moam_00", - "itemCategories": "Wearables", - "itemDescription": "Perfect for side-glancin'.", - "itemLicense": "", - "itemName": "Blacker Fem Glasses", - "jointRotations": [ - ], - "jointRotationsSet": [ - ], - "jointTranslations": [ - ], - "jointTranslationsSet": [ - ], - "lastEdited": 1528157470041658, - "lastEditedBy": "{425df1a8-289b-42fc-819c-c3b2a12d7165}", - "lifetime": -1, - "limitedRun": 4294967295, - "localPosition": { - "x": 0, - "y": -0.12999999523162842, - "z": -0.029999999329447746 - }, - "localRotation": { - "w": 1, - "x": -2.2351741790771484e-08, - "y": 3.4924596548080444e-10, - "z": 3.725290298461914e-09 - }, - "locked": false, - "marketplaceID": "06781d12-9139-48f4-ac2a-417dde090981", - "modelURL": "http://mpassets.highfidelity.com/06781d12-9139-48f4-ac2a-417dde090981-v1/FemGlasses03.fbx", - "name": "Female Glasses 3 by Mario Andrade", - "naturalDimensions": { - "x": 0.16209548711776733, - "y": 0.05611282214522362, - "z": 0.14819003641605377 - }, - "naturalPosition": { - "x": 0, - "y": -7.636845111846924e-08, - "z": 0 - }, - "originalTextures": "{\n \"file49\": \"http://mpassets.highfidelity.com/06781d12-9139-48f4-ac2a-417dde090981-v1/FemGlasses03.fbx/FemGlasses03.fbm/FemGlasses03Mat_Mixed_AO.jpg\",\n \"file81\": \"http://mpassets.highfidelity.com/06781d12-9139-48f4-ac2a-417dde090981-v1/FemGlasses03.fbx/FemGlasses03.fbm/FemGlasses03Mat_Metallic.jpg\",\n \"file84\": \"http://mpassets.highfidelity.com/06781d12-9139-48f4-ac2a-417dde090981-v1/FemGlasses03.fbx/FemGlasses03.fbm/FemGlasses03Mat_Roughness.jpg\",\n \"file86\": \"http://mpassets.highfidelity.com/06781d12-9139-48f4-ac2a-417dde090981-v1/FemGlasses03.fbx/FemGlasses03.fbm/FemGlasses03Mat_Base_Color.jpg\",\n \"file87\": \"http://mpassets.highfidelity.com/06781d12-9139-48f4-ac2a-417dde090981-v1/FemGlasses03.fbx/FemGlasses03.fbm/FemGlasses03Mat_Normal_DirectX.jpg\"\n}\n", - "owningAvatarID": "{1277f725-fbb4-478b-ae79-1241fd90e508}", - "parentID": "{1277f725-fbb4-478b-ae79-1241fd90e508}", - "parentJointIndex": 66, - "position": { - "x": 0, - "y": -0.12999999523162842, - "z": -0.029999999329447746 - }, - "queryAACube": { - "scale": 0.8840523958206177, - "x": -2.6587564945220947, - "y": -10.162277221679688, - "z": -0.9548344016075134 - }, - "registrationPoint": { - "x": 0.5, - "y": 0.5, - "z": 0.5 - }, - "relayParentJoints": false, - "renderInfo": { - "drawCalls": 1, - "hasTransparent": false, - "texturesCount": 5, - "texturesSize": 0, - "verticesCount": 1156 - }, - "restitution": 0.5, - "rotation": { - "w": 1, - "x": -2.2351741790771484e-08, - "y": 3.4924596548080444e-10, - "z": 3.725290298461914e-09 - }, - "script": "", - "scriptTimestamp": 0, - "serverScripts": "", - "shapeType": "box", - "staticCertificateVersion": 0, - "textures": "", - "type": "Model", - "userData": "{\"Attachment\":{\"action\":\"attach\",\"joint\":\"HeadTop_End\",\"attached\":false,\"options\":{\"translation\":{\"x\":0,\"y\":0,\"z\":0},\"scale\":1}},\"grabbableKey\":{\"cloneable\":false,\"grabbable\":true}}", - "velocity": { - "x": 0, - "y": 0, - "z": 0 - }, - "visible": true - } - } - ], - "avatarScale": 1, - "avatarUrl": "http://mpassets.highfidelity.com/0dce3426-55c8-4641-8dd5-d76eb575b64a-v1/Anime_F_Outfit.fst", - "version": 3 - }, - "Last Legends: Male": { - "attachments": [ - ], - "avatarEntites": [ - { - "properties": { - "acceleration": { - "blue": 0, - "green": 0, - "red": 0, - "x": 0, - "y": 0, - "z": 0 - }, - "actionData": "", - "age": 321.8835144042969, - "ageAsText": "0 hours 5 minutes 21 seconds", - "angularDamping": 0.39346998929977417, - "angularVelocity": { - "blue": 0, - "green": 0, - "red": 0, - "x": 0, - "y": 0, - "z": 0 - }, - "animation": { - "allowTranslation": true, - "currentFrame": 0, - "firstFrame": 0, - "fps": 30, - "hold": false, - "lastFrame": 100000, - "loop": true, - "running": false, - "url": "" - }, - "boundingBox": { - "brn": { - "blue": -0.03950843587517738, - "green": 0.20785385370254517, - "red": -0.04381325840950012, - "x": -0.04381325840950012, - "y": 0.20785385370254517, - "z": -0.03950843587517738 - }, - "center": { - "blue": 0, - "green": 0.23000000417232513, - "red": 0, - "x": 0, - "y": 0.23000000417232513, - "z": 0 - }, - "dimensions": { - "blue": 0.07901687175035477, - "green": 0.044292300939559937, - "red": 0.08762651681900024, - "x": 0.08762651681900024, - "y": 0.044292300939559937, - "z": 0.07901687175035477 - }, - "tfl": { - "blue": 0.03950843587517738, - "green": 0.2521461546421051, - "red": 0.04381325840950012, - "x": 0.04381325840950012, - "y": 0.2521461546421051, - "z": 0.03950843587517738 - } - }, - "canCastShadow": true, - "certificateID": "", - "clientOnly": true, - "cloneAvatarEntity": false, - "cloneDynamic": false, - "cloneLifetime": 300, - "cloneLimit": 0, - "cloneOriginID": "{00000000-0000-0000-0000-000000000000}", - "cloneable": false, - "collidesWith": "", - "collisionMask": 0, - "collisionSoundURL": "", - "collisionless": false, - "collisionsWillMove": false, - "compoundShapeURL": "", - "created": "2018-07-26T23:56:46Z", - "damping": 0.39346998929977417, - "density": 1000, - "description": "", - "dimensions": { - "blue": 0.07229919731616974, - "green": 0.06644226610660553, - "red": 0.03022606298327446, - "x": 0.03022606298327446, - "y": 0.06644226610660553, - "z": 0.07229919731616974 - }, - "dynamic": false, - "editionNumber": 58, - "entityInstanceNumber": 0, - "friction": 0.5, - "gravity": { - "blue": 0, - "green": 0, - "red": 0, - "x": 0, - "y": 0, - "z": 0 - }, - "href": "", - "id": "{03053239-bb37-4c51-a013-a1772baaeed5}", - "ignoreForCollisions": false, - "itemArtist": "jyoum", - "itemCategories": "Wearables", - "itemDescription": "A cool scifi watch for your avatar!", - "itemLicense": "", - "itemName": "Scifi Watch", - "jointRotations": [ - ], - "jointRotationsSet": [ - ], - "jointTranslations": [ - ], - "jointTranslationsSet": [ - ], - "lastEdited": 1532649569894305, - "lastEditedBy": "{042ac463-7879-40f0-8126-e2e56c4345ca}", - "lifetime": -1, - "limitedRun": 4294967295, - "localPosition": { - "blue": 0, - "green": 0.23000000417232513, - "red": 0, - "x": 0, - "y": 0.23000000417232513, - "z": 0 - }, - "localRotation": { - "w": 0.5910986065864563, - "x": -0.48726415634155273, - "y": -0.4088630974292755, - "z": 0.49599072337150574 - }, - "locked": false, - "marketplaceID": "0685794d-fddb-4bad-a608-6d7789ceda90", - "modelURL": "http://mpassets.highfidelity.com/0685794d-fddb-4bad-a608-6d7789ceda90-v1/ScifiWatch.fbx", - "name": "Scifi Watch by Jimi", - "naturalDimensions": { - "blue": 0.055614765733480453, - "green": 0.0511094331741333, - "red": 0.023250818252563477, - "x": 0.023250818252563477, - "y": 0.0511094331741333, - "z": 0.055614765733480453 - }, - "naturalPosition": { - "blue": -0.06031447649002075, - "green": 1.4500460624694824, - "red": 0.6493338942527771, - "x": 0.6493338942527771, - "y": 1.4500460624694824, - "z": -0.06031447649002075 - }, - "originalTextures": "{\n \"file4\": \"http://mpassets.highfidelity.com/0685794d-fddb-4bad-a608-6d7789ceda90-v1/ScifiWatch.fbx/ScifiWatch/texture/lambert1_Base_Color.png\",\n \"file5\": \"http://mpassets.highfidelity.com/0685794d-fddb-4bad-a608-6d7789ceda90-v1/ScifiWatch.fbx/ScifiWatch/texture/lambert1_Normal_OpenGL.png\",\n \"file6\": \"http://mpassets.highfidelity.com/0685794d-fddb-4bad-a608-6d7789ceda90-v1/ScifiWatch.fbx/ScifiWatch/texture/lambert1_Metallic.png\",\n \"file7\": \"http://mpassets.highfidelity.com/0685794d-fddb-4bad-a608-6d7789ceda90-v1/ScifiWatch.fbx/ScifiWatch/texture/lambert1_Roughness.png\",\n \"file8\": \"http://mpassets.highfidelity.com/0685794d-fddb-4bad-a608-6d7789ceda90-v1/ScifiWatch.fbx/ScifiWatch/texture/lambert1_Emissive.png\"\n}\n", - "owningAvatarID": "{042ac463-7879-40f0-8126-e2e56c4345ca}", - "parentID": "{042ac463-7879-40f0-8126-e2e56c4345ca}", - "parentJointIndex": 16, - "position": { - "blue": 0, - "green": 0.23000000417232513, - "red": 0, - "x": 0, - "y": 0.23000000417232513, - "z": 0 - }, - "queryAACube": { - "scale": 0.3082179129123688, - "x": 495.7716979980469, - "y": 498.345703125, - "z": 498.52044677734375 - }, - "registrationPoint": { - "blue": 0.5, - "green": 0.5, - "red": 0.5, - "x": 0.5, - "y": 0.5, - "z": 0.5 - }, - "relayParentJoints": false, - "renderInfo": { - "drawCalls": 1, - "hasTransparent": false, - "texturesCount": 5, - "texturesSize": 786432, - "verticesCount": 273 - }, - "restitution": 0.5, - "rotation": { - "w": 0.5910986065864563, - "x": -0.48726415634155273, - "y": -0.4088630974292755, - "z": 0.49599072337150574 - }, - "script": "", - "scriptTimestamp": 0, - "serverScripts": "", - "shapeType": "box", - "staticCertificateVersion": 0, - "textures": "", - "type": "Model", - "userData": "{\"Attachment\":{\"action\":\"attach\",\"joint\":\"[LR]ForeArm\",\"attached\":false,\"options\":{\"translation\":{\"x\":0,\"y\":0,\"z\":0},\"scale\":1}},\"grabbableKey\":{\"cloneable\":false,\"grabbable\":true}}", - "velocity": { - "blue": 0, - "green": 0, - "red": 0, - "x": 0, - "y": 0, - "z": 0 - }, - "visible": true - } - }, - { - "properties": { - "acceleration": { - "blue": 0, - "green": 0, - "red": 0, - "x": 0, - "y": 0, - "z": 0 - }, - "actionData": "", - "age": 308.8044128417969, - "ageAsText": "0 hours 5 minutes 8 seconds", - "angularDamping": 0.39346998929977417, - "angularVelocity": { - "blue": 0, - "green": 0, - "red": 0, - "x": 0, - "y": 0, - "z": 0 - }, - "animation": { - "allowTranslation": true, - "currentFrame": 0, - "firstFrame": 0, - "fps": 30, - "hold": false, - "lastFrame": 100000, - "loop": true, - "running": false, - "url": "" - }, - "boundingBox": { - "brn": { - "blue": -0.2340194433927536, - "green": -0.07067721337080002, - "red": -0.17002610862255096, - "x": -0.17002610862255096, - "y": -0.07067721337080002, - "z": -0.2340194433927536 - }, - "center": { - "blue": -0.039825439453125, - "green": 0.02001953125, - "red": 0.0001678466796875, - "x": 0.0001678466796875, - "y": 0.02001953125, - "z": -0.039825439453125 - }, - "dimensions": { - "blue": 0.3883880078792572, - "green": 0.18139348924160004, - "red": 0.34038791060447693, - "x": 0.34038791060447693, - "y": 0.18139348924160004, - "z": 0.3883880078792572 - }, - "tfl": { - "blue": 0.1543685644865036, - "green": 0.11071627587080002, - "red": 0.17036180198192596, - "x": 0.17036180198192596, - "y": 0.11071627587080002, - "z": 0.1543685644865036 - } - }, - "canCastShadow": true, - "certificateID": "", - "clientOnly": true, - "cloneAvatarEntity": false, - "cloneDynamic": false, - "cloneLifetime": 300, - "cloneLimit": 0, - "cloneOriginID": "{00000000-0000-0000-0000-000000000000}", - "cloneable": false, - "collidesWith": "", - "collisionMask": 0, - "collisionSoundURL": "", - "collisionless": false, - "collisionsWillMove": false, - "compoundShapeURL": "", - "created": "2018-07-26T23:56:46Z", - "damping": 0.39346998929977417, - "density": 1000, - "description": "", - "dimensions": { - "blue": 0.38838762044906616, - "green": 0.16981728374958038, - "red": 0.33466479182243347, - "x": 0.33466479182243347, - "y": 0.16981728374958038, - "z": 0.38838762044906616 - }, - "dynamic": false, - "editionNumber": 18, - "entityInstanceNumber": 0, - "friction": 0.5, - "gravity": { - "blue": 0, - "green": 0, - "red": 0, - "x": 0, - "y": 0, - "z": 0 - }, - "href": "", - "id": "{1bf231ce-3913-4c53-be3c-b1f4094dac51}", - "ignoreForCollisions": false, - "itemArtist": "jyoum", - "itemCategories": "Wearables", - "itemDescription": "A stylish and classic piece of headwear for your avatar.", - "itemLicense": "", - "itemName": "Fedora", - "jointRotations": [ - ], - "jointRotationsSet": [ - ], - "jointTranslations": [ - ], - "jointTranslationsSet": [ - ], - "lastEdited": 1532649698129709, - "lastEditedBy": "{042ac463-7879-40f0-8126-e2e56c4345ca}", - "lifetime": -1, - "limitedRun": 4294967295, - "localPosition": { - "blue": -0.039825439453125, - "green": 0.02001953125, - "red": 0.0001678466796875, - "x": 0.0001678466796875, - "y": 0.02001953125, - "z": -0.039825439453125 - }, - "localRotation": { - "w": 0.9998477101325989, - "x": -9.898545982878204e-09, - "y": 5.670873406415922e-07, - "z": 0.017452405765652657 - }, - "locked": false, - "marketplaceID": "11c4208d-15d7-4449-9758-a08da6dbd3dc", - "modelURL": "http://mpassets.highfidelity.com/11c4208d-15d7-4449-9758-a08da6dbd3dc-v1/Fedora.fbx", - "name": "", - "naturalDimensions": { - "blue": 0.320981502532959, - "green": 0.14034485816955566, - "red": 0.2765824794769287, - "x": 0.2765824794769287, - "y": 0.14034485816955566, - "z": 0.320981502532959 - }, - "naturalPosition": { - "blue": 0.022502630949020386, - "green": 1.7460365295410156, - "red": 0.000143393874168396, - "x": 0.000143393874168396, - "y": 1.7460365295410156, - "z": 0.022502630949020386 - }, - "originalTextures": "{\n \"file5\": \"http://mpassets.highfidelity.com/11c4208d-15d7-4449-9758-a08da6dbd3dc-v1/Fedora.fbx/Texture/Fedora_Hat1_Base_Color.png\",\n \"file7\": \"http://mpassets.highfidelity.com/11c4208d-15d7-4449-9758-a08da6dbd3dc-v1/Fedora.fbx/Texture/Fedora_Hat1_Roughness.png\"\n}\n", - "owningAvatarID": "{042ac463-7879-40f0-8126-e2e56c4345ca}", - "parentID": "{042ac463-7879-40f0-8126-e2e56c4345ca}", - "parentJointIndex": 66, - "position": { - "blue": -0.039825439453125, - "green": 0.02001953125, - "red": 0.0001678466796875, - "x": 0.0001678466796875, - "y": 0.02001953125, - "z": -0.039825439453125 - }, - "queryAACube": { - "scale": 1.6202316284179688, - "x": 495.21051025390625, - "y": 498.5577697753906, - "z": 497.6370849609375 - }, - "registrationPoint": { - "blue": 0.5, - "green": 0.5, - "red": 0.5, - "x": 0.5, - "y": 0.5, - "z": 0.5 - }, - "relayParentJoints": false, - "renderInfo": { - "drawCalls": 1, - "hasTransparent": false, - "texturesCount": 2, - "texturesSize": 327680, - "verticesCount": 719 - }, - "restitution": 0.5, - "rotation": { - "w": 0.9998477101325989, - "x": -9.898545982878204e-09, - "y": 5.670873406415922e-07, - "z": 0.017452405765652657 - }, - "script": "", - "scriptTimestamp": 0, - "serverScripts": "", - "shapeType": "box", - "staticCertificateVersion": 0, - "textures": "", - "type": "Model", - "userData": "{\"Attachment\":{\"action\":\"attach\",\"joint\":\"HeadTop_End\",\"attached\":false,\"options\":{\"translation\":{\"x\":0,\"y\":0,\"z\":0},\"scale\":1}},\"grabbableKey\":{\"cloneable\":false,\"grabbable\":true}}", - "velocity": { - "blue": 0, - "green": 0, - "red": 0, - "x": 0, - "y": 0, - "z": 0 - }, - "visible": true - } - } - ], - "avatarScale": 1, - "avatarUrl": "http://mpassets.highfidelity.com/28569047-6f1a-4100-af67-8054ec397cc3-v1/LLMale2.fst", - "version": 3 - }, - "Last legends Female": { - "attachments": [ - ], - "avatarEntites": [ - ], - "avatarScale": 1, - "avatarUrl": "http://mpassets.highfidelity.com/8d823be5-6197-4418-b984-eb94160ed956-v1/LLFemale_Clothes.fst", - "version": 3 - }, - "Matthew": { - "attachments": [ - ], - "avatarEntites": [ - ], - "avatarScale": 1, - "avatarUrl": "http://mpassets.highfidelity.com/b652081b-a199-425e-ae5c-7815721bdc09-v1/matthew.fst", - "version": 3 - }, - "Priscilla": { - "attachments": [ - ], - "avatarEntites": [ - ], - "avatarScale": 1, - "avatarUrl": "http://mpassets.highfidelity.com/e7565f93-8bc5-47c2-b6eb-b3b31d4a1339-v1/priscilla.fst", - "version": 3 - }, "Woody": { "attachments": [ ], "avatarEntites": [ ], "avatarScale": 1, - "avatarUrl": "http://mpassets.highfidelity.com/ad348528-de38-420c-82bb-054cb22163f5-v1/mannequin.fst", + "avatarUrl": "https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Woody/mannequin.fst", + "version": 3 + }, + "Kim": { + "attachments": [ + ], + "avatarEntites": [ + ], + "avatarScale": 1, + "avatarUrl": "https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Kim/fbx/Kim.fst", + "avatarIcon": "https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Kim/img/icon.png", + "version": 3 + }, + "Mason": { + "attachments": [ + ], + "avatarEntites": [ + ], + "avatarScale": 1, + "avatarUrl": "https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Mason/fbx/Mason.fst", + "avatarIcon": "https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Mason/img/icon.png", + "version": 3 + }, + "Mike": { + "attachments": [ + ], + "avatarEntites": [ + ], + "avatarScale": 1, + "avatarUrl": "https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Mike/fbx/Mike.fst", + "avatarIcon": "https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Mike/img/icon.png", + "version": 3 + }, + "Sean": { + "attachments": [ + ], + "avatarEntites": [ + ], + "avatarScale": 1, + "avatarUrl": "https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Sean/fbx/Sean.fst", + "avatarIcon": "https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Sean/img/icon.png", + "version": 3 + }, + "Summer": { + "attachments": [ + ], + "avatarEntites": [ + ], + "avatarScale": 1, + "avatarUrl": "https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Summer/fbx/Summer.fst", + "avatarIcon": "https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Summer/img/icon.png", + "version": 3 + }, + "Tanya": { + "attachments": [ + ], + "avatarEntites": [ + ], + "avatarScale": 1, + "avatarUrl": "https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Tanya/fbx/Tanya.fst", + "avatarIcon": "https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Tanya/img/icon.png", "version": 3 } -} +} \ No newline at end of file diff --git a/interface/resources/qml/hifi/avatarapp/AvatarsModel.qml b/interface/resources/qml/hifi/avatarapp/AvatarsModel.qml index 731ee214ec..a9bfcb7bb7 100644 --- a/interface/resources/qml/hifi/avatarapp/AvatarsModel.qml +++ b/interface/resources/qml/hifi/avatarapp/AvatarsModel.qml @@ -49,7 +49,13 @@ ListModel { } function makeAvatarObject(avatar, avatarName) { - var avatarThumbnailUrl = makeThumbnailUrl(avatar.avatarUrl); + var avatarThumbnailUrl; + + if (!avatar.avatarIcon) { + makeThumbnailUrl(avatar.avatarUrl); + } else { + avatarThumbnailUrl = avatar.avatarIcon; + } return { 'name' : avatarName, diff --git a/interface/src/AvatarBookmarks.cpp b/interface/src/AvatarBookmarks.cpp index 9204cd7514..9aa1d91a0f 100644 --- a/interface/src/AvatarBookmarks.cpp +++ b/interface/src/AvatarBookmarks.cpp @@ -4,6 +4,7 @@ // // Created by Triplelexx on 23/03/17. // Copyright 2017 High Fidelity, Inc. +// Copyright 2020 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -282,12 +283,14 @@ QVariantMap AvatarBookmarks::getAvatarDataToBookmark() { auto myAvatar = DependencyManager::get()->getMyAvatar(); const QString& avatarUrl = myAvatar->getSkeletonModelURL().toString(); + const QString& avatarIcon = QString(""); const QVariant& avatarScale = myAvatar->getAvatarScale(); // If Avatar attachments ever change, this is where to update them, when saving remember to also append to AVATAR_BOOKMARK_VERSION QVariantMap bookmark; bookmark.insert(ENTRY_VERSION, AVATAR_BOOKMARK_VERSION); bookmark.insert(ENTRY_AVATAR_URL, avatarUrl); + bookmark.insert(ENTRY_AVATAR_ICON, avatarIcon); bookmark.insert(ENTRY_AVATAR_SCALE, avatarScale); QVariantList wearableEntities; diff --git a/interface/src/AvatarBookmarks.h b/interface/src/AvatarBookmarks.h index 646d06456a..82db23a7f7 100644 --- a/interface/src/AvatarBookmarks.h +++ b/interface/src/AvatarBookmarks.h @@ -4,6 +4,7 @@ // // Created by Triplelexx on 23/03/17. // Copyright 2017 High Fidelity, Inc. +// Copyright 2020 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -148,6 +149,7 @@ protected slots: private: const QString AVATARBOOKMARKS_FILENAME = "avatarbookmarks.json"; const QString ENTRY_AVATAR_URL = "avatarUrl"; + const QString ENTRY_AVATAR_ICON = "avatarIcon"; const QString ENTRY_AVATAR_ATTACHMENTS = "attachments"; const QString ENTRY_AVATAR_ENTITIES = "avatarEntites"; const QString ENTRY_AVATAR_SCALE = "avatarScale"; From 0cb6261d11a2b03926b15726bd95e2c453142795 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Tue, 22 Sep 2020 20:25:19 -0400 Subject: [PATCH 29/46] Catch stragglers. --- interface/resources/serverless/redirect.json | 2 +- screenshare/README.md | 2 +- .../utilities/render/photobooth/photoboothSetup.json | 12 ++++++------ scripts/system/libraries/networkingConstants.js | 2 +- tools/nitpick/AppDataHighFidelity/Interface.json | 2 +- unpublishedScripts/marketplace/bow/bow.svo.json | 6 +++--- .../gameTable/assets/dominoes/domino.json | 2 +- .../marketplace/shortbow/bow/bow.svo.json | 6 +++--- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/interface/resources/serverless/redirect.json b/interface/resources/serverless/redirect.json index 0b96bad961..efd5015c4d 100644 --- a/interface/resources/serverless/redirect.json +++ b/interface/resources/serverless/redirect.json @@ -296,7 +296,7 @@ "lastEdited": 1537901430334966, "lastEditedBy": "{69540019-db48-4375-86c8-ac1a4a90d043}", "locked": true, - "modelURL": "http://hifi-content.s3.amazonaws.com/alexia/LoadingScreens/floor.fbx", + "modelURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-public/alexia/LoadingScreens/floor.fbx", "name": "floorModel", "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "position": { diff --git a/screenshare/README.md b/screenshare/README.md index e57f37adc1..d02ab56870 100644 --- a/screenshare/README.md +++ b/screenshare/README.md @@ -1,5 +1,5 @@ # Screen Sharing within High Fidelity -This Screen Share app, built using Electron, allows for easy desktop screen sharing when used in conjuction with various scripts in the `hifi-content` repository. +This Screen Share app, built using Electron, allows for easy desktop screen sharing when used in conjuction with various scripts in the `vircadia-content` repository. # Screen Sharing Source Files ## `packager.js` diff --git a/scripts/developer/utilities/render/photobooth/photoboothSetup.json b/scripts/developer/utilities/render/photobooth/photoboothSetup.json index daa19b22ea..6c52522d7a 100644 --- a/scripts/developer/utilities/render/photobooth/photoboothSetup.json +++ b/scripts/developer/utilities/render/photobooth/photoboothSetup.json @@ -140,7 +140,7 @@ "id": "{349e0687-52d4-4e0d-a03c-88f5bf427ce8}", "ignoreForCollisions": 1, "lastEditedBy": "{42574037-43c0-4446-8d75-56a232fa2da5}", - "modelURL": "http://hifi-content.s3.amazonaws.com/caitlyn/production/lazybonesToybox/cameras/35mm%20camera.fbx?232222", + "modelURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/caitlyn/production/lazybonesToybox/cameras/35mm%20camera.fbx?232222", "name": "35 MM SLR by Lazybones", "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "parentID": "{8da928c7-a1d0-4a2e-b256-047498ddcfe7}", @@ -183,7 +183,7 @@ "id": "{16f2cec8-2ba0-4567-ac3c-89b2779b1351}", "ignoreForCollisions": 1, "lastEditedBy": "{42574037-43c0-4446-8d75-56a232fa2da5}", - "modelURL": "http://hifi-content.s3.amazonaws.com/caitlyn/production/lazybonesToybox/cameras/35mm%20camera.fbx?232222", + "modelURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/caitlyn/production/lazybonesToybox/cameras/35mm%20camera.fbx?232222", "name": "35 MM SLR by Lazybones", "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "parentID": "{8da928c7-a1d0-4a2e-b256-047498ddcfe7}", @@ -226,7 +226,7 @@ "id": "{f81a5b69-6d64-4a79-8233-a4cc182bf9f8}", "ignoreForCollisions": 1, "lastEditedBy": "{42574037-43c0-4446-8d75-56a232fa2da5}", - "modelURL": "http://hifi-content.s3.amazonaws.com/caitlyn/production/lazybonesToybox/cameras/35mm%20camera.fbx?232222", + "modelURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/caitlyn/production/lazybonesToybox/cameras/35mm%20camera.fbx?232222", "name": "35 MM SLR by Lazybones", "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "parentID": "{8da928c7-a1d0-4a2e-b256-047498ddcfe7}", @@ -262,7 +262,7 @@ }, "id": "{5d8e6ca9-eec6-4cd9-9931-343c8e122f5d}", "lastEditedBy": "{42574037-43c0-4446-8d75-56a232fa2da5}", - "modelURL": "http://hifi-content.s3.amazonaws.com/alan/dev/Test-Object-7-metal.fbx", + "modelURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/alan/dev/Test-Object-7-metal.fbx", "name": "Photo Booth Model", "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "parentID": "{8da928c7-a1d0-4a2e-b256-047498ddcfe7}", @@ -362,7 +362,7 @@ }, "shapeType": "box", "skybox": { - "url": "http://hifi-content.s3.amazonaws.com/alan/dev/Skybox-Sun-high.png" + "url": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/alan/dev/Skybox-Sun-high.png" }, "type": "Zone" }, @@ -376,7 +376,7 @@ }, "id": "{8da928c7-a1d0-4a2e-b256-047498ddcfe7}", "lastEditedBy": "{42574037-43c0-4446-8d75-56a232fa2da5}", - "modelURL": "http://hifi-content.s3.amazonaws.com/alan/dev/PhotoStage-v1.fbx", + "modelURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/alan/dev/PhotoStage-v1.fbx", "name": "Photo Booth Stage", "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "queryAACube": { diff --git a/scripts/system/libraries/networkingConstants.js b/scripts/system/libraries/networkingConstants.js index 7da0951eea..2a9c60f525 100644 --- a/scripts/system/libraries/networkingConstants.js +++ b/scripts/system/libraries/networkingConstants.js @@ -10,7 +10,7 @@ var INTERFACE_METADATA_SOURCE = "https://cdn.vircadia.com/dist/launcher/vircadiaMeta.json"; // Base CDN URLs -var CONTENT_CDN_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/"); // "https://cdn-1.vircadia.com/" + usCDN; +var CONTENT_CDN_URL = Script.getExternalPath(Script.ExternalPaths.HF_Content, "/"); var PUBLIC_BUCKET_CDN_URL = Script.getExternalPath(Script.ExternalPaths.HF_Public, "/"); module.exports = { diff --git a/tools/nitpick/AppDataHighFidelity/Interface.json b/tools/nitpick/AppDataHighFidelity/Interface.json index 41d63d2c55..9f39295610 100644 --- a/tools/nitpick/AppDataHighFidelity/Interface.json +++ b/tools/nitpick/AppDataHighFidelity/Interface.json @@ -279,6 +279,6 @@ "toolbar/com.highfidelity.interface.toolbar.system/x": 655, "toolbar/com.highfidelity.interface.toolbar.system/y": 953, "toolbar/constrainToolbarToCenterX": true, - "private/selectedMetaverseURL": "https://metaverse.highfidelity.com", + "private/selectedMetaverseURL": "https://metaverse.vircadia.com/live", "wallet/autoLogout": true } diff --git a/unpublishedScripts/marketplace/bow/bow.svo.json b/unpublishedScripts/marketplace/bow/bow.svo.json index 1ef66860a6..ffccf14fed 100644 --- a/unpublishedScripts/marketplace/bow/bow.svo.json +++ b/unpublishedScripts/marketplace/bow/bow.svo.json @@ -1,7 +1,7 @@ { "Entities": [ { "collisionsWillMove": 1, - "compoundShapeURL": "http://hifi-content.s3.amazonaws.com/caitlyn/production/bow/bow_collision_hull.obj", + "compoundShapeURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/caitlyn/production/bow/bow_collision_hull.obj", "created": "2016-09-01T23:57:55Z", "dimensions": { "x": 0.039999999105930328, @@ -14,7 +14,7 @@ "y": -1, "z": 0 }, - "modelURL": "http://hifi-content.s3.amazonaws.com/caitlyn/production/bow/bow-deadly.fbx", + "modelURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/caitlyn/production/bow/bow-deadly.fbx", "name": "Hifi-Bow", "rotation": { "w": 0.9718012809753418, @@ -22,7 +22,7 @@ "y": -0.10469216108322144, "z": -0.14418250322341919 }, - "script": "http://hifi-content.s3.amazonaws.com/caitlyn/production/bow/bow.js", + "script": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/caitlyn/production/bow/bow.js", "shapeType": "compound", "type": "Model", "userData": "{\"grabbableKey\":{\"grabbable\":true},\"wearable\":{\"joints\":{\"RightHand\":[{\"x\":0.0813,\"y\":0.0452,\"z\":0.0095},{\"x\":-0.3946,\"y\":-0.6604,\"z\":0.4748,\"w\":-0.4275}],\"LeftHand\":[{\"x\":-0.0881,\"y\":0.0259,\"z\":0.0159},{\"x\":0.4427,\"y\":-0.6519,\"z\":0.4592,\"w\":0.4099}]}}}" diff --git a/unpublishedScripts/marketplace/gameTable/assets/dominoes/domino.json b/unpublishedScripts/marketplace/gameTable/assets/dominoes/domino.json index ac5ff2e266..29b5de0d0d 100644 --- a/unpublishedScripts/marketplace/gameTable/assets/dominoes/domino.json +++ b/unpublishedScripts/marketplace/gameTable/assets/dominoes/domino.json @@ -11,7 +11,7 @@ "dynamic": 1, "description":"hifi:gameTable:piece:dominoes", "id": "{e25e3ece-6b84-4c0d-925c-aacebf9ebc6c}", - "modelURL": "http://hifi-content.s3.amazonaws.com/thoys/production/gameTable/assets/dominoes/domino.fbx", + "modelURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/thoys/production/gameTable/assets/dominoes/domino.fbx", "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "queryAACube": { "scale": 0.12253325432538986, diff --git a/unpublishedScripts/marketplace/shortbow/bow/bow.svo.json b/unpublishedScripts/marketplace/shortbow/bow/bow.svo.json index 1ef66860a6..ffccf14fed 100644 --- a/unpublishedScripts/marketplace/shortbow/bow/bow.svo.json +++ b/unpublishedScripts/marketplace/shortbow/bow/bow.svo.json @@ -1,7 +1,7 @@ { "Entities": [ { "collisionsWillMove": 1, - "compoundShapeURL": "http://hifi-content.s3.amazonaws.com/caitlyn/production/bow/bow_collision_hull.obj", + "compoundShapeURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/caitlyn/production/bow/bow_collision_hull.obj", "created": "2016-09-01T23:57:55Z", "dimensions": { "x": 0.039999999105930328, @@ -14,7 +14,7 @@ "y": -1, "z": 0 }, - "modelURL": "http://hifi-content.s3.amazonaws.com/caitlyn/production/bow/bow-deadly.fbx", + "modelURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/caitlyn/production/bow/bow-deadly.fbx", "name": "Hifi-Bow", "rotation": { "w": 0.9718012809753418, @@ -22,7 +22,7 @@ "y": -0.10469216108322144, "z": -0.14418250322341919 }, - "script": "http://hifi-content.s3.amazonaws.com/caitlyn/production/bow/bow.js", + "script": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/caitlyn/production/bow/bow.js", "shapeType": "compound", "type": "Model", "userData": "{\"grabbableKey\":{\"grabbable\":true},\"wearable\":{\"joints\":{\"RightHand\":[{\"x\":0.0813,\"y\":0.0452,\"z\":0.0095},{\"x\":-0.3946,\"y\":-0.6604,\"z\":0.4748,\"w\":-0.4275}],\"LeftHand\":[{\"x\":-0.0881,\"y\":0.0259,\"z\":0.0159},{\"x\":0.4427,\"y\":-0.6519,\"z\":0.4592,\"w\":0.4099}]}}}" From 1c9e1dd1606f481aea31b4a3d70ff284e52bb19a Mon Sep 17 00:00:00 2001 From: Kalila L Date: Wed, 23 Sep 2020 00:14:31 -0400 Subject: [PATCH 30/46] Remove redundant buckets. --- libraries/networking/src/ExternalResource.h | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/libraries/networking/src/ExternalResource.h b/libraries/networking/src/ExternalResource.h index c2a08c02a5..c58e153c56 100644 --- a/libraries/networking/src/ExternalResource.h +++ b/libraries/networking/src/ExternalResource.h @@ -61,9 +61,7 @@ public: HF_Marketplace, /** Vircadia assets */ - Assets, - Public, - Content + Assets }; Q_ENUM(Bucket) @@ -155,9 +153,7 @@ private: { Bucket::HF_Public, QUrl(NetworkingConstants::HF_PUBLIC_CDN_URL) }, { Bucket::HF_Content, QUrl(NetworkingConstants::HF_CONTENT_CDN_URL) }, { Bucket::HF_Marketplace, QUrl(NetworkingConstants::HF_MPASSETS_CDN_URL) }, - { Bucket::Assets, QUrl(NetworkingConstants::VIRCADIA_CONTENT_CDN_URL) }, - { Bucket::Public, QUrl(NetworkingConstants::VIRCADIA_CONTENT_CDN_URL) }, - { Bucket::Content, QUrl(NetworkingConstants::VIRCADIA_CONTENT_CDN_URL) } + { Bucket::Assets, QUrl(NetworkingConstants::VIRCADIA_CONTENT_CDN_URL) } }; }; From ba7242f4dc6ef7acd7d38194ad58d199b9b4f0b6 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 23 Sep 2020 17:23:40 +1200 Subject: [PATCH 31/46] Script.getExternalPath() and related JSDoc --- libraries/networking/src/ExternalResource.h | 53 +++++++++++++-------- libraries/script-engine/src/ScriptEngine.h | 19 ++++++-- 2 files changed, 48 insertions(+), 24 deletions(-) diff --git a/libraries/networking/src/ExternalResource.h b/libraries/networking/src/ExternalResource.h index c2a08c02a5..e80e1c8099 100644 --- a/libraries/networking/src/ExternalResource.h +++ b/libraries/networking/src/ExternalResource.h @@ -42,28 +42,43 @@ public: static ExternalResource* getInstance(); ~ExternalResource(){}; - /** - * Bucket from which to retrieve the resource - * - * The original High Fidelity used the Public, Content and MPAssets buckets. The intention is that the - * community-run versions of these will keep the original data and structure, and any new additions - * will be done to the Assets bucket instead. This should ease the transition and ensure a clean - * separation. + /**jsdoc + *

An external resource bucket.

+ *

The original High Fidelity used "Public", "Content", and "MPAssets" Amazon S3 buckets. The intention is that the + * community-run versions of these will keep the original data and structure, and any new additions will be made to + * Vircadia's "Assets" bucket. This should ease the transition from High Fidelity and ensure a clean separation.

+ * @typedef {object} Script.ResourceBuckets + * @property {Script.ResourceBucket} Assets - Vircadia assets. + * @property {Script.ResourceBucket} HF_Public - Assets that used to be in High Fidelity's hifi-public Amazon + * S3 bucket. + * @property {Script.ResourceBucket} HF_Content - Assets that used to be in High Fidelity's hifi-content Amazon + * S3 bucket. + * @property {Script.ResourceBucket} HF_Marketplace - Assets that used to be in the High Fidelity's mpassets + * Amazon S3 bucket. (High Fidelity marketplace.) + */ + /**jsdoc + *

An external resource bucket.

+ * + * + * + * + * + * + * + * + * + * + *
ValueNameDescription
0HF_PublicAssets that used to be in High Fidelity's hifi-public + * Amazon S3 bucket.
1HF_ContentAssets that used to be in High Fidelity's hifi-content + * Amazon S3 bucket.
2HF_MarketplaceAssets that used to be in the High Fidelity's + * mpassets Amazon S3 bucket. (High Fidelity marketplace.)
3AssetsVircadia assets.
+ * @typedef {number} Script.ResourceBucket */ enum class Bucket { - /** Assets that used to be in the hifi-public S3 bucket */ HF_Public, - - /** Assets that used to be in the hifi-content S3 bucket */ HF_Content, - - /** Assets that used to be in the mpassets S3 bucket (hifi marketplace) */ HF_Marketplace, - - /** Vircadia assets */ - Assets, - Public, - Content + Assets }; Q_ENUM(Bucket) @@ -155,9 +170,7 @@ private: { Bucket::HF_Public, QUrl(NetworkingConstants::HF_PUBLIC_CDN_URL) }, { Bucket::HF_Content, QUrl(NetworkingConstants::HF_CONTENT_CDN_URL) }, { Bucket::HF_Marketplace, QUrl(NetworkingConstants::HF_MPASSETS_CDN_URL) }, - { Bucket::Assets, QUrl(NetworkingConstants::VIRCADIA_CONTENT_CDN_URL) }, - { Bucket::Public, QUrl(NetworkingConstants::VIRCADIA_CONTENT_CDN_URL) }, - { Bucket::Content, QUrl(NetworkingConstants::VIRCADIA_CONTENT_CDN_URL) } + { Bucket::Assets, QUrl(NetworkingConstants::VIRCADIA_CONTENT_CDN_URL) } }; }; diff --git a/libraries/script-engine/src/ScriptEngine.h b/libraries/script-engine/src/ScriptEngine.h index abb232a0f5..07b37b992b 100644 --- a/libraries/script-engine/src/ScriptEngine.h +++ b/libraries/script-engine/src/ScriptEngine.h @@ -121,6 +121,7 @@ public: *
  • "agent": An assignment client script.
  • * * Read-only. + * @property {Script.ResourceBuckets} ExternalPaths - External resource buckets. */ class ScriptEngine : public BaseScriptEngine, public EntitiesScriptEngineProvider { Q_OBJECT @@ -235,12 +236,12 @@ public: /**jsdoc * @function Script.registerEnum - * @param {string} enumName - Name. - * @param {object} newEnum - Enumeration to be added - * @warning This function must be called after a registerGlobalObject that creates the namespace this enum is located in, - * or the globalObject won't function. Eg, if you have a Foo object and a Foo.FooType enum, Foo must be registered first. + * @param {string} name - Name. + * @param {object} enum - Enum. * @deprecated This function is deprecated and will be removed. */ + // WARNING: This function must be called after a registerGlobalObject that creates the namespace this enum is located in, or\ + // the globalObject won't function. E.g., if you have a Foo object and a Foo.FooType enum, Foo must be registered first. /// registers a global enum Q_INVOKABLE void registerEnum(const QString& enumName, QMetaEnum newEnum); @@ -684,6 +685,16 @@ public: void setScriptEngines(QSharedPointer& scriptEngines) { _scriptEngines = scriptEngines; } + /**jsdoc + * Gets the URL for an asset in an external resource bucket. (The location where the bucket is hosted may change over time + * but this method will return the asset's current URL.) + * @function Script.getExternalPath + * @param {Script.ResourceBucket} bucket - The external resource bucket that the asset is in. + * @param {string} relativePath - The path within the external resource bucket where the asset is located. + * @Returns {string} The URL of an external asset. + * @example Report the root directory where the Vircadia assets are located. + * print("Script.getExternalPath(Script.ExternalPaths.Assets, "")); + */ Q_INVOKABLE QString getExternalPath(ExternalResource::Bucket bucket, const QString& relativePath); public slots: From ed5a7e82d722140f4667a0de5bb331b378958ff6 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Wed, 23 Sep 2020 01:57:00 -0400 Subject: [PATCH 32/46] Fix default URLs for edit.js --- scripts/system/create/edit.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index dc4a480ed8..b8f1dc8014 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -44,8 +44,8 @@ var CREATE_TOOLS_WIDTH = 490; var MAX_DEFAULT_ENTITY_LIST_HEIGHT = 942; var ENTIRE_DOMAIN_SCAN_RADIUS = 27713; -var DEFAULT_IMAGE = Script.getExternalPath(Script.ExternalPaths.Assets, "interface/default/default_image.jpg"); -var DEFAULT_PARTICLE = Script.getExternalPath(Script.ExternalPaths.Assets, "interface/default/default_particle.png"); +var DEFAULT_IMAGE = Script.getExternalPath(Script.ExternalPaths.Assets, "Bazaar/Assets/Textures/Defaults/Interface/default_image.jpg"); +var DEFAULT_PARTICLE = Script.getExternalPath(Script.ExternalPaths.Assets, "Bazaar/Assets/Textures/Defaults/Interface/default_particle.png"); var createToolsWindow = new CreateWindow( Script.resolvePath("qml/EditTools.qml"), From ec15b51110ffa713907f58ded4f096fc7e3068db Mon Sep 17 00:00:00 2001 From: Kalila L Date: Wed, 23 Sep 2020 02:52:20 -0400 Subject: [PATCH 33/46] Fix typo. --- interface/resources/qml/hifi/avatarapp/AvatarsModel.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/hifi/avatarapp/AvatarsModel.qml b/interface/resources/qml/hifi/avatarapp/AvatarsModel.qml index a9bfcb7bb7..2a322b3c2e 100644 --- a/interface/resources/qml/hifi/avatarapp/AvatarsModel.qml +++ b/interface/resources/qml/hifi/avatarapp/AvatarsModel.qml @@ -50,9 +50,9 @@ ListModel { function makeAvatarObject(avatar, avatarName) { var avatarThumbnailUrl; - + if (!avatar.avatarIcon) { - makeThumbnailUrl(avatar.avatarUrl); + avatarThumbnailUrl = makeThumbnailUrl(avatar.avatarUrl); } else { avatarThumbnailUrl = avatar.avatarIcon; } From 560a1a71193c9085d8fd21d355d928a56ae54d6d Mon Sep 17 00:00:00 2001 From: Kalila L Date: Wed, 23 Sep 2020 03:29:03 -0400 Subject: [PATCH 34/46] Update sandbox URL. --- server-console/src/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server-console/src/main.js b/server-console/src/main.js index d8d6fea4bf..e83b37ac4c 100644 --- a/server-console/src/main.js +++ b/server-console/src/main.js @@ -56,7 +56,7 @@ const menuNotificationIcon = path.join(__dirname, '../resources/tray-menu-notifi const DELETE_LOG_FILES_OLDER_THAN_X_SECONDS = 60 * 60 * 24 * 7; // 7 Days const LOG_FILE_REGEX = /(domain-server|ac-monitor|ac)-.*-std(out|err).txt/; -const HOME_CONTENT_URL = "http://cdn.highfidelity.com/content-sets/home-tutorial-RC40.tar.gz"; +const HOME_CONTENT_URL = "http://cdn-1.vircadia.com/us-e-1/DomainContent/Sandbox/Rearranged_Basic_Sandbox.tar.gz"; const buildInfo = GetBuildInfo(); From 24d4076079f517b5a486547189f53eb43d8f1100 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Wed, 23 Sep 2020 03:56:50 -0400 Subject: [PATCH 35/46] Fix another URL. --- interface/resources/serverless/redirect.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/serverless/redirect.json b/interface/resources/serverless/redirect.json index efd5015c4d..70377eb506 100644 --- a/interface/resources/serverless/redirect.json +++ b/interface/resources/serverless/redirect.json @@ -296,7 +296,7 @@ "lastEdited": 1537901430334966, "lastEditedBy": "{69540019-db48-4375-86c8-ac1a4a90d043}", "locked": true, - "modelURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-public/alexia/LoadingScreens/floor.fbx", + "modelURL": "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/alexia/LoadingScreens/floor.fbx", "name": "floorModel", "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "position": { From c6ba42b7d6e8e6997067841bb9c125b84bfd8c7b Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 23 Sep 2020 22:15:13 +1200 Subject: [PATCH 36/46] Fix calculating external resource paths --- interface/src/scripting/TestScriptingInterface.cpp | 2 +- libraries/networking/src/NetworkingConstants.h | 8 ++++---- libraries/script-engine/src/ScriptEngine.cpp | 4 ++-- libraries/script-engine/src/ScriptEngine.h | 12 +++++++++--- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/interface/src/scripting/TestScriptingInterface.cpp b/interface/src/scripting/TestScriptingInterface.cpp index fc17d4c978..53630b3eed 100644 --- a/interface/src/scripting/TestScriptingInterface.cpp +++ b/interface/src/scripting/TestScriptingInterface.cpp @@ -68,7 +68,7 @@ bool TestScriptingInterface::loadTestScene(QString scene) { } static const QString TEST_ROOT = "https://raw.githubusercontent.com/hifi-archive/hifi_tests/master/"; - static const QString TEST_BINARY_ROOT = NetworkingConstants::HF_CONTENT_CDN_URL + "/test_scene_data/"; + static const QString TEST_BINARY_ROOT = NetworkingConstants::HF_CONTENT_CDN_URL + "test_scene_data/"; static const QString TEST_SCRIPTS_ROOT = TEST_ROOT + "scripts/"; static const QString TEST_SCENES_ROOT = TEST_ROOT + "scenes/"; diff --git a/libraries/networking/src/NetworkingConstants.h b/libraries/networking/src/NetworkingConstants.h index 533b5ccca4..0766965a44 100644 --- a/libraries/networking/src/NetworkingConstants.h +++ b/libraries/networking/src/NetworkingConstants.h @@ -45,11 +45,11 @@ namespace NetworkingConstants { const QUrl MASTER_BUILDS_XML_URL("https://highfidelity.com/dev-builds.xml"); // CDN URLs - const QString HF_CONTENT_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1/vircadia-content"; - const QString HF_MPASSETS_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1/vircadia-mpassets"; - const QString HF_PUBLIC_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1/vircadia-public"; + const QString HF_CONTENT_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/"; + const QString HF_MPASSETS_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1/vircadia-mpassets/"; + const QString HF_PUBLIC_CDN_URL = "https://cdn-1.vircadia.com/eu-c-1/vircadia-public/"; const QString HF_MARKETPLACE_CDN_HOSTNAME = "mpassets.highfidelity.com"; - const QString VIRCADIA_CONTENT_CDN_URL = "https://cdn-1.vircadia.com/us-e-1"; + const QString VIRCADIA_CONTENT_CDN_URL = "https://cdn-1.vircadia.com/us-e-1/"; #if USE_STABLE_GLOBAL_SERVICES const QString ICE_SERVER_DEFAULT_HOSTNAME = "ice.vircadia.com"; diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index fe3bccd543..184d0bebd2 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -2883,6 +2883,6 @@ void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QS } } -QString ScriptEngine::getExternalPath(ExternalResource::Bucket bucket, const QString& relativePath) { - return ExternalResource::getInstance()->getUrl(bucket, relativePath); +QString ScriptEngine::getExternalPath(ExternalResource::Bucket bucket, const QString& path) { + return ExternalResource::getInstance()->getUrl(bucket, path); } diff --git a/libraries/script-engine/src/ScriptEngine.h b/libraries/script-engine/src/ScriptEngine.h index 07b37b992b..8eeb72e658 100644 --- a/libraries/script-engine/src/ScriptEngine.h +++ b/libraries/script-engine/src/ScriptEngine.h @@ -690,12 +690,18 @@ public: * but this method will return the asset's current URL.) * @function Script.getExternalPath * @param {Script.ResourceBucket} bucket - The external resource bucket that the asset is in. - * @param {string} relativePath - The path within the external resource bucket where the asset is located. + * @param {string} path - The path within the external resource bucket where the asset is located. + *

    Normally, this should start with a path or filename to be appended to the bucket URL. + * Alternatively, it can be a relative path starting with ./ or ../, to navigate within the + * resource bucket's URL. Or it can be an absolute path starting with /, in which case the bucket's path + * is discarded when calculating the asset's URL.

    * @Returns {string} The URL of an external asset. + * @example Report the URL of a default particle. + * print(Script.getExternalPath(Script.ExternalPaths.Assets, "Bazaar/Assets/Textures/Defaults/Interface/default_particle.png")); * @example Report the root directory where the Vircadia assets are located. - * print("Script.getExternalPath(Script.ExternalPaths.Assets, "")); + * print(Script.getExternalPath(Script.ExternalPaths.Assets, ".")); */ - Q_INVOKABLE QString getExternalPath(ExternalResource::Bucket bucket, const QString& relativePath); + Q_INVOKABLE QString getExternalPath(ExternalResource::Bucket bucket, const QString& path); public slots: From 32efb2443eb54c0947be6a1aa0ea1df2dab45361 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 23 Sep 2020 22:15:40 +1200 Subject: [PATCH 37/46] Don't store current CDN paths in Interface.json at present --- interface/src/Application.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 88db77b314..2c5e09ed62 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5574,6 +5574,9 @@ void Application::saveSettings() const { getMyAvatar()->saveData(); PluginManager::getInstance()->saveSettings(); + // Don't save external resource paths until such time as there's UI to select or set alternatives. Otherwise new default + // values won't be used unless Interface.json entries are manually remove or Interface.json is deleted. + /* auto bucketEnum = QMetaEnum::fromType(); auto externalResource = ExternalResource::getInstance(); @@ -5585,6 +5588,7 @@ void Application::saveSettings() const { Setting::Handle url(setting, externalResource->getBase(bucket)); url.set(externalResource->getBase(bucket)); } + */ } bool Application::importEntities(const QString& urlOrFilename, const bool isObservable, const qint64 callerId) { From 1cb1c632286ae3395a5388cfea0dab1d9aae5b96 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 23 Sep 2020 23:08:02 +1200 Subject: [PATCH 38/46] Tidying --- interface/src/Application.cpp | 5 -- libraries/networking/src/ExternalResource.cpp | 35 ++++++------ libraries/networking/src/ExternalResource.h | 56 +++---------------- 3 files changed, 24 insertions(+), 72 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 2c5e09ed62..4e6ed35d2c 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3295,7 +3295,6 @@ void Application::initializeUi() { qmlRegisterType("Hifi", 1, 0, "ResourceImageItem"); qmlRegisterType("Hifi", 1, 0, "Preference"); qmlRegisterType("HifiWeb", 1, 0, "WebBrowserSuggestionsEngine"); - // qmlRegisterType("ExternalResource", 1, 0, "ExternalResource"); { auto tabletScriptingInterface = DependencyManager::get(); @@ -7569,10 +7568,6 @@ void Application::registerScriptEngineWithApplicationServices(const ScriptEngine scriptEngine->registerGlobalObject("HifiAbout", AboutUtil::getInstance()); // Deprecated. scriptEngine->registerGlobalObject("ResourceRequestObserver", DependencyManager::get().data()); - - //scriptEngine->registerGlobalObject("ExternalResource", ExternalResource::getInstance()); - // scriptEngine->registerEnum("Script.ExternalPaths", QMetaEnum::fromType()); - registerInteractiveWindowMetaType(scriptEngine.data()); auto pickScriptingInterface = DependencyManager::get(); diff --git a/libraries/networking/src/ExternalResource.cpp b/libraries/networking/src/ExternalResource.cpp index d3aef1171b..e2b6a40682 100644 --- a/libraries/networking/src/ExternalResource.cpp +++ b/libraries/networking/src/ExternalResource.cpp @@ -4,7 +4,7 @@ // Created by Dale Glass on 6 Sep 2020 // Copyright 2020 Vircadia contributors. // -// Flexible management for external resources (eg, on S3) +// Flexible management for external resources (e.g., on S3). // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -23,25 +23,24 @@ ExternalResource* ExternalResource::getInstance() { return &instance; } -QUrl ExternalResource::getQUrl(Bucket bucket, const QUrl& relative_path) { - qCDebug(external_resource) << "Requested URL for bucket " << bucket << ", path " << relative_path; +QUrl ExternalResource::getQUrl(Bucket bucket, const QUrl& path) { + qCDebug(external_resource) << "Requested URL for bucket " << bucket << ", path " << path; if (!_bucketBases.contains(bucket)) { - qCCritical(external_resource) << "External resource " << relative_path << " was requested from unrecognized bucket " - << bucket; + qCCritical(external_resource) << "External resource " << path << " was requested from unrecognized bucket " << bucket; return QUrl(); } - if (!relative_path.isValid()) { - qCCritical(external_resource) << "External resource " << relative_path << " was requested from bucket " << bucket - << " with an invalid path. Error: " << relative_path.errorString(); + if (!path.isValid()) { + qCCritical(external_resource) << "External resource " << path << " was requested from bucket " << bucket + << " with an invalid path. Error: " << path.errorString(); return QUrl(); } - if (!relative_path.isRelative()) { - qCWarning(external_resource) << "External resource " << relative_path << " was requested from bucket " << bucket + if (!path.isRelative()) { + qCWarning(external_resource) << "External resource " << path << " was requested from bucket " << bucket << " without using a relative path, returning as-is."; - return relative_path; + return path; } QUrl base; @@ -50,13 +49,13 @@ QUrl ExternalResource::getQUrl(Bucket bucket, const QUrl& relative_path) { base = _bucketBases[bucket]; } - QUrl merged = base.resolved(relative_path).adjusted(QUrl::NormalizePathSegments); + QUrl merged = base.resolved(path).adjusted(QUrl::NormalizePathSegments); if ( merged.isValid() ) { qCDebug(external_resource) << "External resource resolved to " << merged; } else { - qCCritical(external_resource) << "External resource resolved to invalid URL " << merged << "; Error " << merged.errorString() - << "; base = " << base << "; relative_path = " << relative_path; + qCCritical(external_resource) << "External resource resolved to invalid URL " << merged << "; Error " + << merged.errorString() << "; base = " << base << "; path = " << path; } return merged; @@ -68,9 +67,9 @@ QString ExternalResource::getBase(Bucket bucket) { }; bool ExternalResource::setBase(Bucket bucket, const QString& url) { - QUrl new_url(url); + QUrl newURL(url); - if (!new_url.isValid() || new_url.isRelative()) { + if (!newURL.isValid() || newURL.isRelative()) { qCCritical(external_resource) << "Attempted to set bucket " << bucket << " to invalid URL " << url; return false; } @@ -80,9 +79,9 @@ bool ExternalResource::setBase(Bucket bucket, const QString& url) { return false; } - qCDebug(external_resource) << "Setting base URL for " << bucket << " to " << new_url; + qCDebug(external_resource) << "Setting base URL for " << bucket << " to " << newURL; std::lock_guard guard(_bucketMutex); - _bucketBases[bucket] = new_url; + _bucketBases[bucket] = newURL; return true; } diff --git a/libraries/networking/src/ExternalResource.h b/libraries/networking/src/ExternalResource.h index e80e1c8099..2c1e83da29 100644 --- a/libraries/networking/src/ExternalResource.h +++ b/libraries/networking/src/ExternalResource.h @@ -4,7 +4,7 @@ // Created by Dale Glass on 6 Sep 2020 // Copyright 2020 Vircadia contributors. // -// Flexible management for external resources (eg, on S3) +// Flexible management for external resources (e.g., on S3). // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -25,11 +25,11 @@ * * With the death of the original High Fidelity and the transition of the project to a community-managed * one, it became necessary to deal with that the various assets that used to be located under the - * highfidelity.com domain will disappear, and there won't be a fixed place for them afterwards. Data + * highfidelity.com domain, and there won't be a fixed place for them afterwards. Data * hosted by community members may not remain forever, reorganization may be necessary, people may want - * to run mirrors, and some might want to run without external internet access at all. + * to run mirrors, and some might want to run without external Internet access at all. * - * This class makes it possible to deal with this in a more flexible manner: rather than hardcoding URLs + * This class makes it possible to deal with this in a more flexible manner: rather than hard-coding URLs * all over the codebase, now it's possible to easily change where all those things are downloaded from. * * The term 'bucket' refers to the buckets used on Amazon S3, but there's no requirement for S3 or anything @@ -94,52 +94,10 @@ public: * @param relative_path The path of the resource within the bucket * @returns The resulting URL as a QUrl */ - QUrl getQUrl(Bucket bucket, const QUrl& relative_path); + QUrl getQUrl(Bucket bucket, const QUrl& path); - /** - * Returns the location of a resource as a QUrl - * - * Returns the location of the resource \p relative_path in bucket \p bucket - * - * @note The resulting path will be sanitized by condensing multiple instances of '/' to one. - * This is done for easier usage with Amazon S3 and compatible systems. - * - * @param bucket The bucket in which the resource is found - * @param relative_path The path of the resource within the bucket - * @returns The resulting URL as a QUrl - */ - QUrl getQUrl(Bucket bucket, QString path) { return getQUrl(bucket, QUrl(path)); } - - /** - * Returns the location of a resource as a QString - * - * Returns the location of the resource \p relative_path in bucket \p bucket - * - * @note The resulting path will be sanitized by condensing multiple instances of '/' to one. - * This is done for easier usage with Amazon S3 and compatible systems. - * - * @param bucket The bucket in which the resource is found - * @param relative_path The path of the resource within the bucket - * @returns The resulting URL as a QString - */ - QString getUrl(Bucket bucket, const QUrl& relative_path) { - return ExternalResource::getQUrl(bucket, relative_path).toString(); - }; - - /** - * Returns the location of a resource as a QString - * - * Returns the location of the resource \p relative_path in bucket \p bucket - * - * @note The resulting path will be sanitized by condensing multiple instances of '/' to one. - * This is done for easier usage with Amazon S3 and compatible systems. - * - * @param bucket The bucket in which the resource is found - * @param relative_path The path of the resource within the bucket - * @returns The resulting URL as a QString - */ - Q_INVOKABLE QString getUrl(Bucket bucket, const QString& relative_path) { - return ExternalResource::getQUrl(bucket, QUrl(relative_path)).toString(); + QString getUrl(Bucket bucket, const QString& path) { + return ExternalResource::getQUrl(bucket, QUrl(path)).toString(); }; /** From b243d382fcbcde033cdde38b825bafe220df0830 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Wed, 23 Sep 2020 22:34:01 +0200 Subject: [PATCH 39/46] Fix warning due to multiline comment --- libraries/script-engine/src/ScriptEngine.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/script-engine/src/ScriptEngine.h b/libraries/script-engine/src/ScriptEngine.h index 8eeb72e658..f393177c52 100644 --- a/libraries/script-engine/src/ScriptEngine.h +++ b/libraries/script-engine/src/ScriptEngine.h @@ -240,7 +240,7 @@ public: * @param {object} enum - Enum. * @deprecated This function is deprecated and will be removed. */ - // WARNING: This function must be called after a registerGlobalObject that creates the namespace this enum is located in, or\ + // WARNING: This function must be called after a registerGlobalObject that creates the namespace this enum is located in, or // the globalObject won't function. E.g., if you have a Foo object and a Foo.FooType enum, Foo must be registered first. /// registers a global enum Q_INVOKABLE void registerEnum(const QString& enumName, QMetaEnum newEnum); From 1d58ac4d793dd1842ea04f50b994ee2b455103b7 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Wed, 23 Sep 2020 23:33:22 +0200 Subject: [PATCH 40/46] Sanitize the URL further by removing leading slashes and any duplicated ones --- libraries/networking/src/ExternalResource.cpp | 23 +++++++++++++++++-- libraries/script-engine/src/ScriptEngine.h | 3 +-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/libraries/networking/src/ExternalResource.cpp b/libraries/networking/src/ExternalResource.cpp index e2b6a40682..a760e3554f 100644 --- a/libraries/networking/src/ExternalResource.cpp +++ b/libraries/networking/src/ExternalResource.cpp @@ -49,13 +49,32 @@ QUrl ExternalResource::getQUrl(Bucket bucket, const QUrl& path) { base = _bucketBases[bucket]; } - QUrl merged = base.resolved(path).adjusted(QUrl::NormalizePathSegments); + QUrl filteredPath = path; + QString pathQString = filteredPath.path(); + + // De-duplicate URL separators, since S3 doesn't actually have subdirectories, and treats a '/' as a part + // of the filename. This means that "/dir/file.txt" and "/dir//file.txt" are not equivalent on S3. + while(pathQString.contains("//")) { + pathQString = pathQString.replace("//", "/"); + } + + // If a path starts with a / it would have the effect of overriding any path specified in the bucket. + // We remove it, ensuring that getQUrl(Bucket.Assets, "/file.txt") and getQUrl(Bucket.Assets, "file.txt") + // are equivalent. + if (pathQString.startsWith("/")) { + pathQString.remove(0,1); + } + + filteredPath.setPath(pathQString); + + QUrl merged = base.resolved(filteredPath).adjusted(QUrl::NormalizePathSegments); if ( merged.isValid() ) { qCDebug(external_resource) << "External resource resolved to " << merged; } else { qCCritical(external_resource) << "External resource resolved to invalid URL " << merged << "; Error " - << merged.errorString() << "; base = " << base << "; path = " << path; + << merged.errorString() << "; base = " << base << "; path = " << path + << "; filtered path = " << filteredPath; } return merged; diff --git a/libraries/script-engine/src/ScriptEngine.h b/libraries/script-engine/src/ScriptEngine.h index f393177c52..fff1cab00a 100644 --- a/libraries/script-engine/src/ScriptEngine.h +++ b/libraries/script-engine/src/ScriptEngine.h @@ -693,8 +693,7 @@ public: * @param {string} path - The path within the external resource bucket where the asset is located. *

    Normally, this should start with a path or filename to be appended to the bucket URL. * Alternatively, it can be a relative path starting with ./ or ../, to navigate within the - * resource bucket's URL. Or it can be an absolute path starting with /, in which case the bucket's path - * is discarded when calculating the asset's URL.

    + * resource bucket's URL.

    * @Returns {string} The URL of an external asset. * @example Report the URL of a default particle. * print(Script.getExternalPath(Script.ExternalPaths.Assets, "Bazaar/Assets/Textures/Defaults/Interface/default_particle.png")); From 9b4d115a5d40d462a7b7e8b4736ec4a10d1718f7 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Thu, 24 Sep 2020 19:37:14 +0200 Subject: [PATCH 41/46] Review fixes Make it ignore a // at the beginning of the URL --- libraries/networking/src/ExternalResource.cpp | 74 ++++++++++--------- libraries/networking/src/ExternalResource.h | 13 +++- 2 files changed, 49 insertions(+), 38 deletions(-) diff --git a/libraries/networking/src/ExternalResource.cpp b/libraries/networking/src/ExternalResource.cpp index a760e3554f..1058bddff8 100644 --- a/libraries/networking/src/ExternalResource.cpp +++ b/libraries/networking/src/ExternalResource.cpp @@ -23,58 +23,64 @@ ExternalResource* ExternalResource::getInstance() { return &instance; } -QUrl ExternalResource::getQUrl(Bucket bucket, const QUrl& path) { +QUrl ExternalResource::getQUrl(Bucket bucket, QString path) { qCDebug(external_resource) << "Requested URL for bucket " << bucket << ", path " << path; - if (!_bucketBases.contains(bucket)) { - qCCritical(external_resource) << "External resource " << path << " was requested from unrecognized bucket " << bucket; + // Whitespace could interfere with the next step + path = path.trimmed(); + + // Remove all initial slashes. This is because if QUrl is fed //foo/bar, + // it will treat //foo as a domain name. This also ensures the URL is always treated as + // relative to any path specified in the bucket. + while (path.startsWith('/')) { + path = path.remove(0, 1); + } + + // De-duplicate URL separators, since S3 doesn't actually have subdirectories, and treats a '/' as a part + // of the filename. This means that "/dir/file.txt" and "/dir//file.txt" are not equivalent on S3. + // + // We feed it through a QUrl to ensure we're only working on the path component. + QUrl pathQUrl(path); + + QString tempPath = pathQUrl.path(); + while (tempPath.contains("//")) { + tempPath = tempPath.replace("//", "/"); + } + pathQUrl.setPath(tempPath); + + if (!pathQUrl.isValid()) { + qCCritical(external_resource) << "External resource " << pathQUrl << " was requested from bucket " << bucket + << " with an invalid path. Error: " << pathQUrl.errorString(); return QUrl(); } - if (!path.isValid()) { - qCCritical(external_resource) << "External resource " << path << " was requested from bucket " << bucket - << " with an invalid path. Error: " << path.errorString(); - return QUrl(); - } - - if (!path.isRelative()) { - qCWarning(external_resource) << "External resource " << path << " was requested from bucket " << bucket + if (!pathQUrl.isRelative()) { + qCWarning(external_resource) << "External resource " << pathQUrl << " was requested from bucket " << bucket << " without using a relative path, returning as-is."; - return path; + return pathQUrl; } QUrl base; { std::lock_guard guard(_bucketMutex); + + if (!_bucketBases.contains(bucket)) { + qCCritical(external_resource) << "External resource " << path << " was requested from unrecognized bucket " + << bucket; + return QUrl(); + } + base = _bucketBases[bucket]; } - QUrl filteredPath = path; - QString pathQString = filteredPath.path(); + QUrl merged = base.resolved(pathQUrl).adjusted(QUrl::NormalizePathSegments); - // De-duplicate URL separators, since S3 doesn't actually have subdirectories, and treats a '/' as a part - // of the filename. This means that "/dir/file.txt" and "/dir//file.txt" are not equivalent on S3. - while(pathQString.contains("//")) { - pathQString = pathQString.replace("//", "/"); - } - - // If a path starts with a / it would have the effect of overriding any path specified in the bucket. - // We remove it, ensuring that getQUrl(Bucket.Assets, "/file.txt") and getQUrl(Bucket.Assets, "file.txt") - // are equivalent. - if (pathQString.startsWith("/")) { - pathQString.remove(0,1); - } - - filteredPath.setPath(pathQString); - - QUrl merged = base.resolved(filteredPath).adjusted(QUrl::NormalizePathSegments); - - if ( merged.isValid() ) { + if (merged.isValid()) { qCDebug(external_resource) << "External resource resolved to " << merged; } else { - qCCritical(external_resource) << "External resource resolved to invalid URL " << merged << "; Error " + qCCritical(external_resource) << "External resource resolved to invalid URL " << merged << "; Error " << merged.errorString() << "; base = " << base << "; path = " << path - << "; filtered path = " << filteredPath; + << "; filtered path = " << pathQUrl; } return merged; diff --git a/libraries/networking/src/ExternalResource.h b/libraries/networking/src/ExternalResource.h index 2c1e83da29..fa6eb85cfe 100644 --- a/libraries/networking/src/ExternalResource.h +++ b/libraries/networking/src/ExternalResource.h @@ -85,19 +85,24 @@ public: /** * Returns the location of a resource as a QUrl * - * Returns the location of the resource \p relative_path in bucket \p bucket + * Returns the location of the resource \p path in bucket \p bucket * * @note The resulting path will be sanitized by condensing multiple instances of '/' to one. * This is done for easier usage with Amazon S3 and compatible systems. * + * @par It will also convert all paths into relative ones respect to the bucket. + * + * @warning This function should only be given paths with a domain name. If given a complete path, + * it will emit a warning into the log and return the unmodified path it was given. + * * @param bucket The bucket in which the resource is found * @param relative_path The path of the resource within the bucket * @returns The resulting URL as a QUrl */ - QUrl getQUrl(Bucket bucket, const QUrl& path); + QUrl getQUrl(Bucket bucket, QString path); - QString getUrl(Bucket bucket, const QString& path) { - return ExternalResource::getQUrl(bucket, QUrl(path)).toString(); + QString getUrl(Bucket bucket, QString path) { + return ExternalResource::getQUrl(bucket, path).toString(); }; /** From 2c1a51e7c460c1e6d5e8a8457dc34af559dea397 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Thu, 24 Sep 2020 16:03:27 -0400 Subject: [PATCH 42/46] Remove inventory app from defaultScripts.js --- scripts/defaultScripts.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index 7e7bb12440..d9a86dbd91 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -25,9 +25,7 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/avatarapp.js", "system/graphicsSettings.js", "system/makeUserConnection.js", - "system/marketplaces/marketplaces.js", "system/notifications.js", - "system/commerce/wallet.js", "system/create/edit.js", "system/dialTone.js", "system/firstPersonHMD.js", From a965ac85917f9d6bfe14b84269c3f5d069b693de Mon Sep 17 00:00:00 2001 From: Kalila L Date: Thu, 24 Sep 2020 17:30:15 -0400 Subject: [PATCH 43/46] Fix some weird context. --- domain-server/resources/web/js/shared.js | 4 ++-- .../resources/web/settings/js/settings.js | 16 ++++++++-------- domain-server/resources/web/wizard/js/wizard.js | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/domain-server/resources/web/js/shared.js b/domain-server/resources/web/js/shared.js index 5081b5aa6a..5469125162 100644 --- a/domain-server/resources/web/js/shared.js +++ b/domain-server/resources/web/js/shared.js @@ -228,7 +228,7 @@ function getDomainFromAPI(callback) { return pendingDomainRequest; } -function chooseFromHighFidelityPlaces(accessToken, forcePathTo, onSuccessfullyAdded) { +function chooseFromMetaversePlaces(accessToken, forcePathTo, onSuccessfullyAdded) { if (accessToken) { getMetaverseUrl(function(metaverse_url) { @@ -429,7 +429,7 @@ function chooseFromHighFidelityPlaces(accessToken, forcePathTo, onSuccessfullyAd loadingDialog.modal('hide'); bootbox.confirm("We were not able to load your domain information from the Metaverse. Would you like to retry?", function(response) { if (response) { - chooseFromHighFidelityPlaces(accessToken, forcePathTo, onSuccessfullyAdded); + chooseFromMetaversePlaces(accessToken, forcePathTo, onSuccessfullyAdded); } }); } diff --git a/domain-server/resources/web/settings/js/settings.js b/domain-server/resources/web/settings/js/settings.js index b1e975bc6c..18574c6187 100644 --- a/domain-server/resources/web/settings/js/settings.js +++ b/domain-server/resources/web/settings/js/settings.js @@ -387,7 +387,7 @@ $(document).ready(function(){ $.post("/api/domains", domainJSON, function(data){ // we successfully created a domain ID, set it on that field - var domainID = data.domain.id; + var domainID = data.domain.domainId; console.log("Setting domain id to ", data, domainID); $(Settings.DOMAIN_ID_SELECTOR).val(domainID).change(); @@ -853,7 +853,7 @@ $(document).ready(function(){ } // Update label if (showOrHideLabel()) { - var label = data.domain.label; + var label = data.domain.name; label = label === null ? '' : label; $('#network-label').val(label); } @@ -959,7 +959,7 @@ $(document).ready(function(){ var addRow = $(" "); addRow.find(".place-add").click(function(ev) { ev.preventDefault(); - chooseFromHighFidelityPlaces(Settings.initialValues.metaverse.access_token, null, function(placeName, newDomainID) { + chooseFromMetaversePlaces(Settings.initialValues.metaverse.access_token, null, function(placeName, newDomainID) { if (newDomainID) { Settings.data.values.metaverse.id = newDomainID; var domainIDEl = $("[data-keypath='metaverse.id']"); @@ -1002,13 +1002,13 @@ $(document).ready(function(){ _.each(data.data.domains, function(domain){ var domainString = ""; - if (domain.label) { - domainString += '"' + domain.label+ '" - '; + if (domain.name) { + domainString += '"' + domain.name+ '" - '; } - domainString += domain.id; + domainString += domain.domainId; - domain_select.append(""); + domain_select.append(""); }) modal_body += "" + domain_select[0].outerHTML modal_buttons["success"] = { @@ -1076,7 +1076,7 @@ $(document).ready(function(){ var domain = data.data.domain; // we should have a new domain ID - set it on the domain ID value - $(Settings.DOMAIN_ID_SELECTOR).val(domain.id).change(); + $(Settings.DOMAIN_ID_SELECTOR).val(domain.domainId).change(); // we also need to make sure auto networking is set to full $('[data-hidden-input="metaverse.automatic_networking"]').val("full").change(); diff --git a/domain-server/resources/web/wizard/js/wizard.js b/domain-server/resources/web/wizard/js/wizard.js index 9e1d622287..800bc1cb33 100644 --- a/domain-server/resources/web/wizard/js/wizard.js +++ b/domain-server/resources/web/wizard/js/wizard.js @@ -70,7 +70,7 @@ $(document).ready(function(){ }); $('body').on('click', '#change-place-name', function() { - chooseFromHighFidelityPlaces(Settings.data.values.metaverse.access_token, "/0,-10,0", function(placeName) { + chooseFromMetaversePlaces(Settings.data.values.metaverse.access_token, "/0,-10,0", function(placeName) { updatePlaceNameLink(placeName); }); }); From 9e8dc88f63060cc224d9cc7f75c394dfade774b1 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Thu, 24 Sep 2020 18:06:39 -0400 Subject: [PATCH 44/46] Fix temporary place name assignment. --- domain-server/resources/web/settings/js/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domain-server/resources/web/settings/js/settings.js b/domain-server/resources/web/settings/js/settings.js index 18574c6187..8a9971d520 100644 --- a/domain-server/resources/web/settings/js/settings.js +++ b/domain-server/resources/web/settings/js/settings.js @@ -1076,7 +1076,7 @@ $(document).ready(function(){ var domain = data.data.domain; // we should have a new domain ID - set it on the domain ID value - $(Settings.DOMAIN_ID_SELECTOR).val(domain.domainId).change(); + $(Settings.DOMAIN_ID_SELECTOR).val(domain.id).change(); // we also need to make sure auto networking is set to full $('[data-hidden-input="metaverse.automatic_networking"]').val("full").change(); From a90af389210017f2a0cc4d4cb74823355ce08bda Mon Sep 17 00:00:00 2001 From: Kalila L Date: Fri, 25 Sep 2020 20:55:43 -0400 Subject: [PATCH 45/46] Fix badly formatted JSON metadata being sent to metaverse. --- domain-server/src/DomainMetadata.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domain-server/src/DomainMetadata.cpp b/domain-server/src/DomainMetadata.cpp index 35bcd10c91..3a3150f1f3 100644 --- a/domain-server/src/DomainMetadata.cpp +++ b/domain-server/src/DomainMetadata.cpp @@ -230,7 +230,7 @@ void DomainMetadata::maybeUpdateUsers() { } void DomainMetadata::sendDescriptors() { - QString domainUpdateJSON = QString("{\"domain\":{\"meta\":%1}").arg(QString(QJsonDocument(get(DESCRIPTORS)).toJson(QJsonDocument::Compact))); + QString domainUpdateJSON = QString("{\"domain\":{\"meta\":%1}}").arg(QString(QJsonDocument(get(DESCRIPTORS)).toJson(QJsonDocument::Compact))); const QUuid& domainID = DependencyManager::get()->getSessionUUID(); if (!domainID.isNull()) { static const QString DOMAIN_UPDATE = "/api/v1/domains/%1"; From 46875a6cf178f8b87d5d9c2fe31e61f9321848e6 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Fri, 25 Sep 2020 20:55:57 -0400 Subject: [PATCH 46/46] Update tutorial to Vircadia EU CDN. --- interface/resources/serverless/tutorial.json | 6964 +++++++++--------- 1 file changed, 3482 insertions(+), 3482 deletions(-) diff --git a/interface/resources/serverless/tutorial.json b/interface/resources/serverless/tutorial.json index 8dbf23c95e..b341f139d4 100644 --- a/interface/resources/serverless/tutorial.json +++ b/interface/resources/serverless/tutorial.json @@ -1,3484 +1,3484 @@ { - "DataVersion": 3, - "Paths": { - "/": "/8.65411,-1.12434,-71.5262/0,0.992481,0,-0.122401" - }, - "Entities": [ - { - "avatarEntity": false, - "clientOnly": false, - "created": 1491937656000000, - "description": "Specify URL to your 48K 16bit PCM wav file & volume (0-1) in userData below", - "dimensions": { - "x": 0.6447294354438782, - "y": 0.6438502073287964, - "z": 0.26574596762657166 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{244f908e-3dba-4019-9a93-2b8441d5d24f}", - "isFacingAvatar": false, - "lastEdited": 1563467280904634, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/speakerGizmo/baked/speakerGizmo.baked.fst", - "name": "Sound Emitter - Birdsong", - "position": { - "x": -2.5392403602600098, - "y": 7.262417793273926, - "z": -75.7442398071289 - }, - "queryAACube": { - "scale": 0.9491259455680847, - "x": -3.013803243637085, - "y": 6.7878546714782715, - "z": -76.21880340576172 - }, - "rotation": { - "w": -0.5520867109298706, - "x": -1.52587890625e-05, - "y": -0.8338292837142944, - "z": -4.57763671875e-05 - }, - "script": "https://content.highfidelity.com/Experiences/Releases/usefulUtilities/soundEmitter/v1.2/soundEmitter.js", - "type": "Model", - "userData": "{\"soundURL\":\"https://content.highfidelity.com/welcome-tutorial/v1/audio/birdsongLoop_1.wav\",\"shouldLoop\":true,\"volume\":0.05,\"refreshInterval\":450,\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554398611144450, - "damping": 0, - "dimensions": { - "x": 0.029263636097311974, - "y": 0.20740893483161926, - "z": 0.3596978783607483 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{dd9b17d3-9597-4e6f-be4c-267e33715438}", - "isFacingAvatar": false, - "lastEdited": 1563467280907087, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "mirror-line", - "position": { - "x": 10.512893676757812, - "y": -1.227879285812378, - "z": -70.1580810546875 - }, - "queryAACube": { - "scale": 0.41624200344085693, - "x": 10.30477237701416, - "y": -1.4360003471374512, - "z": -70.36620330810547 - }, - "rotation": { - "w": 0.9108873605728149, - "x": -4.57763671875e-05, - "y": -0.4125887155532837, - "z": -0.0001373291015625 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "avatarEntity": false, - "clientOnly": false, - "created": 1492535214000000, - "description": "Specify URL to your 48K 16bit PCM wav file & volume (0-1) in userData below", - "dimensions": { - "x": 0.6447294354438782, - "y": 0.6438502073287964, - "z": 0.26574596762657166 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{929efcf1-65b3-4837-81a7-8fff63f5ee5f}", - "isFacingAvatar": false, - "lastEdited": 1563467280904018, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/speakerGizmo/baked/speakerGizmo.baked.fst", - "name": "Sound Emitter-creak", - "position": { - "x": 7.3341145515441895, - "y": 5.320479393005371, - "z": -96.89550018310547 - }, - "queryAACube": { - "scale": 0.9491259455680847, - "x": 6.859551429748535, - "y": 4.845916271209717, - "z": -97.37006378173828 - }, - "rotation": { - "w": 0.22429239749908447, - "x": -0.6706187725067139, - "y": -0.6705882549285889, - "z": -0.2243228554725647 - }, - "script": "https://content.highfidelity.com/Experiences/Releases/usefulUtilities/soundEmitter/v1.2/soundEmitter.js", - "type": "Model", - "userData": "{\"soundURL\":\"https://content.highfidelity.com/welcome-tutorial/v1/audio/woodCreaking.wav\",\"shouldLoop\":true,\"volume\":0.08,\"refreshInterval\":100,\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "avatarEntity": false, - "clientOnly": false, - "created": 1492535214000000, - "description": "Specify URL to your 48K 16bit PCM wav file & volume (0-1) in userData below", - "dimensions": { - "x": 0.6447294354438782, - "y": 0.6438502073287964, - "z": 0.26574596762657166 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{b51cccd1-8097-4a6d-a275-19065c3aae1e}", - "isFacingAvatar": false, - "lastEdited": 1563467280902702, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/speakerGizmo/baked/speakerGizmo.baked.fst", - "name": "Sound Emitter-creak", - "position": { - "x": 5.054196357727051, - "y": 16.41500473022461, - "z": -97.93896484375 - }, - "queryAACube": { - "scale": 0.9491259455680847, - "x": 4.5796332359313965, - "y": 15.940442085266113, - "z": -98.41352844238281 - }, - "rotation": { - "w": 0.22423136234283447, - "x": -0.6706187725067139, - "y": -0.6705882549285889, - "z": -0.2243228554725647 - }, - "script": "https://content.highfidelity.com/Experiences/Releases/usefulUtilities/soundEmitter/v1.2/soundEmitter.js", - "type": "Model", - "userData": "{\"soundURL\":\"https://content.highfidelity.com/welcome-tutorial/v1/audio/woodCreaking.wav\",\"shouldLoop\":true,\"volume\":0.02,\"refreshInterval\":200,\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554511218349438, - "damping": 0, - "dimensions": { - "x": 1.7221298217773438, - "y": 0.5118975043296814, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{59862a4c-c2c3-44ea-8873-a93f45a381d6}", - "isFacingAvatar": false, - "lastEdited": 1563467280913956, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 5.384548187255859, - "y": 1.103218913078308, - "z": -69.20768737792969 - }, - "queryAACube": { - "scale": 1.8076975345611572, - "x": 4.48069953918457, - "y": 0.1993701457977295, - "z": -70.11153411865234 - }, - "rotation": { - "w": 0.9086899757385254, - "x": -4.57763671875e-05, - "y": -0.41747158765792847, - "z": -1.52587890625e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554511017957088, - "damping": 0, - "dimensions": { - "x": 1.9762731790542603, - "y": 0.5533246994018555, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{67bb6524-3d7f-4c8a-98e8-2fe12577345e}", - "isFacingAvatar": false, - "lastEdited": 1563467280913169, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 9.034796714782715, - "y": 1.0587992668151855, - "z": -77.50987243652344 - }, - "queryAACube": { - "scale": 2.061995029449463, - "x": 8.003799438476562, - "y": 0.0278017520904541, - "z": -78.5408706665039 - }, - "rotation": { - "w": 0.9993896484375, - "x": -4.57763671875e-05, - "y": 0.0348668098449707, - "z": -4.57763671875e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "animation": { - "allowTranslation": false - }, - "avatarEntity": false, - "clientOnly": false, - "created": 1563414490548879, - "damping": 0, - "dimensions": { - "x": 1, - "y": 0.0010000000474974513, - "z": 0.4999999403953552 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{51495c3d-f585-4616-b262-93fcb50e0840}", - "isFacingAvatar": false, - "lastEdited": 1563467161318995, - "lastEditedBy": "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/mirrorsign4/baked/mirrorsign4.baked.fst", - "position": { - "x": 13.658286094665527, - "y": 1.33644700050354, - "z": -73.13211822509766 - }, - "queryAACube": { - "scale": 1.1180343627929688, - "x": 13.099268913269043, - "y": 0.7774298191070557, - "z": -73.69113159179688 - }, - "rotation": { - "w": 0.5251697301864624, - "x": 0.5251086950302124, - "y": -0.4742045998573303, - "z": 0.4728008508682251 - }, - "type": "Model" - }, - { - "avatarEntity": false, - "clientOnly": false, - "created": 1492535345000000, - "description": "Specify URL to your 48K 16bit PCM wav file & volume (0-1) in userData below", - "dimensions": { - "x": 0.6447294354438782, - "y": 0.6438502073287964, - "z": 0.26574596762657166 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{3e08bc1b-6a47-4fcf-b695-2de7973db6ac}", - "isFacingAvatar": false, - "lastEdited": 1563467280904481, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/speakerGizmo/baked/speakerGizmo.baked.fst", - "name": "Sound Emitter-creak", - "position": { - "x": 25.595827102661133, - "y": 4.308650493621826, - "z": -76.72611236572266 - }, - "queryAACube": { - "scale": 0.9491259455680847, - "x": 25.12126350402832, - "y": 3.834087610244751, - "z": -77.20067596435547 - }, - "rotation": { - "w": 0.22423136234283447, - "x": -0.6706187725067139, - "y": -0.6705882549285889, - "z": -0.2243228554725647 - }, - "script": "https://content.highfidelity.com/Experiences/Releases/usefulUtilities/soundEmitter/v1.2/soundEmitter.js", - "type": "Model", - "userData": "{\"soundURL\":\"https://content.highfidelity.com/welcome-tutorial/v1/audio/woodCreaking.wav\",\"shouldLoop\": true,\"volume\":0.03,\"refreshInterval\":100,\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "avatarEntity": false, - "clientOnly": false, - "created": 1491937656000000, - "description": "Specify URL to your 48K 16bit PCM wav file & volume (0-1) in userData below", - "dimensions": { - "x": 0.6447294354438782, - "y": 0.6438502073287964, - "z": 0.26574596762657166 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{e8a67ca6-652a-464b-bf8b-aee92a44ccc7}", - "isFacingAvatar": false, - "lastEdited": 1563467280902026, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/speakerGizmo/baked/speakerGizmo.baked.fst", - "name": "Sound Emitter - Birdsong", - "position": { - "x": 24.465959548950195, - "y": 3.5319595336914062, - "z": -70.24295043945312 - }, - "queryAACube": { - "scale": 0.9491259455680847, - "x": 23.991395950317383, - "y": 3.057396650314331, - "z": -70.71751403808594 - }, - "rotation": { - "w": 0.3171893358230591, - "x": -1.52587890625e-05, - "y": -0.9483634829521179, - "z": -1.52587890625e-05 - }, - "script": "https://content.highfidelity.com/Experiences/Releases/usefulUtilities/soundEmitter/v1.2/soundEmitter.js", - "type": "Model", - "userData": "{\"soundURL\":\"https://content.highfidelity.com/welcome-tutorial/v1/audio/birdsongLoop_1.wav\",\"shouldLoop\":true,\"volume\":0.05,\"refreshInterval\":250,\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "avatarEntity": false, - "clientOnly": false, - "created": 1527026155000000, - "description": "Specify URL to your 48K 16bit PCM wav file & volume (0-1) in userData below", - "dimensions": { - "x": 0.6447294354438782, - "y": 0.6438502073287964, - "z": 0.26574596762657166 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{b76eee5f-2605-447b-b4c6-5360afdf61f8}", - "isFacingAvatar": false, - "lastEdited": 1563467280902542, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/speakerGizmo/baked/speakerGizmo.baked.fst", - "name": "Sound Emitter - cicada", - "position": { - "x": 44.971160888671875, - "y": 5.307518482208252, - "z": -105.29989624023438 - }, - "queryAACube": { - "scale": 0.9491259455680847, - "x": 44.49659729003906, - "y": 4.832955360412598, - "z": -105.77445983886719 - }, - "rotation": { - "w": 0.3170672655105591, - "x": -1.52587890625e-05, - "y": -0.9484245181083679, - "z": -1.52587890625e-05 - }, - "script": "https://content.highfidelity.com/Experiences/Releases/usefulUtilities/soundEmitter/v1.2/soundEmitter.js", - "type": "Model", - "userData": "{\"soundURL\":\"https://content.highfidelity.com/welcome-tutorial/v1/audio/cicadasLoop_1.wav\",\"shouldLoop\":true,\"volume\":0.01,\"refreshInterval\":100,\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "avatarEntity": false, - "clientOnly": false, - "created": 1487019835000000, - "description": "Specify URL to your 48K 16bit PCM wav file & volume (0-1) in userData below", - "dimensions": { - "x": 0.6447294354438782, - "y": 0.6438502073287964, - "z": 0.26574596762657166 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{b22f3234-4db4-4480-bb7d-b76e3b007429}", - "isFacingAvatar": false, - "lastEdited": 1563467280903131, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/speakerGizmo/baked/speakerGizmo.baked.fst", - "name": "Sound Emitter - Crickets", - "position": { - "x": 37.3149528503418, - "y": 1.4047751426696777, - "z": -52.067230224609375 - }, - "queryAACube": { - "scale": 0.9491259455680847, - "x": 36.840389251708984, - "y": 0.930212140083313, - "z": -52.54179382324219 - }, - "rotation": { - "w": -1.52587890625e-05, - "x": -1.52587890625e-05, - "y": -1, - "z": -1.52587890625e-05 - }, - "script": "https://content.highfidelity.com/Experiences/Releases/usefulUtilities/soundEmitter/v1.2/soundEmitter.js", - "type": "Model", - "userData": "{\"soundURL\":\"https://content.highfidelity.com/welcome-tutorial/v1/audio/Mod_CCBY_253664__cliftonmcarlson__night-ambience-w-crickets.wav\",\"shouldLoop\":true,\"volume\":0.03,\"refreshInterval\":100,\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "ambientLight": { - "ambientIntensity": 1, - "ambientURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/canyon1.texmeta.json" - }, - "ambientLightMode": "enabled", - "avatarEntity": false, - "bloomMode": "enabled", - "clientOnly": false, - "created": 1501265920000000, - "dimensions": { - "x": 5000, - "y": 5000, - "z": 5000 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "haze": { - "hazeBackgroundBlend": 0.8500000238418579, - "hazeColor": { - "blue": 255, - "green": 79, - "red": 85 - }, - "hazeEnableGlare": true, - "hazeGlareAngle": 59, - "hazeGlareColor": { - "blue": 97, - "green": 200, - "red": 255 - }, - "hazeRange": 2000 - }, - "hazeMode": "enabled", - "id": "{1208ab36-f406-4e64-88cc-cc9f481265b4}", - "isFacingAvatar": false, - "keyLight": { - "castShadows": true, - "color": { - "blue": 102, - "green": 171, - "red": 255 - }, - "direction": { - "x": 0.6140186786651611, - "y": -0.3713679611682892, - "z": -0.6964675188064575 - }, - "intensity": 1.7999999523162842 - }, - "keyLightMode": "enabled", - "lastEdited": 1563467280901626, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "MakerZone", - "position": { - "x": -894.226806640625, - "y": 246.8264617919922, - "z": 1015.4898071289062 - }, - "queryAACube": { - "scale": 8660.25390625, - "x": -5224.353515625, - "y": -4083.300537109375, - "z": -3314.63720703125 - }, - "rotation": { - "w": 0.529900074005127, - "x": -4.57763671875e-05, - "y": 0.8480507135391235, - "z": -7.62939453125e-05 - }, - "shapeType": "box", - "skybox": { - "url": "https://content.highfidelity.com/welcome-tutorial/v1/baked/Sky_Day-Sun-Mid-photo.texmeta.json" - }, - "skyboxMode": "enabled", - "type": "Zone", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}" - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "created": 1550188725428410, - "cutoff": 74.30999755859375, - "damping": 0, - "dimensions": { - "x": 22.441450119018555, - "y": 22.441450119018555, - "z": 22.441450119018555 - }, - "exponent": 1, - "faceCamera": false, - "falloffRadius": 20, - "grab": { - "grabbable": false - }, - "id": "{90e36d2d-9482-4f51-abe7-1592b75df999}", - "intensity": 0.5, - "isFacingAvatar": false, - "lastEdited": 1563467280905058, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "position": { - "x": 9.553569793701172, - "y": 1.0302468538284302, - "z": -70.25057220458984 - }, - "queryAACube": { - "scale": 38.86973190307617, - "x": -9.881296157836914, - "y": -18.404619216918945, - "z": -89.68544006347656 - }, - "rotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "type": "Light", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "avatarEntity": false, - "clientOnly": false, - "collidesWith": "", - "collisionMask": 0, - "collisionless": true, - "created": 1550543327085605, - "dimensions": { - "x": 1.2472385168075562, - "y": 1.945894718170166, - "z": 0.009999999776482582 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabFollowsController": false, - "grabbable": false - }, - "id": "{93a7d1d0-8ed1-4274-89f5-1782a1866182}", - "ignoreForCollisions": true, - "isFacingAvatar": false, - "lastEdited": 1563467280903614, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "modelURL": "http://content.highfidelity.com/baked/avatar_island/mirror_without_backface/baked/mirror_without_backface.baked.fbx", - "name": "mirror_reflectingPlane", - "position": { - "x": 13.659734725952148, - "y": 0.16369032859802246, - "z": -73.13848114013672 - }, - "queryAACube": { - "scale": 4.372657775878906, - "x": 10.68004035949707, - "y": -1.5357954502105713, - "z": -74.91236114501953 - }, - "rotation": { - "w": -0.7427328824996948, - "x": 1.52587890625e-05, - "y": 0.6695811748504639, - "z": 0.0009918212890625 - }, - "script": "https://content.highfidelity.com/Experiences/Releases/usefulUtilities/mirror/2019-07-24_09-18-00/mirrorClient.js", - "scriptTimestamp": 1539903100303, - "type": "Model", - "userData": "{\"grabbableKey\":{\"grabbable\":false,\"ignoreIK\":false},\"original\":{\"id\":\"{6291b4e5-0dcb-484c-9c11-fe47725a4ad8}\"}}" - }, - { - "avatarEntity": false, - "clientOnly": false, - "created": 1550543327086377, - "dimensions": { - "x": 1.2754511833190918, - "y": 3.153184413909912, - "z": 1.5209078788757324 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{37eeb45f-18e6-4f09-9a12-7fc724bc3207}", - "isFacingAvatar": false, - "lastEdited": 1563467280901248, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "mirror_zone", - "parentID": "{93a7d1d0-8ed1-4274-89f5-1782a1866182}", - "position": { - "x": 0.03783285617828369, - "y": 0.192900612950325, - "z": 0.6896476745605469 - }, - "queryAACube": { - "scale": 3.8130435943603516, - "x": 11.114991188049316, - "y": -1.5054945945739746, - "z": -74.89230346679688 - }, - "rotation": { - "w": 0.999847412109375, - "x": -0.0161592960357666, - "y": 1.52587890625e-05, - "z": -0.006424069404602051 - }, - "script": "https://content.highfidelity.com/Experiences/Releases/usefulUtilities/mirror/2019-07-24_09-18-00/mirrorReflection.js", - "scriptTimestamp": 1512087165095, - "shapeType": "box", - "type": "Zone", - "userData": "{\n \"grabbableKey\": {\n \"grabbable\": false\n },\n \"original\": {\n \"id\": \"{da1e2fcd-d69b-47d7-b861-25b31f1c7175}\"\n }\n}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554335801064392, - "damping": 0, - "dimensions": { - "x": 13.220611572265625, - "y": 1.0003461837768555, - "z": 18.092063903808594 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{6cf8ef1e-a6f1-4513-95f1-325cbe7ccea6}", - "isFacingAvatar": false, - "lastEdited": 1563467161380716, - "lastEditedBy": "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", - "localEntity": false, - "locked": true, - "name": "floor1", - "position": { - "x": 9.439321517944336, - "y": -1.6245304346084595, - "z": -72.88140869140625 - }, - "queryAACube": { - "scale": 22.430068969726562, - "x": -1.7757129669189453, - "y": -12.83956527709961, - "z": -84.09644317626953 - }, - "rotation": { - "w": 0.543907880783081, - "x": -1.52587890625e-05, - "y": -0.8391394019126892, - "z": -1.52587890625e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "avatarEntity": false, - "clientOnly": false, - "collisionless": true, - "created": 1554393775402859, - "dimensions": { - "x": 17.2584285736084, - "y": 5.475762367248535, - "z": 11.52783203125 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{fd11ca60-bcb9-419c-97de-f62829c0a90f}", - "ignoreForCollisions": true, - "isFacingAvatar": false, - "lastEdited": 1563467161380875, - "lastEditedBy": "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/welcome-pod2/baked/welcome-pod2.baked.fst", - "name": "Welcome Pod", - "position": { - "x": 13.916152000427246, - "y": 1.3918416500091553, - "z": -70.78492736816406 - }, - "queryAACube": { - "scale": 21.464582443237305, - "x": 3.1838607788085938, - "y": -9.340449333190918, - "z": -81.51721954345703 - }, - "rotation": { - "w": -0.18239110708236694, - "x": -4.57763671875e-05, - "y": -0.9832456111907959, - "z": 1.52587890625e-05 - }, - "type": "Model", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}" - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554395164594013, - "damping": 0, - "dimensions": { - "x": 3.8521595001220703, - "y": 4.063507080078125, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{e0c24c12-89bc-42f6-8361-d78d41b165b6}", - "isFacingAvatar": false, - "lastEdited": 1563467280906743, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision-wall", - "position": { - "x": 14.855209350585938, - "y": 1.0403138399124146, - "z": -68.7479248046875 - }, - "queryAACube": { - "scale": 5.602787017822266, - "x": 12.053815841674805, - "y": -1.7610796689987183, - "z": -71.54931640625 - }, - "rotation": { - "w": -0.0002288818359375, - "x": -0.9837949275970459, - "y": -0.0001373291015625, - "z": -0.17940032482147217 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554395344119426, - "damping": 0, - "dimensions": { - "x": 11.6494140625, - "y": 4.063507080078125, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{0d82371a-af0e-4f10-9f6a-fb50a3b619cd}", - "isFacingAvatar": false, - "lastEdited": 1563467280915845, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision-back-wall", - "position": { - "x": 6.5757904052734375, - "y": 0.9144222736358643, - "z": -73.51559448242188 - }, - "queryAACube": { - "scale": 12.339405059814453, - "x": 0.40608787536621094, - "y": -5.255280494689941, - "z": -79.68529510498047 - }, - "rotation": { - "w": 0.8191500902175903, - "x": -1.52587890625e-05, - "y": 0.5735408067703247, - "z": -7.62939453125e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554395384473246, - "damping": 0, - "dimensions": { - "x": 3.8521595001220703, - "y": 4.063507080078125, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{f26146a8-0939-46fd-9905-092698513b37}", - "isFacingAvatar": false, - "lastEdited": 1563467280906345, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision-wall", - "position": { - "x": 13.616107940673828, - "y": 1.039886713027954, - "z": -73.97779083251953 - }, - "queryAACube": { - "scale": 5.602787017822266, - "x": 10.814714431762695, - "y": -1.7615067958831787, - "z": -76.77918243408203 - }, - "rotation": { - "w": 0.7963531017303467, - "x": -0.0001373291015625, - "y": -0.6048523783683777, - "z": -1.52587890625e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554395384473299, - "damping": 0, - "dimensions": { - "x": 6.047701835632324, - "y": 4.063507080078125, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{db6d648e-d172-4d15-b514-7dcc07af3c36}", - "isFacingAvatar": false, - "lastEdited": 1563467280907275, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision-wall", - "position": { - "x": 10.673867225646973, - "y": 1.0397284030914307, - "z": -77.46546173095703 - }, - "queryAACube": { - "scale": 7.288812160491943, - "x": 7.029460906982422, - "y": -2.604677677154541, - "z": -81.10987091064453 - }, - "rotation": { - "w": 0.9553825855255127, - "x": -7.62939453125e-05, - "y": -0.29536890983581543, - "z": -4.57763671875e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554395475622460, - "damping": 0, - "dimensions": { - "x": 3.8521595001220703, - "y": 4.063507080078125, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{61691f41-dc63-493d-ab8b-3495d7a9c14d}", - "isFacingAvatar": false, - "lastEdited": 1563467280913477, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision-wall", - "position": { - "x": 11.448282241821289, - "y": 1.0398865938186646, - "z": -68.35993957519531 - }, - "queryAACube": { - "scale": 5.602787017822266, - "x": 8.646888732910156, - "y": -1.7615069150924683, - "z": -71.16133117675781 - }, - "rotation": { - "w": -0.0002288818359375, - "x": -0.9673762321472168, - "y": -1.52587890625e-05, - "z": 0.2533454895019531 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554395498113470, - "damping": 0, - "dimensions": { - "x": 3.8521595001220703, - "y": 4.063507080078125, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{77de053d-5020-4fa0-b9aa-d627db7c9d39}", - "isFacingAvatar": false, - "lastEdited": 1563467280912614, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision-wall", - "position": { - "x": 15.882454872131348, - "y": 1.0391541719436646, - "z": -71.47086334228516 - }, - "queryAACube": { - "scale": 5.602787017822266, - "x": 13.081061363220215, - "y": -1.7622393369674683, - "z": -74.27225494384766 - }, - "rotation": { - "w": -0.0002288818359375, - "x": -0.9837949275970459, - "y": -0.0001373291015625, - "z": -0.17940032482147217 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554395615309489, - "damping": 0, - "dimensions": { - "x": 5.726871490478516, - "y": 6.041074752807617, - "z": 0.2973330616950989 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{49ffcb7c-b104-402f-8ba0-d2e680945938}", - "isFacingAvatar": false, - "lastEdited": 1563467161381977, - "lastEditedBy": "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", - "localEntity": false, - "locked": true, - "name": "Floor 3", - "position": { - "x": 19.47880744934082, - "y": -1.1530930995941162, - "z": -68.66129302978516 - }, - "queryAACube": { - "scale": 8.329468727111816, - "x": 15.31407356262207, - "y": -5.317827224731445, - "z": -72.8260269165039 - }, - "rotation": { - "w": 0.6951247453689575, - "x": -0.6952773332595825, - "y": -0.1291981339454651, - "z": -0.1292286515235901 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554395687275829, - "damping": 0, - "dimensions": { - "x": 4.614844799041748, - "y": 4.063507080078125, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{9cbd2b0f-13e4-428a-b153-4187414deec4}", - "isFacingAvatar": false, - "lastEdited": 1563467280908789, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision-wall", - "position": { - "x": 21.860403060913086, - "y": 1.041013240814209, - "z": -69.77898406982422 - }, - "queryAACube": { - "scale": 6.152144908905029, - "x": 18.784330368041992, - "y": -2.0350592136383057, - "z": -72.85505676269531 - }, - "rotation": { - "w": -0.8343480825424194, - "x": 0.0002288818359375, - "y": 0.5512627363204956, - "z": 0.0001068115234375 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554395719818630, - "damping": 0, - "dimensions": { - "x": 2.7593533992767334, - "y": 4.590254306793213, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{a1dc9796-400b-4672-b20f-c77786a73c11}", - "isFacingAvatar": false, - "lastEdited": 1563467280908308, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision-wall", - "position": { - "x": 20.280054092407227, - "y": 1.5018401145935059, - "z": -72.24675750732422 - }, - "queryAACube": { - "scale": 5.35952091217041, - "x": 17.60029411315918, - "y": -1.1779203414916992, - "z": -74.92652130126953 - }, - "rotation": { - "w": -0.9687495231628418, - "x": 0.19557487964630127, - "y": 0.14308381080627441, - "z": 0.052933573722839355 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554395749978274, - "damping": 0, - "dimensions": { - "x": 4.804360866546631, - "y": 4.063507080078125, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{dfda3708-5e09-45de-9be2-0cc256fdda3a}", - "isFacingAvatar": false, - "lastEdited": 1563467280906922, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision-wall", - "position": { - "x": 20.669633865356445, - "y": 1.0425374507904053, - "z": -66.44235229492188 - }, - "queryAACube": { - "scale": 6.295551776885986, - "x": 17.52185821533203, - "y": -2.105238437652588, - "z": -69.59012603759766 - }, - "rotation": { - "w": -0.0003204345703125, - "x": -0.9677424430847168, - "y": -4.57763671875e-05, - "z": 0.2519416809082031 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554395749983396, - "damping": 0, - "dimensions": { - "x": 2.2357139587402344, - "y": 4.063507080078125, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{26d0c15b-8a58-48c2-b1e8-0b04a529505f}", - "isFacingAvatar": false, - "lastEdited": 1563467280915515, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision-wall", - "position": { - "x": 16.397750854492188, - "y": 0.7451583743095398, - "z": -66.87901306152344 - }, - "queryAACube": { - "scale": 4.642252445220947, - "x": 14.076624870300293, - "y": -1.575967788696289, - "z": -69.20014190673828 - }, - "rotation": { - "w": 0.19645988941192627, - "x": -0.8896162509918213, - "y": -0.08958572149276733, - "z": -0.40245670080184937 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554395833155826, - "damping": 0, - "dimensions": { - "x": 6.087839603424072, - "y": 4.063507080078125, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{5d2ed50f-8b33-4bc7-9d0e-e639d5dd2357}", - "isFacingAvatar": false, - "lastEdited": 1563467280913701, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision-wall", - "position": { - "x": 7.133137226104736, - "y": 1.0399558544158936, - "z": -67.71293640136719 - }, - "queryAACube": { - "scale": 7.322150230407715, - "x": 3.472062110900879, - "y": -2.621119260787964, - "z": -71.37400817871094 - }, - "rotation": { - "w": -0.05049210786819458, - "x": 1.52587890625e-05, - "y": -0.998748779296875, - "z": 0.0001678466796875 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554397703510915, - "damping": 0, - "dimensions": { - "x": 13.220611572265625, - "y": 1.0003461837768555, - "z": 18.092063903808594 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{90901060-f216-447d-bbb9-8e43be6e90a6}", - "isFacingAvatar": false, - "lastEdited": 1563467280910975, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "roof", - "position": { - "x": 14.782567024230957, - "y": 3.50496506690979, - "z": -70.49324798583984 - }, - "queryAACube": { - "scale": 22.430068969726562, - "x": 3.567532539367676, - "y": -7.71006965637207, - "z": -81.70828247070312 - }, - "rotation": { - "w": 0.543541669845581, - "x": -0.0003814697265625, - "y": -0.8393835425376892, - "z": 0.0001373291015625 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554509979019596, - "damping": 0, - "dimensions": { - "x": 3.1357157230377197, - "y": 0.7045732736587524, - "z": 1.5312268733978271 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{d1693fdd-f7dc-4dac-b8d4-d10090ad08fc}", - "isFacingAvatar": false, - "lastEdited": 1563467280907424, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision_wall", - "position": { - "x": 19.5969181060791, - "y": -0.7506991624832153, - "z": -71.09772491455078 - }, - "queryAACube": { - "scale": 3.5600271224975586, - "x": 17.816904067993164, - "y": -2.530712604522705, - "z": -72.87773895263672 - }, - "rotation": { - "w": 0.999725341796875, - "x": -7.62939453125e-05, - "y": -0.023392081260681152, - "z": -4.57763671875e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554510972837087, - "damping": 0, - "dimensions": { - "x": 1.9762731790542603, - "y": 0.5533246994018555, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{6e904ccc-48ff-48f6-b948-ba1852c717e0}", - "isFacingAvatar": false, - "lastEdited": 1563467280912757, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 9.034714698791504, - "y": 0.12946277856826782, - "z": -77.50978088378906 - }, - "queryAACube": { - "scale": 2.061995029449463, - "x": 8.003717422485352, - "y": -0.9015347361564636, - "z": -78.54077911376953 - }, - "rotation": { - "w": 0.9993896484375, - "x": -4.57763671875e-05, - "y": 0.0348668098449707, - "z": -4.57763671875e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554511164106971, - "damping": 0, - "dimensions": { - "x": 0.20000000298023224, - "y": 0.5384143590927124, - "z": 1.8643357753753662 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{4ae513b1-3e8c-47ae-a791-a99c1401c881}", - "isFacingAvatar": false, - "lastEdited": 1563467280914421, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 5.680205345153809, - "y": 0.1265571266412735, - "z": -69.18448638916016 - }, - "queryAACube": { - "scale": 1.950804352760315, - "x": 4.704802989959717, - "y": -0.8488450646400452, - "z": -70.1598892211914 - }, - "rotation": { - "w": 0.9396963119506836, - "x": -1.52587890625e-05, - "y": 0.34200048446655273, - "z": -4.57763671875e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554511263685136, - "damping": 0, - "dimensions": { - "x": 0.20000000298023224, - "y": 1.1633296012878418, - "z": 3.318582773208618 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{f5c08b1d-503b-4bda-902b-35b1fa09b7cd}", - "isFacingAvatar": false, - "lastEdited": 1563467280906128, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 6.618948459625244, - "y": -0.47302883863449097, - "z": -68.3666000366211 - }, - "queryAACube": { - "scale": 3.522261619567871, - "x": 4.857817649841309, - "y": -2.2341597080230713, - "z": -70.12773132324219 - }, - "rotation": { - "w": 0.9396963119506836, - "x": -1.52587890625e-05, - "y": 0.34200048446655273, - "z": -4.57763671875e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554511341880877, - "damping": 0, - "dimensions": { - "x": 0.3861622214317322, - "y": 0.6504976153373718, - "z": 7.8453688621521 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{9bc8320e-e346-43a3-b03e-75590e326af0}", - "isFacingAvatar": false, - "lastEdited": 1563467280909531, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 6.845628261566162, - "y": -0.8465496301651001, - "z": -73.65797424316406 - }, - "queryAACube": { - "scale": 7.88175630569458, - "x": 2.904750108718872, - "y": -4.78742790222168, - "z": -77.5988540649414 - }, - "rotation": { - "w": 0.9812924861907959, - "x": -7.62939453125e-05, - "y": -0.1925230622291565, - "z": -1.52587890625e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554511476880919, - "damping": 0, - "dimensions": { - "x": 4.516627788543701, - "y": 3.408545970916748, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{176e50b8-0a35-432d-a08c-09aeb6e92919}", - "isFacingAvatar": false, - "lastEdited": 1563467280915687, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision_wall", - "position": { - "x": 14.866923332214355, - "y": 0.5867739319801331, - "z": -68.93809509277344 - }, - "queryAACube": { - "scale": 5.661988258361816, - "x": 12.035928726196289, - "y": -2.24422025680542, - "z": -71.76908874511719 - }, - "rotation": { - "w": 0.9808042049407959, - "x": -4.57763671875e-05, - "y": -0.19499504566192627, - "z": -7.62939453125e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554511520319224, - "damping": 0, - "dimensions": { - "x": 4.516627788543701, - "y": 3.408545970916748, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{0a971375-3ee2-4813-a5d0-4a2321c01fe6}", - "isFacingAvatar": false, - "lastEdited": 1563467280915984, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision_wall", - "position": { - "x": 15.85211181640625, - "y": 0.5864658951759338, - "z": -71.31785583496094 - }, - "queryAACube": { - "scale": 5.661988258361816, - "x": 13.0211181640625, - "y": -2.244528293609619, - "z": -74.14884948730469 - }, - "rotation": { - "w": 0.9807736873626709, - "x": -4.57763671875e-05, - "y": -0.19511711597442627, - "z": -4.57763671875e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554511585054335, - "damping": 0, - "dimensions": { - "x": 2.723170042037964, - "y": 0.20000000298023224, - "z": 1.7211601734161377 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{f9fd13cc-5b4f-47c6-80c4-27d85fac78b9}", - "isFacingAvatar": false, - "lastEdited": 1563467280905629, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 20.782413482666016, - "y": -0.5008415579795837, - "z": -66.48963165283203 - }, - "queryAACube": { - "scale": 3.2276999950408936, - "x": 19.168563842773438, - "y": -2.1146914958953857, - "z": -68.10348510742188 - }, - "rotation": { - "w": 0.9510490894317627, - "x": -1.52587890625e-05, - "y": 0.30897998809814453, - "z": -4.57763671875e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554511730254797, - "damping": 0, - "dimensions": { - "x": 1.3115150928497314, - "y": 0.20000000298023224, - "z": 1.1722313165664673 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{7f100ff4-028d-4acc-81fa-0d844ecd423e}", - "isFacingAvatar": false, - "lastEdited": 1563467280912463, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 17.6627140045166, - "y": -0.5005519390106201, - "z": -66.71401977539062 - }, - "queryAACube": { - "scale": 1.7703666687011719, - "x": 16.777530670166016, - "y": -1.385735273361206, - "z": -67.59920501708984 - }, - "rotation": { - "w": 0.9505302906036377, - "x": -0.0001678466796875, - "y": -0.31056690216064453, - "z": -4.57763671875e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554512002518553, - "damping": 0, - "dimensions": { - "x": 0.7308322787284851, - "y": 4.888399124145508, - "z": 0.783096432685852 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{3ecea56c-9cf2-4329-b5b2-b50448f9c5d1}", - "isFacingAvatar": false, - "lastEdited": 1563467280914810, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision_tree", - "position": { - "x": 7.177090167999268, - "y": 1.2557251453399658, - "z": -73.16246032714844 - }, - "queryAACube": { - "scale": 5.004378318786621, - "x": 4.674901008605957, - "y": -1.2464640140533447, - "z": -75.6646499633789 - }, - "rotation": { - "w": 0.9844968318939209, - "x": -4.57763671875e-05, - "y": -0.1754024624824524, - "z": -1.52587890625e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554512216650454, - "damping": 0, - "dimensions": { - "x": 1.1273462772369385, - "y": 0.27245450019836426, - "z": 1.547093152999878 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{5146be4a-b0a2-4b4b-8d17-e83b7db70519}", - "isFacingAvatar": false, - "lastEdited": 1563467280914211, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 21.151384353637695, - "y": -0.5318018794059753, - "z": -70.26309204101562 - }, - "queryAACube": { - "scale": 1.9335558414459229, - "x": 20.184606552124023, - "y": -1.498579740524292, - "z": -71.22987365722656 - }, - "rotation": { - "w": 0.9510490894317627, - "x": -1.52587890625e-05, - "y": 0.30897998809814453, - "z": -7.62939453125e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "collidesWith": "static,dynamic,kinematic,otherAvatar,", - "collisionMask": 23, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554512302898655, - "damping": 0, - "dimensions": { - "x": 1.1379551887512207, - "y": 2.7677454948425293, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{8d60c0d9-558b-4efc-b598-540844faebe6}", - "isFacingAvatar": false, - "lastEdited": 1563467280911168, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 17.958641052246094, - "y": 0.6593599915504456, - "z": -65.38139343261719 - }, - "queryAACube": { - "scale": 2.9992260932922363, - "x": 16.459028244018555, - "y": -0.8402530550956726, - "z": -66.8810043334961 - }, - "rotation": { - "w": 0.9411001205444336, - "x": 0.24956130981445312, - "y": -0.21806669235229492, - "z": 0.06657516956329346 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "collidesWith": "static,dynamic,kinematic,otherAvatar,", - "collisionMask": 23, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554512354734850, - "damping": 0, - "dimensions": { - "x": 1.4752637147903442, - "y": 4.9809184074401855, - "z": 0.4419654607772827 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{80b8eaf6-1466-4f68-bcfd-c1f3cc0d3701}", - "isFacingAvatar": false, - "lastEdited": 1563467280911325, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 19.03372573852539, - "y": 0.3482077419757843, - "z": -65.64324951171875 - }, - "queryAACube": { - "scale": 5.21356725692749, - "x": 16.426942825317383, - "y": -2.258575916290283, - "z": -68.25003051757812 - }, - "rotation": { - "w": 0.9732662439346313, - "x": 0.22880899906158447, - "y": 0.0168001651763916, - "z": 0.00889599323272705 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "collidesWith": "static,dynamic,kinematic,otherAvatar,", - "collisionMask": 23, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554512415741459, - "damping": 0, - "dimensions": { - "x": 1.1379551887512207, - "y": 2.7677454948425293, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{c4558dc0-43cb-4a81-bc2c-368c9a4e16d7}", - "isFacingAvatar": false, - "lastEdited": 1563467280907569, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 16.94318962097168, - "y": 0.6663778424263, - "z": -65.93487548828125 - }, - "queryAACube": { - "scale": 2.9992260932922363, - "x": 15.44357681274414, - "y": -0.8332352042198181, - "z": -67.43448638916016 - }, - "rotation": { - "w": 0.8979781866073608, - "x": 0.2502937316894531, - "y": -0.3521324396133423, - "z": 0.08326852321624756 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554512594526896, - "damping": 0, - "dimensions": { - "x": 2.599607467651367, - "y": 2.7401115894317627, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{9742281e-d2d1-47b2-9f0f-509da4cdfe32}", - "isFacingAvatar": false, - "lastEdited": 1563467280910674, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 20.485273361206055, - "y": 0.7680158615112305, - "z": -65.8010025024414 - }, - "queryAACube": { - "scale": 3.7823498249053955, - "x": 18.594099044799805, - "y": -1.1231590509414673, - "z": -67.69217681884766 - }, - "rotation": { - "w": 0.9451285600662231, - "x": 0.17512774467468262, - "y": 0.2709850072860718, - "z": -0.05082780122756958 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554512682906578, - "damping": 0, - "dimensions": { - "x": 0.20000000298023224, - "y": 2.732187271118164, - "z": 2.7675163745880127 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{2cccb27b-f01a-4b4a-a3ae-eb3fd7b6522e}", - "isFacingAvatar": false, - "lastEdited": 1563467280915375, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 21.92999839782715, - "y": 0.727752685546875, - "z": -67.24706268310547 - }, - "queryAACube": { - "scale": 3.894097328186035, - "x": 19.98295021057129, - "y": -1.2192959785461426, - "z": -69.1941146850586 - }, - "rotation": { - "w": 0.9482413530349731, - "x": 0.050431013107299805, - "y": -0.23134201765060425, - "z": -0.21159684658050537 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554512851406673, - "damping": 0, - "dimensions": { - "x": 0.43387630581855774, - "y": 4.7313127517700195, - "z": 2.3720154762268066 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{99ac48ff-bfb3-4de7-912c-d96cf7355c07}", - "isFacingAvatar": false, - "lastEdited": 1563467280910239, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 22.567644119262695, - "y": 1.3780510425567627, - "z": -69.06810760498047 - }, - "queryAACube": { - "scale": 5.310369968414307, - "x": 19.912458419799805, - "y": -1.2771339416503906, - "z": -71.7232894897461 - }, - "rotation": { - "w": 0.9829404354095459, - "x": -0.00871288776397705, - "y": 0.050553083419799805, - "z": -0.1765010952949524 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "collidesWith": "static,dynamic,kinematic,otherAvatar,", - "collisionMask": 23, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554513144280379, - "damping": 0, - "dimensions": { - "x": 0.20000000298023224, - "y": 5.408563137054443, - "z": 3.346208095550537 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{35482a9d-994a-4aa6-a1d0-11909e347251}", - "isFacingAvatar": false, - "lastEdited": 1563467280914955, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 22.037845611572266, - "y": 1.4232194423675537, - "z": -70.92962646484375 - }, - "queryAACube": { - "scale": 6.363149166107178, - "x": 18.856271743774414, - "y": -1.7583551406860352, - "z": -74.11119842529297 - }, - "rotation": { - "w": 0.9099106788635254, - "x": -0.07747006416320801, - "y": 0.35796141624450684, - "z": -0.19475090503692627 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554513450928413, - "damping": 0, - "dimensions": { - "x": 3.116267681121826, - "y": 4.054603576660156, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{b20e4789-aa5d-4544-a062-16e13aa0ed79}", - "isFacingAvatar": false, - "lastEdited": 1563467280907967, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 18.134056091308594, - "y": 1.0476075410842896, - "z": -72.24353790283203 - }, - "queryAACube": { - "scale": 5.117708206176758, - "x": 15.575201988220215, - "y": -1.5112465620040894, - "z": -74.8023910522461 - }, - "rotation": { - "w": 0.9672236442565918, - "x": -0.2066224217414856, - "y": 0.14421296119689941, - "z": 0.030441761016845703 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554513664429322, - "damping": 0, - "dimensions": { - "x": 0.20000000298023224, - "y": 2.6543757915496826, - "z": 1.3885936737060547 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{e9a6864c-7dfe-4d39-b375-a1bcc822d287}", - "isFacingAvatar": false, - "lastEdited": 1563467280906552, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 17.893924713134766, - "y": 0.8742422461509705, - "z": -71.33345794677734 - }, - "queryAACube": { - "scale": 3.002316474914551, - "x": 16.39276695251465, - "y": -0.6269159913063049, - "z": -72.8346176147461 - }, - "rotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554516803035825, - "damping": 0, - "dimensions": { - "x": 1.5199129581451416, - "y": 0.20000000298023224, - "z": 1.803011178970337 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{6b672df4-c098-4e7d-8132-2ca8cec9bfcd}", - "isFacingAvatar": false, - "lastEdited": 1563467280913027, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 21.629100799560547, - "y": -0.5141257047653198, - "z": -67.83106231689453 - }, - "queryAACube": { - "scale": 2.3666398525238037, - "x": 20.445781707763672, - "y": -1.6974456310272217, - "z": -69.0143814086914 - }, - "rotation": { - "w": 0.9825742244720459, - "x": -4.57763671875e-05, - "y": -0.18571758270263672, - "z": -4.57763671875e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554516852784984, - "damping": 0, - "dimensions": { - "x": 1.376994013786316, - "y": 0.20000000298023224, - "z": 1.803011178970337 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{08a79e11-378b-472e-8ed4-683178a4905f}", - "isFacingAvatar": false, - "lastEdited": 1563467280916164, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision", - "position": { - "x": 21.766597747802734, - "y": -0.5142682194709778, - "z": -69.11212921142578 - }, - "queryAACube": { - "scale": 2.2774901390075684, - "x": 20.627853393554688, - "y": -1.6530132293701172, - "z": -70.2508773803711 - }, - "rotation": { - "w": 0.9957274198532104, - "x": -4.57763671875e-05, - "y": 0.09214925765991211, - "z": -7.62939453125e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554667403968924, - "damping": 0, - "dimensions": { - "x": 2.2357139587402344, - "y": 4.063507080078125, - "z": 0.20000000298023224 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{34f507a2-e147-47ea-970c-5dfc4a523550}", - "isFacingAvatar": false, - "lastEdited": 1563467280915097, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision-wall", - "position": { - "x": 17.651775360107422, - "y": 0.735522985458374, - "z": -65.75617218017578 - }, - "queryAACube": { - "scale": 4.642252445220947, - "x": 15.330649375915527, - "y": -1.5856032371520996, - "z": -68.07730102539062 - }, - "rotation": { - "w": 0.19780266284942627, - "x": -0.9584649205207825, - "y": -0.045212507247924805, - "z": -0.20054930448532104 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554668158560681, - "damping": 0, - "dimensions": { - "x": 2.2458550930023193, - "y": 0.20000000298023224, - "z": 1.613483190536499 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{9c2a1174-362d-42b4-8c69-5969f05c2ab2}", - "isFacingAvatar": false, - "lastEdited": 1563467280909129, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "position": { - "x": 18.860658645629883, - "y": -0.5461101531982422, - "z": -66.02705383300781 - }, - "queryAACube": { - "scale": 2.772578716278076, - "x": 17.474369049072266, - "y": -1.9323995113372803, - "z": -67.41334533691406 - }, - "rotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1554675694970161, - "damping": 0, - "dimensions": { - "x": 0.20000000298023224, - "y": 3.3708338737487793, - "z": 1.004555106163025 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{343c1b18-2ccb-4053-a429-0668f70be1de}", - "isFacingAvatar": false, - "lastEdited": 1563467280915236, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "position": { - "x": 15.91869831085205, - "y": 0.8493099808692932, - "z": -67.866455078125 - }, - "queryAACube": { - "scale": 3.523017406463623, - "x": 14.15718936920166, - "y": -0.9121987223625183, - "z": -69.62796020507812 - }, - "rotation": { - "w": 0.9905089139938354, - "x": 0.040970444679260254, - "y": -0.07103073596954346, - "z": 0.11021590232849121 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "animation": { - "allowTranslation": false - }, - "avatarEntity": false, - "clientOnly": false, - "created": 1557434224286737, - "damping": 0, - "dimensions": { - "x": 0.9039000272750854, - "y": 1, - "z": 1.6324000358581543 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{1f9e7521-6d58-49d1-aefa-3ac49918fc44}", - "isFacingAvatar": false, - "lastEdited": 1563467161386805, - "lastEditedBy": "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/Shield-Toolbar1/baked/Shield-Toolbar1.baked.fst", - "name": "PersonalShield.", - "position": { - "x": 21.056665420532227, - "y": 0.18451154232025146, - "z": -69.99424743652344 - }, - "queryAACube": { - "scale": 2.117017984390259, - "x": 19.99815559387207, - "y": -0.8739974498748779, - "z": -71.0527572631836 - }, - "rotation": { - "w": 0.024551749229431152, - "x": -7.62939453125e-05, - "y": -0.999725341796875, - "z": -4.57763671875e-05 - }, - "type": "Model" - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1557536614579891, - "damping": 0, - "dimensions": { - "x": 1.7990152835845947, - "y": 0.3200075626373291, - "z": 1.5757719278335571 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{f67fd522-c947-49a3-af81-a0de99a3953f}", - "isFacingAvatar": false, - "lastEdited": 1563467280905923, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "name": "collision-bench1", - "position": { - "x": 16.860097885131836, - "y": -0.549018919467926, - "z": -67.09400177001953 - }, - "queryAACube": { - "scale": 2.412865161895752, - "x": 15.653665542602539, - "y": -1.7554514408111572, - "z": -68.3004379272461 - }, - "rotation": { - "w": 0.9612420797348022, - "x": -1.52587890625e-05, - "y": 0.2755931615829468, - "z": -4.57763671875e-05 - }, - "shape": "Cube", - "type": "Box", - "visible": false - }, - { - "avatarEntity": false, - "clientOnly": false, - "collisionless": true, - "created": 1557781982596118, - "dimensions": { - "x": 0.9039000272750854, - "y": 1, - "z": 1.6324000358581543 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{ac2f0b92-2839-4ca3-90fe-c96c218c18e1}", - "ignoreForCollisions": true, - "isFacingAvatar": false, - "lastEdited": 1563467161387107, - "lastEditedBy": "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/Tablet-Toolbar1/baked/Tablet-Toolbar1.baked.fst", - "name": "Tablet", - "position": { - "x": 19.94297218322754, - "y": 0.18448932468891144, - "z": -66.57754516601562 - }, - "queryAACube": { - "scale": 2.117017984390259, - "x": 18.884462356567383, - "y": -0.8740196824073792, - "z": -67.63605499267578 - }, - "rotation": { - "w": 0.7489891052246094, - "x": -1.52587890625e-05, - "y": 0.6625620126724243, - "z": -0.0001373291015625 - }, - "type": "Model", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}" - }, - { - "angularDamping": 0, - "animation": { - "allowTranslation": false - }, - "avatarEntity": false, - "clientOnly": false, - "created": 1558036708243904, - "damping": 0, - "dimensions": { - "x": 12.360462188720703, - "y": 12.203283309936523, - "z": 12.380107879638672 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{c9bdbd9a-e767-44e8-baab-7638ffaf6f79}", - "isFacingAvatar": false, - "lastEdited": 1563467161387272, - "lastEditedBy": "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/LowPolyTreeAO2/baked/LowPolyTreeAO2.baked.fst", - "name": "Tree", - "position": { - "x": 7.227527141571045, - "y": 4.494775295257568, - "z": -73.15557861328125 - }, - "queryAACube": { - "scale": 21.32998275756836, - "x": -3.4374642372131348, - "y": -6.170216083526611, - "z": -83.82057189941406 - }, - "rotation": { - "w": 0.7661707401275635, - "x": -4.57763671875e-05, - "y": 0.6426031589508057, - "z": -0.0001068115234375 - }, - "type": "Model" - }, - { - "angularDamping": 0, - "animation": { - "allowTranslation": false - }, - "avatarEntity": false, - "clientOnly": false, - "created": 1563412618962599, - "damping": 0, - "dimensions": { - "x": 0.9039000272750854, - "y": 1, - "z": 1.6324000358581543 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{04baca89-93dd-41e5-9e55-74ba9fe3e2fd}", - "isFacingAvatar": false, - "lastEdited": 1563467280904916, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/Goto-Toolbar1/baked/Goto-Toolbar1.baked.fst", - "name": "Goto", - "position": { - "x": 21.300800323486328, - "y": 0.18451154232025146, - "z": -68.04023742675781 - }, - "queryAACube": { - "scale": 2.117017984390259, - "x": 20.242290496826172, - "y": -0.8739974498748779, - "z": -69.09874725341797 - }, - "rotation": { - "w": 0.3849087953567505, - "x": -7.62939453125e-05, - "y": 0.9229419231414795, - "z": -7.62939453125e-05 - }, - "type": "Model" - }, - { - "angularDamping": 0, - "animation": { - "allowTranslation": false - }, - "avatarEntity": false, - "clientOnly": false, - "created": 1563413103692919, - "damping": 0, - "dimensions": { - "x": 4.573084831237793, - "y": 1.4999998807907104, - "z": 2.496737003326416 - }, - "faceCamera": false, - "grab": { - "grabbable": false - }, - "id": "{e859cd08-8a8c-4f68-8dae-e5d2ac3e5614}", - "isFacingAvatar": false, - "lastEdited": 1563467161387566, - "lastEditedBy": "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/Controls/original/Controls.fbx", - "position": { - "x": 9.5448637008667, - "y": 0.3290107548236847, - "z": -68.53327178955078 - }, - "queryAACube": { - "scale": 5.421881675720215, - "x": 6.833922863006592, - "y": -2.381930112838745, - "z": -71.24420928955078 - }, - "rotation": { - "w": 0.9396963119506836, - "x": -1.52587890625e-05, - "y": 0.34196996688842773, - "z": -7.62939453125e-05 - }, - "type": "Model" - }, - { - "angularDamping": 0, - "avatarEntity": false, - "clientOnly": false, - "color": { - "blue": 239, - "green": 180, - "red": 0 - }, - "created": 1563413608610158, - "damping": 0, - "dimensions": { - "x": 4.348940849304199, - "y": 6.041074752807617, - "z": 0.2973330616950989 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{fff6c078-68a8-4b45-807f-a0245a57fe17}", - "isFacingAvatar": false, - "lastEdited": 1563467161387729, - "lastEditedBy": "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", - "localEntity": false, - "locked": true, - "name": "Floor 3", - "position": { - "x": 14.78688907623291, - "y": -1.23642897605896, - "z": -70.46572875976562 - }, - "queryAACube": { - "scale": 7.449582099914551, - "x": 11.062097549438477, - "y": -4.961219787597656, - "z": -74.19052124023438 - }, - "rotation": { - "w": 0.6967726945877075, - "x": -0.6922560334205627, - "y": -0.1444571614265442, - "z": -0.12022584676742554 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "animation": { - "allowTranslation": false - }, - "avatarEntity": false, - "clientOnly": false, - "created": 1563418305015493, - "damping": 0, - "dimensions": { - "x": 2.185603141784668, - "y": 1.0729032754898071, - "z": 0.7190596461296082 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{a7fb6cb2-2838-4d87-a5f7-1c10cd14a472}", - "isFacingAvatar": false, - "lastEdited": 1563467280903467, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/Avatar-Toolbar/baked/Avatar-Toolbar.baked.fst", - "name": "Avatar", - "position": { - "x": 13.075835227966309, - "y": 0.29294848442077637, - "z": -74.93418884277344 - }, - "queryAACube": { - "scale": 2.5387063026428223, - "x": 11.806482315063477, - "y": -0.9764046669006348, - "z": -76.20354461669922 - }, - "rotation": { - "w": 0.40666818618774414, - "x": -7.62939453125e-05, - "y": 0.9135423898696899, - "z": -0.0001678466796875 - }, - "type": "Model" - }, - { - "angularDamping": 0, - "animation": { - "allowTranslation": false - }, - "avatarEntity": false, - "clientOnly": false, - "created": 1563418414952653, - "damping": 0, - "dimensions": { - "x": 2.185603141784668, - "y": 1.0729032754898071, - "z": 0.7190596461296082 - }, - "faceCamera": false, - "grab": { - "equippableLeftRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "equippableRightRotation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "grabbable": false - }, - "id": "{828ba18a-8ce4-4ad6-8583-9281580bb35c}", - "isFacingAvatar": false, - "lastEdited": 1563467280904188, - "lastEditedBy": "{d64a89a8-8afe-4459-8aa8-497e782083a3}", - "localEntity": false, - "locked": true, - "modelURL": "https://content.highfidelity.com/welcome-tutorial/v1/baked/Toolbar-Toolbar2/baked/Toolbar-Toolbar2.baked.fst", - "name": "Toolbar", - "position": { - "x": 11.481505393981934, - "y": 0.29294848442077637, - "z": -76.84197235107422 - }, - "queryAACube": { - "scale": 2.5387063026428223, - "x": 10.212152481079102, - "y": -0.9764046669006348, - "z": -78.111328125 - }, - "rotation": { - "w": 0.15632867813110352, - "x": -4.57763671875e-05, - "y": 0.9877011775970459, - "z": -0.0002593994140625 - }, - "type": "Model" - } - ], - "Id": "{5807d519-eb7d-496d-b22a-0820811291c9}", - "Version": 120 + "DataVersion" : 3, + "Paths" : { + "/" : "/8.65411,-1.12434,-71.5262/0,0.992481,0,-0.122401" + }, + "Id" : "{5807d519-eb7d-496d-b22a-0820811291c9}", + "Entities" : [ + { + "lastEdited" : 1563467280904634, + "userData" : "{\"soundURL\":\"https://content.highfidelity.com/welcome-tutorial/v1/audio/birdsongLoop_1.wav\",\"shouldLoop\":true,\"volume\":0.05,\"refreshInterval\":450,\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "created" : 1491937656000000, + "avatarEntity" : false, + "visible" : false, + "locked" : true, + "description" : "Specify URL to your 48K 16bit PCM wav file & volume (0-1) in userData below", + "name" : "Sound Emitter - Birdsong", + "clientOnly" : false, + "isFacingAvatar" : false, + "id" : "{244f908e-3dba-4019-9a93-2b8441d5d24f}", + "script" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/Experiences/Releases/usefulUtilities/soundEmitter/v1.2/soundEmitter.js", + "position" : { + "z" : -75.7442398071289, + "x" : -2.53924036026001, + "y" : 7.26241779327393 + }, + "dimensions" : { + "z" : 0.265745967626572, + "y" : 0.643850207328796, + "x" : 0.644729435443878 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "queryAACube" : { + "z" : -76.2188034057617, + "scale" : 0.949125945568085, + "y" : 6.78785467147827, + "x" : -3.01380324363708 + }, + "localEntity" : false, + "type" : "Model", + "grab" : { + "grabbable" : false + }, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/speakerGizmo/baked/speakerGizmo.baked.fst", + "rotation" : { + "y" : -0.833829283714294, + "x" : -1.52587890625e-05, + "z" : -4.57763671875e-05, + "w" : -0.552086710929871 + } + }, + { + "id" : "{dd9b17d3-9597-4e6f-be4c-267e33715438}", + "position" : { + "y" : -1.22787928581238, + "x" : 10.5128936767578, + "z" : -70.1580810546875 + }, + "dimensions" : { + "x" : 0.029263636097312, + "y" : 0.207408934831619, + "z" : 0.359697878360748 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "localEntity" : false, + "type" : "Box", + "queryAACube" : { + "z" : -70.3662033081055, + "y" : -1.43600034713745, + "x" : 10.3047723770142, + "scale" : 0.416242003440857 + }, + "rotation" : { + "y" : -0.412588715553284, + "x" : -4.57763671875e-05, + "z" : -0.0001373291015625, + "w" : 0.910887360572815 + }, + "damping" : 0, + "color" : { + "blue" : 239, + "red" : 0, + "green" : 180 + }, + "grab" : { + "grabbable" : false + }, + "lastEdited" : 1563467280907087, + "shape" : "Cube", + "faceCamera" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "angularDamping" : 0, + "visible" : false, + "avatarEntity" : false, + "created" : 1554398611144450, + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "mirror-line", + "locked" : true + }, + { + "locked" : true, + "description" : "Specify URL to your 48K 16bit PCM wav file & volume (0-1) in userData below", + "name" : "Sound Emitter-creak", + "isFacingAvatar" : false, + "clientOnly" : false, + "created" : 1492535214000000, + "avatarEntity" : false, + "visible" : false, + "userData" : "{\"soundURL\":\"https://content.highfidelity.com/welcome-tutorial/v1/audio/woodCreaking.wav\",\"shouldLoop\":true,\"volume\":0.08,\"refreshInterval\":100,\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "lastEdited" : 1563467280904018, + "grab" : { + "grabbable" : false + }, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/speakerGizmo/baked/speakerGizmo.baked.fst", + "rotation" : { + "x" : -0.670618772506714, + "y" : -0.670588254928589, + "z" : -0.224322855472565, + "w" : 0.224292397499085 + }, + "queryAACube" : { + "scale" : 0.949125945568085, + "x" : 6.85955142974854, + "y" : 4.84591627120972, + "z" : -97.3700637817383 + }, + "type" : "Model", + "localEntity" : false, + "script" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/Experiences/Releases/usefulUtilities/soundEmitter/v1.2/soundEmitter.js", + "position" : { + "z" : -96.8955001831055, + "y" : 5.32047939300537, + "x" : 7.33411455154419 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "z" : 0.265745967626572, + "y" : 0.643850207328796, + "x" : 0.644729435443878 + }, + "id" : "{929efcf1-65b3-4837-81a7-8fff63f5ee5f}" + }, + { + "lastEdited" : 1563467280902702, + "userData" : "{\"soundURL\":\"https://content.highfidelity.com/welcome-tutorial/v1/audio/woodCreaking.wav\",\"shouldLoop\":true,\"volume\":0.02,\"refreshInterval\":200,\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "created" : 1492535214000000, + "avatarEntity" : false, + "visible" : false, + "locked" : true, + "description" : "Specify URL to your 48K 16bit PCM wav file & volume (0-1) in userData below", + "name" : "Sound Emitter-creak", + "isFacingAvatar" : false, + "clientOnly" : false, + "id" : "{b51cccd1-8097-4a6d-a275-19065c3aae1e}", + "script" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/Experiences/Releases/usefulUtilities/soundEmitter/v1.2/soundEmitter.js", + "position" : { + "y" : 16.4150047302246, + "x" : 5.05419635772705, + "z" : -97.93896484375 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "z" : 0.265745967626572, + "y" : 0.643850207328796, + "x" : 0.644729435443878 + }, + "queryAACube" : { + "z" : -98.4135284423828, + "x" : 4.5796332359314, + "y" : 15.9404420852661, + "scale" : 0.949125945568085 + }, + "localEntity" : false, + "type" : "Model", + "grab" : { + "grabbable" : false + }, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/speakerGizmo/baked/speakerGizmo.baked.fst", + "rotation" : { + "z" : -0.224322855472565, + "w" : 0.224231362342835, + "y" : -0.670588254928589, + "x" : -0.670618772506714 + } + }, + { + "rotation" : { + "z" : -1.52587890625e-05, + "w" : 0.908689975738525, + "y" : -0.417471587657929, + "x" : -4.57763671875e-05 + }, + "grab" : { + "grabbable" : false + }, + "color" : { + "blue" : 239, + "red" : 0, + "green" : 180 + }, + "damping" : 0, + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "y" : 0.199370145797729, + "x" : 4.48069953918457, + "scale" : 1.80769753456116, + "z" : -70.1115341186523 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "x" : 5.38454818725586, + "y" : 1.10321891307831, + "z" : -69.2076873779297 + }, + "dimensions" : { + "y" : 0.511897504329681, + "x" : 1.72212982177734, + "z" : 0.200000002980232 + }, + "id" : "{59862a4c-c2c3-44ea-8873-a93f45a381d6}", + "name" : "collision", + "clientOnly" : false, + "isFacingAvatar" : false, + "locked" : true, + "visible" : false, + "created" : 1554511218349438, + "avatarEntity" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "shape" : "Cube", + "faceCamera" : false, + "angularDamping" : 0, + "lastEdited" : 1563467280913956 + }, + { + "angularDamping" : 0, + "shape" : "Cube", + "faceCamera" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "lastEdited" : 1563467280913169, + "locked" : true, + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "collision", + "avatarEntity" : false, + "created" : 1554511017957088, + "visible" : false, + "position" : { + "z" : -77.5098724365234, + "y" : 1.05879926681519, + "x" : 9.03479671478271 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "y" : 0.553324699401855, + "x" : 1.97627317905426, + "z" : 0.200000002980232 + }, + "id" : "{67bb6524-3d7f-4c8a-98e8-2fe12577345e}", + "damping" : 0, + "grab" : { + "equippableLeftRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + }, + "grabbable" : false, + "equippableRightRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + } + }, + "color" : { + "blue" : 239, + "red" : 0, + "green" : 180 + }, + "rotation" : { + "w" : 0.9993896484375, + "z" : -4.57763671875e-05, + "x" : -4.57763671875e-05, + "y" : 0.0348668098449707 + }, + "queryAACube" : { + "scale" : 2.06199502944946, + "y" : 0.0278017520904541, + "x" : 8.00379943847656, + "z" : -78.5408706665039 + }, + "type" : "Box", + "localEntity" : false + }, + { + "angularDamping" : 0, + "faceCamera" : false, + "lastEdited" : 1563467161318995, + "locked" : true, + "clientOnly" : false, + "isFacingAvatar" : false, + "avatarEntity" : false, + "created" : 1563414490548879, + "dimensions" : { + "y" : 0.00100000004749745, + "x" : 1, + "z" : 0.499999940395355 + }, + "position" : { + "z" : -73.1321182250977, + "x" : 13.6582860946655, + "y" : 1.33644700050354 + }, + "lastEditedBy" : "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", + "id" : "{51495c3d-f585-4616-b262-93fcb50e0840}", + "animation" : { + "allowTranslation" : false + }, + "damping" : 0, + "grab" : { + "grabbable" : false + }, + "rotation" : { + "z" : 0.472800850868225, + "w" : 0.525169730186462, + "y" : -0.47420459985733, + "x" : 0.525108695030212 + }, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/mirrorsign4/baked/mirrorsign4.baked.fst", + "queryAACube" : { + "z" : -73.6911315917969, + "x" : 13.099268913269, + "y" : 0.777429819107056, + "scale" : 1.11803436279297 + }, + "localEntity" : false, + "type" : "Model" + }, + { + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "Sound Emitter-creak", + "description" : "Specify URL to your 48K 16bit PCM wav file & volume (0-1) in userData below", + "locked" : true, + "visible" : false, + "avatarEntity" : false, + "created" : 1492535345000000, + "faceCamera" : false, + "userData" : "{\"soundURL\":\"https://content.highfidelity.com/welcome-tutorial/v1/audio/woodCreaking.wav\",\"shouldLoop\": true,\"volume\":0.03,\"refreshInterval\":100,\"grabbableKey\":{\"grabbable\":false}}", + "lastEdited" : 1563467280904481, + "rotation" : { + "x" : -0.670618772506714, + "y" : -0.670588254928589, + "z" : -0.224322855472565, + "w" : 0.224231362342835 + }, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/speakerGizmo/baked/speakerGizmo.baked.fst", + "grab" : { + "grabbable" : false + }, + "localEntity" : false, + "type" : "Model", + "queryAACube" : { + "z" : -77.2006759643555, + "y" : 3.83408761024475, + "x" : 25.1212635040283, + "scale" : 0.949125945568085 + }, + "script" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/Experiences/Releases/usefulUtilities/soundEmitter/v1.2/soundEmitter.js", + "position" : { + "z" : -76.7261123657227, + "x" : 25.5958271026611, + "y" : 4.30865049362183 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "z" : 0.265745967626572, + "x" : 0.644729435443878, + "y" : 0.643850207328796 + }, + "id" : "{3e08bc1b-6a47-4fcf-b695-2de7973db6ac}" + }, + { + "visible" : false, + "avatarEntity" : false, + "created" : 1491937656000000, + "isFacingAvatar" : false, + "clientOnly" : false, + "name" : "Sound Emitter - Birdsong", + "description" : "Specify URL to your 48K 16bit PCM wav file & volume (0-1) in userData below", + "locked" : true, + "lastEdited" : 1563467280902026, + "faceCamera" : false, + "userData" : "{\"soundURL\":\"https://content.highfidelity.com/welcome-tutorial/v1/audio/birdsongLoop_1.wav\",\"shouldLoop\":true,\"volume\":0.05,\"refreshInterval\":250,\"grabbableKey\":{\"grabbable\":false}}", + "localEntity" : false, + "type" : "Model", + "queryAACube" : { + "y" : 3.05739665031433, + "x" : 23.9913959503174, + "scale" : 0.949125945568085, + "z" : -70.7175140380859 + }, + "rotation" : { + "z" : -1.52587890625e-05, + "w" : 0.317189335823059, + "y" : -0.948363482952118, + "x" : -1.52587890625e-05 + }, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/speakerGizmo/baked/speakerGizmo.baked.fst", + "grab" : { + "grabbable" : false + }, + "id" : "{e8a67ca6-652a-464b-bf8b-aee92a44ccc7}", + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "script" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/Experiences/Releases/usefulUtilities/soundEmitter/v1.2/soundEmitter.js", + "position" : { + "z" : -70.2429504394531, + "x" : 24.4659595489502, + "y" : 3.53195953369141 + }, + "dimensions" : { + "z" : 0.265745967626572, + "x" : 0.644729435443878, + "y" : 0.643850207328796 + } + }, + { + "script" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/Experiences/Releases/usefulUtilities/soundEmitter/v1.2/soundEmitter.js", + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "z" : -105.299896240234, + "y" : 5.30751848220825, + "x" : 44.9711608886719 + }, + "dimensions" : { + "z" : 0.265745967626572, + "y" : 0.643850207328796, + "x" : 0.644729435443878 + }, + "id" : "{b76eee5f-2605-447b-b4c6-5360afdf61f8}", + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/speakerGizmo/baked/speakerGizmo.baked.fst", + "rotation" : { + "x" : -1.52587890625e-05, + "y" : -0.948424518108368, + "z" : -1.52587890625e-05, + "w" : 0.317067265510559 + }, + "grab" : { + "grabbable" : false + }, + "type" : "Model", + "localEntity" : false, + "queryAACube" : { + "scale" : 0.949125945568085, + "y" : 4.8329553604126, + "x" : 44.4965972900391, + "z" : -105.774459838867 + }, + "userData" : "{\"soundURL\":\"https://content.highfidelity.com/welcome-tutorial/v1/audio/cicadasLoop_1.wav\",\"shouldLoop\":true,\"volume\":0.01,\"refreshInterval\":100,\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "lastEdited" : 1563467280902542, + "name" : "Sound Emitter - cicada", + "clientOnly" : false, + "isFacingAvatar" : false, + "locked" : true, + "description" : "Specify URL to your 48K 16bit PCM wav file & volume (0-1) in userData below", + "visible" : false, + "created" : 1527026155000000, + "avatarEntity" : false + }, + { + "rotation" : { + "y" : -1, + "x" : -1.52587890625e-05, + "w" : -1.52587890625e-05, + "z" : -1.52587890625e-05 + }, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/speakerGizmo/baked/speakerGizmo.baked.fst", + "grab" : { + "grabbable" : false + }, + "type" : "Model", + "localEntity" : false, + "queryAACube" : { + "scale" : 0.949125945568085, + "y" : 0.930212140083313, + "x" : 36.840389251709, + "z" : -52.5417938232422 + }, + "script" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/Experiences/Releases/usefulUtilities/soundEmitter/v1.2/soundEmitter.js", + "position" : { + "x" : 37.3149528503418, + "y" : 1.40477514266968, + "z" : -52.0672302246094 + }, + "dimensions" : { + "z" : 0.265745967626572, + "y" : 0.643850207328796, + "x" : 0.644729435443878 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "id" : "{b22f3234-4db4-4480-bb7d-b76e3b007429}", + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "Sound Emitter - Crickets", + "description" : "Specify URL to your 48K 16bit PCM wav file & volume (0-1) in userData below", + "locked" : true, + "visible" : false, + "avatarEntity" : false, + "created" : 1487019835000000, + "faceCamera" : false, + "userData" : "{\"soundURL\":\"https://content.highfidelity.com/welcome-tutorial/v1/audio/Mod_CCBY_253664__cliftonmcarlson__night-ambience-w-crickets.wav\",\"shouldLoop\":true,\"volume\":0.03,\"refreshInterval\":100,\"grabbableKey\":{\"grabbable\":false}}", + "lastEdited" : 1563467280903131 + }, + { + "keyLightMode" : "enabled", + "rotation" : { + "y" : 0.848050713539124, + "x" : -4.57763671875e-05, + "z" : -7.62939453125e-05, + "w" : 0.529900074005127 + }, + "id" : "{1208ab36-f406-4e64-88cc-cc9f481265b4}", + "keyLight" : { + "direction" : { + "x" : 0.614018678665161, + "y" : -0.371367961168289, + "z" : -0.696467518806458 + }, + "castShadows" : true, + "intensity" : 1.79999995231628, + "color" : { + "blue" : 102, + "green" : 171, + "red" : 255 + } + }, + "position" : { + "z" : 1015.48980712891, + "x" : -894.226806640625, + "y" : 246.826461791992 + }, + "created" : 1501265920000000, + "skybox" : { + "url" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/Sky_Day-Sun-Mid-photo.texmeta.json" + }, + "locked" : true, + "name" : "MakerZone", + "clientOnly" : false, + "isFacingAvatar" : false, + "ambientLight" : { + "ambientURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/canyon1.texmeta.json", + "ambientIntensity" : 1 + }, + "queryAACube" : { + "z" : -3314.63720703125, + "scale" : 8660.25390625, + "y" : -4083.30053710938, + "x" : -5224.353515625 + }, + "localEntity" : false, + "type" : "Zone", + "grab" : { + "equippableRightRotation" : { + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 1 + }, + "grabbable" : false, + "equippableLeftRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + } + }, + "skyboxMode" : "enabled", + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "x" : 5000, + "y" : 5000, + "z" : 5000 + }, + "ambientLightMode" : "enabled", + "bloomMode" : "enabled", + "avatarEntity" : false, + "hazeMode" : "enabled", + "shapeType" : "box", + "lastEdited" : 1563467280901626, + "haze" : { + "hazeBackgroundBlend" : 0.850000023841858, + "hazeGlareAngle" : 59, + "hazeColor" : { + "red" : 85, + "green" : 79, + "blue" : 255 + }, + "hazeGlareColor" : { + "blue" : 97, + "red" : 255, + "green" : 200 + }, + "hazeEnableGlare" : true, + "hazeRange" : 2000 + }, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false + }, + { + "cutoff" : 74.3099975585938, + "id" : "{90e36d2d-9482-4f51-abe7-1592b75df999}", + "falloffRadius" : 20, + "position" : { + "z" : -70.2505722045898, + "y" : 1.03024685382843, + "x" : 9.55356979370117 + }, + "rotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + }, + "intensity" : 0.5, + "exponent" : 1, + "visible" : false, + "created" : 1550188725428410, + "clientOnly" : false, + "isFacingAvatar" : false, + "locked" : true, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "z" : 22.4414501190186, + "y" : 22.4414501190186, + "x" : 22.4414501190186 + }, + "localEntity" : false, + "type" : "Light", + "queryAACube" : { + "y" : -18.4046192169189, + "x" : -9.88129615783691, + "scale" : 38.8697319030762, + "z" : -89.6854400634766 + }, + "grab" : { + "grabbable" : false + }, + "damping" : 0, + "lastEdited" : 1563467280905058, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "angularDamping" : 0, + "avatarEntity" : false + }, + { + "collidesWith" : "", + "avatarEntity" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false,\"ignoreIK\":false},\"original\":{\"id\":\"{6291b4e5-0dcb-484c-9c11-fe47725a4ad8}\"}}", + "faceCamera" : false, + "ignoreForCollisions" : true, + "lastEdited" : 1563467280903614, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/baked/avatar_island/mirror_without_backface/baked/mirror_without_backface.baked.fbx", + "grab" : { + "grabbable" : false, + "equippableLeftRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 1 + }, + "equippableRightRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + }, + "grabFollowsController" : false + }, + "type" : "Model", + "localEntity" : false, + "queryAACube" : { + "y" : -1.53579545021057, + "x" : 10.6800403594971, + "scale" : 4.37265777587891, + "z" : -74.9123611450195 + }, + "dimensions" : { + "z" : 0.00999999977648258, + "x" : 1.24723851680756, + "y" : 1.94589471817017 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "name" : "mirror_reflectingPlane", + "collisionMask" : 0, + "isFacingAvatar" : false, + "clientOnly" : false, + "locked" : true, + "created" : 1550543327085605, + "collisionless" : true, + "rotation" : { + "x" : 1.52587890625e-05, + "y" : 0.669581174850464, + "w" : -0.742732882499695, + "z" : 0.0009918212890625 + }, + "scriptTimestamp" : 1539903100303, + "script" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/Experiences/Releases/usefulUtilities/mirror/2019-07-24_09-18-00/mirrorClient.js", + "position" : { + "z" : -73.1384811401367, + "y" : 0.163690328598022, + "x" : 13.6597347259521 + }, + "id" : "{93a7d1d0-8ed1-4274-89f5-1782a1866182}" + }, + { + "userData" : "{\n \"grabbableKey\": {\n \"grabbable\": false\n },\n \"original\": {\n \"id\": \"{da1e2fcd-d69b-47d7-b861-25b31f1c7175}\"\n }\n}", + "faceCamera" : false, + "shapeType" : "box", + "lastEdited" : 1563467280901248, + "locked" : true, + "name" : "mirror_zone", + "clientOnly" : false, + "isFacingAvatar" : false, + "created" : 1550543327086377, + "avatarEntity" : false, + "visible" : false, + "position" : { + "x" : 0.0378328561782837, + "y" : 0.192900612950325, + "z" : 0.689647674560547 + }, + "script" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/Experiences/Releases/usefulUtilities/mirror/2019-07-24_09-18-00/mirrorReflection.js", + "dimensions" : { + "z" : 1.52090787887573, + "y" : 3.15318441390991, + "x" : 1.27545118331909 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "id" : "{37eeb45f-18e6-4f09-9a12-7fc724bc3207}", + "parentID" : "{93a7d1d0-8ed1-4274-89f5-1782a1866182}", + "grab" : { + "equippableRightRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + }, + "equippableLeftRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + }, + "grabbable" : false + }, + "scriptTimestamp" : 1512087165095, + "rotation" : { + "z" : -0.00642406940460205, + "w" : 0.999847412109375, + "y" : 1.52587890625e-05, + "x" : -0.0161592960357666 + }, + "queryAACube" : { + "z" : -74.8923034667969, + "scale" : 3.81304359436035, + "y" : -1.50549459457397, + "x" : 11.1149911880493 + }, + "localEntity" : false, + "type" : "Zone" + }, + { + "name" : "floor1", + "clientOnly" : false, + "isFacingAvatar" : false, + "locked" : true, + "visible" : false, + "created" : 1554335801064392, + "avatarEntity" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "shape" : "Cube", + "faceCamera" : false, + "angularDamping" : 0, + "lastEdited" : 1563467161380716, + "rotation" : { + "y" : -0.839139401912689, + "x" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 0.543907880783081 + }, + "grab" : { + "equippableLeftRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + }, + "grabbable" : false, + "equippableRightRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + } + }, + "color" : { + "blue" : 239, + "red" : 0, + "green" : 180 + }, + "damping" : 0, + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "z" : -84.0964431762695, + "y" : -12.8395652770996, + "x" : -1.77571296691895, + "scale" : 22.4300689697266 + }, + "position" : { + "z" : -72.8814086914062, + "x" : 9.43932151794434, + "y" : -1.62453043460846 + }, + "dimensions" : { + "z" : 18.0920639038086, + "y" : 1.00034618377686, + "x" : 13.2206115722656 + }, + "lastEditedBy" : "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", + "id" : "{6cf8ef1e-a6f1-4513-95f1-325cbe7ccea6}" + }, + { + "avatarEntity" : false, + "created" : 1554393775402859, + "locked" : true, + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "Welcome Pod", + "lastEdited" : 1563467161380875, + "collisionless" : true, + "ignoreForCollisions" : true, + "faceCamera" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "queryAACube" : { + "x" : 3.18386077880859, + "y" : -9.34044933319092, + "scale" : 21.4645824432373, + "z" : -81.517219543457 + }, + "localEntity" : false, + "type" : "Model", + "grab" : { + "grabbable" : false, + "equippableLeftRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + }, + "equippableRightRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + } + }, + "rotation" : { + "x" : -4.57763671875e-05, + "y" : -0.983245611190796, + "z" : 1.52587890625e-05, + "w" : -0.182391107082367 + }, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/welcome-pod2/baked/welcome-pod2.baked.fst", + "id" : "{fd11ca60-bcb9-419c-97de-f62829c0a90f}", + "lastEditedBy" : "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", + "position" : { + "z" : -70.7849273681641, + "x" : 13.9161520004272, + "y" : 1.39184165000916 + }, + "dimensions" : { + "y" : 5.47576236724854, + "x" : 17.2584285736084, + "z" : 11.52783203125 + } + }, + { + "rotation" : { + "x" : -0.983794927597046, + "y" : -0.0001373291015625, + "z" : -0.179400324821472, + "w" : -0.0002288818359375 + }, + "damping" : 0, + "grab" : { + "grabbable" : false, + "equippableLeftRotation" : { + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + }, + "equippableRightRotation" : { + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + } + }, + "color" : { + "blue" : 239, + "green" : 180, + "red" : 0 + }, + "localEntity" : false, + "type" : "Box", + "queryAACube" : { + "y" : -1.76107966899872, + "x" : 12.0538158416748, + "scale" : 5.60278701782227, + "z" : -71.54931640625 + }, + "dimensions" : { + "x" : 3.85215950012207, + "y" : 4.06350708007812, + "z" : 0.200000002980232 + }, + "position" : { + "x" : 14.8552093505859, + "y" : 1.04031383991241, + "z" : -68.7479248046875 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "id" : "{e0c24c12-89bc-42f6-8361-d78d41b165b6}", + "isFacingAvatar" : false, + "clientOnly" : false, + "name" : "collision-wall", + "locked" : true, + "visible" : false, + "avatarEntity" : false, + "created" : 1554395164594013, + "faceCamera" : false, + "shape" : "Cube", + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "angularDamping" : 0, + "lastEdited" : 1563467280906743 + }, + { + "visible" : false, + "created" : 1554395344119426, + "avatarEntity" : false, + "name" : "collision-back-wall", + "clientOnly" : false, + "isFacingAvatar" : false, + "locked" : true, + "lastEdited" : 1563467280915845, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "shape" : "Cube", + "angularDamping" : 0, + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "z" : -79.6852951049805, + "y" : -5.25528049468994, + "x" : 0.406087875366211, + "scale" : 12.3394050598145 + }, + "rotation" : { + "y" : 0.573540806770325, + "x" : -1.52587890625e-05, + "z" : -7.62939453125e-05, + "w" : 0.81915009021759 + }, + "grab" : { + "equippableRightRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + }, + "equippableLeftRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + }, + "grabbable" : false + }, + "color" : { + "red" : 0, + "green" : 180, + "blue" : 239 + }, + "damping" : 0, + "id" : "{0d82371a-af0e-4f10-9f6a-fb50a3b619cd}", + "position" : { + "z" : -73.5155944824219, + "y" : 0.914422273635864, + "x" : 6.57579040527344 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "z" : 0.200000002980232, + "y" : 4.06350708007812, + "x" : 11.6494140625 + } + }, + { + "grab" : { + "grabbable" : false, + "equippableLeftRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + }, + "equippableRightRotation" : { + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 1 + } + }, + "color" : { + "blue" : 239, + "red" : 0, + "green" : 180 + }, + "damping" : 0, + "rotation" : { + "y" : -0.604852378368378, + "x" : -0.0001373291015625, + "w" : 0.796353101730347, + "z" : -1.52587890625e-05 + }, + "queryAACube" : { + "z" : -76.779182434082, + "x" : 10.8147144317627, + "y" : -1.76150679588318, + "scale" : 5.60278701782227 + }, + "type" : "Box", + "localEntity" : false, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "x" : 13.6161079406738, + "y" : 1.03988671302795, + "z" : -73.9777908325195 + }, + "dimensions" : { + "y" : 4.06350708007812, + "x" : 3.85215950012207, + "z" : 0.200000002980232 + }, + "id" : "{f26146a8-0939-46fd-9905-092698513b37}", + "locked" : true, + "name" : "collision-wall", + "clientOnly" : false, + "isFacingAvatar" : false, + "created" : 1554395384473246, + "avatarEntity" : false, + "visible" : false, + "angularDamping" : 0, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "shape" : "Cube", + "faceCamera" : false, + "lastEdited" : 1563467280906345 + }, + { + "locked" : true, + "name" : "collision-wall", + "clientOnly" : false, + "isFacingAvatar" : false, + "created" : 1554395384473299, + "avatarEntity" : false, + "visible" : false, + "angularDamping" : 0, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "shape" : "Cube", + "lastEdited" : 1563467280907275, + "color" : { + "blue" : 239, + "green" : 180, + "red" : 0 + }, + "grab" : { + "grabbable" : false, + "equippableLeftRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + }, + "equippableRightRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + } + }, + "damping" : 0, + "rotation" : { + "w" : 0.955382585525513, + "z" : -4.57763671875e-05, + "x" : -7.62939453125e-05, + "y" : -0.295368909835815 + }, + "queryAACube" : { + "y" : -2.60467767715454, + "x" : 7.02946090698242, + "scale" : 7.28881216049194, + "z" : -81.1098709106445 + }, + "localEntity" : false, + "type" : "Box", + "position" : { + "z" : -77.465461730957, + "y" : 1.03972840309143, + "x" : 10.673867225647 + }, + "dimensions" : { + "z" : 0.200000002980232, + "y" : 4.06350708007812, + "x" : 6.04770183563232 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "id" : "{db6d648e-d172-4d15-b514-7dcc07af3c36}" + }, + { + "id" : "{61691f41-dc63-493d-ab8b-3495d7a9c14d}", + "position" : { + "z" : -68.3599395751953, + "y" : 1.03988659381866, + "x" : 11.4482822418213 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "z" : 0.200000002980232, + "y" : 4.06350708007812, + "x" : 3.85215950012207 + }, + "queryAACube" : { + "y" : -1.76150691509247, + "x" : 8.64688873291016, + "scale" : 5.60278701782227, + "z" : -71.1613311767578 + }, + "type" : "Box", + "localEntity" : false, + "color" : { + "green" : 180, + "red" : 0, + "blue" : 239 + }, + "grab" : { + "grabbable" : false, + "equippableLeftRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + }, + "equippableRightRotation" : { + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 1 + } + }, + "damping" : 0, + "rotation" : { + "w" : -0.0002288818359375, + "z" : 0.253345489501953, + "x" : -0.967376232147217, + "y" : -1.52587890625e-05 + }, + "lastEdited" : 1563467280913477, + "angularDamping" : 0, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "shape" : "Cube", + "faceCamera" : false, + "created" : 1554395475622460, + "avatarEntity" : false, + "visible" : false, + "locked" : true, + "name" : "collision-wall", + "isFacingAvatar" : false, + "clientOnly" : false + }, + { + "visible" : false, + "created" : 1554395498113470, + "avatarEntity" : false, + "name" : "collision-wall", + "clientOnly" : false, + "isFacingAvatar" : false, + "locked" : true, + "lastEdited" : 1563467280912614, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "shape" : "Cube", + "faceCamera" : false, + "angularDamping" : 0, + "localEntity" : false, + "type" : "Box", + "queryAACube" : { + "z" : -74.2722549438477, + "scale" : 5.60278701782227, + "y" : -1.76223933696747, + "x" : 13.0810613632202 + }, + "rotation" : { + "x" : -0.983794927597046, + "y" : -0.0001373291015625, + "z" : -0.179400324821472, + "w" : -0.0002288818359375 + }, + "color" : { + "green" : 180, + "red" : 0, + "blue" : 239 + }, + "grab" : { + "equippableRightRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + }, + "equippableLeftRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + }, + "grabbable" : false + }, + "damping" : 0, + "id" : "{77de053d-5020-4fa0-b9aa-d627db7c9d39}", + "dimensions" : { + "y" : 4.06350708007812, + "x" : 3.85215950012207, + "z" : 0.200000002980232 + }, + "position" : { + "z" : -71.4708633422852, + "x" : 15.8824548721313, + "y" : 1.03915417194366 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}" + }, + { + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "z" : -72.8260269165039, + "scale" : 8.32946872711182, + "x" : 15.3140735626221, + "y" : -5.31782722473145 + }, + "rotation" : { + "z" : -0.12922865152359, + "w" : 0.695124745368958, + "y" : -0.129198133945465, + "x" : -0.695277333259583 + }, + "damping" : 0, + "grab" : { + "equippableRightRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + }, + "equippableLeftRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + }, + "grabbable" : false + }, + "color" : { + "blue" : 239, + "green" : 180, + "red" : 0 + }, + "id" : "{49ffcb7c-b104-402f-8ba0-d2e680945938}", + "position" : { + "x" : 19.4788074493408, + "y" : -1.15309309959412, + "z" : -68.6612930297852 + }, + "lastEditedBy" : "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", + "dimensions" : { + "z" : 0.297333061695099, + "x" : 5.72687149047852, + "y" : 6.04107475280762 + }, + "visible" : false, + "avatarEntity" : false, + "created" : 1554395615309489, + "isFacingAvatar" : false, + "clientOnly" : false, + "name" : "Floor 3", + "locked" : true, + "lastEdited" : 1563467161381977, + "shape" : "Cube", + "faceCamera" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "angularDamping" : 0 + }, + { + "position" : { + "y" : 1.04101324081421, + "x" : 21.8604030609131, + "z" : -69.7789840698242 + }, + "dimensions" : { + "y" : 4.06350708007812, + "x" : 4.61484479904175, + "z" : 0.200000002980232 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "id" : "{9cbd2b0f-13e4-428a-b153-4187414deec4}", + "rotation" : { + "x" : 0.0002288818359375, + "y" : 0.551262736320496, + "z" : 0.0001068115234375, + "w" : -0.834348082542419 + }, + "grab" : { + "grabbable" : false, + "equippableLeftRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 1 + }, + "equippableRightRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + } + }, + "color" : { + "green" : 180, + "red" : 0, + "blue" : 239 + }, + "damping" : 0, + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "z" : -72.8550567626953, + "scale" : 6.15214490890503, + "x" : 18.784330368042, + "y" : -2.03505921363831 + }, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "shape" : "Cube", + "faceCamera" : false, + "angularDamping" : 0, + "lastEdited" : 1563467280908789, + "name" : "collision-wall", + "clientOnly" : false, + "isFacingAvatar" : false, + "locked" : true, + "visible" : false, + "created" : 1554395687275829, + "avatarEntity" : false + }, + { + "locked" : true, + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "collision-wall", + "avatarEntity" : false, + "created" : 1554395719818630, + "visible" : false, + "angularDamping" : 0, + "faceCamera" : false, + "shape" : "Cube", + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "lastEdited" : 1563467280908308, + "damping" : 0, + "grab" : { + "equippableRightRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + }, + "grabbable" : false, + "equippableLeftRotation" : { + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 1 + } + }, + "color" : { + "blue" : 239, + "red" : 0, + "green" : 180 + }, + "rotation" : { + "w" : -0.968749523162842, + "z" : 0.0529335737228394, + "y" : 0.143083810806274, + "x" : 0.195574879646301 + }, + "queryAACube" : { + "scale" : 5.35952091217041, + "y" : -1.1779203414917, + "x" : 17.6002941131592, + "z" : -74.9265213012695 + }, + "localEntity" : false, + "type" : "Box", + "position" : { + "z" : -72.2467575073242, + "x" : 20.2800540924072, + "y" : 1.50184011459351 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "y" : 4.59025430679321, + "x" : 2.75935339927673, + "z" : 0.200000002980232 + }, + "id" : "{a1dc9796-400b-4672-b20f-c77786a73c11}" + }, + { + "visible" : false, + "avatarEntity" : false, + "created" : 1554395749978274, + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "collision-wall", + "locked" : true, + "lastEdited" : 1563467280906922, + "faceCamera" : false, + "shape" : "Cube", + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "angularDamping" : 0, + "localEntity" : false, + "type" : "Box", + "queryAACube" : { + "y" : -2.10523843765259, + "x" : 17.521858215332, + "scale" : 6.29555177688599, + "z" : -69.5901260375977 + }, + "rotation" : { + "x" : -0.967742443084717, + "y" : -4.57763671875e-05, + "z" : 0.251941680908203, + "w" : -0.0003204345703125 + }, + "damping" : 0, + "color" : { + "green" : 180, + "red" : 0, + "blue" : 239 + }, + "grab" : { + "equippableRightRotation" : { + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 1 + }, + "grabbable" : false, + "equippableLeftRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + } + }, + "id" : "{dfda3708-5e09-45de-9be2-0cc256fdda3a}", + "dimensions" : { + "z" : 0.200000002980232, + "x" : 4.80436086654663, + "y" : 4.06350708007812 + }, + "position" : { + "x" : 20.6696338653564, + "y" : 1.04253745079041, + "z" : -66.4423522949219 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}" + }, + { + "visible" : false, + "avatarEntity" : false, + "created" : 1554395749983396, + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "collision-wall", + "locked" : true, + "lastEdited" : 1563467280915515, + "faceCamera" : false, + "shape" : "Cube", + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "angularDamping" : 0, + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "y" : -1.57596778869629, + "x" : 14.0766248703003, + "scale" : 4.64225244522095, + "z" : -69.2001419067383 + }, + "rotation" : { + "z" : -0.402456700801849, + "w" : 0.196459889411926, + "y" : -0.0895857214927673, + "x" : -0.889616250991821 + }, + "damping" : 0, + "grab" : { + "equippableRightRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + }, + "grabbable" : false, + "equippableLeftRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + } + }, + "color" : { + "green" : 180, + "red" : 0, + "blue" : 239 + }, + "id" : "{26d0c15b-8a58-48c2-b1e8-0b04a529505f}", + "position" : { + "z" : -66.8790130615234, + "x" : 16.3977508544922, + "y" : 0.74515837430954 + }, + "dimensions" : { + "z" : 0.200000002980232, + "x" : 2.23571395874023, + "y" : 4.06350708007812 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}" + }, + { + "rotation" : { + "x" : 1.52587890625e-05, + "y" : -0.998748779296875, + "w" : -0.0504921078681946, + "z" : 0.0001678466796875 + }, + "damping" : 0, + "grab" : { + "grabbable" : false, + "equippableLeftRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 1 + }, + "equippableRightRotation" : { + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 1 + } + }, + "color" : { + "blue" : 239, + "red" : 0, + "green" : 180 + }, + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "scale" : 7.32215023040771, + "x" : 3.47206211090088, + "y" : -2.62111926078796, + "z" : -71.3740081787109 + }, + "position" : { + "z" : -67.7129364013672, + "y" : 1.03995585441589, + "x" : 7.13313722610474 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "z" : 0.200000002980232, + "x" : 6.08783960342407, + "y" : 4.06350708007812 + }, + "id" : "{5d2ed50f-8b33-4bc7-9d0e-e639d5dd2357}", + "isFacingAvatar" : false, + "clientOnly" : false, + "name" : "collision-wall", + "locked" : true, + "visible" : false, + "avatarEntity" : false, + "created" : 1554395833155826, + "faceCamera" : false, + "shape" : "Cube", + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "angularDamping" : 0, + "lastEdited" : 1563467280913701 + }, + { + "name" : "roof", + "clientOnly" : false, + "isFacingAvatar" : false, + "locked" : true, + "visible" : false, + "created" : 1554397703510915, + "avatarEntity" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "shape" : "Cube", + "angularDamping" : 0, + "lastEdited" : 1563467280910975, + "rotation" : { + "w" : 0.543541669845581, + "z" : 0.0001373291015625, + "y" : -0.839383542537689, + "x" : -0.0003814697265625 + }, + "color" : { + "blue" : 239, + "green" : 180, + "red" : 0 + }, + "grab" : { + "equippableLeftRotation" : { + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + }, + "grabbable" : false, + "equippableRightRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + } + }, + "damping" : 0, + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "x" : 3.56753253936768, + "y" : -7.71006965637207, + "scale" : 22.4300689697266, + "z" : -81.7082824707031 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "z" : -70.4932479858398, + "y" : 3.50496506690979, + "x" : 14.782567024231 + }, + "dimensions" : { + "z" : 18.0920639038086, + "x" : 13.2206115722656, + "y" : 1.00034618377686 + }, + "id" : "{90901060-f216-447d-bbb9-8e43be6e90a6}" + }, + { + "dimensions" : { + "z" : 1.53122687339783, + "y" : 0.704573273658752, + "x" : 3.13571572303772 + }, + "position" : { + "z" : -71.0977249145508, + "y" : -0.750699162483215, + "x" : 19.5969181060791 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "id" : "{d1693fdd-f7dc-4dac-b8d4-d10090ad08fc}", + "rotation" : { + "z" : -4.57763671875e-05, + "w" : 0.999725341796875, + "y" : -0.0233920812606812, + "x" : -7.62939453125e-05 + }, + "damping" : 0, + "color" : { + "green" : 180, + "red" : 0, + "blue" : 239 + }, + "grab" : { + "grabbable" : false + }, + "localEntity" : false, + "type" : "Box", + "queryAACube" : { + "z" : -72.8777389526367, + "scale" : 3.56002712249756, + "x" : 17.8169040679932, + "y" : -2.53071260452271 + }, + "faceCamera" : false, + "shape" : "Cube", + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "angularDamping" : 0, + "lastEdited" : 1563467280907424, + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "collision_wall", + "locked" : true, + "visible" : false, + "avatarEntity" : false, + "created" : 1554509979019596 + }, + { + "dimensions" : { + "z" : 0.200000002980232, + "x" : 1.97627317905426, + "y" : 0.553324699401855 + }, + "position" : { + "z" : -77.5097808837891, + "x" : 9.0347146987915, + "y" : 0.129462778568268 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "id" : "{6e904ccc-48ff-48f6-b948-ba1852c717e0}", + "damping" : 0, + "grab" : { + "grabbable" : false + }, + "color" : { + "green" : 180, + "red" : 0, + "blue" : 239 + }, + "rotation" : { + "y" : 0.0348668098449707, + "x" : -4.57763671875e-05, + "w" : 0.9993896484375, + "z" : -4.57763671875e-05 + }, + "queryAACube" : { + "scale" : 2.06199502944946, + "x" : 8.00371742248535, + "y" : -0.901534736156464, + "z" : -78.5407791137695 + }, + "localEntity" : false, + "type" : "Box", + "angularDamping" : 0, + "faceCamera" : false, + "shape" : "Cube", + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "lastEdited" : 1563467280912757, + "locked" : true, + "isFacingAvatar" : false, + "clientOnly" : false, + "name" : "collision", + "avatarEntity" : false, + "created" : 1554510972837087, + "visible" : false + }, + { + "id" : "{4ae513b1-3e8c-47ae-a791-a99c1401c881}", + "dimensions" : { + "x" : 0.200000002980232, + "y" : 0.538414359092712, + "z" : 1.86433577537537 + }, + "position" : { + "z" : -69.1844863891602, + "y" : 0.126557126641273, + "x" : 5.68020534515381 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "z" : -70.1598892211914, + "scale" : 1.95080435276031, + "x" : 4.70480298995972, + "y" : -0.848845064640045 + }, + "rotation" : { + "z" : -4.57763671875e-05, + "w" : 0.939696311950684, + "y" : 0.342000484466553, + "x" : -1.52587890625e-05 + }, + "grab" : { + "grabbable" : false + }, + "color" : { + "blue" : 239, + "green" : 180, + "red" : 0 + }, + "damping" : 0, + "lastEdited" : 1563467280914421, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "shape" : "Cube", + "faceCamera" : false, + "angularDamping" : 0, + "visible" : false, + "created" : 1554511164106971, + "avatarEntity" : false, + "name" : "collision", + "isFacingAvatar" : false, + "clientOnly" : false, + "locked" : true + }, + { + "angularDamping" : 0, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "shape" : "Cube", + "lastEdited" : 1563467280906128, + "locked" : true, + "name" : "collision", + "isFacingAvatar" : false, + "clientOnly" : false, + "created" : 1554511263685136, + "avatarEntity" : false, + "visible" : false, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "z" : -68.3666000366211, + "y" : -0.473028838634491, + "x" : 6.61894845962524 + }, + "dimensions" : { + "y" : 1.16332960128784, + "x" : 0.200000002980232, + "z" : 3.31858277320862 + }, + "id" : "{f5c08b1d-503b-4bda-902b-35b1fa09b7cd}", + "color" : { + "green" : 180, + "red" : 0, + "blue" : 239 + }, + "grab" : { + "grabbable" : false + }, + "damping" : 0, + "rotation" : { + "y" : 0.342000484466553, + "x" : -1.52587890625e-05, + "w" : 0.939696311950684, + "z" : -4.57763671875e-05 + }, + "queryAACube" : { + "z" : -70.1277313232422, + "y" : -2.23415970802307, + "x" : 4.85781764984131, + "scale" : 3.52226161956787 + }, + "localEntity" : false, + "type" : "Box" + }, + { + "id" : "{9bc8320e-e346-43a3-b03e-75590e326af0}", + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "y" : -0.8465496301651, + "x" : 6.84562826156616, + "z" : -73.6579742431641 + }, + "dimensions" : { + "y" : 0.650497615337372, + "x" : 0.386162221431732, + "z" : 7.8453688621521 + }, + "queryAACube" : { + "x" : 2.90475010871887, + "y" : -4.78742790222168, + "scale" : 7.88175630569458, + "z" : -77.5988540649414 + }, + "localEntity" : false, + "type" : "Box", + "damping" : 0, + "grab" : { + "grabbable" : false + }, + "color" : { + "blue" : 239, + "green" : 180, + "red" : 0 + }, + "rotation" : { + "x" : -7.62939453125e-05, + "y" : -0.192523062229156, + "w" : 0.981292486190796, + "z" : -1.52587890625e-05 + }, + "lastEdited" : 1563467280909531, + "angularDamping" : 0, + "shape" : "Cube", + "faceCamera" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "avatarEntity" : false, + "created" : 1554511341880877, + "visible" : false, + "locked" : true, + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "collision" + }, + { + "avatarEntity" : false, + "created" : 1554511476880919, + "visible" : false, + "locked" : true, + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "collision_wall", + "lastEdited" : 1563467280915687, + "angularDamping" : 0, + "faceCamera" : false, + "shape" : "Cube", + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "queryAACube" : { + "z" : -71.7690887451172, + "x" : 12.0359287261963, + "y" : -2.24422025680542, + "scale" : 5.66198825836182 + }, + "localEntity" : false, + "type" : "Box", + "damping" : 0, + "grab" : { + "grabbable" : false + }, + "color" : { + "blue" : 239, + "red" : 0, + "green" : 180 + }, + "rotation" : { + "y" : -0.194995045661926, + "x" : -4.57763671875e-05, + "w" : 0.980804204940796, + "z" : -7.62939453125e-05 + }, + "id" : "{176e50b8-0a35-432d-a08c-09aeb6e92919}", + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "x" : 14.8669233322144, + "y" : 0.586773931980133, + "z" : -68.9380950927734 + }, + "dimensions" : { + "y" : 3.40854597091675, + "x" : 4.5166277885437, + "z" : 0.200000002980232 + } + }, + { + "lastEdited" : 1563467280915984, + "angularDamping" : 0, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "shape" : "Cube", + "created" : 1554511520319224, + "avatarEntity" : false, + "visible" : false, + "locked" : true, + "name" : "collision_wall", + "isFacingAvatar" : false, + "clientOnly" : false, + "id" : "{0a971375-3ee2-4813-a5d0-4a2321c01fe6}", + "dimensions" : { + "y" : 3.40854597091675, + "x" : 4.5166277885437, + "z" : 0.200000002980232 + }, + "position" : { + "x" : 15.8521118164062, + "y" : 0.586465895175934, + "z" : -71.3178558349609 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "queryAACube" : { + "z" : -74.1488494873047, + "y" : -2.24452829360962, + "x" : 13.0211181640625, + "scale" : 5.66198825836182 + }, + "type" : "Box", + "localEntity" : false, + "grab" : { + "equippableRightRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + }, + "equippableLeftRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + }, + "grabbable" : false + }, + "color" : { + "red" : 0, + "green" : 180, + "blue" : 239 + }, + "damping" : 0, + "rotation" : { + "w" : 0.980773687362671, + "z" : -4.57763671875e-05, + "x" : -4.57763671875e-05, + "y" : -0.195117115974426 + } + }, + { + "isFacingAvatar" : false, + "clientOnly" : false, + "name" : "collision", + "locked" : true, + "visible" : false, + "avatarEntity" : false, + "created" : 1554511585054335, + "faceCamera" : false, + "shape" : "Cube", + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "angularDamping" : 0, + "lastEdited" : 1563467280905629, + "rotation" : { + "z" : -4.57763671875e-05, + "w" : 0.951049089431763, + "x" : -1.52587890625e-05, + "y" : 0.308979988098145 + }, + "damping" : 0, + "color" : { + "green" : 180, + "red" : 0, + "blue" : 239 + }, + "grab" : { + "grabbable" : false + }, + "localEntity" : false, + "type" : "Box", + "queryAACube" : { + "z" : -68.1034851074219, + "scale" : 3.22769999504089, + "x" : 19.1685638427734, + "y" : -2.11469149589539 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "y" : -0.500841557979584, + "x" : 20.782413482666, + "z" : -66.489631652832 + }, + "dimensions" : { + "z" : 1.72116017341614, + "y" : 0.200000002980232, + "x" : 2.72317004203796 + }, + "id" : "{f9fd13cc-5b4f-47c6-80c4-27d85fac78b9}" + }, + { + "id" : "{7f100ff4-028d-4acc-81fa-0d844ecd423e}", + "position" : { + "z" : -66.7140197753906, + "x" : 17.6627140045166, + "y" : -0.50055193901062 + }, + "dimensions" : { + "z" : 1.17223131656647, + "y" : 0.200000002980232, + "x" : 1.31151509284973 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "z" : -67.5992050170898, + "y" : -1.38573527336121, + "x" : 16.777530670166, + "scale" : 1.77036666870117 + }, + "rotation" : { + "z" : -4.57763671875e-05, + "w" : 0.950530290603638, + "x" : -0.0001678466796875, + "y" : -0.310566902160645 + }, + "grab" : { + "equippableLeftRotation" : { + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + }, + "grabbable" : false, + "equippableRightRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + } + }, + "color" : { + "green" : 180, + "red" : 0, + "blue" : 239 + }, + "damping" : 0, + "lastEdited" : 1563467280912463, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "shape" : "Cube", + "angularDamping" : 0, + "visible" : false, + "created" : 1554511730254797, + "avatarEntity" : false, + "name" : "collision", + "clientOnly" : false, + "isFacingAvatar" : false, + "locked" : true + }, + { + "queryAACube" : { + "scale" : 5.00437831878662, + "x" : 4.67490100860596, + "y" : -1.24646401405334, + "z" : -75.6646499633789 + }, + "type" : "Box", + "localEntity" : false, + "grab" : { + "grabbable" : false + }, + "color" : { + "green" : 180, + "red" : 0, + "blue" : 239 + }, + "damping" : 0, + "rotation" : { + "z" : -1.52587890625e-05, + "w" : 0.984496831893921, + "y" : -0.175402462482452, + "x" : -4.57763671875e-05 + }, + "id" : "{3ecea56c-9cf2-4329-b5b2-b50448f9c5d1}", + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "y" : 1.25572514533997, + "x" : 7.17709016799927, + "z" : -73.1624603271484 + }, + "dimensions" : { + "z" : 0.783096432685852, + "x" : 0.730832278728485, + "y" : 4.88839912414551 + }, + "created" : 1554512002518553, + "avatarEntity" : false, + "visible" : false, + "locked" : true, + "name" : "collision_tree", + "isFacingAvatar" : false, + "clientOnly" : false, + "lastEdited" : 1563467280914810, + "angularDamping" : 0, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "shape" : "Cube" + }, + { + "visible" : false, + "avatarEntity" : false, + "created" : 1554512216650454, + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "collision", + "locked" : true, + "lastEdited" : 1563467280914211, + "shape" : "Cube", + "faceCamera" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "angularDamping" : 0, + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "z" : -71.2298736572266, + "scale" : 1.93355584144592, + "y" : -1.49857974052429, + "x" : 20.184606552124 + }, + "rotation" : { + "z" : -7.62939453125e-05, + "w" : 0.951049089431763, + "x" : -1.52587890625e-05, + "y" : 0.308979988098145 + }, + "damping" : 0, + "grab" : { + "grabbable" : false + }, + "color" : { + "blue" : 239, + "green" : 180, + "red" : 0 + }, + "id" : "{5146be4a-b0a2-4b4b-8d17-e83b7db70519}", + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "y" : -0.531801879405975, + "x" : 21.1513843536377, + "z" : -70.2630920410156 + }, + "dimensions" : { + "z" : 1.54709315299988, + "x" : 1.12734627723694, + "y" : 0.272454500198364 + } + }, + { + "rotation" : { + "x" : 0.249561309814453, + "y" : -0.218066692352295, + "z" : 0.0665751695632935, + "w" : 0.941100120544434 + }, + "color" : { + "green" : 180, + "red" : 0, + "blue" : 239 + }, + "position" : { + "z" : -65.3813934326172, + "x" : 17.9586410522461, + "y" : 0.659359991550446 + }, + "id" : "{8d60c0d9-558b-4efc-b598-540844faebe6}", + "name" : "collision", + "collisionMask" : 23, + "clientOnly" : false, + "isFacingAvatar" : false, + "locked" : true, + "visible" : false, + "created" : 1554512302898655, + "shape" : "Cube", + "grab" : { + "grabbable" : false + }, + "damping" : 0, + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "x" : 16.4590282440186, + "y" : -0.840253055095673, + "scale" : 2.99922609329224, + "z" : -66.8810043334961 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "z" : 0.200000002980232, + "y" : 2.76774549484253, + "x" : 1.13795518875122 + }, + "collidesWith" : "static,dynamic,kinematic,otherAvatar,", + "avatarEntity" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "angularDamping" : 0, + "lastEdited" : 1563467280911168 + }, + { + "angularDamping" : 0, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "lastEdited" : 1563467280911325, + "collidesWith" : "static,dynamic,kinematic,otherAvatar,", + "avatarEntity" : false, + "dimensions" : { + "x" : 1.47526371479034, + "y" : 4.98091840744019, + "z" : 0.441965460777283 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "grab" : { + "equippableRightRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + }, + "equippableLeftRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + }, + "grabbable" : false + }, + "damping" : 0, + "queryAACube" : { + "scale" : 5.21356725692749, + "x" : 16.4269428253174, + "y" : -2.25857591629028, + "z" : -68.2500305175781 + }, + "localEntity" : false, + "type" : "Box", + "shape" : "Cube", + "locked" : true, + "name" : "collision", + "collisionMask" : 23, + "clientOnly" : false, + "isFacingAvatar" : false, + "created" : 1554512354734850, + "visible" : false, + "position" : { + "z" : -65.6432495117188, + "x" : 19.0337257385254, + "y" : 0.348207741975784 + }, + "id" : "{80b8eaf6-1466-4f68-bcfd-c1f3cc0d3701}", + "color" : { + "blue" : 239, + "red" : 0, + "green" : 180 + }, + "rotation" : { + "z" : 0.00889599323272705, + "w" : 0.973266243934631, + "x" : 0.228808999061585, + "y" : 0.0168001651763916 + } + }, + { + "rotation" : { + "z" : 0.0832685232162476, + "w" : 0.897978186607361, + "y" : -0.352132439613342, + "x" : 0.250293731689453 + }, + "color" : { + "blue" : 239, + "green" : 180, + "red" : 0 + }, + "id" : "{c4558dc0-43cb-4a81-bc2c-368c9a4e16d7}", + "position" : { + "x" : 16.9431896209717, + "y" : 0.6663778424263, + "z" : -65.9348754882812 + }, + "visible" : false, + "created" : 1554512415741459, + "isFacingAvatar" : false, + "clientOnly" : false, + "name" : "collision", + "collisionMask" : 23, + "locked" : true, + "shape" : "Cube", + "localEntity" : false, + "type" : "Box", + "queryAACube" : { + "z" : -67.4344863891602, + "scale" : 2.99922609329224, + "x" : 15.4435768127441, + "y" : -0.833235204219818 + }, + "damping" : 0, + "grab" : { + "equippableLeftRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + }, + "grabbable" : false, + "equippableRightRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + } + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "z" : 0.200000002980232, + "x" : 1.13795518875122, + "y" : 2.76774549484253 + }, + "avatarEntity" : false, + "collidesWith" : "static,dynamic,kinematic,otherAvatar,", + "lastEdited" : 1563467280907569, + "faceCamera" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "angularDamping" : 0 + }, + { + "localEntity" : false, + "type" : "Box", + "queryAACube" : { + "z" : -67.6921768188477, + "x" : 18.5940990447998, + "y" : -1.12315905094147, + "scale" : 3.7823498249054 + }, + "rotation" : { + "x" : 0.175127744674683, + "y" : 0.270985007286072, + "z" : -0.0508278012275696, + "w" : 0.945128560066223 + }, + "damping" : 0, + "grab" : { + "grabbable" : false + }, + "color" : { + "blue" : 239, + "green" : 180, + "red" : 0 + }, + "id" : "{9742281e-d2d1-47b2-9f0f-509da4cdfe32}", + "position" : { + "z" : -65.8010025024414, + "x" : 20.4852733612061, + "y" : 0.76801586151123 + }, + "dimensions" : { + "y" : 2.74011158943176, + "x" : 2.59960746765137, + "z" : 0.200000002980232 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "visible" : false, + "avatarEntity" : false, + "created" : 1554512594526896, + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "collision", + "locked" : true, + "lastEdited" : 1563467280910674, + "faceCamera" : false, + "shape" : "Cube", + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "angularDamping" : 0 + }, + { + "id" : "{2cccb27b-f01a-4b4a-a3ae-eb3fd7b6522e}", + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "z" : -67.2470626831055, + "x" : 21.9299983978271, + "y" : 0.727752685546875 + }, + "dimensions" : { + "z" : 2.76751637458801, + "x" : 0.200000002980232, + "y" : 2.73218727111816 + }, + "localEntity" : false, + "type" : "Box", + "queryAACube" : { + "z" : -69.1941146850586, + "scale" : 3.89409732818604, + "x" : 19.9829502105713, + "y" : -1.21929597854614 + }, + "rotation" : { + "y" : -0.231342017650604, + "x" : 0.0504310131072998, + "w" : 0.948241353034973, + "z" : -0.211596846580505 + }, + "grab" : { + "grabbable" : false + }, + "color" : { + "blue" : 239, + "green" : 180, + "red" : 0 + }, + "damping" : 0, + "lastEdited" : 1563467280915375, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "shape" : "Cube", + "faceCamera" : false, + "angularDamping" : 0, + "visible" : false, + "created" : 1554512682906578, + "avatarEntity" : false, + "name" : "collision", + "clientOnly" : false, + "isFacingAvatar" : false, + "locked" : true + }, + { + "lastEdited" : 1563467280910239, + "angularDamping" : 0, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "shape" : "Cube", + "faceCamera" : false, + "created" : 1554512851406673, + "avatarEntity" : false, + "visible" : false, + "locked" : true, + "name" : "collision", + "clientOnly" : false, + "isFacingAvatar" : false, + "id" : "{99ac48ff-bfb3-4de7-912c-d96cf7355c07}", + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "x" : 22.5676441192627, + "y" : 1.37805104255676, + "z" : -69.0681076049805 + }, + "dimensions" : { + "y" : 4.73131275177002, + "x" : 0.433876305818558, + "z" : 2.37201547622681 + }, + "queryAACube" : { + "z" : -71.7232894897461, + "x" : 19.9124584197998, + "y" : -1.27713394165039, + "scale" : 5.31036996841431 + }, + "type" : "Box", + "localEntity" : false, + "grab" : { + "equippableRightRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + }, + "grabbable" : false, + "equippableLeftRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + } + }, + "color" : { + "blue" : 239, + "red" : 0, + "green" : 180 + }, + "damping" : 0, + "rotation" : { + "z" : -0.176501095294952, + "w" : 0.982940435409546, + "x" : -0.00871288776397705, + "y" : 0.0505530834197998 + } + }, + { + "visible" : false, + "created" : 1554513144280379, + "isFacingAvatar" : false, + "clientOnly" : false, + "collisionMask" : 23, + "name" : "collision", + "locked" : true, + "shape" : "Cube", + "rotation" : { + "z" : -0.194750905036926, + "w" : 0.909910678863525, + "x" : -0.077470064163208, + "y" : 0.357961416244507 + }, + "color" : { + "blue" : 239, + "green" : 180, + "red" : 0 + }, + "id" : "{35482a9d-994a-4aa6-a1d0-11909e347251}", + "position" : { + "z" : -70.9296264648438, + "y" : 1.42321944236755, + "x" : 22.0378456115723 + }, + "avatarEntity" : false, + "collidesWith" : "static,dynamic,kinematic,otherAvatar,", + "lastEdited" : 1563467280914955, + "faceCamera" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "angularDamping" : 0, + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "z" : -74.111198425293, + "scale" : 6.36314916610718, + "y" : -1.75835514068604, + "x" : 18.8562717437744 + }, + "damping" : 0, + "grab" : { + "grabbable" : false + }, + "dimensions" : { + "y" : 5.40856313705444, + "x" : 0.200000002980232, + "z" : 3.34620809555054 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}" + }, + { + "locked" : true, + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "collision", + "avatarEntity" : false, + "created" : 1554513450928413, + "visible" : false, + "angularDamping" : 0, + "faceCamera" : false, + "shape" : "Cube", + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "lastEdited" : 1563467280907967, + "damping" : 0, + "grab" : { + "grabbable" : false + }, + "color" : { + "red" : 0, + "green" : 180, + "blue" : 239 + }, + "rotation" : { + "z" : 0.0304417610168457, + "w" : 0.967223644256592, + "x" : -0.206622421741486, + "y" : 0.144212961196899 + }, + "queryAACube" : { + "x" : 15.5752019882202, + "y" : -1.51124656200409, + "scale" : 5.11770820617676, + "z" : -74.8023910522461 + }, + "type" : "Box", + "localEntity" : false, + "dimensions" : { + "x" : 3.11626768112183, + "y" : 4.05460357666016, + "z" : 0.200000002980232 + }, + "position" : { + "z" : -72.243537902832, + "x" : 18.1340560913086, + "y" : 1.04760754108429 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "id" : "{b20e4789-aa5d-4544-a062-16e13aa0ed79}" + }, + { + "id" : "{e9a6864c-7dfe-4d39-b375-a1bcc822d287}", + "position" : { + "z" : -71.3334579467773, + "y" : 0.87424224615097, + "x" : 17.8939247131348 + }, + "dimensions" : { + "y" : 2.65437579154968, + "x" : 0.200000002980232, + "z" : 1.38859367370605 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "scale" : 3.00231647491455, + "y" : -0.626915991306305, + "x" : 16.3927669525146, + "z" : -72.8346176147461 + }, + "rotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + }, + "damping" : 0, + "grab" : { + "grabbable" : false + }, + "color" : { + "blue" : 239, + "green" : 180, + "red" : 0 + }, + "lastEdited" : 1563467280906552, + "faceCamera" : false, + "shape" : "Cube", + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "angularDamping" : 0, + "visible" : false, + "avatarEntity" : false, + "created" : 1554513664429322, + "isFacingAvatar" : false, + "clientOnly" : false, + "name" : "collision", + "locked" : true + }, + { + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "z" : -67.8310623168945, + "y" : -0.51412570476532, + "x" : 21.6291007995605 + }, + "dimensions" : { + "y" : 0.200000002980232, + "x" : 1.51991295814514, + "z" : 1.80301117897034 + }, + "id" : "{6b672df4-c098-4e7d-8132-2ca8cec9bfcd}", + "color" : { + "green" : 180, + "red" : 0, + "blue" : 239 + }, + "grab" : { + "grabbable" : false + }, + "damping" : 0, + "rotation" : { + "z" : -4.57763671875e-05, + "w" : 0.982574224472046, + "y" : -0.185717582702637, + "x" : -4.57763671875e-05 + }, + "queryAACube" : { + "z" : -69.0143814086914, + "scale" : 2.3666398525238, + "x" : 20.4457817077637, + "y" : -1.69744563102722 + }, + "type" : "Box", + "localEntity" : false, + "angularDamping" : 0, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "shape" : "Cube", + "faceCamera" : false, + "lastEdited" : 1563467280913027, + "locked" : true, + "name" : "collision", + "isFacingAvatar" : false, + "clientOnly" : false, + "created" : 1554516803035825, + "avatarEntity" : false, + "visible" : false + }, + { + "angularDamping" : 0, + "shape" : "Cube", + "faceCamera" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "lastEdited" : 1563467280916164, + "locked" : true, + "isFacingAvatar" : false, + "clientOnly" : false, + "name" : "collision", + "avatarEntity" : false, + "created" : 1554516852784984, + "visible" : false, + "position" : { + "y" : -0.514268219470978, + "x" : 21.7665977478027, + "z" : -69.1121292114258 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "z" : 1.80301117897034, + "y" : 0.200000002980232, + "x" : 1.37699401378632 + }, + "id" : "{08a79e11-378b-472e-8ed4-683178a4905f}", + "damping" : 0, + "color" : { + "blue" : 239, + "red" : 0, + "green" : 180 + }, + "grab" : { + "equippableLeftRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + }, + "grabbable" : false, + "equippableRightRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + } + }, + "rotation" : { + "w" : 0.99572741985321, + "z" : -7.62939453125e-05, + "y" : 0.0921492576599121, + "x" : -4.57763671875e-05 + }, + "queryAACube" : { + "x" : 20.6278533935547, + "y" : -1.65301322937012, + "scale" : 2.27749013900757, + "z" : -70.2508773803711 + }, + "type" : "Box", + "localEntity" : false + }, + { + "lastEdited" : 1563467280915097, + "angularDamping" : 0, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "shape" : "Cube", + "faceCamera" : false, + "created" : 1554667403968924, + "avatarEntity" : false, + "visible" : false, + "locked" : true, + "name" : "collision-wall", + "isFacingAvatar" : false, + "clientOnly" : false, + "id" : "{34f507a2-e147-47ea-970c-5dfc4a523550}", + "position" : { + "x" : 17.6517753601074, + "y" : 0.735522985458374, + "z" : -65.7561721801758 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "z" : 0.200000002980232, + "x" : 2.23571395874023, + "y" : 4.06350708007812 + }, + "queryAACube" : { + "scale" : 4.64225244522095, + "y" : -1.5856032371521, + "x" : 15.3306493759155, + "z" : -68.0773010253906 + }, + "localEntity" : false, + "type" : "Box", + "color" : { + "green" : 180, + "red" : 0, + "blue" : 239 + }, + "grab" : { + "equippableRightRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + }, + "equippableLeftRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 1 + }, + "grabbable" : false + }, + "damping" : 0, + "rotation" : { + "x" : -0.958464920520782, + "y" : -0.0452125072479248, + "z" : -0.200549304485321, + "w" : 0.197802662849426 + } + }, + { + "id" : "{9c2a1174-362d-42b4-8c69-5969f05c2ab2}", + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "y" : -0.546110153198242, + "x" : 18.8606586456299, + "z" : -66.0270538330078 + }, + "dimensions" : { + "z" : 1.6134831905365, + "x" : 2.24585509300232, + "y" : 0.200000002980232 + }, + "queryAACube" : { + "y" : -1.93239951133728, + "x" : 17.4743690490723, + "scale" : 2.77257871627808, + "z" : -67.4133453369141 + }, + "localEntity" : false, + "type" : "Box", + "grab" : { + "grabbable" : false + }, + "color" : { + "red" : 0, + "green" : 180, + "blue" : 239 + }, + "damping" : 0, + "rotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + }, + "lastEdited" : 1563467280909129, + "angularDamping" : 0, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "faceCamera" : false, + "shape" : "Cube", + "created" : 1554668158560681, + "avatarEntity" : false, + "visible" : false, + "locked" : true, + "isFacingAvatar" : false, + "clientOnly" : false + }, + { + "created" : 1554675694970161, + "avatarEntity" : false, + "visible" : false, + "locked" : true, + "isFacingAvatar" : false, + "clientOnly" : false, + "lastEdited" : 1563467280915236, + "angularDamping" : 0, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "shape" : "Cube", + "faceCamera" : false, + "queryAACube" : { + "scale" : 3.52301740646362, + "y" : -0.912198722362518, + "x" : 14.1571893692017, + "z" : -69.6279602050781 + }, + "localEntity" : false, + "type" : "Box", + "grab" : { + "grabbable" : false + }, + "color" : { + "blue" : 239, + "red" : 0, + "green" : 180 + }, + "damping" : 0, + "rotation" : { + "z" : 0.110215902328491, + "w" : 0.990508913993835, + "x" : 0.0409704446792603, + "y" : -0.0710307359695435 + }, + "id" : "{343c1b18-2ccb-4053-a429-0668f70be1de}", + "dimensions" : { + "z" : 1.00455510616302, + "x" : 0.200000002980232, + "y" : 3.37083387374878 + }, + "position" : { + "y" : 0.849309980869293, + "x" : 15.9186983108521, + "z" : -67.866455078125 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}" + }, + { + "animation" : { + "allowTranslation" : false + }, + "id" : "{1f9e7521-6d58-49d1-aefa-3ac49918fc44}", + "lastEditedBy" : "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", + "position" : { + "z" : -69.9942474365234, + "y" : 0.184511542320251, + "x" : 21.0566654205322 + }, + "dimensions" : { + "x" : 0.903900027275085, + "y" : 1, + "z" : 1.63240003585815 + }, + "type" : "Model", + "localEntity" : false, + "queryAACube" : { + "scale" : 2.11701798439026, + "y" : -0.873997449874878, + "x" : 19.9981555938721, + "z" : -71.0527572631836 + }, + "rotation" : { + "x" : -7.62939453125e-05, + "y" : -0.999725341796875, + "w" : 0.0245517492294312, + "z" : -4.57763671875e-05 + }, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/Shield-Toolbar1/baked/Shield-Toolbar1.baked.fst", + "damping" : 0, + "grab" : { + "equippableRightRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + }, + "grabbable" : false, + "equippableLeftRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + } + }, + "lastEdited" : 1563467161386805, + "faceCamera" : false, + "angularDamping" : 0, + "avatarEntity" : false, + "created" : 1557434224286737, + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "PersonalShield.", + "locked" : true + }, + { + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "collision-bench1", + "locked" : true, + "visible" : false, + "avatarEntity" : false, + "created" : 1557536614579891, + "shape" : "Cube", + "faceCamera" : false, + "angularDamping" : 0, + "lastEdited" : 1563467280905923, + "rotation" : { + "w" : 0.961242079734802, + "z" : -4.57763671875e-05, + "x" : -1.52587890625e-05, + "y" : 0.275593161582947 + }, + "damping" : 0, + "grab" : { + "grabbable" : false + }, + "color" : { + "blue" : 239, + "red" : 0, + "green" : 180 + }, + "type" : "Box", + "localEntity" : false, + "queryAACube" : { + "z" : -68.3004379272461, + "scale" : 2.41286516189575, + "x" : 15.6536655426025, + "y" : -1.75545144081116 + }, + "position" : { + "z" : -67.0940017700195, + "x" : 16.8600978851318, + "y" : -0.549018919467926 + }, + "dimensions" : { + "z" : 1.57577192783356, + "x" : 1.79901528358459, + "y" : 0.320007562637329 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "id" : "{f67fd522-c947-49a3-af81-a0de99a3953f}" + }, + { + "lastEdited" : 1563467161387107, + "faceCamera" : false, + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "collisionless" : true, + "ignoreForCollisions" : true, + "avatarEntity" : false, + "created" : 1557781982596118, + "clientOnly" : false, + "isFacingAvatar" : false, + "name" : "Tablet", + "locked" : true, + "id" : "{ac2f0b92-2839-4ca3-90fe-c96c218c18e1}", + "lastEditedBy" : "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", + "position" : { + "z" : -66.5775451660156, + "x" : 19.9429721832275, + "y" : 0.184489324688911 + }, + "dimensions" : { + "x" : 0.903900027275085, + "y" : 1, + "z" : 1.63240003585815 + }, + "type" : "Model", + "localEntity" : false, + "queryAACube" : { + "scale" : 2.11701798439026, + "x" : 18.8844623565674, + "y" : -0.874019682407379, + "z" : -67.6360549926758 + }, + "rotation" : { + "y" : 0.662562012672424, + "x" : -1.52587890625e-05, + "z" : -0.0001373291015625, + "w" : 0.748989105224609 + }, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/Tablet-Toolbar1/baked/Tablet-Toolbar1.baked.fst", + "grab" : { + "grabbable" : false + } + }, + { + "faceCamera" : false, + "angularDamping" : 0, + "lastEdited" : 1563467161387272, + "name" : "Tree", + "clientOnly" : false, + "isFacingAvatar" : false, + "locked" : true, + "created" : 1558036708243904, + "avatarEntity" : false, + "position" : { + "z" : -73.1555786132812, + "x" : 7.22752714157104, + "y" : 4.49477529525757 + }, + "lastEditedBy" : "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", + "dimensions" : { + "y" : 12.2032833099365, + "x" : 12.3604621887207, + "z" : 12.3801078796387 + }, + "animation" : { + "allowTranslation" : false + }, + "id" : "{c9bdbd9a-e767-44e8-baab-7638ffaf6f79}", + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/LowPolyTreeAO2/baked/LowPolyTreeAO2.baked.fst", + "rotation" : { + "z" : -0.0001068115234375, + "w" : 0.766170740127563, + "y" : 0.642603158950806, + "x" : -4.57763671875e-05 + }, + "grab" : { + "grabbable" : false, + "equippableLeftRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + }, + "equippableRightRotation" : { + "z" : -1.52587890625e-05, + "w" : 1, + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05 + } + }, + "damping" : 0, + "type" : "Model", + "localEntity" : false, + "queryAACube" : { + "x" : -3.43746423721313, + "y" : -6.17021608352661, + "scale" : 21.3299827575684, + "z" : -83.8205718994141 + } + }, + { + "grab" : { + "grabbable" : false, + "equippableLeftRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 1 + }, + "equippableRightRotation" : { + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + } + }, + "damping" : 0, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/Goto-Toolbar1/baked/Goto-Toolbar1.baked.fst", + "rotation" : { + "y" : 0.92294192314148, + "x" : -7.62939453125e-05, + "w" : 0.38490879535675, + "z" : -7.62939453125e-05 + }, + "queryAACube" : { + "z" : -69.098747253418, + "x" : 20.2422904968262, + "y" : -0.873997449874878, + "scale" : 2.11701798439026 + }, + "type" : "Model", + "localEntity" : false, + "position" : { + "x" : 21.3008003234863, + "y" : 0.184511542320251, + "z" : -68.0402374267578 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "dimensions" : { + "z" : 1.63240003585815, + "y" : 1, + "x" : 0.903900027275085 + }, + "id" : "{04baca89-93dd-41e5-9e55-74ba9fe3e2fd}", + "animation" : { + "allowTranslation" : false + }, + "locked" : true, + "name" : "Goto", + "isFacingAvatar" : false, + "clientOnly" : false, + "created" : 1563412618962599, + "avatarEntity" : false, + "angularDamping" : 0, + "faceCamera" : false, + "lastEdited" : 1563467280904916 + }, + { + "isFacingAvatar" : false, + "clientOnly" : false, + "locked" : true, + "avatarEntity" : false, + "created" : 1563413103692919, + "faceCamera" : false, + "angularDamping" : 0, + "lastEdited" : 1563467161387566, + "rotation" : { + "w" : 0.939696311950684, + "z" : -7.62939453125e-05, + "y" : 0.341969966888428, + "x" : -1.52587890625e-05 + }, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/Controls/original/Controls.fbx", + "damping" : 0, + "grab" : { + "grabbable" : false + }, + "type" : "Model", + "localEntity" : false, + "queryAACube" : { + "z" : -71.2442092895508, + "scale" : 5.42188167572021, + "y" : -2.38193011283875, + "x" : 6.83392286300659 + }, + "position" : { + "z" : -68.5332717895508, + "y" : 0.329010754823685, + "x" : 9.5448637008667 + }, + "dimensions" : { + "y" : 1.49999988079071, + "x" : 4.57308483123779, + "z" : 2.49673700332642 + }, + "lastEditedBy" : "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", + "animation" : { + "allowTranslation" : false + }, + "id" : "{e859cd08-8a8c-4f68-8dae-e5d2ac3e5614}" + }, + { + "position" : { + "z" : -70.4657287597656, + "y" : -1.23642897605896, + "x" : 14.7868890762329 + }, + "dimensions" : { + "z" : 0.297333061695099, + "x" : 4.3489408493042, + "y" : 6.04107475280762 + }, + "lastEditedBy" : "{fc877f50-8986-4f75-b202-bd8a31f2abcc}", + "id" : "{fff6c078-68a8-4b45-807f-a0245a57fe17}", + "rotation" : { + "w" : 0.696772694587708, + "z" : -0.120225846767426, + "x" : -0.692256033420563, + "y" : -0.144457161426544 + }, + "damping" : 0, + "grab" : { + "equippableLeftRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + }, + "grabbable" : false, + "equippableRightRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 1 + } + }, + "color" : { + "blue" : 239, + "green" : 180, + "red" : 0 + }, + "localEntity" : false, + "type" : "Box", + "queryAACube" : { + "x" : 11.0620975494385, + "y" : -4.96121978759766, + "scale" : 7.44958209991455, + "z" : -74.1905212402344 + }, + "faceCamera" : false, + "shape" : "Cube", + "userData" : "{\"grabbableKey\":{\"grabbable\":false}}", + "angularDamping" : 0, + "lastEdited" : 1563467161387729, + "isFacingAvatar" : false, + "clientOnly" : false, + "name" : "Floor 3", + "locked" : true, + "visible" : false, + "avatarEntity" : false, + "created" : 1563413608610158 + }, + { + "lastEdited" : 1563467280903467, + "angularDamping" : 0, + "faceCamera" : false, + "created" : 1563418305015493, + "avatarEntity" : false, + "locked" : true, + "name" : "Avatar", + "isFacingAvatar" : false, + "clientOnly" : false, + "id" : "{a7fb6cb2-2838-4d87-a5f7-1c10cd14a472}", + "animation" : { + "allowTranslation" : false + }, + "dimensions" : { + "z" : 0.719059646129608, + "x" : 2.18560314178467, + "y" : 1.07290327548981 + }, + "position" : { + "x" : 13.0758352279663, + "y" : 0.292948484420776, + "z" : -74.9341888427734 + }, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "queryAACube" : { + "scale" : 2.53870630264282, + "y" : -0.976404666900635, + "x" : 11.8064823150635, + "z" : -76.2035446166992 + }, + "type" : "Model", + "localEntity" : false, + "grab" : { + "equippableRightRotation" : { + "w" : 1, + "z" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "y" : -1.52587890625e-05 + }, + "equippableLeftRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "w" : 1, + "z" : -1.52587890625e-05 + }, + "grabbable" : false + }, + "damping" : 0, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/Avatar-Toolbar/baked/Avatar-Toolbar.baked.fst", + "rotation" : { + "z" : -0.0001678466796875, + "w" : 0.406668186187744, + "x" : -7.62939453125e-05, + "y" : 0.91354238986969 + } + }, + { + "locked" : true, + "name" : "Toolbar", + "isFacingAvatar" : false, + "clientOnly" : false, + "created" : 1563418414952653, + "avatarEntity" : false, + "angularDamping" : 0, + "faceCamera" : false, + "lastEdited" : 1563467280904188, + "grab" : { + "equippableLeftRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 1 + }, + "grabbable" : false, + "equippableRightRotation" : { + "y" : -1.52587890625e-05, + "x" : -1.52587890625e-05, + "z" : -1.52587890625e-05, + "w" : 1 + } + }, + "damping" : 0, + "modelURL" : "https://cdn-1.vircadia.com/eu-c-1/vircadia-content/DomainContent/welcome-tutorial/v1/baked/Toolbar-Toolbar2/baked/Toolbar-Toolbar2.baked.fst", + "rotation" : { + "x" : -4.57763671875e-05, + "y" : 0.987701177597046, + "z" : -0.0002593994140625, + "w" : 0.156328678131104 + }, + "queryAACube" : { + "scale" : 2.53870630264282, + "x" : 10.2121524810791, + "y" : -0.976404666900635, + "z" : -78.111328125 + }, + "type" : "Model", + "localEntity" : false, + "lastEditedBy" : "{d64a89a8-8afe-4459-8aa8-497e782083a3}", + "position" : { + "z" : -76.8419723510742, + "y" : 0.292948484420776, + "x" : 11.4815053939819 + }, + "dimensions" : { + "z" : 0.719059646129608, + "y" : 1.07290327548981, + "x" : 2.18560314178467 + }, + "id" : "{828ba18a-8ce4-4ad6-8583-9281580bb35c}", + "animation" : { + "allowTranslation" : false + } + } + ], + "Version" : 120 }