Files
OpenVR-AdvancedSettings-frame/src/tabcontrollers/PttController.cpp
T
ykeara b883d2cffd default audio profile and view added
Update logging dependency from 9.84 to 9.89

This is the newest version that doesn't lead to compile errors. It has
also reduced the amount of "-Wexpansion-to-defined" errors on clang-msvc
by about 80 (from ~400 to 320).

Update easylogging license file

Originally came as LICENCE.txt (notice C instead of S in LICENSE),
renamed to better fit into the git history.

Move logging defines to QMAKE instead of logging.h

Defines done outside of easylogging++.h does not work according to
official documentation
(https://github.com/zuhd-org/easyloggingpp/blob/master/README.md#configuration-macros)

"NOTE: All the macros can be defined in one of the following ways:

1. Define macros using -D option of compiler, for example in case of
g++ you will do g++ source.cpp ... -DELPP_SYSLOG -DELPP_THREAD_SAFE
... (recommended way)

2. Define macros inside "easylogging++.h" (defining macros in other
files won't work)"

Linking to this issue:
https://github.com/zuhd-org/easyloggingpp/issues/590#issuecomment-346753951

We are using the developer recommended way of defining them by command
line.

What is assumed to be the intention of enabling debug logs before
including easylogging++ never actually did anything, hence this define
is dropped. Newer versions of easylogging++ uses the macro
ELPP_DISABLE_DEBUG_LOGS to _disable_ debug logs. Leaving that macro
undefined satisfies the original intent.

Move easylogging++ include into necessary files

logging.h previously had logic to enable debug logging even on release
builds. This logic was moved to the QMAKE file, hence the logging.h file
is no longer necessary.

Update easylogging++ to 9.96.7, turn on /WX for clang-msvc

Updating from easylogging++ 9.89 to 9.96.7 turns it from a header only
library to one requiring a source file. It has been added to sources
near the other third party includes in the QMAKE to signify that it
isn't a first party file.

Updating easylogging++ also means that clang-msvc can compile without
any warnings, hence turning on warnings as errors for that compiler as
well, to avoid any regressions.

updated to current

fixed formatting

fixed ptt add bug/compilerwarnings/c++14 target

cleaned up .pro file

fixed casting back to c++ style

added default profile and ptt profile view

fixed c++ casts

fixed logic error on getDevice functions
2019-01-03 15:37:20 -06:00

828 lines
29 KiB
C++

#include "PttController.h"
#include <QQuickWindow>
#include <QApplication>
#include "../overlaycontroller.h"
// application namespace
namespace advsettings
{
bool PttController::pttEnabled() const
{
return m_pttEnabled;
}
bool PttController::pttActive() const
{
return m_pttActive;
}
bool PttController::pttShowNotification() const
{
return m_pttShowNotification;
}
bool PttController::pttLeftControllerEnabled() const
{
return m_pttLeftControllerEnabled;
}
bool PttController::pttRightControllerEnabled() const
{
return m_pttRightControllerEnabled;
}
void PttController::setPttControllerConfig( unsigned controller,
QVariantList buttons,
unsigned triggerMode,
unsigned padMode,
unsigned padAreas )
{
std::lock_guard<std::recursive_mutex> lock( eventLoopMutex );
if ( controller < 2 )
{
uint64_t buttonMask = 0;
for ( auto b : buttons )
{
buttonMask |= vr::ButtonMaskFromId( ( vr::EVRButtonId ) b.toInt() );
}
m_pttControllerConfigs[controller].digitalButtons = buttons;
m_pttControllerConfigs[controller].digitalButtonMask = buttonMask;
m_pttControllerConfigs[controller].triggerMode = triggerMode;
m_pttControllerConfigs[controller].touchpadMode = padMode;
m_pttControllerConfigs[controller].touchpadAreas = padAreas;
savePttConfig();
}
}
void PttController::reloadPttProfiles()
{
pttProfiles.clear();
auto settings = OverlayController::appSettings();
settings->beginGroup( getSettingsName() );
auto profileCount = settings->beginReadArray( "pttProfiles" );
for ( int i = 0; i < profileCount; i++ )
{
settings->setArrayIndex( i );
pttProfiles.emplace_back();
auto& entry = pttProfiles[i];
entry.profileName
= settings->value( "profileName" ).toString().toStdString();
entry.showNotification
= settings->value( "showNotification", true ).toBool();
entry.leftControllerEnabled
= settings->value( "leftControllerEnabled", false ).toBool();
entry.rightControllerEnabled
= settings->value( "rightControllerEnabled", false ).toBool();
entry.controllerConfigs[0].digitalButtons
= settings->value( "digitalButtons_0" ).toList();
uint64_t buttonMask = 0;
for ( auto b : entry.controllerConfigs[0].digitalButtons )
{
buttonMask |= vr::ButtonMaskFromId( ( vr::EVRButtonId ) b.toInt() );
}
entry.controllerConfigs[0].digitalButtonMask = buttonMask;
entry.controllerConfigs[0].triggerMode
= settings->value( "triggerMode_0", 0 ).toUInt();
entry.controllerConfigs[0].touchpadMode
= settings->value( "touchpadMode_0", 0 ).toUInt();
entry.controllerConfigs[0].touchpadAreas
= settings->value( "touchPadAreas_0", 0 ).toUInt();
entry.controllerConfigs[1].digitalButtons
= settings->value( "digitalButtons_1" ).toList();
buttonMask = 0;
for ( auto b : entry.controllerConfigs[1].digitalButtons )
{
buttonMask |= vr::ButtonMaskFromId( ( vr::EVRButtonId ) b.toInt() );
}
entry.controllerConfigs[1].digitalButtonMask = buttonMask;
entry.controllerConfigs[1].triggerMode
= settings->value( "triggerMode_1", 0 ).toUInt();
entry.controllerConfigs[1].touchpadMode
= settings->value( "touchpadMode_1", 0 ).toUInt();
entry.controllerConfigs[1].touchpadAreas
= settings->value( "touchPadAreas_1", 0 ).toUInt();
}
settings->endArray();
settings->endGroup();
}
void PttController::savePttProfiles()
{
auto settings = OverlayController::appSettings();
settings->beginGroup( getSettingsName() );
settings->beginWriteArray( "pttProfiles" );
unsigned i = 0;
for ( auto& p : pttProfiles )
{
settings->setArrayIndex( i );
settings->setValue( "profileName",
QString::fromStdString( p.profileName ) );
settings->setValue( "showNotification", p.showNotification );
settings->setValue( "leftControllerEnabled", p.leftControllerEnabled );
settings->setValue( "rightControllerEnabled",
p.rightControllerEnabled );
settings->setValue( "digitalButtons_0",
p.controllerConfigs[0].digitalButtons );
settings->setValue( "triggerMode_0",
p.controllerConfigs[0].triggerMode );
settings->setValue( "touchpadMode_0",
p.controllerConfigs[0].touchpadMode );
settings->setValue( "touchPadAreas_0",
p.controllerConfigs[0].touchpadAreas );
settings->setValue( "digitalButtons_1",
p.controllerConfigs[1].digitalButtons );
settings->setValue( "triggerMode_1",
p.controllerConfigs[1].triggerMode );
settings->setValue( "touchpadMode_1",
p.controllerConfigs[1].touchpadMode );
settings->setValue( "touchPadAreas_1",
p.controllerConfigs[1].touchpadAreas );
i++;
}
settings->endArray();
settings->endGroup();
}
void PttController::reloadPttConfig()
{
std::lock_guard<std::recursive_mutex> lock( eventLoopMutex );
auto settings = OverlayController::appSettings();
settings->beginGroup( getSettingsName() );
setPttEnabled(
settings->value( "pttEnabled", false ).toBool(), true, false );
setPttLeftControllerEnabled(
settings->value( "pttLeftControllerEnabled", false ).toBool(),
true,
false );
setPttRightControllerEnabled(
settings->value( "pttRightControllerEnabled", false ).toBool(),
true,
false );
setPttShowNotification(
settings->value( "pttShowNotification", true ).toBool(), true, false );
m_pttControllerConfigs[0].digitalButtons
= settings->value( "pttDigitalButtons_0" ).toList();
uint64_t buttonMask = 0;
for ( auto b : m_pttControllerConfigs[0].digitalButtons )
{
buttonMask |= vr::ButtonMaskFromId( ( vr::EVRButtonId ) b.toInt() );
}
m_pttControllerConfigs[0].digitalButtonMask = buttonMask;
m_pttControllerConfigs[0].triggerMode
= settings->value( "pttTriggerMode_0", 0 ).toUInt();
m_pttControllerConfigs[0].touchpadMode
= settings->value( "pttTouchpadMode_0", 0 ).toUInt();
m_pttControllerConfigs[0].touchpadAreas
= settings->value( "pttTouchPadAreas_0", 0 ).toUInt();
m_pttControllerConfigs[1].digitalButtons
= settings->value( "pttDigitalButtons_1" ).toList();
buttonMask = 0;
for ( auto b : m_pttControllerConfigs[0].digitalButtons )
{
buttonMask |= vr::ButtonMaskFromId( ( vr::EVRButtonId ) b.toInt() );
}
m_pttControllerConfigs[1].digitalButtonMask = buttonMask;
m_pttControllerConfigs[1].triggerMode
= settings->value( "pttTriggerMode_1", 0 ).toUInt();
m_pttControllerConfigs[1].touchpadMode
= settings->value( "pttTouchpadMode_1", 0 ).toUInt();
m_pttControllerConfigs[1].touchpadAreas
= settings->value( "pttTouchPadAreas_1", 0 ).toUInt();
settings->endGroup();
}
void PttController::savePttConfig()
{
auto settings = OverlayController::appSettings();
settings->beginGroup( getSettingsName() );
settings->setValue( "pttEnabled", pttEnabled() );
settings->setValue( "pttLeftControllerEnabled",
pttLeftControllerEnabled() );
settings->setValue( "pttRightControllerEnabled",
pttRightControllerEnabled() );
settings->setValue( "pttShowNotification", pttShowNotification() );
settings->setValue( "pttDigitalButtons_0",
m_pttControllerConfigs[0].digitalButtons );
settings->setValue( "pttTriggerMode_0",
m_pttControllerConfigs[0].triggerMode );
settings->setValue( "pttTouchpadMode_0",
m_pttControllerConfigs[0].touchpadMode );
settings->setValue( "pttTouchPadAreas_0",
m_pttControllerConfigs[0].touchpadAreas );
settings->setValue( "pttDigitalButtons_1",
m_pttControllerConfigs[1].digitalButtons );
settings->setValue( "pttTriggerMode_1",
m_pttControllerConfigs[1].triggerMode );
settings->setValue( "pttTouchpadMode_1",
m_pttControllerConfigs[1].touchpadMode );
settings->setValue( "pttTouchPadAreas_1",
m_pttControllerConfigs[1].touchpadAreas );
settings->endGroup();
}
void PttController::checkPttStatus()
{
static auto handleControllerState
= []( const vr::VRControllerState_t& state,
PttControllerConfig* config ) -> bool {
if ( state.ulButtonPressed & config->digitalButtonMask )
{
return true;
}
if ( config->triggerMode )
{
if ( state.ulButtonPressed
& vr::ButtonMaskFromId( vr::k_EButton_SteamVR_Trigger )
|| state.ulButtonTouched
& vr::ButtonMaskFromId(
vr::k_EButton_SteamVR_Trigger ) )
{
return true;
}
}
if ( config->touchpadMode )
{
if ( ( ( config->touchpadMode & 1 )
&& ( state.ulButtonTouched
& vr::ButtonMaskFromId(
vr::k_EButton_SteamVR_Touchpad ) ) )
|| ( ( config->touchpadMode & 2 )
&& ( state.ulButtonPressed
& vr::ButtonMaskFromId(
vr::k_EButton_SteamVR_Touchpad ) ) ) )
{
if ( config->touchpadAreas
== ( PAD_AREA_LEFT + PAD_AREA_TOP + PAD_AREA_RIGHT
+ PAD_AREA_BOTTOM ) )
{
return true;
}
else
{
float x = state.rAxis[0].x;
float y = state.rAxis[0].y;
if ( std::abs( x ) >= 0.2 || std::abs( y ) >= 0.2 )
{ // deadzone in the middle
if ( x < 0 && std::abs( y ) < -x
&& ( config->touchpadAreas & PAD_AREA_LEFT ) )
{
return true;
}
else if ( y > 0 && std::abs( x ) < y
&& ( config->touchpadAreas & PAD_AREA_TOP ) )
{
return true;
}
else if ( x > 0 && std::abs( y ) < x
&& ( config->touchpadAreas
& PAD_AREA_RIGHT ) )
{
return true;
}
else if ( y < 0 && std::abs( x ) < -y
&& ( config->touchpadAreas
& PAD_AREA_BOTTOM ) )
{
return true;
}
}
}
}
}
return false;
};
if ( m_pttEnabled )
{
bool newState = false;
if ( m_pttLeftControllerEnabled )
{
auto leftId
= vr::VRSystem()->GetTrackedDeviceIndexForControllerRole(
vr::TrackedControllerRole_LeftHand );
if ( leftId != vr::k_unTrackedDeviceIndexInvalid )
{
vr::VRControllerState_t state;
if ( vr::VRSystem()->GetControllerState(
leftId, &state, sizeof( vr::VRControllerState_t ) ) )
{
// logControllerState(state, "Left ");
newState |= handleControllerState( state,
m_pttControllerConfigs );
}
}
}
if ( m_pttRightControllerEnabled )
{
auto rightId
= vr::VRSystem()->GetTrackedDeviceIndexForControllerRole(
vr::TrackedControllerRole_RightHand );
if ( rightId != vr::k_unTrackedDeviceIndexInvalid )
{
vr::VRControllerState_t state;
if ( vr::VRSystem()->GetControllerState(
rightId, &state, sizeof( vr::VRControllerState_t ) ) )
{
// logControllerState(state, "Right ");
newState |= handleControllerState(
state, m_pttControllerConfigs + 1 );
}
}
}
if ( newState && !m_pttActive && pttChangeValid() )
{
startPtt();
}
else if ( !newState && m_pttActive && pttChangeValid() )
{
stopPtt();
}
}
}
void PttController::startPtt()
{
m_pttActive = true;
onPttStart();
if ( m_pttShowNotification
&& getNotificationOverlayHandle() != vr::k_ulOverlayHandleInvalid )
{
vr::VROverlay()->ShowOverlay( getNotificationOverlayHandle() );
}
emit pttActiveChanged( m_pttActive );
}
void PttController::stopPtt()
{
m_pttActive = false;
onPttStop();
if ( m_pttShowNotification
&& getNotificationOverlayHandle() != vr::k_ulOverlayHandleInvalid )
{
vr::VROverlay()->HideOverlay( getNotificationOverlayHandle() );
}
emit pttActiveChanged( m_pttActive );
}
void PttController::addPttProfile( QString name )
{
PttProfile* profile = nullptr;
for ( auto& p : pttProfiles )
{
if ( p.profileName.compare( name.toStdString() ) == 0 )
{
profile = &p;
break;
}
}
if ( !profile )
{
auto i = pttProfiles.size();
pttProfiles.emplace_back();
profile = &pttProfiles[i];
}
profile->profileName = name.toStdString();
profile->showNotification = m_pttShowNotification;
profile->leftControllerEnabled = m_pttLeftControllerEnabled;
profile->rightControllerEnabled = m_pttRightControllerEnabled;
profile->controllerConfigs[0].digitalButtons
= m_pttControllerConfigs[0].digitalButtons;
profile->controllerConfigs[0].digitalButtonMask
= m_pttControllerConfigs[0].digitalButtonMask;
profile->controllerConfigs[0].triggerMode
= m_pttControllerConfigs[0].triggerMode;
profile->controllerConfigs[0].touchpadMode
= m_pttControllerConfigs[0].touchpadMode;
profile->controllerConfigs[0].touchpadAreas
= m_pttControllerConfigs[0].touchpadAreas;
profile->controllerConfigs[1].digitalButtons
= m_pttControllerConfigs[1].digitalButtons;
profile->controllerConfigs[1].digitalButtonMask
= m_pttControllerConfigs[1].digitalButtonMask;
profile->controllerConfigs[1].triggerMode
= m_pttControllerConfigs[1].triggerMode;
profile->controllerConfigs[1].touchpadMode
= m_pttControllerConfigs[1].touchpadMode;
profile->controllerConfigs[1].touchpadAreas
= m_pttControllerConfigs[1].touchpadAreas;
savePttProfiles();
OverlayController::appSettings()->sync();
emit pttProfilesUpdated();
emit pttProfileAdded();
}
void PttController::applyPttProfile( unsigned index )
{
std::lock_guard<std::recursive_mutex> lock( eventLoopMutex );
if ( index < pttProfiles.size() )
{
auto& profile = pttProfiles[index];
setPttShowNotification( profile.showNotification );
setPttLeftControllerEnabled( profile.leftControllerEnabled );
setPttRightControllerEnabled( profile.rightControllerEnabled );
m_pttControllerConfigs[0].digitalButtons
= profile.controllerConfigs[0].digitalButtons;
m_pttControllerConfigs[0].digitalButtonMask
= profile.controllerConfigs[0].digitalButtonMask;
m_pttControllerConfigs[0].triggerMode
= profile.controllerConfigs[0].triggerMode;
m_pttControllerConfigs[0].touchpadMode
= profile.controllerConfigs[0].touchpadMode;
m_pttControllerConfigs[0].touchpadAreas
= profile.controllerConfigs[0].touchpadAreas;
m_pttControllerConfigs[1].digitalButtons
= profile.controllerConfigs[1].digitalButtons;
m_pttControllerConfigs[1].digitalButtonMask
= profile.controllerConfigs[1].digitalButtonMask;
m_pttControllerConfigs[1].triggerMode
= profile.controllerConfigs[1].triggerMode;
m_pttControllerConfigs[1].touchpadMode
= profile.controllerConfigs[1].touchpadMode;
m_pttControllerConfigs[1].touchpadAreas
= profile.controllerConfigs[1].touchpadAreas;
}
}
void PttController::deletePttProfile( unsigned index )
{
if ( index < pttProfiles.size() )
{
auto pos = pttProfiles.begin() + index;
pttProfiles.erase( pos );
savePttProfiles();
OverlayController::appSettings()->sync();
emit pttProfilesUpdated();
}
}
QVariantList PttController::pttDigitalButtons( unsigned controller )
{
if ( controller < 2 )
{
return m_pttControllerConfigs[controller].digitalButtons;
}
return QVariantList();
}
unsigned long PttController::pttDigitalButtonMask( unsigned controller )
{
if ( controller < 2 )
{
return m_pttControllerConfigs[controller].digitalButtonMask;
}
return 0;
}
unsigned PttController::pttTouchpadMode( unsigned controller )
{
if ( controller < 2 )
{
return m_pttControllerConfigs[controller].touchpadMode;
}
return 0;
}
unsigned PttController::pttTriggerMode( unsigned controller )
{
if ( controller < 2 )
{
return m_pttControllerConfigs[controller].triggerMode;
}
return 0;
}
unsigned PttController::pttTouchpadArea( unsigned controller )
{
if ( controller < 2 )
{
return m_pttControllerConfigs[controller].touchpadAreas;
}
return 0;
}
unsigned PttController::getPttProfileCount()
{
return ( unsigned ) pttProfiles.size();
}
QString PttController::getPttProfileName( unsigned index )
{
if ( index < pttProfiles.size() )
{
return QString::fromStdString( pttProfiles[index].profileName );
}
return "";
}
void PttController::setPttEnabled( bool value, bool notify, bool save )
{
std::lock_guard<std::recursive_mutex> lock( eventLoopMutex );
if ( value != m_pttEnabled )
{
m_pttEnabled = value;
if ( value )
{
onPttEnabled();
}
else
{
onPttDisabled();
}
if ( notify )
{
emit pttEnabledChanged( value );
}
if ( save )
{
savePttConfig();
}
}
}
void PttController::setPttShowNotification( bool value, bool notify, bool save )
{
std::lock_guard<std::recursive_mutex> lock( eventLoopMutex );
if ( value != m_pttShowNotification )
{
m_pttShowNotification = value;
if ( notify )
{
emit pttShowNotificationChanged( value );
}
if ( save )
{
savePttConfig();
}
}
}
void PttController::setPttLeftControllerEnabled( bool value,
bool notify,
bool save )
{
std::lock_guard<std::recursive_mutex> lock( eventLoopMutex );
if ( value != m_pttLeftControllerEnabled )
{
m_pttLeftControllerEnabled = value;
if ( notify )
{
emit pttLeftControllerEnabledChanged( value );
}
if ( save )
{
savePttConfig();
}
}
}
void PttController::setPttRightControllerEnabled( bool value,
bool notify,
bool save )
{
std::lock_guard<std::recursive_mutex> lock( eventLoopMutex );
if ( value != m_pttRightControllerEnabled )
{
m_pttRightControllerEnabled = value;
if ( notify )
{
emit pttRightControllerEnabledChanged( value );
}
if ( save )
{
savePttConfig();
}
}
}
void logControllerState( const vr::VRControllerState_t& state,
const std::string& prefix )
{
if ( state.ulButtonPressed
& vr::ButtonMaskFromId( vr::k_EButton_ApplicationMenu ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_ApplicationMenu )
<< " pressed";
}
if ( state.ulButtonTouched
& vr::ButtonMaskFromId( vr::k_EButton_ApplicationMenu ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_ApplicationMenu )
<< " touched";
}
if ( state.ulButtonPressed & vr::ButtonMaskFromId( vr::k_EButton_Grip ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Grip )
<< " pressed";
}
if ( state.ulButtonTouched & vr::ButtonMaskFromId( vr::k_EButton_Grip ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Grip )
<< " touched";
}
if ( state.ulButtonPressed
& vr::ButtonMaskFromId( vr::k_EButton_DPad_Left ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_DPad_Left )
<< " pressed";
}
if ( state.ulButtonTouched
& vr::ButtonMaskFromId( vr::k_EButton_DPad_Left ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_DPad_Left )
<< " touched";
}
if ( state.ulButtonPressed & vr::ButtonMaskFromId( vr::k_EButton_DPad_Up ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_DPad_Up )
<< " pressed";
}
if ( state.ulButtonTouched & vr::ButtonMaskFromId( vr::k_EButton_DPad_Up ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_DPad_Up )
<< " touched";
}
if ( state.ulButtonPressed
& vr::ButtonMaskFromId( vr::k_EButton_DPad_Right ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_DPad_Right )
<< " pressed";
}
if ( state.ulButtonTouched
& vr::ButtonMaskFromId( vr::k_EButton_DPad_Right ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_DPad_Right )
<< " touched";
}
if ( state.ulButtonPressed
& vr::ButtonMaskFromId( vr::k_EButton_DPad_Down ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_DPad_Down )
<< " pressed";
}
if ( state.ulButtonTouched
& vr::ButtonMaskFromId( vr::k_EButton_DPad_Down ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_DPad_Down )
<< " touched";
}
if ( state.ulButtonPressed & vr::ButtonMaskFromId( vr::k_EButton_A ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_A )
<< " pressed";
}
if ( state.ulButtonTouched & vr::ButtonMaskFromId( vr::k_EButton_A ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_A )
<< " touched";
}
if ( state.ulButtonPressed & vr::ButtonMaskFromId( vr::k_EButton_Axis0 ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis0 )
<< " pressed";
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis0 )
<< " x: " << state.rAxis[0].x
<< " y: " << state.rAxis[0].y;
}
if ( state.ulButtonTouched & vr::ButtonMaskFromId( vr::k_EButton_Axis0 ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis0 )
<< " touched";
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis0 )
<< " x: " << state.rAxis[0].x
<< " y: " << state.rAxis[0].y;
}
if ( state.ulButtonPressed & vr::ButtonMaskFromId( vr::k_EButton_Axis1 ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis1 )
<< " pressed";
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis1 )
<< " x: " << state.rAxis[1].x
<< " y: " << state.rAxis[0].y;
}
if ( state.ulButtonTouched & vr::ButtonMaskFromId( vr::k_EButton_Axis1 ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis1 )
<< " touched";
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis1 )
<< " x: " << state.rAxis[1].x
<< " y: " << state.rAxis[0].y;
}
if ( state.ulButtonPressed & vr::ButtonMaskFromId( vr::k_EButton_Axis2 ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis2 )
<< " pressed";
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis2 )
<< " x: " << state.rAxis[2].x
<< " y: " << state.rAxis[0].y;
}
if ( state.ulButtonTouched & vr::ButtonMaskFromId( vr::k_EButton_Axis2 ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis2 )
<< " touched";
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis2 )
<< " x: " << state.rAxis[2].x
<< " y: " << state.rAxis[0].y;
}
if ( state.ulButtonPressed & vr::ButtonMaskFromId( vr::k_EButton_Axis3 ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis3 )
<< " pressed";
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis3 )
<< " x: " << state.rAxis[3].x
<< " y: " << state.rAxis[0].y;
}
if ( state.ulButtonTouched & vr::ButtonMaskFromId( vr::k_EButton_Axis3 ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis3 )
<< " touched";
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis3 )
<< " x: " << state.rAxis[3].x
<< " y: " << state.rAxis[0].y;
}
if ( state.ulButtonPressed & vr::ButtonMaskFromId( vr::k_EButton_Axis4 ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis4 )
<< " pressed";
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis4 )
<< " x: " << state.rAxis[4].x
<< " y: " << state.rAxis[0].y;
}
if ( state.ulButtonTouched & vr::ButtonMaskFromId( vr::k_EButton_Axis4 ) )
{
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis4 )
<< " touched";
LOG( INFO ) << prefix
<< vr::VRSystem()->GetButtonIdNameFromEnum(
vr::k_EButton_Axis4 )
<< " x: " << state.rAxis[4].x
<< " y: " << state.rAxis[0].y;
}
}
} // namespace advsettings