overte-lubosz/scripts/system/controllers/controllerModules/disableOtherModule.js
2017-11-01 11:03:48 -07:00

85 lines
3.1 KiB
JavaScript

"use strict";
// disableOtherModule.js
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
/* global Script, MyAvatar, RIGHT_HAND, LEFT_HAND, enableDispatcherModule, disableDispatcherModule,
makeDispatcherModuleParameters, makeRunningValues, getEnabledModuleByName, Messages
*/
Script.include("/~/system/libraries/controllerDispatcherUtils.js");
(function() {
function DisableModules(hand) {
this.hand = hand;
this.disableModules = false;
this.parameters = makeDispatcherModuleParameters(
90,
this.hand === RIGHT_HAND ?
["rightHand", "rightHandEquip", "rightHandTrigger"] :
["leftHand", "leftHandEquip", "leftHandTrigger"],
[],
100);
this.isReady = function(controllerData) {
if (this.disableModules) {
return makeRunningValues(true, [], []);
}
return false;
};
this.run = function(controllerData) {
var teleportModuleName = this.hand === RIGHT_HAND ? "RightTeleporter" : "LeftTeleporter";
var teleportModule = getEnabledModuleByName(teleportModuleName);
if (teleportModule) {
var ready = teleportModule.isReady(controllerData);
if (ready.active) {
return makeRunningValues(false, [], []);
}
}
if (!this.disableModules) {
return makeRunningValues(false, [], []);
}
return makeRunningValues(true, [], []);
};
}
var leftDisableModules = new DisableModules(LEFT_HAND);
var rightDisableModules = new DisableModules(RIGHT_HAND);
enableDispatcherModule("LeftDisableModules", leftDisableModules);
enableDispatcherModule("RightDisableModules", rightDisableModules);
function handleMessage(channel, message, sender) {
if (sender === MyAvatar.sessionUUID) {
if (channel === 'Hifi-Hand-Disabler') {
if (message === 'left') {
leftDisableModules.disableModules = true;
}
if (message === 'right') {
rightDisableModules.disableModules = true;
}
if (message === 'both' || message === 'none') {
if (message === 'both') {
leftDisableModules.disableModules = true;
rightDisableModules.disableModules = true;
} else if (message === 'none') {
leftDisableModules.disableModules = false;
rightDisableModules.disableModules = false;
}
}
}
}
};
Messages.subscribe('Hifi-Hand-Disabler');
function cleanup() {
disableDispatcherModule("LeftDisableModules");
disableDispatcherModule("RightDisableModules");
};
Messages.messageReceived.connect(handleMessage);
Script.scriptEnding.connect(cleanup);
}());