content/hifi-content/brosche/StudioFurniture/PowerPlant/Scripts/physButton.js
2022-02-13 21:50:01 +01:00

114 lines
No EOL
4.2 KiB
JavaScript

// physButton.js
(function(){
var _this;
var ringID;
var ringAction = null;
var buttonAction = null;
var buttonSpring = null;
var pressDepth;
var physButton = function() {
_this = this;
};
physButton.prototype = {
preload: function(entityID) {
_this.entityID = entityID;
_this.getButtonData();
var actionList = Entities.getActionIDs(_this.entityID);
if(actionList.length <= 1){
console.log("adding Actions");
buttonAction = Entities.addAction("slider", ringID, {
axis: { x: 0, y: 1, z: 0 },
point: {x:0, y:0, z: 0},
otherEntityID: _this.entityID,
otherPoint: { x: 0, y: 1, z: 0 },
otherAxis: { x: 0, y: 1, z: 0 },
linearLow: -1,
linearHigh: 1
});
//Entities.editEntity(ringID, {locked: true});
buttonSpring = Entities.addAction("tractor", _this.entityID, {
targetPosition: { x: 0, y: 100, z: 0},
LinearTimeScale: 0,
otherID: ringID
});
}else{
for ( i = 0; i < actionList.length; i++ ){
try{
Entities.deleteAction(_this.entityID, actionList[i]);
console.log("actionID deleted");
} catch (e){
print("Error deleting ActionID");
return;
}
}
}
},
getButtonData: function() {
buttonProperties = Entities.getEntityProperties(_this.entityID, ["position", "userData"]);
if (!buttonProperties.userData || buttonProperties.userData === "{}") {
print("Button ", _this.entityID, " is missing user data.");
//Script.clearInterval(intervalID);
return;
}
try {
buttonUserData = JSON.parse(buttonProperties.userData);
ringID = buttonUserData.ringID;
baseID = buttonUserData.baseID;
soundURL = SoundCache.getSound(buttonUserData.soundURL);
pressDepth = buttonUserData.pressDepth;
soundVolume = !isNaN(buttonUserData.soundVolume) ? buttonUserData.soundVolume : 0.0;
soundLocal = buttonUserData.isLocal ? buttonUserData.isLocal : false;
// verify that settings are legit
} catch (e) {
print("Error in retrieving physButton Data");
return;
}
},
playSound: function() {
if (injector) {
injector.stop();
}
if (soundURL && soundURL.downloaded) {
injector = Audio.playSound(soundURL, {
position: soundPosition,
volume: soundVolume,
loop: soundLoop,
localOnly: soundLocal
});
} else {
print("soundURL not downloaded!");
return;
}
},
collisionWithEntity: function(entityID, baseID, collision){
_this.playSound();
},
unload: function(){
var actionList = Entities.getActionIDs(_this.entityID);
for ( i = 0; i < actionList.length; i++ ){
try{
Entities.deleteAction(_this.entityID, actionList[i]);
console.log("actionID deleted");
} catch (e){
print("Error deleting ActionID");
return;
}
}
Entities.deleteAction(ringID,ringAction);
Entities.deleteAction(_this.entityID, buttonAction);
}
// var switchBaseID = Entities.findEntitiesByName("Visual_Object_Mark_scram-base", worldOriginPos, radius);
// console.log("HELLOOOOOOO ",switchBaseID);
};
return new physButton;
});