diff options
Diffstat (limited to 'game/client/sixense/in_sixense_gesture_bindings.h')
| -rw-r--r-- | game/client/sixense/in_sixense_gesture_bindings.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/game/client/sixense/in_sixense_gesture_bindings.h b/game/client/sixense/in_sixense_gesture_bindings.h new file mode 100644 index 0000000..d9e334e --- /dev/null +++ b/game/client/sixense/in_sixense_gesture_bindings.h @@ -0,0 +1,73 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +#ifndef IN_SIXENSE_GESTURES_H +#define IN_SIXENSE_GESTURES_H +#ifdef _WIN32 +#pragma once +#endif + +#include <sixense_utils/interfaces.hpp> + +class SixenseGestureBindings { +public: + SixenseGestureBindings(); + + // Add a new binding. release_command can be empty. If press_command starts with '+', a release_command is generated with '-'. + void AddBinding( CUtlString hand, CUtlString action, CUtlString arg, CUtlString press_command, CUtlString release_command ); + + // Print bindings to console + void ListBindings(); + + // Write the bindings to a cfg file that can be loaded from the console or at startup (defaults to sixense_bindings.cfg) + void WriteBindings( CUtlString filename ); + + // Clear all bindings + void ClearBindings(); + + // Delete the nth binding + void DeleteBinding( int n ); + + // Create a set of default bindings appropriate for this game + void CreateDefaultBindings(); + + // Check to see if any bindings need to be triggered. disable_activations allows the caller to prevent new bindings from being triggered, while + // still allowing enabled gestures to disable. + void UpdateBindings( sixenseUtils::IButtonStates *pLeftButtonStates, sixenseUtils::IButtonStates *pRightButtonStates, bool bIsMenuVisible ); + + // How many bindings are there? + int GetNumBindings(); + + // Allow per-game authorization of commmands when the menu is up + bool AllowMenuCommand( char * ); + + // Allow per-game authorization of commmands in general + bool AllowCommand( char * ); + +protected: + typedef struct { + int m_Action; + int m_iHand; // 0=left, 1=right + int m_iArgument; + char *m_pActivateCommand; + char *m_pDeactivateCommand; + bool m_bAutoMirrored; + } GestureBinding; + + // some helpers for converting input strings + bool HandFromString( CUtlString hand_str, int *hand ); + bool ActionFromString( CUtlString action_str, sixenseUtils::IButtonStates::ActionType *action ); + bool ButtonMaskFromString( CUtlString button, unsigned short *button_token ); + bool DirectionFromString( CUtlString dir_str, sixenseUtils::IButtonStates::Direction *dir ); + bool ActionTokenToStr( sixenseUtils::IButtonStates::ActionType action, char *buf, int buflen ); + bool DirectionTokenToStr( int arg, char *buf, int buflen ); + bool ButtonTokenToStr( int arg, char *buf, int buflen ); + bool HandTokenToStr( int hand, char *buf, int buflen ); + + // Help deallocate a binding + void FreeStrings( GestureBinding binding ); + +private: + CUtlLinkedList<GestureBinding> m_GestureBindingList; + +}; + +#endif |