From 40b283e31300eed78db487d6c18fd89648f814ba Mon Sep 17 00:00:00 2001 From: Kung-vr Date: Thu, 7 Mar 2019 17:19:17 +0900 Subject: [PATCH] Add bindable axis lock actions --- src/ivrinput/ivrinput.cpp | 21 ++++++++ src/ivrinput/ivrinput.h | 9 ++++ src/overlaycontroller.cpp | 3 ++ src/package_files/action_manifest.json | 18 +++++++ .../MoveCenterTabController.cpp | 51 +++++++++++++++++++ src/tabcontrollers/MoveCenterTabController.h | 3 ++ 6 files changed, 105 insertions(+) diff --git a/src/ivrinput/ivrinput.cpp b/src/ivrinput/ivrinput.cpp index a1ff66f..c13c0ca 100644 --- a/src/ivrinput/ivrinput.cpp +++ b/src/ivrinput/ivrinput.cpp @@ -166,6 +166,12 @@ SteamIVRInput::SteamIVRInput() ActionType::Digital ), m_snapTurnRight( input_strings::k_actionSnapTurnRight, ActionType::Digital ), + m_xAxisLockToggle( input_strings::k_actionXAxisLockToggle, + ActionType::Digital ), + m_yAxisLockToggle( input_strings::k_actionYAxisLockToggle, + ActionType::Digital ), + m_zAxisLockToggle( input_strings::k_actionZAxisLockToggle, + ActionType::Digital ), m_pushToTalk( input_strings::k_actionPushToTalk, ActionType::Digital ) { m_activeActionSet.ulActionSet = m_mainSet.handle(); @@ -296,6 +302,21 @@ bool SteamIVRInput::snapTurnRight() return isDigitalActionActivatedOnce( m_snapTurnRight ); } +bool SteamIVRInput::xAxisLockToggle() +{ + return isDigitalActionActivatedOnce( m_xAxisLockToggle ); +} + +bool SteamIVRInput::yAxisLockToggle() +{ + return isDigitalActionActivatedOnce( m_yAxisLockToggle ); +} + +bool SteamIVRInput::zAxisLockToggle() +{ + return isDigitalActionActivatedOnce( m_zAxisLockToggle ); +} + bool SteamIVRInput::pushToTalk() { return isDigitalActionActivatedConstant( m_pushToTalk ); diff --git a/src/ivrinput/ivrinput.h b/src/ivrinput/ivrinput.h index 9b36996..994d446 100644 --- a/src/ivrinput/ivrinput.h +++ b/src/ivrinput/ivrinput.h @@ -56,6 +56,9 @@ public: bool resetOffsets(); bool snapTurnLeft(); bool snapTurnRight(); + bool xAxisLockToggle(); + bool yAxisLockToggle(); + bool zAxisLockToggle(); bool pushToTalk(); @@ -104,6 +107,9 @@ private: Action m_resetOffsets; Action m_snapTurnLeft; Action m_snapTurnRight; + Action m_xAxisLockToggle; + Action m_yAxisLockToggle; + Action m_zAxisLockToggle; // Push To Talk Action m_pushToTalk; @@ -146,6 +152,9 @@ namespace input_strings constexpr auto k_actionResetOffsets = "/actions/main/in/ResetOffsets"; constexpr auto k_actionSnapTurnLeft = "/actions/main/in/SnapTurnLeft"; constexpr auto k_actionSnapTurnRight = "/actions/main/in/SnapTurnRight"; + constexpr auto k_actionXAxisLockToggle = "/actions/main/in/XAxisLockToggle"; + constexpr auto k_actionYAxisLockToggle = "/actions/main/in/YAxisLockToggle"; + constexpr auto k_actionZAxisLockToggle = "/actions/main/in/ZAxisLockToggle"; constexpr auto k_actionPushToTalk = "/actions/main/in/PushToTalk"; diff --git a/src/overlaycontroller.cpp b/src/overlaycontroller.cpp index 0b29a81..fbba1c0 100644 --- a/src/overlaycontroller.cpp +++ b/src/overlaycontroller.cpp @@ -510,6 +510,9 @@ void OverlayController::processRoomBindings() m_moveCenterTabController.resetOffsets( m_actions.resetOffsets() ); m_moveCenterTabController.snapTurnLeft( m_actions.snapTurnLeft() ); m_moveCenterTabController.snapTurnRight( m_actions.snapTurnRight() ); + m_moveCenterTabController.xAxisLockToggle( m_actions.xAxisLockToggle() ); + m_moveCenterTabController.yAxisLockToggle( m_actions.yAxisLockToggle() ); + m_moveCenterTabController.zAxisLockToggle( m_actions.zAxisLockToggle() ); // override actions: m_moveCenterTabController.optionalOverrideLeftHandSpaceDrag( diff --git a/src/package_files/action_manifest.json b/src/package_files/action_manifest.json index 221631e..1e6c1a0 100644 --- a/src/package_files/action_manifest.json +++ b/src/package_files/action_manifest.json @@ -101,6 +101,21 @@ "requirement": "optional", "type": "boolean" }, + { + "name": "/actions/main/in/XAxisLockToggle", + "requirement": "optional", + "type": "boolean" + }, + { + "name": "/actions/main/in/YAxisLockToggle", + "requirement": "optional", + "type": "boolean" + }, + { + "name": "/actions/main/in/ZAxisLockToggle", + "requirement": "optional", + "type": "boolean" + }, { "name": "/actions/main/in/PushToTalk", "requirement": "optional", @@ -138,6 +153,9 @@ "/actions/main/in/ResetOffsets" : "Reset Offsets", "/actions/main/in/SnapTurnLeft" : "Snap-Turn Left", "/actions/main/in/SnapTurnRight" : "Snap-Turn Right", + "/actions/main/in/XAxisLockToggle" : "X-Axis Lock Toggle", + "/actions/main/in/YAxisLockToggle" : "Y-Axis Lock Toggle", + "/actions/main/in/ZAxisLockToggle" : "Z-Axis Lock Toggle", "/actions/main/in/PushToTalk" : "Push To Talk" } diff --git a/src/tabcontrollers/MoveCenterTabController.cpp b/src/tabcontrollers/MoveCenterTabController.cpp index 1f041df..d3d0896 100644 --- a/src/tabcontrollers/MoveCenterTabController.cpp +++ b/src/tabcontrollers/MoveCenterTabController.cpp @@ -1248,6 +1248,57 @@ void MoveCenterTabController::snapTurnRight( bool snapTurnRightJustPressed ) setRotation( newRotationAngleDeg ); } +void MoveCenterTabController::xAxisLockToggle( bool xAxisLockToggleJustPressed ) +{ + if ( !xAxisLockToggleJustPressed ) + { + return; + } + + if ( !m_lockXToggle ) + { + setLockX( true ); + } + else + { + setLockX( false ); + } +} + +void MoveCenterTabController::yAxisLockToggle( bool yAxisLockToggleJustPressed ) +{ + if ( !yAxisLockToggleJustPressed ) + { + return; + } + + if ( !m_lockYToggle ) + { + setLockY( true ); + } + else + { + setLockY( false ); + } +} + +void MoveCenterTabController::zAxisLockToggle( bool zAxisLockToggleJustPressed ) +{ + if ( !zAxisLockToggleJustPressed ) + { + return; + } + + if ( !m_lockZToggle ) + { + setLockZ( true ); + } + else + { + setLockZ( false ); + } +} + // END of other bindings void MoveCenterTabController::updateHmdRotationCounter( diff --git a/src/tabcontrollers/MoveCenterTabController.h b/src/tabcontrollers/MoveCenterTabController.h index 268f8da..4b61c98 100644 --- a/src/tabcontrollers/MoveCenterTabController.h +++ b/src/tabcontrollers/MoveCenterTabController.h @@ -170,6 +170,9 @@ public: void resetOffsets( bool resetOffsetsJustPressed ); void snapTurnLeft( bool snapTurnLeftJustPressed ); void snapTurnRight( bool snapTurnRightJustPressed ); + void xAxisLockToggle( bool xAxisLockToggleJustPressed ); + void yAxisLockToggle( bool yAxisLockToggleJustPressed ); + void zAxisLockToggle( bool zAxisLockToggleJustPressed ); public slots: int trackingUniverse() const;