From d4bc83f408c1f3fa4095501e070ca0fc73010f9e Mon Sep 17 00:00:00 2001 From: ericrius1 Date: Mon, 7 Mar 2016 16:16:06 -0800 Subject: [PATCH] cleanup and bug fixes --- examples/homeContent/plant/flower.fs | 10 +++ .../plant/growingPlantEntityScript.js | 26 ++++--- .../homeContent/plant/growingPlantSpawner.js | 72 ++++++++++++++++--- .../homeContent/plant/waterCanEntityScript.js | 10 +-- 4 files changed, 96 insertions(+), 22 deletions(-) diff --git a/examples/homeContent/plant/flower.fs b/examples/homeContent/plant/flower.fs index d6dc310e85..8e35bd1014 100644 --- a/examples/homeContent/plant/flower.fs +++ b/examples/homeContent/plant/flower.fs @@ -1,3 +1,13 @@ +// +// flowers.fs +// examples/homeContent/plant +// +// Created by Eric Levin on 3/7/16. +// Copyright 2016 High Fidelity, Inc. +// +// This fragment shader is designed to shader a sphere to create the effect of a blooming flower +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html #define TWO_PI 6.28318530718 diff --git a/examples/homeContent/plant/growingPlantEntityScript.js b/examples/homeContent/plant/growingPlantEntityScript.js index f0992db45a..6f59d808a5 100644 --- a/examples/homeContent/plant/growingPlantEntityScript.js +++ b/examples/homeContent/plant/growingPlantEntityScript.js @@ -33,6 +33,9 @@ max: 1000 }; _this.canCreateFlower = true; + _this.flowersBloomingSound = SoundCache.getSound("https://s3-us-west-1.amazonaws.com/hifi-content/eric/Sounds/flowersBlooming.wav"); + _this.soundPlaying = false; + _this.BLOOM_VOLUME = 0.4; }; @@ -57,8 +60,16 @@ flower.grow(); }); + if (!_this.soundPlaying) { + _this.position = Entities.getEntityProperties(_this.entityID, "position").position; + _this.soundPlaying = true; + _this.bloomSoundInjector = Audio.playSound(_this.flowersBloomingSound, {position: _this.position, volume: _this.BLOOM_VOLUME}); + } + }, - + stopWatering: function() { + _this.bloomSoundInjector.stop(); + _this.soundPlaying = false; }, createFlower: function(position, surfaceNormal) { @@ -114,8 +125,7 @@ preload: function(entityID) { _this.entityID = entityID; - var SHADER_URL = "file:///C:/Users/Eric/hifi/examples/homeContent/plant/flower.fs" - // var SHADER_URL = "https://s3-us-west-1.amazonaws.com/hifi-content/eric/shaders/flower.fs"; + var SHADER_URL = "https://s3-us-west-1.amazonaws.com/hifi-content/eric/shaders/flower.fs?v1"; _this.flowerUserData = { ProceduralEntity: { shaderUrl: SHADER_URL, @@ -128,12 +138,10 @@ }, unload: function() { - print("EBL UNLOAD GROWING PLANT SCRIPT"); - // _this.flowers.forEach(function(flower) { - // Entities.deleteEntity(flower.id); - // }) - - + if (_this.bloomSoundInjector) { + _this.bloomSoundInjector.stop(); + delete _this.bloomSoundInjector; + } } }; diff --git a/examples/homeContent/plant/growingPlantSpawner.js b/examples/homeContent/plant/growingPlantSpawner.js index b9f0ef147d..a48708eb8a 100644 --- a/examples/homeContent/plant/growingPlantSpawner.js +++ b/examples/homeContent/plant/growingPlantSpawner.js @@ -18,8 +18,12 @@ orientation = Quat.fromVec3Degrees(orientation); var bowlPosition = Vec3.sum(MyAvatar.position, Vec3.multiply(2, Quat.getFront(orientation))); var BOWL_MODEL_URL = "http://hifi-content.s3.amazonaws.com/alan/dev/Flowers--Bowl.fbx"; -var bowlDimensions = {x: 0.518, y: 0.1938, z: 0.5518}; -var bowl= Entities.addEntity({ +var bowlDimensions = { + x: 0.518, + y: 0.1938, + z: 0.5518 +}; +var bowl = Entities.addEntity({ type: "Model", modelURL: BOWL_MODEL_URL, dimensions: bowlDimensions, @@ -30,8 +34,16 @@ var bowl= Entities.addEntity({ var PLANT_MODEL_URL = "http://hifi-content.s3.amazonaws.com/alan/dev/Flowers--Moss-Rock.fbx"; var PLANT_SCRIPT_URL = Script.resolvePath("growingPlantEntityScript.js?v1" + Math.random().toFixed(2)); -var plantDimensions = {x: 0.52, y: 0.2600, z: 0.52}; -var plantPosition = Vec3.sum(bowlPosition, {x: 0, y: plantDimensions.y/2, z: 0}); +var plantDimensions = { + x: 0.52, + y: 0.2600, + z: 0.52 +}; +var plantPosition = Vec3.sum(bowlPosition, { + x: 0, + y: plantDimensions.y / 2, + z: 0 +}); var plant = Entities.addEntity({ type: "Model", modelURL: PLANT_MODEL_URL, @@ -52,12 +64,46 @@ var waterCan = Entities.addEntity({ name: "hifi-water-can", modelURL: WATER_CAN_MODEL_URL, script: WATER_CAN_SCRIPT_URL, - dimensions: {x: 0.1859, y: 0.2762, z: 0.4115}, + dimensions: { + x: 0.1859, + y: 0.2762, + z: 0.4115 + }, position: waterCanPosition, angularDamping: 1, dynamic: true, - gravity: { x: 0.0, y: -2.0, z: 0}, - rotation: waterCanRotation + gravity: { + x: 0.0, + y: -2.0, + z: 0 + }, + rotation: waterCanRotation, + userData: JSON.stringify({ + wearable: { + joints: { + RightHand: [{ + x: 0.024, + y: 0.173, + z: 0.152 + }, { + x: 0.374, + y: 0.636, + z: -0.638, + w: -0.215 + }], + LeftHand: [{ + x: -0.0348, + y: 0.201, + z: 0.166 + }, { + x: 0.4095, + y: -0.625, + z: 0.616, + w: -0.247 + }] + } + } + }) }); @@ -66,8 +112,16 @@ var waterSpoutRotation = Quat.multiply(waterCanRotation, Quat.fromPitchYawRollDe var waterSpout = Entities.addEntity({ type: "Box", name: "hifi-water-spout", - dimensions: {x: 0.02, y: 0.02, z: 0.07}, - color: {red: 200, green: 10, blue: 200}, + dimensions: { + x: 0.02, + y: 0.02, + z: 0.07 + }, + color: { + red: 200, + green: 10, + blue: 200 + }, position: waterSpoutPosition, rotation: waterSpoutRotation, parentID: waterCan, diff --git a/examples/homeContent/plant/waterCanEntityScript.js b/examples/homeContent/plant/waterCanEntityScript.js index 2817524ab0..551c74bc47 100644 --- a/examples/homeContent/plant/waterCanEntityScript.js +++ b/examples/homeContent/plant/waterCanEntityScript.js @@ -37,7 +37,6 @@ startHold: function() { _this.findGrowableEntities(); - print("EB: GROWABLE ENTITIES length " + _this.growableEntities.length) }, releaseEquip: function() { @@ -58,7 +57,10 @@ }); _this.waterPouring = false; //water no longer pouring... - _this.waterInjector.stop(); + if (_this.waterInjector) { + _this.waterInjector.stop(); + } + Entities.callEntityMethod(_this.mostRecentIntersectedGrowableEntity, 'stopWatering'); }, continueEquip: function() { _this.continueHolding(); @@ -85,7 +87,6 @@ }); _this.waterPouring = true; if (!_this.waterInjector) { - print("PLAY SOUND") _this.waterInjector = Audio.playSound(_this.waterSound, { position: spoutProps.position, loop: true @@ -122,6 +123,7 @@ position: intersection.intersection, surfaceNormal: intersection.surfaceNormal }); + _this.mostRecentIntersectedGrowableEntity = intersection.entityID; Entities.callEntityMethod(intersection.entityID, 'continueWatering', [data]); } @@ -184,7 +186,7 @@ alpha: 1.0, alphaFinish: 1.0, emitterShouldTrail: true, - textures: "https://s3-us-west-1.amazonaws.com/hifi-content/eric/images/raindrop.png?v2", + textures: "https://s3-us-west-1.amazonaws.com/hifi-content/eric/images/raindrop.png", }); },