// physButton.js (function(){ var _this; var ringID; var ringAction = null; var buttonAction = null; var RADIUS = 10000; var position; var pressDepth; var physButton = function() { _this = this; }; physButton.prototype = { preload: function(entityID) { _this.entityID = entityID; _this.getButtonData(); ringAction = Entities.addAction("slider", _this.entityID, { axis: { x: 0, y: 1, z: 0 }, linearLow: 0, linearHigh: 0 }); Entities.editEntity(ringID, {locked: true}); buttonAction = Entities.addAction("slider", _this.entityID, { axis: { x: 0, y: 1, z: 0 }, otherEntityID: ringID, otherPoint: { x: 0, y: -pressDepth, z: 0 }, otherAxis: { x: 0, y: 1, z: 0 }, linearLow: -pressDepth, linearHigh: 0 }); }, 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 { ringID = Entities.findEntitiesByName("Visual_Object_Mark_button-ring", buttonProperties.position, radius); buttonUserData = JSON.parse(buttonProperties.userData); 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; } }, enterEntity: function(){ _this.playSound(); }, unload: function(){ 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; });