From ec126f16d54272fe36acf6843f30341861ff267d Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 30 Oct 2014 10:43:10 -0700 Subject: [PATCH 1/3] make the oculus reticle a sphere overlay --- examples/lobby.js | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/examples/lobby.js b/examples/lobby.js index 62df410c70..c911811f61 100644 --- a/examples/lobby.js +++ b/examples/lobby.js @@ -35,7 +35,7 @@ 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.4, z: -0.8}; function drawLobby() { if (!panelWall) { @@ -66,19 +66,15 @@ 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); + // Create a reticle in center of screen + var RETICLE_SPHERE_SIZE = 0.05; + reticle = Overlays.addOverlay("sphere", { + position: Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())), + size: RETICLE_SPHERE_SIZE, + color: { red: 0, green: 255, blue: 0 }, + alpha: 1.0, + solid: true + }); } } @@ -109,6 +105,8 @@ function cleanupLobby() { Overlays.deleteOverlay(orbShell); Overlays.deleteOverlay(reticle); panelWall = false; + orbShell = false; + reticle = false; locations = {}; toggleEnvironmentRendering(true); } @@ -164,7 +162,16 @@ function toggleEnvironmentRendering(shouldRender) { Menu.setIsOptionChecked("Avatars", shouldRender); } +function update(deltaTime) { + maybeCleanupLobby(); + if (reticle) { + Overlays.editOverlay(reticle, { + position: Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())) + }); + } +} + Controller.actionStartEvent.connect(actionStartEvent); Controller.backStartEvent.connect(backStartEvent); -Script.update.connect(maybeCleanupLobby); +Script.update.connect(update); Script.scriptEnding.connect(maybeCleanupLobby); \ No newline at end of file From 35dc72521b8608f54812ce5a0a4c330551302812 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 30 Oct 2014 10:44:55 -0700 Subject: [PATCH 2/3] only show sphere if user is wearing the oculus --- examples/lobby.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/examples/lobby.js b/examples/lobby.js index c911811f61..654097d5e8 100644 --- a/examples/lobby.js +++ b/examples/lobby.js @@ -66,15 +66,19 @@ function drawLobby() { panelWall = Overlays.addOverlay("model", panelWallProps); orbShell = Overlays.addOverlay("model", orbShellProps); - // Create a reticle in center of screen - var RETICLE_SPHERE_SIZE = 0.05; - reticle = Overlays.addOverlay("sphere", { - position: Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())), - size: RETICLE_SPHERE_SIZE, - color: { red: 0, green: 255, blue: 0 }, - alpha: 1.0, - solid: true - }); + if (Menu.isOptionChecked("EnableVRMode")) { + // for HMD wearers, create a reticle in center of screen + var RETICLE_SPHERE_SIZE = 0.05; + reticle = Overlays.addOverlay("sphere", { + position: Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())), + size: RETICLE_SPHERE_SIZE, + color: { red: 0, green: 255, blue: 0 }, + alpha: 1.0, + solid: true + }); + } + + } } From 409a01c4988ec1ad2e91151a7208e346404518dd Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 30 Oct 2014 11:16:52 -0700 Subject: [PATCH 3/3] show the reticle sphere in lobby interface --- examples/lobby.js | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/examples/lobby.js b/examples/lobby.js index 654097d5e8..b15dbc48cf 100644 --- a/examples/lobby.js +++ b/examples/lobby.js @@ -37,6 +37,13 @@ var panelsCenterShift = Vec3.subtract(panelsCenter, orbCenter); var ORB_SHIFT = { x: 0, y: -1.4, z: -0.8}; +function reticlePosition() { + var screenSize = Controller.getViewportDimensions(); + var reticleRay = Camera.computePickRay(screenSize.x / 2, screenSize.y / 2); + var RETICLE_DISTANCE = 1; + return Vec3.sum(reticleRay.origin, Vec3.multiply(reticleRay.direction, RETICLE_DISTANCE)); +} + function drawLobby() { if (!panelWall) { print("Adding overlays for the lobby panel wall and orb shell."); @@ -66,19 +73,16 @@ function drawLobby() { panelWall = Overlays.addOverlay("model", panelWallProps); orbShell = Overlays.addOverlay("model", orbShellProps); - if (Menu.isOptionChecked("EnableVRMode")) { - // for HMD wearers, create a reticle in center of screen - var RETICLE_SPHERE_SIZE = 0.05; - reticle = Overlays.addOverlay("sphere", { - position: Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())), - size: RETICLE_SPHERE_SIZE, - color: { red: 0, green: 255, blue: 0 }, - alpha: 1.0, - solid: true - }); - } + // for HMD wearers, create a reticle in center of screen + var RETICLE_SPHERE_SIZE = 0.025; - + reticle = Overlays.addOverlay("sphere", { + position: reticlePosition(), + size: RETICLE_SPHERE_SIZE, + color: { red: 0, green: 255, blue: 0 }, + alpha: 1.0, + solid: true + }); } } @@ -170,7 +174,7 @@ function update(deltaTime) { maybeCleanupLobby(); if (reticle) { Overlays.editOverlay(reticle, { - position: Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())) + position: reticlePosition() }); } }