mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 19:52:26 +02:00
Fix buttons sometimes staying pressed
This commit is contained in:
parent
4e87c13020
commit
0f44e36128
1 changed files with 16 additions and 14 deletions
|
@ -341,7 +341,7 @@ ToolMenu = function (side, leftInputs, rightInputs, doCallback) {
|
||||||
highlightedItem,
|
highlightedItem,
|
||||||
highlightedSource,
|
highlightedSource,
|
||||||
isHighlightingButton,
|
isHighlightingButton,
|
||||||
pressedItem,
|
pressedItem = null,
|
||||||
pressedSource,
|
pressedSource,
|
||||||
isButtonPressed,
|
isButtonPressed,
|
||||||
|
|
||||||
|
@ -468,6 +468,7 @@ ToolMenu = function (side, leftInputs, rightInputs, doCallback) {
|
||||||
var intersectedItem = -1,
|
var intersectedItem = -1,
|
||||||
intersectionItems,
|
intersectionItems,
|
||||||
parentProperties,
|
parentProperties,
|
||||||
|
localPosition,
|
||||||
BUTTON_PRESS_DELTA = 0.004,
|
BUTTON_PRESS_DELTA = 0.004,
|
||||||
parameterValue,
|
parameterValue,
|
||||||
enableGroupButton,
|
enableGroupButton,
|
||||||
|
@ -524,27 +525,28 @@ ToolMenu = function (side, leftInputs, rightInputs, doCallback) {
|
||||||
highlightedSource = intersectionOverlays;
|
highlightedSource = intersectionOverlays;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Press button.
|
// Press/unpress button.
|
||||||
if (intersectedItem !== pressedItem || intersectionOverlays !== pressedSource
|
if ((pressedItem && intersectedItem !== pressedItem.index) || intersectionOverlays !== pressedSource
|
||||||
|| controlHand.triggerClicked() !== isButtonPressed) {
|
|| controlHand.triggerClicked() !== isButtonPressed) {
|
||||||
if (pressedItem !== NONE) {
|
if (pressedItem) {
|
||||||
// Unpress previous button.
|
// Unpress previous button.
|
||||||
if (intersectionItems) {
|
Overlays.editOverlay(intersectionOverlays[pressedItem.index], {
|
||||||
Overlays.editOverlay(intersectionOverlays[pressedItem], {
|
localPosition: pressedItem.localPosition
|
||||||
localPosition: intersectionItems[pressedItem].properties.localPosition
|
});
|
||||||
});
|
pressedItem = null;
|
||||||
}
|
|
||||||
pressedItem = NONE;
|
|
||||||
}
|
}
|
||||||
isButtonPressed = isHighlightingButton && controlHand.triggerClicked();
|
isButtonPressed = isHighlightingButton && controlHand.triggerClicked();
|
||||||
if (isButtonPressed && (intersectionEnabled === null || intersectionEnabled[intersectedItem])) {
|
if (isButtonPressed && (intersectionEnabled === null || intersectionEnabled[intersectedItem])) {
|
||||||
// Press new button.
|
// Press new button.
|
||||||
|
localPosition = intersectionItems[intersectedItem].properties.localPosition;
|
||||||
Overlays.editOverlay(intersectionOverlays[intersectedItem], {
|
Overlays.editOverlay(intersectionOverlays[intersectedItem], {
|
||||||
localPosition: Vec3.sum(intersectionItems[intersectedItem].properties.localPosition,
|
localPosition: Vec3.sum(localPosition, { x: 0, y: 0, z: BUTTON_PRESS_DELTA })
|
||||||
{ x: 0, y: 0, z: BUTTON_PRESS_DELTA })
|
|
||||||
});
|
});
|
||||||
pressedItem = intersectedItem;
|
|
||||||
pressedSource = intersectionOverlays;
|
pressedSource = intersectionOverlays;
|
||||||
|
pressedItem = {
|
||||||
|
index: intersectedItem,
|
||||||
|
localPosition: localPosition
|
||||||
|
};
|
||||||
|
|
||||||
// Button press actions.
|
// Button press actions.
|
||||||
if (intersectionOverlays === menuOverlays) {
|
if (intersectionOverlays === menuOverlays) {
|
||||||
|
@ -652,7 +654,7 @@ ToolMenu = function (side, leftInputs, rightInputs, doCallback) {
|
||||||
highlightedItem = NONE;
|
highlightedItem = NONE;
|
||||||
highlightedSource = null;
|
highlightedSource = null;
|
||||||
isHighlightingButton = false;
|
isHighlightingButton = false;
|
||||||
pressedItem = NONE;
|
pressedItem = null;
|
||||||
pressedSource = null;
|
pressedSource = null;
|
||||||
isButtonPressed = false;
|
isButtonPressed = false;
|
||||||
isGroupButtonEnabled = false;
|
isGroupButtonEnabled = false;
|
||||||
|
|
Loading…
Reference in a new issue