mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-15 05:06:57 +00:00
1
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user