Merge pull request #246 from OpenVR-Advanced-Settings/Haptic-clicks

Implement "Add Left/Right Haptic Click" binds
This commit is contained in:
Kung-vr
2019-07-06 02:47:26 +09:00
committed by GitHub
6 changed files with 97 additions and 0 deletions
+12
View File
@@ -140,6 +140,8 @@ SteamIVRInput::SteamIVRInput()
m_pushToTalk( action_keys::pushToTalk ),
m_leftHaptic( action_keys::hapticsLeft ),
m_rightHaptic( action_keys::hapticsRight ),
m_addLeftHapticClick( action_keys::addLeftHapticClick ),
m_addRightHapticClick( action_keys::addRightHapticClick ),
m_proxSensor( action_keys::proxSensor ),
m_leftHand( input_keys::leftHand ), m_rightHand( input_keys::rightHand ),
m_sets( { m_mainSet.activeActionSet(),
@@ -317,6 +319,16 @@ bool SteamIVRInput::proxState()
return isDigitalActionActivatedConstant( m_proxSensor );
}
bool SteamIVRInput::addLeftHapticClick()
{
return isDigitalActionActivatedConstant( m_addLeftHapticClick );
}
bool SteamIVRInput::addRightHapticClick()
{
return isDigitalActionActivatedConstant( m_addRightHapticClick );
}
bool SteamIVRInput::keyboardOne()
{
return isDigitalActionActivatedOnce( m_keyboardOne );
+7
View File
@@ -58,6 +58,9 @@ namespace action_keys
constexpr auto hapticsLeft = "/actions/haptic/out/HapticsLeft";
constexpr auto hapticsRight = "/actions/haptic/out/HapticsRight";
constexpr auto proxSensor = "/actions/haptic/in/ProxSensor";
constexpr auto addLeftHapticClick = "/actions/haptic/in/AddLeftHapticClick";
constexpr auto addRightHapticClick
= "/actions/haptic/in/AddRightHapticClick";
constexpr auto chaperoneToggle = "/actions/misc/in/ChaperoneToggle";
@@ -144,6 +147,8 @@ public:
bool zAxisLockToggle();
bool chaperoneToggle();
bool proxState();
bool addLeftHapticClick();
bool addRightHapticClick();
bool pushToTalk();
@@ -225,6 +230,8 @@ private:
// haptic bindings
DigitalAction m_leftHaptic;
DigitalAction m_rightHaptic;
DigitalAction m_addLeftHapticClick;
DigitalAction m_addRightHapticClick;
// prox Sensor
DigitalAction m_proxSensor;
+4
View File
@@ -608,6 +608,10 @@ void OverlayController::processChaperoneBindings()
!( m_chaperoneTabController.disableChaperone() ), true );
}
m_chaperoneTabController.setProxState( m_actions.proxState() );
m_chaperoneTabController.addLeftHapticClick(
m_actions.addLeftHapticClick() );
m_chaperoneTabController.addRightHapticClick(
m_actions.addRightHapticClick() );
}
void OverlayController::processPushToTalkBindings()
+12
View File
@@ -47,6 +47,16 @@
"name": "/actions/haptic/out/HapticsRight",
"type": "vibration"
},
{
"name": "/actions/haptic/in/AddLeftHapticClick",
"requirement": "optional",
"type": "boolean"
},
{
"name": "/actions/haptic/in/AddRightHapticClick",
"requirement": "optional",
"type": "boolean"
},
{
"name": "/actions/motion/in/LeftHandSpaceTurn",
@@ -222,6 +232,8 @@
"/actions/haptic/out/HapticsLeft" : "Haptics Left",
"/actions/haptic/out/HapticsRight" : " Haptics Right",
"/actions/haptic/in/AddLeftHapticClick" : " Add Left Haptic Click",
"/actions/haptic/in/AddRightHapticClick" : " Add Right Haptic Click",
"/actions/motion/in/LeftHandSpaceTurn" : "Left Hand Space Turn",
"/actions/motion/in/RightHandSpaceTurn" : "Right Hand Space Turn",
@@ -1740,6 +1740,62 @@ void ChaperoneTabController::setLeftInputHandle(
m_leftInputHandle = handle;
}
void ChaperoneTabController::addLeftHapticClick( bool leftHapticClickPressed )
{
// detect new press
if ( leftHapticClickPressed && !m_leftHapticClickActivated )
{
// play activation haptic sequence
vr::VRInput()->TriggerHapticVibrationAction(
m_leftActionHandle, 0.0f, 0.08f, 300.0f, 0.7f, m_leftInputHandle );
m_leftHapticClickActivated = true;
return;
}
// detect new release
if ( !leftHapticClickPressed && m_leftHapticClickActivated )
{
// play deactivation haptic sequence
vr::VRInput()->TriggerHapticVibrationAction(
m_leftActionHandle, 0.0f, 0.08f, 120.0f, 0.7f, m_leftInputHandle );
m_leftHapticClickActivated = false;
return;
}
}
void ChaperoneTabController::addRightHapticClick( bool rightHapticClickPressed )
{
// detect new press
if ( rightHapticClickPressed && !m_rightHapticClickActivated )
{
// play activation haptic sequence
vr::VRInput()->TriggerHapticVibrationAction( m_rightActionHandle,
0.0f,
0.08f,
300.0f,
0.7f,
m_rightInputHandle );
m_rightHapticClickActivated = true;
return;
}
// detect new release
if ( !rightHapticClickPressed && m_rightHapticClickActivated )
{
// play deactivation haptic sequence
vr::VRInput()->TriggerHapticVibrationAction( m_rightActionHandle,
0.0f,
0.08f,
120.0f,
0.7f,
m_rightInputHandle );
m_rightHapticClickActivated = false;
return;
}
}
void ChaperoneTabController::setProxState( bool value )
{
if ( value )
@@ -177,6 +177,8 @@ private:
bool m_isHMDActive = false;
bool m_isProxActive = false;
bool m_HMDHasProx = false;
bool m_leftHapticClickActivated = false;
bool m_rightHapticClickActivated = false;
int m_updateTicksChaperoneReload = 0;
@@ -239,6 +241,10 @@ public:
float getBoundsMaxY();
// actions
void addLeftHapticClick( bool leftHapticClickPressed );
void addRightHapticClick( bool rightHapticClickPressed );
public slots:
void setBoundsVisibility( float value, bool notify = true );
void setFadeDistance( float value, bool notify = true );