fix auto laser on locked web entity, only auto laser at tablet or web overlays

This commit is contained in:
David Back 2018-06-14 17:43:45 -07:00
parent 227bd1487e
commit ed5b05eef4

View file

@ -50,21 +50,28 @@ Script.include("/~/system/libraries/controllers.js");
return this.hand === RIGHT_HAND ? leftOverlayLaserInput : rightOverlayLaserInput; return this.hand === RIGHT_HAND ? leftOverlayLaserInput : rightOverlayLaserInput;
}; };
this.isPointingAtWebEntity = function(controllerData) { this.isPointingAtTabletOrWeb = function(controllerData, triggerPressed) {
var intersection = controllerData.rayPicks[this.hand]; var intersection = controllerData.rayPicks[this.hand];
var entityProperty = Entities.getEntityProperties(intersection.objectID); if (intersection.type === Picks.INTERSECTED_OVERLAY) {
var entityType = entityProperty.type; var objectID = intersection.objectID;
if ((intersection.type === Picks.INTERSECTED_ENTITY && entityType === "Web")) { if ((HMD.tabletScreenID && objectID === HMD.tabletScreenID) ||
return true; (HMD.homeButtonID && objectID === HMD.homeButtonID)) {
return true;
} else {
var overlayType = Overlays.getOverlayType(objectID);
if (overlayType === "web3d") {
return true;
}
}
} else if (intersection.type === Picks.INTERSECTED_ENTITY) {
var entityProperty = Entities.getEntityProperties(intersection.objectID);
var entityType = entityProperty.type;
var isLocked = entityProperty.locked;
return entityType === "Web" && (!isLocked || triggerPressed);
} }
return false; return false;
}; };
this.isPointingAtOverlay = function(controllerData) {
var intersection = controllerData.rayPicks[this.hand];
return intersection.type === Picks.INTERSECTED_OVERLAY;
};
this.deleteContextOverlay = function() { this.deleteContextOverlay = function() {
var farGrabModule = getEnabledModuleByName(this.hand === RIGHT_HAND var farGrabModule = getEnabledModuleByName(this.hand === RIGHT_HAND
? "RightFarActionGrabEntity" : "LeftFarActionGrabEntity"); ? "RightFarActionGrabEntity" : "LeftFarActionGrabEntity");
@ -92,10 +99,10 @@ Script.include("/~/system/libraries/controllers.js");
this.isReady = function(controllerData) { this.isReady = function(controllerData) {
var otherModuleRunning = this.getOtherModule().running; var otherModuleRunning = this.getOtherModule().running;
otherModuleRunning = otherModuleRunning && this.getDominantHand() !== this.hand; // Auto-swap to dominant hand. otherModuleRunning = otherModuleRunning && this.getDominantHand() !== this.hand; // Auto-swap to dominant hand.
var isTriggerPressed = controllerData.triggerValues[this.hand] > TRIGGER_OFF_VALUE var isTriggerPressed = controllerData.triggerValues[this.hand] > TRIGGER_OFF_VALUE &&
&& controllerData.triggerValues[this.otherHand] <= TRIGGER_OFF_VALUE; controllerData.triggerValues[this.otherHand] <= TRIGGER_OFF_VALUE;
if ((!otherModuleRunning || isTriggerPressed) var allowThisModule = !otherModuleRunning || isTriggerPressed;
&& (this.isPointingAtOverlay(controllerData) || this.isPointingAtWebEntity(controllerData))) { if (allowThisModule && this.isPointingAtTabletOrWeb(controllerData, isTriggerPressed)) {
this.updateAllwaysOn(); this.updateAllwaysOn();
if (isTriggerPressed) { if (isTriggerPressed) {
this.dominantHandOverride = true; // Override dominant hand. this.dominantHandOverride = true; // Override dominant hand.
@ -113,9 +120,10 @@ Script.include("/~/system/libraries/controllers.js");
otherModuleRunning = otherModuleRunning && this.getDominantHand() !== this.hand; // Auto-swap to dominant hand. otherModuleRunning = otherModuleRunning && this.getDominantHand() !== this.hand; // Auto-swap to dominant hand.
otherModuleRunning = otherModuleRunning || this.getOtherModule().dominantHandOverride; // Override dominant hand. otherModuleRunning = otherModuleRunning || this.getOtherModule().dominantHandOverride; // Override dominant hand.
var grabModuleNeedsToRun = this.grabModuleWantsNearbyOverlay(controllerData); var grabModuleNeedsToRun = this.grabModuleWantsNearbyOverlay(controllerData);
if (!otherModuleRunning && !grabModuleNeedsToRun && (controllerData.triggerValues[this.hand] > TRIGGER_OFF_VALUE var allowThisModule = !otherModuleRunning && !grabModuleNeedsToRun;
|| this.parameters.handLaser.allwaysOn var isTriggerPressed = controllerData.triggerValues[this.hand] > TRIGGER_OFF_VALUE;
&& (this.isPointingAtOverlay(controllerData) || this.isPointingAtWebEntity(controllerData)))) { var laserOn = isTriggerPressed || this.parameters.handLaser.allwaysOn;
if (allowThisModule && (laserOn && this.isPointingAtTabletOrWeb(controllerData, isTriggerPressed))) {
this.running = true; this.running = true;
return makeRunningValues(true, [], []); return makeRunningValues(true, [], []);
} }