From 668894b3e06714be35da275127858f1505a7bfd0 Mon Sep 17 00:00:00 2001 From: ericrius1 Date: Thu, 25 Feb 2016 16:05:03 -0800 Subject: [PATCH] should work multiuser now --- .../whiteboardV2/markerEntityScript.js | 58 ++++++++++--------- .../whiteboardV2/whiteboardSpawner.js | 16 +---- 2 files changed, 34 insertions(+), 40 deletions(-) diff --git a/examples/homeContent/whiteboardV2/markerEntityScript.js b/examples/homeContent/whiteboardV2/markerEntityScript.js index 761ef00e33..80ba1cea7e 100644 --- a/examples/homeContent/whiteboardV2/markerEntityScript.js +++ b/examples/homeContent/whiteboardV2/markerEntityScript.js @@ -23,22 +23,34 @@ MarkerTip = function() { _this = this; _this.MARKER_TEXTURE_URL = "https://s3-us-west-1.amazonaws.com/hifi-content/eric/textures/markerStroke.png"; - this.strokeForwardOffset = 0.0001; - this.STROKE_FORWARD_OFFSET_INCRERMENT = 0.00001; - this.STROKE_WIDTH = 0.003 + _this.strokeForwardOffset = 0.0001; + _this.STROKE_FORWARD_OFFSET_INCRERMENT = 0.00001; + _this.STROKE_WIDTH = 0.003 _this.MAX_MARKER_TO_BOARD_DISTANCE = 1.4; _this.MIN_DISTANCE_BETWEEN_POINTS = 0.002; _this.MAX_DISTANCE_BETWEEN_POINTS = 0.1; _this.strokes = []; _this.PAINTING_TRIGGER_THRESHOLD = 0.2; - this.STROKE_NAME = "hifi-marker-stroke"; + _this.STROKE_NAME = "hifi-marker-stroke"; + _this.WHITEBOARD_SURFACE_NAME = "hifi-whiteboardDrawingSurface"; }; MarkerTip.prototype = { startEquip: function(id, params) { + _this.whiteboards = []; _this.equipped = true; _this.hand = params[0] == "left" ? 0 : 1; + _this.markerColor = getEntityUserData(_this.entityID).markerColor; + // search for whiteboards + var markerPosition = Entities.getEntityProperties(_this.entityID, "position").position; + var entities = Entities.findEntities(markerPosition, 10); + entities.forEach(function(entity) { + var entityName = Entities.getEntityProperties(entity, "name").name; + if (entityName === _this.WHITEBOARD_SURFACE_NAME) { + _this.whiteboards.push(entity); + } + }); }, releaseEquip: function() { @@ -57,12 +69,14 @@ origin: markerProps.position, direction: Quat.getFront(markerProps.rotation) } - var intersection = Entities.findRayIntersectionBlocking(pickRay, true, [_this.whiteboard]); - + var intersection = Entities.findRayIntersectionBlocking(pickRay, true, _this.whiteboards); + _this.whiteboardNormal = Quat.getFront(intersection.properties.rotation); if (intersection.intersects && Vec3.distance(intersection.intersection, markerProps.position) < _this.MAX_MARKER_TO_BOARD_DISTANCE) { + print("EBL HIT") Overlays.editOverlay(_this.laserPointer, { visible: true, - position: intersection.intersection + position: intersection.intersection, + rotation: intersection.properties.rotation }) _this.triggerValue = Controller.getValue(TRIGGER_CONTROLS[_this.hand]); if (_this.triggerValue > _this.PAINTING_TRIGGER_THRESHOLD) { @@ -71,8 +85,8 @@ _this.resetStroke(); } } else { - _this.resetStroke(); - + _this.resetStroke(); + Overlays.editOverlay(_this.laserPointer, { visible: false }); @@ -145,22 +159,6 @@ preload: function(entityID) { this.entityID = entityID; - - }, - - unload: function() { - Overlays.deleteOverlay(_this.laserPointer); - _this.strokes.forEach( function(stroke) { - Entities.deleteEntity(stroke); - }); - }, - - setProperties: function(myId, data) { - var data = JSON.parse(data); - - _this.whiteboard = data.whiteboard; - var whiteboardProps = Entities.getEntityProperties(_this.whiteboard, ["rotation"]); - _this.whiteboardNormal = Quat.getFront(whiteboardProps.rotation); _this.laserPointer = Overlays.addOverlay("circle3d", { color: { red: 220, @@ -169,9 +167,15 @@ }, solid: true, size: 0.01, - rotation: whiteboardProps.rotation }); - _this.markerColor = data.markerColor; + + }, + + unload: function() { + Overlays.deleteOverlay(_this.laserPointer); + _this.strokes.forEach(function(stroke) { + Entities.deleteEntity(stroke); + }); } }; diff --git a/examples/homeContent/whiteboardV2/whiteboardSpawner.js b/examples/homeContent/whiteboardV2/whiteboardSpawner.js index 8402b241ed..08cd2b5a5f 100644 --- a/examples/homeContent/whiteboardV2/whiteboardSpawner.js +++ b/examples/homeContent/whiteboardV2/whiteboardSpawner.js @@ -56,7 +56,7 @@ var whiteboardSurfacePosition = Vec3.sum(whiteboardPosition, { whiteboardSurfacePosition = Vec3.sum(whiteboardSurfacePosition, Vec3.multiply(-0.02, Quat.getRight(orientation))); var whiteboardDrawingSurface = Entities.addEntity({ type: "Box", - name: "whiteboardDrawingSurface", + name: "hifi-whiteboardDrawingSurface", dimensions: { x: 1.82, y: 1.8, @@ -166,7 +166,7 @@ function createMarkers() { function createMarker(modelURL, markerPosition, markerColor) { - var MARKER_SCRIPT_URL = Script.resolvePath("markerEntityScript.js"); + var MARKER_SCRIPT_URL = Script.resolvePath("markerEntityScript.js?v1" + Math.random()); var marker = Entities.addEntity({ type: "Model", modelURL: modelURL, @@ -193,6 +193,7 @@ function createMarker(modelURL, markerPosition, markerColor) { name: "marker", script: MARKER_SCRIPT_URL, userData: JSON.stringify({ + markerColor: markerColor, wearable: { joints: { RightHand: [{ @@ -222,17 +223,6 @@ function createMarker(modelURL, markerPosition, markerColor) { markers.push(marker); - Script.setTimeout(function() { - var data = { - whiteboard: whiteboardDrawingSurface, - markerColor: markerColor - } - var modelURL = Entities.getEntityProperties(marker, "modelURL").modelURL; - - Entities.callEntityMethod(marker, "setProperties", [JSON.stringify(data)]); - }, 5000) - - }