diff --git a/src/systems/userinput/bindings/oculus-go-user.js b/src/systems/userinput/bindings/oculus-go-user.js index 048eaf750b9fee0a8ee8d39dfacf4c0715649221..4bdeba3eccb83d43e64bd74682a69042c1726f7c 100644 --- a/src/systems/userinput/bindings/oculus-go-user.js +++ b/src/systems/userinput/bindings/oculus-go-user.js @@ -4,8 +4,10 @@ import { xforms } from "./xforms"; import { addSetsToBindings } from "./utils"; const touchpad = "/vars/oculusgo/touchpad"; -const touchpadPressed = "/vars/oculusgo/touchpadPressed"; -const touchpadReleased = "/vars/oculusgo/touchpadReleased"; +const touchpadRising = "/vars/oculusgo/touchpad/rising"; +const touchpadFalling = "/vars/oculusgo/touchpad/falling"; +const triggerRising = "/vars/oculusgo/trigger/rising"; +const triggerFalling = "/vars/oculusgo/trigger/falling"; const dpadNorth = "/vars/oculusgo/dpad/north"; const dpadSouth = "/vars/oculusgo/dpad/south"; const dpadEast = "/vars/oculusgo/dpad/east"; @@ -13,19 +15,12 @@ const dpadWest = "/vars/oculusgo/dpad/west"; const dpadCenter = "/vars/oculusgo/dpad/center"; const dpadCenterStrip = "/vars/oculusgo/dpad/centerStrip"; -const triggerRisingRoot = "oculusGoTriggerRising"; -const triggerFallingRoot = "oculusGoTriggerFalling"; -const dpadEastRoot = "oculusGoDpadEast"; -const dpadWestRoot = "oculusGoDpadWest"; -const rootForFrozenOverrideWhenHolding = "rootForFrozenOverrideWhenHolding"; - const grabBinding = { src: { - value: paths.device.oculusgo.button("trigger").pressed + value: triggerRising }, dest: { value: paths.actions.cursor.grab }, - xform: xforms.rising, - root: triggerRisingRoot, + xform: xforms.copy, priority: 200 }; @@ -33,25 +28,41 @@ export const oculusGoUserBindings = addSetsToBindings({ [sets.global]: [ { src: { - x: paths.device.oculusgo.axis("touchpadX"), - y: paths.device.oculusgo.axis("touchpadY") + value: paths.device.oculusgo.button("trigger").pressed }, - dest: { value: touchpad }, - xform: xforms.compose_vec2 + dest: { value: triggerRising }, + xform: xforms.rising + }, + { + src: { + value: paths.device.oculusgo.button("trigger").pressed + }, + dest: { value: triggerFalling }, + xform: xforms.falling }, { src: { value: paths.device.oculusgo.button("touchpad").pressed }, - dest: { value: touchpadPressed }, - xform: xforms.rising + dest: { value: touchpadRising }, + xform: xforms.rising, + priority: 100 }, { src: { value: paths.device.oculusgo.button("touchpad").pressed }, - dest: { value: touchpadReleased }, - xform: xforms.falling + dest: { value: touchpadFalling }, + xform: xforms.falling, + priority: 100 + }, + { + src: { + x: paths.device.oculusgo.axis("touchpadX"), + y: paths.device.oculusgo.axis("touchpadY") + }, + dest: { value: touchpad }, + xform: xforms.compose_vec2 }, { src: { @@ -79,12 +90,11 @@ export const oculusGoUserBindings = addSetsToBindings({ dest: { value: paths.actions.ensureFrozen }, - root: rootForFrozenOverrideWhenHolding, priority: 100, xform: xforms.copyIfTrue }, { - src: { value: touchpadReleased }, + src: { value: touchpadFalling }, dest: { value: paths.actions.thaw }, @@ -93,35 +103,32 @@ export const oculusGoUserBindings = addSetsToBindings({ { src: { value: dpadEast, - bool: touchpadPressed + bool: touchpadRising }, dest: { value: paths.actions.snapRotateRight }, xform: xforms.copyIfTrue, - root: dpadEastRoot, priority: 100 }, { src: { value: dpadWest, - bool: touchpadPressed + bool: touchpadRising }, dest: { value: paths.actions.snapRotateLeft }, xform: xforms.copyIfTrue, - root: dpadWestRoot, priority: 100 }, { src: { - value: paths.device.oculusgo.button("trigger").pressed + value: triggerRising }, dest: { value: paths.actions.rightHand.startTeleport }, - xform: xforms.rising, - root: triggerRisingRoot, + xform: xforms.copy, priority: 100 }, @@ -159,11 +166,10 @@ export const oculusGoUserBindings = addSetsToBindings({ [sets.cursorHoldingInteractable]: [ { src: { - value: paths.device.oculusgo.button("trigger").pressed + value: triggerFalling }, dest: { value: paths.actions.cursor.drop }, - xform: xforms.falling, - root: triggerFallingRoot, + xform: xforms.copy, priority: 200 }, { @@ -175,22 +181,19 @@ export const oculusGoUserBindings = addSetsToBindings({ xform: xforms.touch_axis_scroll() }, { - src: null, - dest: { value: paths.actions.ensureFrozen }, - root: rootForFrozenOverrideWhenHolding, + src: { value: dpadCenterStrip }, priority: 200, - xform: xforms.always(false) + xform: xforms.noop } ], [sets.rightHandTeleporting]: [ { src: { - value: paths.device.oculusgo.button("trigger").pressed + value: triggerFalling }, dest: { value: paths.actions.rightHand.stopTeleport }, - xform: xforms.falling, - root: triggerFallingRoot, + xform: xforms.copy, priority: 100 } ], @@ -198,20 +201,18 @@ export const oculusGoUserBindings = addSetsToBindings({ [sets.cursorHoldingPen]: [ { src: { - value: paths.device.oculusgo.button("trigger").pressed + value: triggerRising }, dest: { value: paths.actions.cursor.startDrawing }, - xform: xforms.rising, - root: triggerRisingRoot, + xform: xforms.copy, priority: 300 }, { src: { - value: paths.device.oculusgo.button("trigger").pressed + value: triggerFalling }, dest: { value: paths.actions.cursor.stopDrawing }, - xform: xforms.falling, - root: triggerFallingRoot, + xform: xforms.copy, priority: 300 }, { @@ -225,33 +226,32 @@ export const oculusGoUserBindings = addSetsToBindings({ { src: { value: dpadCenterStrip, - bool: touchpadReleased + bool: touchpadFalling }, dest: { value: paths.actions.cursor.drop }, - xform: xforms.copyIfTrue + xform: xforms.copyIfTrue, + priority: 300 }, { src: { value: dpadEast, - bool: touchpadPressed + bool: touchpadRising }, dest: { value: paths.actions.cursor.penPrevColor }, xform: xforms.copyIfTrue, - root: dpadEastRoot, priority: 200 }, { src: { value: dpadWest, - bool: touchpadPressed + bool: touchpadRising }, dest: { value: paths.actions.cursor.penNextColor }, xform: xforms.copyIfTrue, - root: dpadWestRoot, priority: 200 } ], @@ -259,28 +259,27 @@ export const oculusGoUserBindings = addSetsToBindings({ [sets.cursorHoldingCamera]: [ { src: { - value: paths.device.oculusgo.button("trigger").pressed + value: triggerRising }, dest: { value: paths.actions.cursor.takeSnapshot }, - xform: xforms.rising, - root: triggerRisingRoot, + xform: xforms.copy, priority: 300 }, { src: { - value: paths.device.oculusgo.button("trigger").pressed + value: triggerFalling }, xform: xforms.noop, - root: triggerFallingRoot, priority: 300 }, { src: { value: dpadCenterStrip, - bool: touchpadReleased + bool: touchpadFalling }, dest: { value: paths.actions.cursor.drop }, - xform: xforms.copyIfTrue + xform: xforms.copyIfTrue, + priority: 300 } ] });