69 lines
2.0 KiB
JavaScript
Raw Normal View History

2016-03-31 18:49:51 -07:00
2016-03-25 12:52:53 -07:00
// cowEntityScript.js
// examples/cows
//
// Created by Eric Levin on 3/25/16
// Copyright 2016 High Fidelity, Inc.
//
// This entity script handles the logic for untipping a cow after it collides with something
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
2016-03-25 10:57:54 -07:00
(function() {
Script.include("../libraries/utils.js");
var _this = this;
2016-03-25 11:19:30 -07:00
_this.COLLISION_COOLDOWN_TIME = 5000;
2016-03-25 10:57:54 -07:00
this.preload = function(entityID) {
print("EBL Preload!!");
_this.entityID = entityID;
_this.mooSound = SoundCache.getSound("https://s3-us-west-1.amazonaws.com/hifi-content/eric/Sounds/moo.wav")
_this.mooSoundOptions = {volume: 0.7, loop: false};
2016-03-25 11:19:30 -07:00
_this.timeSinceLastCollision = 0;
_this.shouldUntipCow = true;
2016-03-25 10:57:54 -07:00
}
this.collisionWithEntity = function(myID, otherID, collisionInfo) {
2016-03-25 11:19:30 -07:00
if(_this.shouldUntipCow) {
Script.setTimeout(function() {
_this.untipCow();
_this.shouldUntipCow = true;
}, _this.COLLISION_COOLDOWN_TIME);
}
_this.shouldUntipCow = false;
2016-03-25 10:57:54 -07:00
}
this.untipCow = function() {
// keep yaw but reset pitch and roll
var cowProps = Entities.getEntityProperties(_this.entityID, ["rotation", "position"]);
var eulerRotation = Quat.safeEulerAngles(cowProps.rotation);
eulerRotation.x = 0;
eulerRotation.z = 0;
var newRotation = Quat.fromVec3Degrees(eulerRotation);
2016-03-25 11:19:30 -07:00
Entities.editEntity(_this.entityID, {
rotation: newRotation,
velocity: {x: 0, y: 0, z: 0},
angularVelocity: {x: 0, y: 0, z:0}
2016-03-25 10:57:54 -07:00
});
_this.mooSoundOptions.position = cowProps.position;
if (!_this.soundInjector) {
_this.soundInjector = Audio.playSound(_this.mooSound, _this.mooSoundOptions);
} else {
_this.soundInjector.setOptions(_this.mooSoundOptions);
_this.soundInjector.restart();
}
}
2016-03-31 18:49:51 -07:00
});