removing particles

This commit is contained in:
ZappoMan 2014-10-13 14:11:20 -07:00
parent c36bcf2d7e
commit fe759859e7

View file

@ -5,8 +5,8 @@
// Created by Athanasios Gaitatzes on 2/10/14. // Created by Athanasios Gaitatzes on 2/10/14.
// Copyright 2014 High Fidelity, Inc. // Copyright 2014 High Fidelity, Inc.
// //
// This script creates a particle in front of the user that stays in front of // This script creates a entity in front of the user that stays in front of
// the user's avatar as they move, and animates it's radius and color // the user's avatar as they move, and animates it's size and color
// in response to the audio intensity. // in response to the audio intensity.
// //
// Distributed under the Apache License, Version 2.0. // Distributed under the Apache License, Version 2.0.
@ -18,56 +18,59 @@ Script.include("libraries/globals.js");
var sound = new Sound(HIFI_PUBLIC_BUCKET + "sounds/Animals/mexicanWhipoorwill.raw"); var sound = new Sound(HIFI_PUBLIC_BUCKET + "sounds/Animals/mexicanWhipoorwill.raw");
var CHANCE_OF_PLAYING_SOUND = 0.01; var CHANCE_OF_PLAYING_SOUND = 0.01;
var FACTOR = 0.75; var FACTOR = 0.05;
var countParticles = 0; // the first time around we want to create the particle and thereafter to modify it. var countEntities = 0; // the first time around we want to create the entity and thereafter to modify it.
var particleID; var entityID;
function updateParticle(deltaTime) { function updateEntity(deltaTime) {
// the particle should be placed in front of the user's avatar // the entity should be placed in front of the user's avatar
var avatarFront = Quat.getFront(MyAvatar.orientation); var avatarFront = Quat.getFront(MyAvatar.orientation);
// move particle three units in front of the avatar // move entity three units in front of the avatar
var particlePosition = Vec3.sum(MyAvatar.position, Vec3.multiply(avatarFront, 3)); var entityPosition = Vec3.sum(MyAvatar.position, Vec3.multiply(avatarFront, 3));
if (Math.random() < CHANCE_OF_PLAYING_SOUND) { if (Math.random() < CHANCE_OF_PLAYING_SOUND) {
// play a sound at the location of the particle // play a sound at the location of the entity
var options = new AudioInjectionOptions(); var options = new AudioInjectionOptions();
options.position = particlePosition; options.position = entityPosition;
options.volume = 0.75; options.volume = 0.75;
Audio.playSound(sound, options); Audio.playSound(sound, options);
} }
var audioAverageLoudness = MyAvatar.audioAverageLoudness * FACTOR; var audioAverageLoudness = MyAvatar.audioAverageLoudness * FACTOR;
//print ("Audio Loudness = " + MyAvatar.audioLoudness + " -- Audio Average Loudness = " + MyAvatar.audioAverageLoudness); print ("Audio Loudness = " + MyAvatar.audioLoudness + " -- Audio Average Loudness = " + MyAvatar.audioAverageLoudness);
if (countParticles < 1) { if (countEntities < 1) {
var particleProperies = { var entityProperties = {
position: particlePosition // the particle should stay in front of the user's avatar as he moves type: "Sphere",
position: entityPosition // the entity should stay in front of the user's avatar as he moves
, color: { red: 0, green: 255, blue: 0 } , color: { red: 0, green: 255, blue: 0 }
, radius: audioAverageLoudness , dimensions: {x: audioAverageLoudness, y: audioAverageLoudness, z: audioAverageLoudness }
, velocity: { x: 0.0, y: 0.0, z: 0.0 } , velocity: { x: 0.0, y: 0.0, z: 0.0 }
, gravity: { x: 0.0, y: 0.0, z: 0.0 } , gravity: { x: 0.0, y: 0.0, z: 0.0 }
, damping: 0.0 , damping: 0.0
} }
particleID = Particles.addParticle (particleProperies); entityID = Entities.addEntity(entityProperties);
countParticles++; countEntities++;
} }
else { else {
// animates the particles radius and color in response to the changing audio intensity // animates the particles size and color in response to the changing audio intensity
var newProperties = { var newProperties = {
position: particlePosition // the particle should stay in front of the user's avatar as he moves position: entityPosition // the entity should stay in front of the user's avatar as he moves
, color: { red: 0, green: 255 * audioAverageLoudness, blue: 0 } , color: { red: 0, green: 255 * audioAverageLoudness, blue: 0 }
, radius: audioAverageLoudness , dimensions: {x: audioAverageLoudness, y: audioAverageLoudness, z: audioAverageLoudness }
}; };
Particles.editParticle (particleID, newProperties); Entities.editEntity(entityID, newProperties);
} }
} }
// register the call back so it fires before each data send // register the call back so it fires before each data send
Script.update.connect(updateParticle); Script.update.connect(updateEntity);
// register our scriptEnding callback // register our scriptEnding callback
Script.scriptEnding.connect(function scriptEnding() {}); Script.scriptEnding.connect(function scriptEnding() {
Entities.deleteEntity(entityID);
});