diff --git a/examples/example/games/planky.js b/examples/example/games/planky.js index 77711958ea..450a411ad8 100644 --- a/examples/example/games/planky.js +++ b/examples/example/games/planky.js @@ -52,7 +52,7 @@ var button = Overlays.addOverlay('image', { width: BUTTON_DIMENSIONS.width, height: BUTTON_DIMENSIONS.height, imageURL: HIFI_PUBLIC_BUCKET + 'marketplace/hificontent/Games/blocks/planky_button.svg', - alpha: 1 + alpha: 0.8 }); @@ -93,7 +93,7 @@ function resetBlocks() { type: 'Model', modelURL: HIFI_PUBLIC_BUCKET + 'marketplace/hificontent/Games/blocks/block.fbx', shapeType: 'box', - name: 'JengaBlock' + ((layerIndex * BLOCKS_PER_LAYER) + blockIndex), + name: 'PlankyBlock' + ((layerIndex * BLOCKS_PER_LAYER) + blockIndex), dimensions: BLOCK_SIZE, position: { x: basePosition.x + localTransform.x, @@ -133,7 +133,10 @@ function cleanup() { } function onUpdate() { - + if (windowWidth != Window.innerWidth) { + windowWidth = Window.innerWidth; + Overlays.editOverlay(button, {x: getButtonPosX()}); + } } Script.update.connect(onUpdate) diff --git a/examples/grab.js b/examples/grab.js index 5d2ae13cde..312d21dd43 100644 --- a/examples/grab.js +++ b/examples/grab.js @@ -179,7 +179,7 @@ function update(deltaTime) { if (distanceToTarget > CLOSE_ENOUGH) { // compute current velocity in the direction we want to move velocityTowardTarget = Vec3.dot(currentVelocity, Vec3.normalize(dPosition)); - velocityTowardTarget = Vec3.multiply(dPosition, velocityTowardTarget); + velocityTowardTarget = Vec3.multiply(Vec3.normalize(dPosition), velocityTowardTarget); // compute the speed we would like to be going toward the target position desiredVelocity = Vec3.multiply(dPosition, (1.0 / deltaTime) * SPRING_RATE); diff --git a/examples/harmonicOscillator.js b/examples/harmonicOscillator.js index 0ffbce8beb..653c2db939 100644 --- a/examples/harmonicOscillator.js +++ b/examples/harmonicOscillator.js @@ -16,8 +16,7 @@ var ball, disc; var time = 0.0; var range = 1.0; -var speed = 0.5; - +var omega = 2.0 * Math.PI / 32.0; var basePosition = Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation())); @@ -25,35 +24,44 @@ ball = Entities.addEntity( { type: "Box", position: basePosition, dimensions: { x: 0.1, y: 0.1, z: 0.1 }, - color: { red: 255, green: 0, blue: 255 } + color: { red: 255, green: 0, blue: 255 }, + collisionsWillMove: false, + ignoreForCollisions: true }); disc = Entities.addEntity( { type: "Sphere", position: basePosition, - dimensions: { x: range, y: range / 20.0, z: range }, + dimensions: { x: range * 0.8, y: range / 20.0, z: range * 0.8}, color: { red: 128, green: 128, blue: 128 } }); +function randomColor() { + return { red: Math.random() * 255, green: Math.random() * 255, blue: Math.random() * 255 }; +} + function update(deltaTime) { - time += deltaTime * speed; + time += deltaTime; if (!ball.isKnownID) { ball = Entities.identifyEntity(ball); } - rotation = Quat.angleAxis(time/Math.PI * 180.0, { x: 0, y: 1, z: 0 }); + rotation = Quat.angleAxis(time * omega /Math.PI * 180.0, { x: 0, y: 1, z: 0 }); Entities.editEntity(ball, { - color: { red: 255 * (Math.sin(time)/2.0 + 0.5), - green: 255 - 255 * (Math.sin(time)/2.0 + 0.5), + color: { red: 255 * (Math.sin(time * omega)/2.0 + 0.5), + green: 255 - 255 * (Math.sin(time * omega)/2.0 + 0.5), blue: 0 }, - position: { x: basePosition.x + Math.sin(time) / 2.0 * range, + position: { x: basePosition.x + Math.sin(time * omega) / 2.0 * range, y: basePosition.y, - z: basePosition.z + Math.cos(time) / 2.0 * range }, - velocity: { x: Math.cos(time)/2.0 * range, + z: basePosition.z + Math.cos(time * omega) / 2.0 * range }, + velocity: { x: Math.cos(time * omega)/2.0 * range * omega, y: 0.0, - z: -Math.sin(time)/2.0 * range }, + z: -Math.sin(time * omega)/2.0 * range * omega}, rotation: rotation }); + if (Math.random() < 0.007) { + Entities.editEntity(disc, { color: randomColor() }); + } } function scriptEnding() { diff --git a/examples/html/entityProperties.html b/examples/html/entityProperties.html index 3e775ec698..e525818e51 100644 --- a/examples/html/entityProperties.html +++ b/examples/html/entityProperties.html @@ -33,6 +33,21 @@ ); }; } + function createEmitGroupNumberPropertyUpdateFunction(group, propertyName) { + return function() { + var properties = {}; + properties[group] = {}; + properties[group][propertyName] = this.value; + EventBridge.emitWebEvent( + JSON.stringify({ + type: "update", + properties: properties, + }) + ); + }; + } + + function createEmitTextPropertyUpdateFunction(propertyName) { return function() { var properties = {}; @@ -46,6 +61,20 @@ }; } + function createEmitGroupTextPropertyUpdateFunction(group,propertyName) { + return function() { + var properties = {}; + properties[group] = {}; + properties[group][propertyName] = this.value; + EventBridge.emitWebEvent( + JSON.stringify({ + type: "update", + properties: properties, + }) + ); + }; + } + function createEmitVec3PropertyUpdateFunction(property, elX, elY, elZ) { return function() { var data = { @@ -62,6 +91,23 @@ } }; + function createEmitGroupVec3PropertyUpdateFunction(group, property, elX, elY, elZ) { + return function() { + var data = { + type: "update", + properties: { + } + }; + data.properties[group] = { }; + data.properties[group][property] = { + x: elX.value, + y: elY.value, + z: elZ.value, + }; + EventBridge.emitWebEvent(JSON.stringify(data)); + } + }; + function createEmitVec3PropertyUpdateFunctionWithMultiplier(property, elX, elY, elZ, multiplier) { return function() { var data = { @@ -94,6 +140,24 @@ } }; + function createEmitGroupColorPropertyUpdateFunction(group, property, elRed, elGreen, elBlue) { + return function() { + var data = { + type: "update", + properties: { + } + }; + data.properties[group] = { }; + + data.properties[group][property] = { + red: elRed.value, + green: elGreen.value, + blue: elBlue.value, + }; + EventBridge.emitWebEvent(JSON.stringify(data)); + } + }; + function loaded() { var allSections = []; var elID = document.getElementById("property-id"); @@ -205,6 +269,24 @@ var elZoneStageDay = document.getElementById("property-zone-stage-day"); var elZoneStageHour = document.getElementById("property-zone-stage-hour"); + var elZoneBackgroundMode = document.getElementById("property-zone-background-mode"); + + var elZoneSkyboxColorRed = document.getElementById("property-zone-skybox-color-red"); + var elZoneSkyboxColorGreen = document.getElementById("property-zone-skybox-color-green"); + var elZoneSkyboxColorBlue = document.getElementById("property-zone-skybox-color-blue"); + var elZoneSkyboxURL = document.getElementById("property-zone-skybox-url"); + + var elZoneAtmosphereCenterX = document.getElementById("property-zone-atmosphere-center-x"); + var elZoneAtmosphereCenterY = document.getElementById("property-zone-atmosphere-center-y"); + var elZoneAtmosphereCenterZ = document.getElementById("property-zone-atmosphere-center-z"); + var elZoneAtmosphereInnerRadius = document.getElementById("property-zone-atmosphere-inner-radius"); + var elZoneAtmosphereOuterRadius = document.getElementById("property-zone-atmosphere-outer-radius"); + var elZoneAtmosphereMieScattering = document.getElementById("property-zone-atmosphere-mie-scattering"); + var elZoneAtmosphereRayleighScattering = document.getElementById("property-zone-atmosphere-rayleigh-scattering"); + var elZoneAtmosphereScatteringWavelengthsX = document.getElementById("property-zone-atmosphere-scattering-wavelengths-x"); + var elZoneAtmosphereScatteringWavelengthsY = document.getElementById("property-zone-atmosphere-scattering-wavelengths-y"); + var elZoneAtmosphereScatteringWavelengthsZ = document.getElementById("property-zone-atmosphere-scattering-wavelengths-z"); + if (window.EventBridge !== undefined) { EventBridge.scriptEventReceived.connect(function(data) { data = JSON.parse(data); @@ -386,6 +468,26 @@ elZoneStageHour.value = properties.stageHour; elShapeType.value = properties.shapeType; elCompoundShapeURL.value = properties.compoundShapeURL; + + elZoneBackgroundMode.value = properties.backgroundMode; + + elZoneSkyboxColorRed.value = properties.skybox.color.red; + elZoneSkyboxColorGreen.value = properties.skybox.color.green; + elZoneSkyboxColorBlue.value = properties.skybox.color.blue; + elZoneSkyboxURL.value = properties.skybox.url; + + elZoneAtmosphereCenterX.value = properties.atmosphere.center.x; + elZoneAtmosphereCenterY.value = properties.atmosphere.center.y; + elZoneAtmosphereCenterZ.value = properties.atmosphere.center.z; + elZoneAtmosphereInnerRadius.value = properties.atmosphere.innerRadius; + elZoneAtmosphereOuterRadius.value = properties.atmosphere.outerRadius; + elZoneAtmosphereMieScattering.value = properties.atmosphere.mieScattering; + elZoneAtmosphereRayleighScattering.value = properties.atmosphere.rayleighScattering; + elZoneAtmosphereScatteringWavelengthsX.value = properties.atmosphere.scatteringWavelengths.x; + elZoneAtmosphereScatteringWavelengthsY.value = properties.atmosphere.scatteringWavelengths.y; + elZoneAtmosphereScatteringWavelengthsZ.value = properties.atmosphere.scatteringWavelengths.z; + + } if (selected) { @@ -521,6 +623,34 @@ elZoneStageDay.addEventListener('change', createEmitNumberPropertyUpdateFunction('stageDay')); elZoneStageHour.addEventListener('change', createEmitNumberPropertyUpdateFunction('stageHour')); + + elZoneBackgroundMode.addEventListener('change', createEmitTextPropertyUpdateFunction('backgroundMode')); + var zoneSkyboxColorChangeFunction = createEmitGroupColorPropertyUpdateFunction('skybox','color', + elZoneSkyboxColorRed, elZoneSkyboxColorGreen, elZoneSkyboxColorBlue); + elZoneSkyboxColorRed.addEventListener('change', zoneSkyboxColorChangeFunction); + elZoneSkyboxColorGreen.addEventListener('change', zoneSkyboxColorChangeFunction); + elZoneSkyboxColorBlue.addEventListener('change', zoneSkyboxColorChangeFunction); + + elZoneSkyboxURL.addEventListener('change', createEmitGroupTextPropertyUpdateFunction('skybox','url')); + + var zoneAtmosphereCenterChangeFunction = createEmitGroupVec3PropertyUpdateFunction( + 'atmosphere','center', elZoneAtmosphereCenterX, elZoneAtmosphereCenterY, elZoneAtmosphereCenterZ); + elZoneAtmosphereCenterX.addEventListener('change', zoneAtmosphereCenterChangeFunction); + elZoneAtmosphereCenterY.addEventListener('change', zoneAtmosphereCenterChangeFunction); + elZoneAtmosphereCenterZ.addEventListener('change', zoneAtmosphereCenterChangeFunction); + + + elZoneAtmosphereInnerRadius.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('atmosphere','innerRadius')); + elZoneAtmosphereOuterRadius.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('atmosphere','outerRadius')); + elZoneAtmosphereMieScattering.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('atmosphere','mieScattering')); + elZoneAtmosphereRayleighScattering.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('atmosphere','rayleighScattering')); + var zoneAtmosphereScatterWavelengthsChangeFunction = createEmitGroupVec3PropertyUpdateFunction( + 'atmosphere','scatteringWavelengths', elZoneAtmosphereScatteringWavelengthsX, + elZoneAtmosphereScatteringWavelengthsY, elZoneAtmosphereScatteringWavelengthsZ); + elZoneAtmosphereScatteringWavelengthsX.addEventListener('change', zoneAtmosphereScatterWavelengthsChangeFunction); + elZoneAtmosphereScatteringWavelengthsY.addEventListener('change', zoneAtmosphereScatterWavelengthsChangeFunction); + elZoneAtmosphereScatteringWavelengthsZ.addEventListener('change', zoneAtmosphereScatterWavelengthsChangeFunction); + elMoveSelectionToGrid.addEventListener("click", function() { EventBridge.emitWebEvent(JSON.stringify({ type: "action", @@ -958,6 +1088,72 @@ + +