Handle trigger values of 1.0 not repeating

This commit is contained in:
David Rowe 2017-02-17 19:21:20 +13:00
parent bdfc9fd418
commit 3712aea861

View file

@ -179,6 +179,7 @@
triggerReleasedCallback, triggerReleasedCallback,
gripPressedCallback, gripPressedCallback,
rawTriggerValue = 0.0,
triggerValue = 0.0, triggerValue = 0.0,
isTriggerPressed = false, isTriggerPressed = false,
TRIGGER_SMOOTH_RATIO = 0.1, TRIGGER_SMOOTH_RATIO = 0.1,
@ -191,6 +192,7 @@
MAX_LINE_WIDTH = 0.03, MAX_LINE_WIDTH = 0.03,
RAMP_LINE_WIDTH = MAX_LINE_WIDTH - MIN_LINE_WIDTH, RAMP_LINE_WIDTH = MAX_LINE_WIDTH - MIN_LINE_WIDTH,
rawGripValue = 0.0,
gripValue = 0.0, gripValue = 0.0,
isGripPressed = false, isGripPressed = false,
GRIP_SMOOTH_RATIO = 0.1, GRIP_SMOOTH_RATIO = 0.1,
@ -202,6 +204,11 @@
} }
function onTriggerPress(value) { function onTriggerPress(value) {
// Controller values are only updated when they change so store latest for use in update.
rawTriggerValue = value;
}
function updateTriggerPress(value) {
var wasTriggerPressed, var wasTriggerPressed,
fingerTipPosition, fingerTipPosition,
lineWidth; lineWidth;
@ -210,7 +217,7 @@
return; return;
} }
triggerValue = triggerValue * TRIGGER_SMOOTH_RATIO + value * (1.0 - TRIGGER_SMOOTH_RATIO); triggerValue = triggerValue * TRIGGER_SMOOTH_RATIO + rawTriggerValue * (1.0 - TRIGGER_SMOOTH_RATIO);
wasTriggerPressed = isTriggerPressed; wasTriggerPressed = isTriggerPressed;
if (isTriggerPressed) { if (isTriggerPressed) {
@ -239,13 +246,18 @@
} }
function onGripPress(value) { function onGripPress(value) {
// Controller values are only updated when they change so store latest for use in update.
rawGripValue = value;
}
function updateGripPress() {
var fingerTipPosition; var fingerTipPosition;
if (!isEnabled) { if (!isEnabled) {
return; return;
} }
gripValue = gripValue * GRIP_SMOOTH_RATIO + value * (1.0 - GRIP_SMOOTH_RATIO); gripValue = gripValue * GRIP_SMOOTH_RATIO + rawGripValue * (1.0 - GRIP_SMOOTH_RATIO);
if (isGripPressed) { if (isGripPressed) {
isGripPressed = gripValue > GRIP_OFF; isGripPressed = gripValue > GRIP_OFF;
@ -258,6 +270,11 @@
} }
} }
function onUpdate() {
updateTriggerPress();
updateGripPress();
}
function setUp(onTriggerPressed, onTriggerPressing, onTriggerReleased, onGripPressed) { function setUp(onTriggerPressed, onTriggerPressing, onTriggerReleased, onGripPressed) {
triggerPressedCallback = onTriggerPressed; triggerPressedCallback = onTriggerPressed;
triggerPressingCallback = onTriggerPressing; triggerPressingCallback = onTriggerPressing;
@ -273,6 +290,7 @@
setEnabled: setEnabled, setEnabled: setEnabled,
onTriggerPress: onTriggerPress, onTriggerPress: onTriggerPress,
onGripPress: onGripPress, onGripPress: onGripPress,
onUpdate: onUpdate,
setUp: setUp, setUp: setUp,
tearDown: tearDown tearDown: tearDown
}; };
@ -343,6 +361,8 @@
controllerMapping.from(Controller.Standard.RT).to(rightHand.onTriggerPress); controllerMapping.from(Controller.Standard.RT).to(rightHand.onTriggerPress);
controllerMapping.from(Controller.Standard.RightGrip).to(rightHand.onGripPress); controllerMapping.from(Controller.Standard.RightGrip).to(rightHand.onGripPress);
Controller.enableMapping(CONTROLLER_MAPPING_NAME); Controller.enableMapping(CONTROLLER_MAPPING_NAME);
Script.update.connect(leftHand.onUpdate);
Script.update.connect(rightHand.onUpdate);
// Connect handController outputs to paintBrush objects. // Connect handController outputs to paintBrush objects.
leftBrush = paintBrush("left"); leftBrush = paintBrush("left");
@ -360,6 +380,9 @@
return; return;
} }
Script.update.disconnect(leftHand.onUpdate);
Script.update.disconnect(rightHand.onUpdate);
isFingerPainting = false; isFingerPainting = false;
updateHandFunctions(); updateHandFunctions();