From 17dec9446abd2b334806967388820bb409f14f44 Mon Sep 17 00:00:00 2001 From: ericrius1 Date: Fri, 4 Mar 2016 16:15:37 -0800 Subject: [PATCH] flowers are growing when watered --- .../plant/growingPlantEntityScript.js | 58 ++++++++++++++++--- .../homeContent/plant/growingPlantSpawner.js | 6 +- .../homeContent/plant/waterCanEntityScript.js | 8 +-- 3 files changed, 57 insertions(+), 15 deletions(-) diff --git a/examples/homeContent/plant/growingPlantEntityScript.js b/examples/homeContent/plant/growingPlantEntityScript.js index 9d4f42b191..89b84f3ffb 100644 --- a/examples/homeContent/plant/growingPlantEntityScript.js +++ b/examples/homeContent/plant/growingPlantEntityScript.js @@ -17,27 +17,71 @@ var _this; GrowingPlant = function() { _this = this; + _this.flowers = []; + // _this.STARTING_FLOWER_DIMENSIONS = {x: 0.1, y: 0.001, z: 0.1} + _this.STARTING_FLOWER_DIMENSIONS = {x: 0.01, y: 0.01, z: 0.02} }; GrowingPlant.prototype = { - grow: function() { - print(" I AM BEING GROWN RIGHT NOW") + continueWatering: function(entityID, data) { + // we're being watered- every now and then spawn a new flower to add to our growing list + // If we don't have any flowers yet, immediately grow one + var data = JSON.parse(data[0]); + if (_this.flowers.length < 10) { + + _this.createFlower(data.position, data.surfaceNormal); + } + + _this.flowers.forEach( function(flower) { + flower.grow(); + }); + + + }, + + createFlower: function(position, surfaceNormal) { + var flowerRotation = Quat.rotationBetween(Vec3.UNIT_NEG_Z, surfaceNormal); + print("flower rotation " + flowerRotation.x) + var flowerEntityID = Entities.addEntity({ + type: "Sphere", + name: "flower", + position: position, + rotation: flowerRotation, + dimensions: _this.STARTING_FLOWER_DIMENSIONS, + // userData: JSON.stringify(_this.flowerUserData) + }); + + var flower = {id: flowerEntityID, dimensions: _this.STARTING_FLOWER_DIMENSIONS}; + flower.grow = function() { + // grow flower a bit + flower.dimensions.z += 0.0001; + Entities.editEntity(flower.id, {dimensions: flower.dimensions}); + } + _this.flowers.push(flower); }, preload: function(entityID) { _this.entityID = entityID; - - + _this.flowerUserData = { + ProceduralEntity: { + shaderUrl: "https://s3-us-west-1.amazonaws.com/hifi-content/eric/shaders/flower.fs", + uniforms: { + iBloomPct: randFloat(0.4, 0.8), + hueTwerking: randFloat(10, 30) + } + } + }; }, - - unload: function() { + _this.flowers.forEach(function(flower) { + Entities.deleteEntity(flower.id); + }) + - } }; diff --git a/examples/homeContent/plant/growingPlantSpawner.js b/examples/homeContent/plant/growingPlantSpawner.js index 27a7a44255..37339e1bcb 100644 --- a/examples/homeContent/plant/growingPlantSpawner.js +++ b/examples/homeContent/plant/growingPlantSpawner.js @@ -29,7 +29,7 @@ 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"); +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 plant = Entities.addEntity({ @@ -42,8 +42,8 @@ var plant = Entities.addEntity({ parentID: bowl }); -var WATER_CAN_MODEL_URL = "https://s3-us-west-1.amazonaws.com/hifi-content/eric/models/waterCan.fbx"; -var WATER_CAN_SCRIPT_URL = Script.resolvePath("waterCanEntityScript.js?v2" + Math.random()); +var WATER_CAN_MODEL_URL = "https://s3-us-west-1.amazonaws.com/hifi-content/eric/models/waterCan.fbx?v1" + Math.random(); +var WATER_CAN_SCRIPT_URL = Script.resolvePath("waterCanEntityScript.js?v2" + Math.random().toFixed()); var waterCanPosition = Vec3.sum(plantPosition, Vec3.multiply(0.6, Quat.getRight(orientation))); var waterCanRotation = orientation; var waterCan = Entities.addEntity({ diff --git a/examples/homeContent/plant/waterCanEntityScript.js b/examples/homeContent/plant/waterCanEntityScript.js index c197c35665..5c89010386 100644 --- a/examples/homeContent/plant/waterCanEntityScript.js +++ b/examples/homeContent/plant/waterCanEntityScript.js @@ -59,7 +59,6 @@ }); _this.waterPouring = false; } - // print("PITCH " + pitch); }, castRay: function() { @@ -78,10 +77,9 @@ var intersection = Entities.findRayIntersection(pickRay, true, _this.growableEntities); if (intersection.intersects) { - //We've intersected with a growable object, now - print(intersection.properties.name) - print("intersection with growable object"); - Entities.callEntityMethod(intersection.entityID, 'grow'); + //We've intersected with a waterable object + var data = JSON.stringify({position: intersection.intersection, surfaceNormal: intersection.surfaceNormal}); + Entities.callEntityMethod(intersection.entityID, 'continueWatering', [data]); } },