summaryrefslogtreecommitdiff
path: root/game/client/sixense/in_sixense_gesture_bindings.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/client/sixense/in_sixense_gesture_bindings.h')
-rw-r--r--game/client/sixense/in_sixense_gesture_bindings.h73
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