diff options
Diffstat (limited to 'public/haptics/haptic_utils.h')
| -rw-r--r-- | public/haptics/haptic_utils.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/public/haptics/haptic_utils.h b/public/haptics/haptic_utils.h new file mode 100644 index 0000000..18a05ab --- /dev/null +++ b/public/haptics/haptic_utils.h @@ -0,0 +1,104 @@ +#ifndef HAPTIC_UTILS_H +#define HAPTIC_UTILS_H + + +#ifdef CLIENT_DLL + +#include "haptics/ihaptics.h" + +// forward decl. +class C_BaseEntity; +class C_BaseCombatCharacter; +class C_BasePlayer; +class bf_read; + +// use client side versions. +#ifndef CBasePlayer +#define CBasePlayer C_BasePlayer; +#endif +#ifndef CBaseCombatWeapon +#define CBaseCombatWeapon C_BaseCombatWeapon +#endif + +// stubbed version of haptics interface. Used when haptics is not available. +class CHapticsStubbed : public IHaptics +{ +public: +public: // Initialization. + virtual bool Initialize(IVEngineClient* newengine, + IViewRender *newview, + vgui::IInputInternal* newinput, + CGlobalVarsBase* newgpGlobals, + CreateInterfaceFn newengineFactory, + void *IMEWindow, + IFileSystem* filesystem, + IEngineVGui* newvgui, + ActivityList_IndexForName_t actIndexForName, + ActivityList_NameForIndex_t actNameForIndex) + {return false;}; + +public: // Device methods + virtual bool HasDevice(){return false;}; + virtual void ShutdownHaptics(){}; + +public: // Game input handling + virtual void CalculateMove(float &forward_move, float &side_move, float delta){}; + virtual void OnPlayerChanged(){} + virtual void SetNavigationClass(const char *defaultNavigationName){}; + virtual const char *GetNavigationClass(){ return 0; }; + virtual void GameProcess(){} + virtual void MenuProcess(){} + +public: // Effect methods + virtual void ProcessHapticEvent(int numArgs, ...){} + virtual void ProcessHapticWeaponActivity(const char *weapon, int activity){} + virtual void HapticsPunch(float strength, const QAngle &angle){} + virtual void ApplyDamageEffect(float damage, int damagetype, const Vector &angle){} + virtual void UpdateAvatarVelocity(const Vector &vel){} + virtual void RemoveAvatarEffect(){} + virtual void SetConstantForce(const Vector &force){} + virtual Vector GetConstantForce(){return Vector(0,0,0);} + virtual void SetDrag(float amount){} + virtual void SetShake(float scalar, float currentamount){} + virtual void SetHeld(float amount){} + virtual void SetMoveSurface(HapticSurfaceType_t surface){} + virtual HapticSurfaceType_t GetMoveSurface(){ return HST_NONE; } + virtual void SetDangling(float amount){}; + +public: // Notify methods + virtual void LocalPlayerReset(){}; + virtual void UpdatePlayerFOV(float fov){}; + virtual void WorldPrecache() {}; +}; +#else +// forward decl. +class CBasePlayer; +class CBaseCombatWeapon; +class CTakeDamageInfo; + +#endif // CLIENT_DLL + +void HapticSendWeaponAnim(class CBaseCombatWeapon* weapon, int iActivity); +void HapticSetConstantForce(class CBasePlayer* pPlayer,Vector force); +void HapticSetDrag(class CBasePlayer* pPlayer, float drag); + +// note: does nothing on server. +void HapticProcessSound(const char* soundname, int entIndex); + +#ifdef CLIENT_DLL + void ConnectHaptics(CreateInterfaceFn appFactory); + void DisconnectHaptics(); + + void UpdateAvatarEffect(void); + void HapticsExitedVehicle(C_BaseEntity* vehicle, C_BaseCombatCharacter *pPassenger ); + void HapticsEnteredVehicle(C_BaseEntity* vehicle, C_BaseCombatCharacter *pPassenger ); + + //bool value true if user is using a haptic device. + extern ConVar hap_HasDevice; +#else + void HapticsDamage(CBasePlayer* pPlayer, const CTakeDamageInfo &info); + void HapticPunch(CBasePlayer* pPlayer, float amount, float x, float y); + void HapticMeleeContact(CBasePlayer* pPlayer); +#endif + +#endif
\ No newline at end of file |