diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/sixense/in_sixense.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/sixense/in_sixense.h')
| -rw-r--r-- | game/client/sixense/in_sixense.h | 278 |
1 files changed, 278 insertions, 0 deletions
diff --git a/game/client/sixense/in_sixense.h b/game/client/sixense/in_sixense.h new file mode 100644 index 0000000..eb56a8a --- /dev/null +++ b/game/client/sixense/in_sixense.h @@ -0,0 +1,278 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +#ifndef IN_SIXENSE_H +#define IN_SIXENSE_H + +#include "mathlib/vector.h" +#include "vgui_controls/Frame.h" +#include "vgui_controls/Label.h" +#include "vgui_video.h" +#include "convar.h" +#include "usercmd.h" +#include "tier1/utlstring.h" +#include "GameEventListener.h" +#include "in_sixense_gesture_bindings.h" + + +#if defined( CLIENT_DLL ) +class C_Portal_Player; +#define CPortal_Player C_Portal_Player +#else +class CPortal_Player; +#endif + +// forward declarations +namespace sixenseUtils { + class IFPSViewAngles; + class IFPSPlayerMovement; + class IFPSEvents; + class IFPSMeleeWeapon; + + class IDerivatives; + class IButtonStates; + class ILaserPointer; + + class IControllerManager; +}; + +class SixenseInput : public CGameEventListener +{ + +public: + bool LoadModules(); + bool UnloadModules(); + + SixenseInput(); + ~SixenseInput(); + + + void Init(); + void PostInit(); + void Shutdown(); +#ifdef PORTAL2 + bool IsBaseWarningUp(); + void PlayerPortalled( const VMatrix &PortalMatrix ); + void SetOneToOneMode( bool bOnOrOff ); + + inline QAngle GetAnglesToRightHand() { return m_AnglesToRightHand; } + inline QAngle GetAnglesToLeftHand() { return m_AnglesToLeftHand; } + + // If the right trigger is held and a melee weapon is selected, go to 1-to-1 melee mode + bool IsInOneToOneMode(); + bool IsInAlwaysOneToOneMode(); + + void FixPortalView(); + void SetPortalTweakingParameters( bool bIsTweaking ); + + bool IsHoldingObject(); + + C_BaseEntity *GetHeldObject(); +#endif + + bool IsEnabled(); + bool IsLeftHanded(); + + // SixenseFrame computes the view parameters from the controllers. Should be called once per frame + bool SixenseFrame( float flFrametime, CUserCmd *pCmd ); + void SixenseUpdateKeys( float flFrametime, CUserCmd *pCmd ); + + bool SendKeyToActiveWindow(ButtonCode_t key); + void SixenseUpdateMouseCursor(); + void SixenseUpdateControllerManager(); + void controllerManagerCallback( int ); + inline void ResetFrameTime( float flTime ) { m_fRemainingFrameTime = flTime; } + + // Set the engine's view angles + void SetView( float flInputSampleFrametime, CUserCmd *pCmd ); + void SetMode( int nMode ); + void ResetView( QAngle SpawnAngles ); + void SetEnabled( bool bEnabled ); + void LoadDefaultSettings( int nLevel ); + bool InMenuMode(); + + + QAngle GetViewAngles(); + QAngle GetViewAngleOffset(); + + void ForceViewAngles( QAngle angles ); + bool IsSixenseMap(); + void CreateGUI( vgui::VPANEL parent ); + void SwitchViewModes( CUserCmd *pCmd ); + + // playerIndex = (0 to 3), handIndex = (left = 0 or right = 1) + void Rumble( unsigned char nIndex, unsigned char nRumbleData, unsigned char nRumbleFlags ); + void Rumble( unsigned char nPlayerIndex, unsigned char nHandIndex, unsigned char nRumbleData, unsigned char nRumbleFlags ); + + void SetFilter( float f ); + void GetFOV( float *pHfov, float *pVfov ); + +#ifdef SIXENSE_PLAYER_DATA + void SetPlayerHandPositions( CUserCmd *pCmd, float flFrametime ); +#endif + + void SetBaseOffset(); + void SetFilterLevel( float flNearRange, float flNearVal, float flFarRange, float flFarVal ); + + static class SixenseGUIFrame *m_SixenseFrame; + + bool IsAimingForwards(); + + + + virtual void FireGameEvent( IGameEvent *pEvent ); + + void BlendView(); + + void DisableFreeAimSpin( int nDisable ); + void DisableGestures( int nDisable ); + void PlayerSpawn(); + bool AreBindingsDisabled(); + + void LeftPointGesture( bool start ); + void RightPointGesture( bool start ); + + void StartRatchet(); + void StopRatchet(); + + void CheckWeaponForScope(); + + SixenseGestureBindings *GetGestureBindings(); + + void InstallConvarCallbacks(); + void UpdateValuesFromConvars(); + void ConvarChanged(); + +private: + + bool m_bIsEnabled; // sixense.dll loaded + bool m_bIsActive; // controllers not docked + + bool m_bModulesLoaded; + + bool m_bWasInMenuMode; + +#ifdef PORTAL2 + bool m_bJustPortalled; + + bool m_bIsLeftTriggerDown; + bool m_bIsRightTriggerDown; + + bool m_bIsIn1to1Mode; + bool m_bIs1to1ModeLocked; + bool m_bIs1to1ModeScaling; + bool m_bIs1to1ModeRatcheting; + + bool m_bExitOneWhenAimingForwards; + bool m_bScalingLockedOneToOne; + + bool m_bIsTweaking; + + float m_fDisableJumpUntil; + + int m_nGlowIndex; + + float m_fLastHorizSpeedMult; + float m_fLastVertSpeedMult; + + QAngle m_AnglesToRightHand, m_AnglesToLeftHand; + + float m_fTweakSixenseAimFreeaimAccelBandExponent; + float m_fTweakSixenseAimFreeaimAutoLevelRate; + float m_fTweakSixenseAimFreeaimAccelBandSize; + float m_fTweakSixenseAimFreeaimMaxSpeed; + float m_fTweakSixenseAimFreeaimDeadZoneRadius; + float m_fTweakSixenseAimFreeaimHeadingMultiplier; + float m_fTweakSixenseAimFreeaimPitchMultiplier; + float m_fTweakSixenseAim1to1HeadingMultiplier; + float m_fTweakSixenseAim1to1PitchMultiplier; + + Vector3 m_GrabPos; +#endif + + bool m_bConvarChanged; + + bool m_bPlayerValid; + + float m_fRemainingFrameTime; + + bool m_bScopeSwitchedMode; + sixenseUtils::IFPSViewAngles::fps_mode m_nScopeSwitchedPrevMode; + int m_nScopeSwitchedPrevSpringViewEnabled; + + float m_fTeleportWaitToBlendTime; + + class ISixenseAPI *m_pSixenseAPI; + + struct _sixenseAllControllerData *m_pACD; + + class sixenseUtils::IFPSViewAngles *m_pFPSViewAngles; + class sixenseUtils::IFPSPlayerMovement *m_pFPSPlayerMovement; + class sixenseUtils::IFPSEvents *m_pFPSEvents; + + class sixenseUtils::IDerivatives *m_pLeftDeriv, *m_pRightDeriv; + class sixenseUtils::IButtonStates *m_pLeftButtonStates, *m_pRightButtonStates; + class sixenseUtils::ILaserPointer *m_pLaserPointer; + + class sixenseUtils::IControllerManager *m_pControllerManager; + + int m_LastViewMode; + int m_nLeftIndex, m_nRightIndex; + + void PlayerDroppedEntity( int entityID ); + void PlayerUsedEntity( int entityID ); + + bool m_bMoveMouseToCenter; + int m_nFilterLevel; + unsigned char m_nLastLeftSequence, m_nLastRightSequence; + bool m_bShouldSetBaseOffset; + bool m_bJustSpawned; + +#ifdef WATERMARK + class SixenseWatermarkFrame *m_WatermarkFrame; +#endif + + int m_nFreeaimSpinDisabled; + int m_nGesturesDisabled; + + bool m_nShouldUnduck; + + SixenseGestureBindings *m_pGestureBindings; +}; + +extern SixenseInput *g_pSixenseInput; + + +class SixenseGUIFrame : public vgui::Frame +{ + DECLARE_CLASS_SIMPLE( SixenseGUIFrame, vgui::Frame ); + +public: + + // Construction + SixenseGUIFrame( vgui::VPANEL parent, char const *pPanelName ); + virtual ~SixenseGUIFrame(); + + void setImage( CUtlString img_name ); + + virtual void SetVisible( bool bState ); + +private: + + vgui::ImagePanel *m_ImagePanel; + +}; + +#ifdef PORTAL2 +class SixenseBaseWarning : public vgui::Frame +{ + DECLARE_CLASS_SIMPLE( SixenseBaseWarning, vgui::Frame ); +public: + SixenseBaseWarning( vgui::Panel *parent, char const *name ); + //virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); +protected: + //virtual void PaintBackground(); + virtual void ApplySchemeSettings(vgui::IScheme *pScheme); + vgui::Label *_label; +}; +#endif + +#endif |