From 5f2112b8a5599f4fec0b4cad07b9957a787f482b Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Tue, 6 Oct 2015 11:28:36 -0700 Subject: [PATCH] finish rack and add to master script, reorganize all bball related scripts --- .../createHoop.js | 1 - .../createRack.js | 6 +- .../createSingleBasketball.js} | 2 +- unpublishedScripts/masterReset.js | 102 +++++++++++++++++- 4 files changed, 104 insertions(+), 7 deletions(-) rename examples/toys/{basketball_hoop => basketball}/createHoop.js (96%) rename examples/toys/{basketball_hoop => basketball}/createRack.js (97%) rename examples/toys/{basketball.js => basketball/createSingleBasketball.js} (98%) diff --git a/examples/toys/basketball_hoop/createHoop.js b/examples/toys/basketball/createHoop.js similarity index 96% rename from examples/toys/basketball_hoop/createHoop.js rename to examples/toys/basketball/createHoop.js index b0c76b4a53..2beb7c9fca 100644 --- a/examples/toys/basketball_hoop/createHoop.js +++ b/examples/toys/basketball/createHoop.js @@ -5,7 +5,6 @@ // Copyright 2015 High Fidelity, Inc. // // This is a script that creates a persistent basketball hoop with a working collision hull. Feel free to move it. -// Run basketball.js to make a basketball. // // 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/examples/toys/basketball_hoop/createRack.js b/examples/toys/basketball/createRack.js similarity index 97% rename from examples/toys/basketball_hoop/createRack.js rename to examples/toys/basketball/createRack.js index a223a1064a..ad0ccb716a 100644 --- a/examples/toys/basketball_hoop/createRack.js +++ b/examples/toys/basketball/createRack.js @@ -17,7 +17,6 @@ var basketballURL = HIFI_PUBLIC_BUCKET + "models/content/basketball2.fbx"; var collisionSoundURL = HIFI_PUBLIC_BUCKET + "sounds/basketball/basketball.wav"; var rackURL = HIFI_PUBLIC_BUCKET + "models/basketball_hoop/basketball_rack.fbx"; var rackCollisionHullURL = HIFI_PUBLIC_BUCKET + "models/basketball_hoop/rack_collision_hull.obj"; -var basketballSwitcherURL = Script.resolvePath('basketballSwitcher.js'); var NUMBER_OF_BALLS = 4; var DIAMETER = 0.30; @@ -33,7 +32,7 @@ var rackStartPosition = })); var rack = Entities.addEntity({ - name:'Basketball Rack', + name: 'Basketball Rack', type: "Model", modelURL: rackURL, position: rackStartPosition, @@ -43,7 +42,7 @@ var rack = Entities.addEntity({ y: -9.8, z: 0 }, - linearDamping:1, + linearDamping: 1, dimensions: { x: 0.4, y: 1.37, @@ -51,6 +50,7 @@ var rack = Entities.addEntity({ }, collisionsWillMove: true, ignoreForCollisions: false, + collisionSoundURL: collisionSoundURL, compoundShapeURL: rackCollisionHullURL }); diff --git a/examples/toys/basketball.js b/examples/toys/basketball/createSingleBasketball.js similarity index 98% rename from examples/toys/basketball.js rename to examples/toys/basketball/createSingleBasketball.js index 96b6218b3d..162b572bd1 100644 --- a/examples/toys/basketball.js +++ b/examples/toys/basketball/createSingleBasketball.js @@ -1,5 +1,5 @@ // -// basketball.js +// createSingleBasketball.js // examples // // Created by Philip Rosedale on August 20, 2015 diff --git a/unpublishedScripts/masterReset.js b/unpublishedScripts/masterReset.js index d6759e2b48..4f77651209 100644 --- a/unpublishedScripts/masterReset.js +++ b/unpublishedScripts/masterReset.js @@ -85,6 +85,8 @@ function createAllToys() { createBasketballHoop(); + createBasketallRack(); + createGates(); createFire(); @@ -98,7 +100,7 @@ function createAllToys() { function deleteAllToys() { var entities = Entities.findEntities(MyAvatar.position, 100); - entities.forEach(function (entity) { + entities.forEach(function(entity) { //params: customKey, id, defaultValue var shouldReset = getEntityCustomData(resetKey, entity, {}).resetMe; if (shouldReset === true) { @@ -521,6 +523,102 @@ function createBasketballHoop() { }); } +function createBasketallRack() { + var NUMBER_OF_BALLS = 4; + var DIAMETER = 0.30; + + var basketballURL = HIFI_PUBLIC_BUCKET + "models/content/basketball2.fbx"; + var basketballCollisionSoundURL = HIFI_PUBLIC_BUCKET + "sounds/basketball/basketball.wav"; + var rackURL = HIFI_PUBLIC_BUCKET + "models/basketball_hoop/basketball_rack.fbx"; + var rackCollisionHullURL = HIFI_PUBLIC_BUCKET + "models/basketball_hoop/rack_collision_hull.obj"; + + var rackRotation = Quat.fromPitchYawRollDegrees(0, -90, 0); + + var rackStartPosition = { + x: 542.86, + y: 494.84, + z: 475.06 + }; + var rack = Entities.addEntity({ + name: 'Basketball Rack', + type: "Model", + modelURL: rackURL, + position: rackStartPosition, + rotation: rackRotation, + shapeType: 'compound', + gravity: { + x: 0, + y: -9.8, + z: 0 + }, + linearDamping: 1, + dimensions: { + x: 0.4, + y: 1.37, + z: 1.73 + }, + collisionsWillMove: true, + ignoreForCollisions: false, + compoundShapeURL: rackCollisionHullURL + }); + + setEntityCustomData(resetKey, rack, { + resetMe: true + }); + + setEntityCustomData(GRABBABLE_DATA_KEY, rack, { + grabbable: false + }); + + var collidingBalls = []; + + + function createCollidingBalls() { + var position = rackStartPosition; + var i; + + for (i = 0; i < NUMBER_OF_BALLS; i++) { + var collidingBall = Entities.addEntity({ + type: "Model", + name: 'Colliding Basketball', + shapeType: 'Sphere', + position: { + x: position.x + (DIAMETER*2) - (DIAMETER * i), + y: position.y + DIAMETER * 2, + z: position.z + }, + dimensions: { + x: DIAMETER, + y: DIAMETER, + z: DIAMETER + }, + restitution: 1.0, + linearDamping: 0.00001, + gravity: { + x: 0, + y: -9.8, + z: 0 + }, + collisionsWillMove: true, + ignoreForCollisions: false, + collisionSoundURL: basketballCollisionSoundURL, + modelURL: basketballURL, + }); + + collidingBalls.push(collidingBall); + + setEntityCustomData(resetKey, collidingBall, { + resetMe: true + }); + + } + } + + createCollidingBalls(); +} + + + function createWand(position) { var WAND_MODEL = 'http://hifi-public.s3.amazonaws.com/james/bubblewand/models/wand/wand.fbx'; var WAND_COLLISION_SHAPE = 'http://hifi-public.s3.amazonaws.com/james/bubblewand/models/wand/actual_no_top_collision_hull.obj'; @@ -831,4 +929,4 @@ function cleanup() { if (shouldDeleteOnEndScript) { Script.scriptEnding.connect(cleanup); -} +} \ No newline at end of file