mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 03:44:02 +02:00
basics of virtual baton
This commit is contained in:
parent
6c5ad187a0
commit
b7534fbd57
2 changed files with 101 additions and 0 deletions
|
@ -0,0 +1,70 @@
|
|||
|
||||
(function() {
|
||||
Script.include("../../libraries/virtualBaton.js");
|
||||
|
||||
var baton;
|
||||
var iOwn = false;
|
||||
var updateLoopConnected = false;
|
||||
|
||||
var _this;
|
||||
BatonSoundEntity = function() {
|
||||
_this = this;
|
||||
_this.drumSound = SoundCache.getSound("https://s3.amazonaws.com/hifi-public/sounds/Drums/deepdrum1.wav");
|
||||
_this.injectorOptions = {position: MyAvatar.position, loop: false, volume: 0.7};
|
||||
};
|
||||
|
||||
function startUpdate() {
|
||||
iOwn = true;
|
||||
updateLoopConnected = true;
|
||||
print("START UPDATE");
|
||||
Script.update.connect(_this.update);
|
||||
}
|
||||
|
||||
function stopUpdateAndReclaim() {
|
||||
// when the baton is release
|
||||
print("CLAIM BATON")
|
||||
if (updateLoopConnected === true) {
|
||||
updateLoopConnected = false;
|
||||
Script.update.disconnect(_this.update);
|
||||
}
|
||||
iOwn = false;
|
||||
|
||||
|
||||
// hook up callbacks to the baton
|
||||
baton.claim(startUpdate, stopUpdateAndReclaim);
|
||||
}
|
||||
|
||||
BatonSoundEntity.prototype = {
|
||||
|
||||
update: function() {
|
||||
if (iOwn === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
print("EBL I AM UPDATING");
|
||||
},
|
||||
|
||||
preload: function(entityID) {
|
||||
_this.entityID = entityID;
|
||||
print("PRELOAD ENTITY SCRIPT!!!");
|
||||
baton = virtualBaton({
|
||||
// One winner for each entity
|
||||
batonName: "io.highfidelity.soundEntityBatonTest:" + _this.entityID
|
||||
});
|
||||
Audio.playSound(_this.drumSound, _this.injectorOptions);
|
||||
stopUpdateAndReclaim();
|
||||
},
|
||||
|
||||
unload: function() {
|
||||
if (updateLoopConnected === true) {
|
||||
updateLoopConnected = false;
|
||||
Script.update.disconnect(_this.update);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
// entity scripts always need to return a newly constructed object of our type
|
||||
return new BatonSoundEntity();
|
||||
});
|
|
@ -0,0 +1,31 @@
|
|||
var orientation = Camera.getOrientation();
|
||||
orientation = Quat.safeEulerAngles(orientation);
|
||||
orientation.x = 0;
|
||||
orientation = Quat.fromVec3Degrees(orientation);
|
||||
var center = Vec3.sum(MyAvatar.position, Vec3.multiply(3, Quat.getFront(orientation)));
|
||||
|
||||
// Math.random ensures no caching of script
|
||||
var SCRIPT_URL = Script.resolvePath("batonSoundTestEntityScript.js?v1" + Math.random())
|
||||
|
||||
var soundEntity = Entities.addEntity({
|
||||
type: "Box",
|
||||
color: {
|
||||
red: 200,
|
||||
green: 10,
|
||||
blue: 10
|
||||
},
|
||||
position: center,
|
||||
dimensions: {
|
||||
x: 0.1,
|
||||
y: 0.1,
|
||||
z: 0.1
|
||||
},
|
||||
script: SCRIPT_URL
|
||||
});
|
||||
|
||||
|
||||
function cleanup() {
|
||||
Entities.deleteEntity(soundEntity);
|
||||
}
|
||||
|
||||
Script.scriptEnding.connect(cleanup);
|
Loading…
Reference in a new issue