add rat sounds

This commit is contained in:
James B. Pollack 2015-12-04 13:54:59 -08:00
parent 493a8f6f82
commit a9aecb5c49

View file

@ -6,9 +6,9 @@ var TWEEN = loadTween();
var USE_CONSTANT_SPAWNER = true;
var RAT_SPAWNER_LOCATION = {
x: 1001,
y: 97.5,
z: 1039
x: 1000.5,
y: 98,
z: 1039.5
};
var RAT_NEST_LOCATION = {
@ -34,6 +34,9 @@ var RAT_IN_NEST_DISTANCE = 3;
//how many milliseconds between rats
var RAT_SPAWN_RATE = 2500;
var RAT_SOUND_URL = 'http://hifi-content.s3.amazonaws.com/james/rat/sounds/rat2.wav';
var ratRunningSound = SoundCache.getSound(RAT_SOUND_URL);
function playRatRunningAnimation(rat) {
var animationSettings = JSON.stringify({
running: true
@ -118,6 +121,8 @@ function addRat() {
}
var rats = [];
var metaRats = [];
var ratCount = 0;
var AVOIDER_Y_HEIGHT = 99;
var FIRST_AVOIDER_START_POSITION = {
@ -236,6 +241,17 @@ function updateTweens() {
TWEEN.update();
}
function createRatSoundInjector() {
var audioOptions = {
volume: 0.05,
loop: true
}
var injector = Audio.playSound(ratRunningSound, audioOptions);
return injector
}
function moveRats() {
rats.forEach(function(rat) {
checkDistanceFromNest(rat);
@ -307,6 +323,15 @@ function moveRats() {
rotation: constrainedRotation,
})
var metaRat = getMetaRatByRat(rat);
if (metaRat !== undefined) {
metaRat.injector.options = {
loop: true,
position: ratPosition
}
} else {
print('no meta rat for this rat')
}
// castRay(rat);
})
}
@ -332,6 +357,13 @@ function removeRatFromScene(rat) {
rats.splice(index, 1);
}
Entities.deleteEntity(rat);
var metaRatIndex = findWithAttr(metaRats, 'rat', rat);
if (metaRatIndex > -1) {
metaRats[index].injector.stop();
delete metaRats[index].injector
metaRats.splice(index, 1);
}
}
function popRatFromStack(entityID) {
@ -339,6 +371,29 @@ function popRatFromStack(entityID) {
if (index > -1) {
rats.splice(index, 1);
}
var metaRatIndex = findWithAttr(metaRats, 'rat', entityID);
if (metaRatIndex > -1) {
metaRats[index].injector.stop();
delete metaRats[index].injector
metaRats.splice(index, 1);
}
}
function findWithAttr(array, attr, value) {
for (var i = 0; i < array.length; i += 1) {
if (array[i][attr] === value) {
return i;
}
}
}
function getMetaRatByRat(rat) {
var result = metaRats.filter(function(metaRat) {
print('metarat:::' + metaRat)
return rat === metaRat.rat;
});
// print('RESULT LENGTH:::' + result.length)
return result[0];
}
Entities.deletingEntity.connect(popRatFromStack);
@ -368,6 +423,15 @@ if (USE_CONSTANT_SPAWNER === true) {
var rat = addRat();
playRatRunningAnimation(rat);
rats.push(rat);
// print('ratCount::'+ratCount)
ratCount++;
if (ratCount % 3 === 0) {
metaRats.push({
rat: rat,
injector: createRatSoundInjector()
});
}
}, RAT_SPAWN_RATE);
}