mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 15:29:32 +02:00
allow thumb+index finger pinch to mean same as trigger click
This commit is contained in:
parent
7d956198cd
commit
3d4de67c49
3 changed files with 38 additions and 4 deletions
|
@ -35,7 +35,6 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js");
|
||||||
var DEBUG = false;
|
var DEBUG = false;
|
||||||
var SHOW_GRAB_SPHERE = false;
|
var SHOW_GRAB_SPHERE = false;
|
||||||
|
|
||||||
|
|
||||||
if (typeof Test !== "undefined") {
|
if (typeof Test !== "undefined") {
|
||||||
PROFILE = true;
|
PROFILE = true;
|
||||||
}
|
}
|
||||||
|
@ -97,11 +96,15 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js");
|
||||||
};
|
};
|
||||||
|
|
||||||
this.runningPluginNames = {};
|
this.runningPluginNames = {};
|
||||||
|
|
||||||
this.leftTriggerValue = 0;
|
this.leftTriggerValue = 0;
|
||||||
this.leftTriggerClicked = 0;
|
this.leftTriggerClicked = 0;
|
||||||
|
this.leftTrackerClicked = false; // is leftTriggerClicked == 1 because a hand tracker set it?
|
||||||
|
this.leftSecondaryValue = 0;
|
||||||
|
|
||||||
this.rightTriggerValue = 0;
|
this.rightTriggerValue = 0;
|
||||||
this.rightTriggerClicked = 0;
|
this.rightTriggerClicked = 0;
|
||||||
this.leftSecondaryValue = 0;
|
this.rightTrackerClicked = false; // is rightTriggerClicked == 1 because a hand tracker set it?
|
||||||
this.rightSecondaryValue = 0;
|
this.rightSecondaryValue = 0;
|
||||||
|
|
||||||
this.leftTriggerPress = function (value) {
|
this.leftTriggerPress = function (value) {
|
||||||
|
@ -162,6 +165,34 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.checkForHandTrackingClick = function() {
|
||||||
|
|
||||||
|
var pinchOnBelowDistance = 0.016;
|
||||||
|
var pinchOffAboveDistance = 0.04;
|
||||||
|
|
||||||
|
var leftIndexPose = Controller.getPoseValue(Controller.Standard.LeftHandIndex4);
|
||||||
|
var leftThumbPose = Controller.getPoseValue(Controller.Standard.LeftHandThumb4);
|
||||||
|
var leftThumbToIndexDistance = Vec3.distance(leftIndexPose.translation, leftThumbPose.translation);
|
||||||
|
if (leftIndexPose.valid && leftThumbPose.valid && leftThumbToIndexDistance < pinchOnBelowDistance) {
|
||||||
|
_this.leftTriggerClicked = 1;
|
||||||
|
_this.leftTrackerClicked = true;
|
||||||
|
} else if (_this.leftTrackerClicked && leftThumbToIndexDistance > pinchOffAboveDistance) {
|
||||||
|
_this.leftTriggerClicked = 0;
|
||||||
|
_this.leftTrackerClicked = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rightIndexPose = Controller.getPoseValue(Controller.Standard.RightHandIndex4);
|
||||||
|
var rightThumbPose = Controller.getPoseValue(Controller.Standard.RightHandThumb4);
|
||||||
|
var rightThumbToIndexDistance = Vec3.distance(rightIndexPose.translation, rightThumbPose.translation);
|
||||||
|
if (rightIndexPose.valid && rightThumbPose.valid && rightThumbToIndexDistance < pinchOnBelowDistance) {
|
||||||
|
_this.rightTriggerClicked = 1;
|
||||||
|
_this.rightTrackerClicked = true;
|
||||||
|
} else if (_this.rightTrackerClicked && rightThumbToIndexDistance > pinchOffAboveDistance) {
|
||||||
|
_this.rightTriggerClicked = 0;
|
||||||
|
_this.rightTrackerClicked = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
this.update = function () {
|
this.update = function () {
|
||||||
try {
|
try {
|
||||||
_this.updateInternal();
|
_this.updateInternal();
|
||||||
|
@ -369,6 +400,9 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check for hand-tracking "click"
|
||||||
|
_this.checkForHandTrackingClick();
|
||||||
|
|
||||||
// bundle up all the data about the current situation
|
// bundle up all the data about the current situation
|
||||||
var controllerData = {
|
var controllerData = {
|
||||||
triggerValues: [_this.leftTriggerValue, _this.rightTriggerValue],
|
triggerValues: [_this.leftTriggerValue, _this.rightTriggerValue],
|
||||||
|
|
|
@ -151,7 +151,7 @@ Script.include("/~/system/libraries/controllers.js");
|
||||||
this.run = function (controllerData, deltaTime) {
|
this.run = function (controllerData, deltaTime) {
|
||||||
|
|
||||||
if (this.grabbing) {
|
if (this.grabbing) {
|
||||||
if (controllerData.triggerClicks[this.hand] < TRIGGER_OFF_VALUE &&
|
if (!controllerData.triggerClicks[this.hand] &&
|
||||||
controllerData.secondaryValues[this.hand] < TRIGGER_OFF_VALUE) {
|
controllerData.secondaryValues[this.hand] < TRIGGER_OFF_VALUE) {
|
||||||
this.endNearGrabEntity();
|
this.endNearGrabEntity();
|
||||||
return makeRunningValues(false, [], []);
|
return makeRunningValues(false, [], []);
|
||||||
|
|
|
@ -67,7 +67,7 @@ Script.include("/~/system/libraries/controllers.js");
|
||||||
var nearTabletHighlightModuleReady = nearTabletHighlightModule
|
var nearTabletHighlightModuleReady = nearTabletHighlightModule
|
||||||
? nearTabletHighlightModule.isReady(controllerData) : makeRunningValues(false, [], []);
|
? nearTabletHighlightModule.isReady(controllerData) : makeRunningValues(false, [], []);
|
||||||
return grabOverlayModuleReady.active || farGrabModuleReady.active || grabEntityModuleReady.active
|
return grabOverlayModuleReady.active || farGrabModuleReady.active || grabEntityModuleReady.active
|
||||||
|| nearTabletHighlightModuleReady.active;
|
/* || nearTabletHighlightModuleReady.active */ ;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.overlayLaserActive = function(controllerData) {
|
this.overlayLaserActive = function(controllerData) {
|
||||||
|
|
Loading…
Reference in a new issue