54 lines
1.8 KiB
JavaScript
54 lines
1.8 KiB
JavaScript
var currentBubble = null;
|
|
|
|
var BUBBLE_MODEL = "http://hifi-production.s3.amazonaws.com/DomainContent/Toybox/bubblewand/bubble.fbx";
|
|
|
|
var BUBBLE_INITIAL_DIMENSIONS = {
|
|
x: 0.03,
|
|
y: 0.03,
|
|
z: 0.03
|
|
};
|
|
|
|
var BUBBLE_LIFETIME_MIN = 3;
|
|
var BUBBLE_LIFETIME_MAX = 8;
|
|
var BUBBLE_SIZE_MIN = 0.05;
|
|
var BUBBLE_SIZE_MAX = 0.15;
|
|
var BUBBLE_LINEAR_DAMPING = 0.2;
|
|
var BUBBLE_GRAVITY_MIN = 0.1;
|
|
var BUBBLE_GRAVITY_MAX = 0.3;
|
|
|
|
function radiusFromVolume(volume) {
|
|
return Math.pow(volume / ((4/3) * Math.PI),(1/3));
|
|
}
|
|
var bubbleSizeMultiplier = 1;
|
|
var BREATH_RATE = 0.01; // 0.01 Liters per second
|
|
var breathedAir = 0.0; //
|
|
Script.update.connect(function(deltaTime) {
|
|
if (MyAvatar.audioAverageLoudness > 50) {
|
|
breathedAir += deltaTime * BREATH_RATE;
|
|
if (currentBubble == null) {
|
|
currentBubble = Entities.addEntity({
|
|
name: 'Bubble',
|
|
type: 'Model',
|
|
modelURL: BUBBLE_MODEL,
|
|
position: MyAvatar.getJointPosition(MyAvatar.jointNames.indexOf("Head")),
|
|
dimensions: BUBBLE_INITIAL_DIMENSIONS,
|
|
dynamic: false,
|
|
collisionless: true,
|
|
damping: BUBBLE_LINEAR_DAMPING,
|
|
shapeType: 'sphere',
|
|
lifetime: 60 // Noone exhales for 60 seconds hopefully!
|
|
});
|
|
return;
|
|
}
|
|
Entities.editEntity(currentBubble, {dimensions: Vec3.multiply({x: 2, y: 2, z: 2}, radiusFromVolume(breathedAir))});
|
|
return;
|
|
}
|
|
if (currentBubble) {
|
|
Entities.editEntity(currentBubble, {
|
|
lifetime: 20,
|
|
velocity: Vec3.sum(Vec3.multiplyQbyV(MyAvatar.orientation, {x: 0, y: 0, z: -1}), {y: 1})
|
|
});
|
|
currentBubble = null;
|
|
breathedAir = 0.0;
|
|
}
|
|
});
|