From a333325a92ba87dfcbac16f3227bf36db8279cd7 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 29 Oct 2014 14:29:28 -0700 Subject: [PATCH 1/5] when user drops into lobby hide everything else --- examples/lobby.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/examples/lobby.js b/examples/lobby.js index 1b65ae60c0..9612891997 100644 --- a/examples/lobby.js +++ b/examples/lobby.js @@ -69,6 +69,7 @@ function cleanupLobby() { Overlays.deleteOverlay(panelWall) panelWall = false locations = {} + toggleEnvironmentRendering(true) } function actionStartEvent(event) { @@ -86,7 +87,7 @@ function actionStartEvent(event) { if (panelIndex < locations.length) { var actionLocation = locations[panelIndex] - print("Jumping to " + actionLocation.name + " at " + actionLocation.path + " in " + actionLocation.domain.name) + print("Jumping to " + actionLocation.name + " at " + actionLocation.path + " in " + actionLocation.domain.name + " after click on panel " + panelIndex) Window.location = actionLocation maybeCleanupLobby() @@ -96,8 +97,9 @@ function actionStartEvent(event) { } } -function backStartEvent() { +function backStartEvent() { if (!panelWall) { + toggleEnvironmentRendering(false) drawLobby() changeLobbyTextures() } else { @@ -108,11 +110,18 @@ function backStartEvent() { var CLEANUP_EPSILON_DISTANCE = 0.025 function maybeCleanupLobby() { - if (Vec3.length(Vec3.subtract(avatarStickPosition, MyAvatar.position)) > CLEANUP_EPSILON_DISTANCE) { + if (panelWall && Vec3.length(Vec3.subtract(avatarStickPosition, MyAvatar.position)) > CLEANUP_EPSILON_DISTANCE) { cleanupLobby() } } +function toggleEnvironmentRendering(shouldRender) { + Menu.setIsOptionChecked("Voxels", shouldRender) + Menu.setIsOptionChecked("Models", shouldRender) + Menu.setIsOptionChecked("Metavoxels", shouldRender) + Menu.setIsOptionChecked("Avatars", shouldRender) +} + Controller.actionStartEvent.connect(actionStartEvent) Controller.backStartEvent.connect(backStartEvent) Script.update.connect(maybeCleanupLobby) From 88475f6154e51831b6942f58b6f4f5b56c391874 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 29 Oct 2014 15:47:23 -0700 Subject: [PATCH 2/5] fix positioning of lobby panel wall inside orb sphere --- examples/lobby.js | 52 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/examples/lobby.js b/examples/lobby.js index 9612891997..8bee08769a 100644 --- a/examples/lobby.js +++ b/examples/lobby.js @@ -9,37 +9,57 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var panelWall = false; +var panelWall = false +var orbShell = false -var avatarStickPosition = {}; +var avatarStickPosition = {} -var panelsNaturalExtentsMin = { x: -1181, y: -326, z: 56 }; -var panelsNaturalExtentsMax = { x: 1181, y: 576, z: 1183 }; +var orbNaturalExtentsMin = { x: -1230, y: -1223, z: -1210 } +var orbNaturalExtentsMax = { x: 1230, y: 1229, z: 1223 } +var panelsNaturalExtentsMin = { x: -1181, y: -326, z: 56 } +var panelsNaturalExtentsMax = { x: 1181, y: 576, z: 1183 } + +var orbNaturalDimensions = Vec3.subtract(orbNaturalExtentsMax, orbNaturalExtentsMin) +var panelsNaturalDimensions = Vec3.subtract(panelsNaturalExtentsMax, panelsNaturalExtentsMin) -var panelsNaturalDimensions = Vec3.subtract(panelsNaturalExtentsMax, panelsNaturalExtentsMin); var SCALING_FACTOR = 0.01; -var panelsDimensions = Vec3.multiply(panelsNaturalDimensions, SCALING_FACTOR); +var orbDimensions = Vec3.multiply(orbNaturalDimensions, SCALING_FACTOR) +var panelsDimensions = Vec3.multiply(panelsNaturalDimensions, SCALING_FACTOR) + +var orbNaturalCenter = Vec3.sum(orbNaturalExtentsMin, Vec3.multiply(orbNaturalDimensions, 0.5)) +var panelsNaturalCenter = Vec3.sum(panelsNaturalExtentsMin, Vec3.multiply(panelsNaturalDimensions, 0.5)) +var orbCenter = Vec3.multiply(orbNaturalCenter, SCALING_FACTOR) +var panelsCenter = Vec3.multiply(panelsNaturalCenter, SCALING_FACTOR) +var panelsCenterShift = Vec3.subtract(panelsCenter, orbCenter) function drawLobby() { if (!panelWall) { - print("Adding an overlay for the lobby panel wall.") - - var front = Quat.getFront(Camera.getOrientation()); - front.y = 0 - front = Vec3.normalize(front) + print("Adding overlays for the lobby panel wall and orb shell.") var cameraEuler = Quat.safeEulerAngles(Camera.getOrientation()); - + var towardsMe = Quat.angleAxis(cameraEuler.y + 180, { x: 0, y: 1, z: 0}) + + var orbPosition = Vec3.subtract(Camera.getPosition(), { x: 0, y: 2.0, z: 0}) + var panelWallProps = { - url: "https://s3.amazonaws.com/hifi-public/models/sets/Lobby/LobbyPrototype/PanelWall3.fbx", - position: Vec3.sum(Camera.getPosition(), Vec3.multiply(front, 0.5)), - rotation: Quat.angleAxis(cameraEuler.y + 180, { x: 0, y: 1, z: 0}), + url: "http://s3.amazonaws.com/hifi-public/models/sets/Lobby/LobbyPrototype/PanelWall3.fbx", + position: Vec3.sum(orbPosition, Vec3.multiplyQbyV(towardsMe, panelsCenterShift)), + rotation: towardsMe, dimensions: panelsDimensions } + var orbShellProps = { + url: "https://s3.amazonaws.com/hifi-public/models/sets/Lobby/LobbyConcepts/Lobby5_OrbShellOnly.fbx", + position: orbPosition, + rotation: towardsMe, + dimensions: orbDimensions, + ignoreRayIntersection: true + } + avatarStickPosition = MyAvatar.position panelWall = Overlays.addOverlay("model", panelWallProps) + orbShell = Overlays.addOverlay("model", orbShellProps) } } @@ -67,6 +87,7 @@ function changeLobbyTextures() { function cleanupLobby() { Overlays.deleteOverlay(panelWall) + Overlays.deleteOverlay(orbShell) panelWall = false locations = {} toggleEnvironmentRendering(true) @@ -119,7 +140,6 @@ function toggleEnvironmentRendering(shouldRender) { Menu.setIsOptionChecked("Voxels", shouldRender) Menu.setIsOptionChecked("Models", shouldRender) Menu.setIsOptionChecked("Metavoxels", shouldRender) - Menu.setIsOptionChecked("Avatars", shouldRender) } Controller.actionStartEvent.connect(actionStartEvent) From 64c5405a3603806869ccf8d6739f862bf12930da Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 29 Oct 2014 16:01:33 -0700 Subject: [PATCH 3/5] use an ORB_SHIFT variable to easily shift the orb position --- examples/lobby.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/lobby.js b/examples/lobby.js index 8bee08769a..b6c70036e7 100644 --- a/examples/lobby.js +++ b/examples/lobby.js @@ -32,6 +32,8 @@ var orbCenter = Vec3.multiply(orbNaturalCenter, SCALING_FACTOR) var panelsCenter = Vec3.multiply(panelsNaturalCenter, SCALING_FACTOR) var panelsCenterShift = Vec3.subtract(panelsCenter, orbCenter) +var ORB_SHIFT = { x: 0, y: -1.5, z: 0.5} + function drawLobby() { if (!panelWall) { print("Adding overlays for the lobby panel wall and orb shell.") @@ -39,7 +41,7 @@ function drawLobby() { var cameraEuler = Quat.safeEulerAngles(Camera.getOrientation()); var towardsMe = Quat.angleAxis(cameraEuler.y + 180, { x: 0, y: 1, z: 0}) - var orbPosition = Vec3.subtract(Camera.getPosition(), { x: 0, y: 2.0, z: 0}) + var orbPosition = Vec3.sum(Camera.getPosition(), Vec3.multiplyQbyV(towardsMe, ORB_SHIFT)) var panelWallProps = { url: "http://s3.amazonaws.com/hifi-public/models/sets/Lobby/LobbyPrototype/PanelWall3.fbx", From 4a32b5acf35fc02e8e535aedd81987b675cbe713 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 29 Oct 2014 16:19:44 -0700 Subject: [PATCH 4/5] add a reticle so oculus selection is more obvious --- examples/lobby.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/examples/lobby.js b/examples/lobby.js index b6c70036e7..3658e8364c 100644 --- a/examples/lobby.js +++ b/examples/lobby.js @@ -9,8 +9,11 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +Script.include("libraries/globals.js"); + var panelWall = false var orbShell = false +var reticle = false var avatarStickPosition = {} @@ -44,14 +47,14 @@ function drawLobby() { var orbPosition = Vec3.sum(Camera.getPosition(), Vec3.multiplyQbyV(towardsMe, ORB_SHIFT)) var panelWallProps = { - url: "http://s3.amazonaws.com/hifi-public/models/sets/Lobby/LobbyPrototype/PanelWall3.fbx", + url: HIFI_PUBLIC_BUCKET + "models/sets/Lobby/LobbyPrototype/PanelWall3.fbx", position: Vec3.sum(orbPosition, Vec3.multiplyQbyV(towardsMe, panelsCenterShift)), rotation: towardsMe, dimensions: panelsDimensions } var orbShellProps = { - url: "https://s3.amazonaws.com/hifi-public/models/sets/Lobby/LobbyConcepts/Lobby5_OrbShellOnly.fbx", + url: HIFI_PUBLIC_BUCKET + "models/sets/Lobby/LobbyConcepts/Lobby5_OrbShellOnly.fbx", position: orbPosition, rotation: towardsMe, dimensions: orbDimensions, @@ -62,6 +65,20 @@ function drawLobby() { panelWall = Overlays.addOverlay("model", panelWallProps) orbShell = Overlays.addOverlay("model", orbShellProps) + + // Create a reticle image in center of screen + var screenSize = Controller.getViewportDimensions(); + var reticleProps = { + x: screenSize.x / 2 - 16, + y: screenSize.y / 2 - 16, + width: 32, + height: 32, + color: { red: 255, green: 255, blue: 255}, + alpha: 1, + imageURL: HIFI_PUBLIC_BUCKET + "images/reticle.png", + } + + reticle = Overlays.addOverlay("image", reticleProps); } } @@ -90,6 +107,7 @@ function changeLobbyTextures() { function cleanupLobby() { Overlays.deleteOverlay(panelWall) Overlays.deleteOverlay(orbShell) + Overlays.deleteOverlay(reticle) panelWall = false locations = {} toggleEnvironmentRendering(true) From 136aba450b5d397829094377a9d4652fc7a1a2a5 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 30 Oct 2014 09:18:46 -0700 Subject: [PATCH 5/5] add semicolons back to all of lobby, fix long line --- examples/lobby.js | 111 +++++++++++++++++++++++----------------------- 1 file changed, 56 insertions(+), 55 deletions(-) diff --git a/examples/lobby.js b/examples/lobby.js index 3658e8364c..a2d8d6ae75 100644 --- a/examples/lobby.js +++ b/examples/lobby.js @@ -11,47 +11,47 @@ Script.include("libraries/globals.js"); -var panelWall = false -var orbShell = false -var reticle = false +var panelWall = false; +var orbShell = false; +var reticle = false; -var avatarStickPosition = {} +var avatarStickPosition = {}; -var orbNaturalExtentsMin = { x: -1230, y: -1223, z: -1210 } -var orbNaturalExtentsMax = { x: 1230, y: 1229, z: 1223 } -var panelsNaturalExtentsMin = { x: -1181, y: -326, z: 56 } -var panelsNaturalExtentsMax = { x: 1181, y: 576, z: 1183 } +var orbNaturalExtentsMin = { x: -1230, y: -1223, z: -1210 }; +var orbNaturalExtentsMax = { x: 1230, y: 1229, z: 1223 }; +var panelsNaturalExtentsMin = { x: -1181, y: -326, z: 56 }; +var panelsNaturalExtentsMax = { x: 1181, y: 576, z: 1183 }; -var orbNaturalDimensions = Vec3.subtract(orbNaturalExtentsMax, orbNaturalExtentsMin) -var panelsNaturalDimensions = Vec3.subtract(panelsNaturalExtentsMax, panelsNaturalExtentsMin) +var orbNaturalDimensions = Vec3.subtract(orbNaturalExtentsMax, orbNaturalExtentsMin); +var panelsNaturalDimensions = Vec3.subtract(panelsNaturalExtentsMax, panelsNaturalExtentsMin); var SCALING_FACTOR = 0.01; -var orbDimensions = Vec3.multiply(orbNaturalDimensions, SCALING_FACTOR) -var panelsDimensions = Vec3.multiply(panelsNaturalDimensions, SCALING_FACTOR) +var orbDimensions = Vec3.multiply(orbNaturalDimensions, SCALING_FACTOR); +var panelsDimensions = Vec3.multiply(panelsNaturalDimensions, SCALING_FACTOR); -var orbNaturalCenter = Vec3.sum(orbNaturalExtentsMin, Vec3.multiply(orbNaturalDimensions, 0.5)) -var panelsNaturalCenter = Vec3.sum(panelsNaturalExtentsMin, Vec3.multiply(panelsNaturalDimensions, 0.5)) -var orbCenter = Vec3.multiply(orbNaturalCenter, SCALING_FACTOR) -var panelsCenter = Vec3.multiply(panelsNaturalCenter, SCALING_FACTOR) -var panelsCenterShift = Vec3.subtract(panelsCenter, orbCenter) +var orbNaturalCenter = Vec3.sum(orbNaturalExtentsMin, Vec3.multiply(orbNaturalDimensions, 0.5)); +var panelsNaturalCenter = Vec3.sum(panelsNaturalExtentsMin, Vec3.multiply(panelsNaturalDimensions, 0.5)); +var orbCenter = Vec3.multiply(orbNaturalCenter, SCALING_FACTOR); +var panelsCenter = Vec3.multiply(panelsNaturalCenter, SCALING_FACTOR); +var panelsCenterShift = Vec3.subtract(panelsCenter, orbCenter); -var ORB_SHIFT = { x: 0, y: -1.5, z: 0.5} +var ORB_SHIFT = { x: 0, y: -1.5, z: 0.5}; function drawLobby() { if (!panelWall) { - print("Adding overlays for the lobby panel wall and orb shell.") + print("Adding overlays for the lobby panel wall and orb shell."); var cameraEuler = Quat.safeEulerAngles(Camera.getOrientation()); - var towardsMe = Quat.angleAxis(cameraEuler.y + 180, { x: 0, y: 1, z: 0}) + var towardsMe = Quat.angleAxis(cameraEuler.y + 180, { x: 0, y: 1, z: 0}); - var orbPosition = Vec3.sum(Camera.getPosition(), Vec3.multiplyQbyV(towardsMe, ORB_SHIFT)) + var orbPosition = Vec3.sum(Camera.getPosition(), Vec3.multiplyQbyV(towardsMe, ORB_SHIFT)); var panelWallProps = { url: HIFI_PUBLIC_BUCKET + "models/sets/Lobby/LobbyPrototype/PanelWall3.fbx", position: Vec3.sum(orbPosition, Vec3.multiplyQbyV(towardsMe, panelsCenterShift)), rotation: towardsMe, dimensions: panelsDimensions - } + }; var orbShellProps = { url: HIFI_PUBLIC_BUCKET + "models/sets/Lobby/LobbyConcepts/Lobby5_OrbShellOnly.fbx", @@ -59,12 +59,12 @@ function drawLobby() { rotation: towardsMe, dimensions: orbDimensions, ignoreRayIntersection: true - } + }; - avatarStickPosition = MyAvatar.position + avatarStickPosition = MyAvatar.position; - panelWall = Overlays.addOverlay("model", panelWallProps) - orbShell = Overlays.addOverlay("model", orbShellProps) + panelWall = Overlays.addOverlay("model", panelWallProps); + orbShell = Overlays.addOverlay("model", orbShellProps); // Create a reticle image in center of screen var screenSize = Controller.getViewportDimensions(); @@ -76,20 +76,20 @@ function drawLobby() { color: { red: 255, green: 255, blue: 255}, alpha: 1, imageURL: HIFI_PUBLIC_BUCKET + "images/reticle.png", - } + }; reticle = Overlays.addOverlay("image", reticleProps); } } -var locations = {} +var locations = {}; function changeLobbyTextures() { var req = new XMLHttpRequest(); req.open("GET", "https://data.highfidelity.io/api/v1/locations?limit=21", false); req.send(); - locations = JSON.parse(req.responseText).data.locations + locations = JSON.parse(req.responseText).data.locations; var NUM_PANELS = locations.length; @@ -99,18 +99,18 @@ function changeLobbyTextures() { for (var j = 0; j < NUM_PANELS; j++) { textureProp["textures"]["file" + (j + 1)] = "http:" + locations[j].thumbnail_url - } + }; - Overlays.editOverlay(panelWall, textureProp) + Overlays.editOverlay(panelWall, textureProp); } function cleanupLobby() { - Overlays.deleteOverlay(panelWall) - Overlays.deleteOverlay(orbShell) - Overlays.deleteOverlay(reticle) - panelWall = false - locations = {} - toggleEnvironmentRendering(true) + Overlays.deleteOverlay(panelWall); + Overlays.deleteOverlay(orbShell); + Overlays.deleteOverlay(reticle); + panelWall = false; + locations = {}; + toggleEnvironmentRendering(true); } function actionStartEvent(event) { @@ -121,17 +121,18 @@ function actionStartEvent(event) { var result = Overlays.findRayIntersection(pickRay); if (result.intersects && result.overlayID == panelWall) { - var panelName = result.extraInfo - var panelStringIndex = panelName.indexOf("Panel") + var panelName = result.extraInfo; + var panelStringIndex = panelName.indexOf("Panel"); if (panelStringIndex != -1) { - var panelIndex = parseInt(panelName.slice(5)) - 1 + var panelIndex = parseInt(panelName.slice(5)) - 1; if (panelIndex < locations.length) { - var actionLocation = locations[panelIndex] + var actionLocation = locations[panelIndex]; - print("Jumping to " + actionLocation.name + " at " + actionLocation.path + " in " + actionLocation.domain.name + " after click on panel " + panelIndex) + print("Jumping to " + actionLocation.name + " at " + actionLocation.path + + " in " + actionLocation.domain.name + " after click on panel " + panelIndex); - Window.location = actionLocation - maybeCleanupLobby() + Window.location = actionLocation; + maybeCleanupLobby(); } } } @@ -140,11 +141,11 @@ function actionStartEvent(event) { function backStartEvent() { if (!panelWall) { - toggleEnvironmentRendering(false) - drawLobby() - changeLobbyTextures() + toggleEnvironmentRendering(false); + drawLobby(); + changeLobbyTextures(); } else { - cleanupLobby() + cleanupLobby(); } } @@ -152,17 +153,17 @@ var CLEANUP_EPSILON_DISTANCE = 0.025 function maybeCleanupLobby() { if (panelWall && Vec3.length(Vec3.subtract(avatarStickPosition, MyAvatar.position)) > CLEANUP_EPSILON_DISTANCE) { - cleanupLobby() + cleanupLobby(); } } function toggleEnvironmentRendering(shouldRender) { - Menu.setIsOptionChecked("Voxels", shouldRender) - Menu.setIsOptionChecked("Models", shouldRender) - Menu.setIsOptionChecked("Metavoxels", shouldRender) + Menu.setIsOptionChecked("Voxels", shouldRender); + Menu.setIsOptionChecked("Models", shouldRender); + Menu.setIsOptionChecked("Metavoxels", shouldRender); } -Controller.actionStartEvent.connect(actionStartEvent) -Controller.backStartEvent.connect(backStartEvent) -Script.update.connect(maybeCleanupLobby) +Controller.actionStartEvent.connect(actionStartEvent); +Controller.backStartEvent.connect(backStartEvent); +Script.update.connect(maybeCleanupLobby); Script.scriptEnding.connect(maybeCleanupLobby); \ No newline at end of file