1
This commit is contained in:
192
public/haptics/haptic_msgs.cpp
Normal file
192
public/haptics/haptic_msgs.cpp
Normal file
@ -0,0 +1,192 @@
|
||||
#include "cbase.h"
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
#include "tier3/tier3.h"
|
||||
#include "iviewrender.h"
|
||||
#include "inputsystem/iinputsystem.h"
|
||||
#include "vgui/IInputInternal.h"
|
||||
#include "c_basecombatweapon.h"
|
||||
#include "c_baseplayer.h"
|
||||
#include "hud_macros.h"
|
||||
#include "iclientvehicle.h"
|
||||
#include "c_prop_vehicle.h"
|
||||
#include "prediction.h"
|
||||
#include "activitylist.h"
|
||||
#ifdef TERROR
|
||||
#include "ClientTerrorPlayer.h"
|
||||
#endif
|
||||
extern vgui::IInputInternal *g_InputInternal;
|
||||
#else
|
||||
#include "usermessages.h"
|
||||
#endif
|
||||
|
||||
#include "haptics/haptic_msgs.h"
|
||||
|
||||
void RegisterHapticMessages(void)
|
||||
{
|
||||
usermessages->Register( "SPHapWeapEvent", 4 );
|
||||
usermessages->Register( "HapDmg", -1 );
|
||||
usermessages->Register( "HapPunch", -1 );
|
||||
usermessages->Register( "HapSetDrag", -1 );
|
||||
usermessages->Register( "HapSetConst", -1 );
|
||||
usermessages->Register( "HapMeleeContact", 0);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Server
|
||||
//-----------------------------------------------------------------------------
|
||||
#ifndef CLIENT_DLL
|
||||
|
||||
void HapticMsg_SendWeaponAnim( CBasePlayer *pPlayer, int iActivity )
|
||||
{
|
||||
//Send the haptics message
|
||||
CSingleUserRecipientFilter user( pPlayer );
|
||||
user.MakeReliable();
|
||||
UserMessageBegin( user, "SPHapWeapEvent" );
|
||||
WRITE_LONG(iActivity);
|
||||
MessageEnd();
|
||||
}
|
||||
|
||||
void HapticMsg_SetDrag(CBasePlayer* pPlayer, float drag)
|
||||
{
|
||||
CSingleUserRecipientFilter user( pPlayer );
|
||||
user.MakeReliable();
|
||||
UserMessageBegin( user, "HapSetDrag" );
|
||||
WRITE_FLOAT(drag);
|
||||
MessageEnd();
|
||||
}
|
||||
|
||||
void HapticMsg_SetConstantForce(CBasePlayer* pPlayer, Vector force)
|
||||
{
|
||||
// portal does not network this.
|
||||
CSingleUserRecipientFilter user( pPlayer );
|
||||
user.MakeReliable();
|
||||
UserMessageBegin( user, "HapSetConst" );
|
||||
WRITE_SHORT(force.x);
|
||||
WRITE_SHORT(force.y);
|
||||
WRITE_SHORT(force.z);
|
||||
MessageEnd();
|
||||
}
|
||||
|
||||
void HapticMsg_HapDmg(CBasePlayer* pPlayer, float pitch, float yaw, float dmg, float dmgType )
|
||||
{
|
||||
CSingleUserRecipientFilter user(pPlayer);
|
||||
user.MakeReliable();
|
||||
UserMessageBegin(user,"HapDmg");
|
||||
|
||||
WRITE_FLOAT(pitch);
|
||||
WRITE_FLOAT(yaw);
|
||||
WRITE_FLOAT(dmg);
|
||||
WRITE_LONG(dmgType);
|
||||
MessageEnd();
|
||||
}
|
||||
|
||||
void HapticMsg_Punch(CBasePlayer* pPlayer, float x, float y, float z)
|
||||
{
|
||||
CSingleUserRecipientFilter user(pPlayer);
|
||||
user.MakeReliable();
|
||||
UserMessageBegin(user,"HapPunch");
|
||||
|
||||
WRITE_FLOAT(x);
|
||||
WRITE_FLOAT(y);
|
||||
WRITE_FLOAT(z);
|
||||
MessageEnd();
|
||||
}
|
||||
|
||||
void HapticMsg_MeleeContact(CBasePlayer* pPlayer)
|
||||
{
|
||||
CSingleUserRecipientFilter user(pPlayer);
|
||||
user.MakeReliable();
|
||||
UserMessageBegin(user,"HapMeleeContact");
|
||||
MessageEnd();
|
||||
}
|
||||
|
||||
#endif //!CLIENT_DLL
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Client
|
||||
//-----------------------------------------------------------------------------
|
||||
#ifdef CLIENT_DLL
|
||||
void HookHapticMessages(void)
|
||||
{
|
||||
HOOK_MESSAGE(SPHapWeapEvent);
|
||||
HOOK_MESSAGE(HapDmg);
|
||||
HOOK_MESSAGE(HapPunch);
|
||||
HOOK_MESSAGE(HapSetDrag);
|
||||
HOOK_MESSAGE(HapSetConst);
|
||||
HOOK_MESSAGE(HapMeleeContact);
|
||||
|
||||
}
|
||||
|
||||
// Defined in haptics_utils
|
||||
#ifdef WIN32
|
||||
void HapticsHandleMsg_HapSetDrag( float drag );
|
||||
void HapticsHandleMsg_HapSetConst( Vector const &constant );
|
||||
void HapticsHandleMsg_SPHapWeapEvent( int iActivity );
|
||||
void HapticsHandleMsg_HapPunch( QAngle const &angle );
|
||||
void HapticsHandleMsg_HapDmg( float pitch, float yaw, float damage, int damageType );
|
||||
void HapticsHandleMsg_HapMeleeContact();
|
||||
#endif // WIN32
|
||||
|
||||
void __MsgFunc_HapSetDrag( bf_read &msg )
|
||||
{
|
||||
#ifdef WIN32
|
||||
float drag = msg.ReadFloat();
|
||||
HapticsHandleMsg_HapSetDrag( drag );
|
||||
#endif // WIN32
|
||||
}
|
||||
|
||||
//Might be able to handle this better...
|
||||
void __MsgFunc_HapSetConst( bf_read &msg )
|
||||
{
|
||||
#ifdef WIN32
|
||||
Vector constant;
|
||||
constant.x = msg.ReadShort();
|
||||
constant.y = msg.ReadShort();
|
||||
constant.z = msg.ReadShort();
|
||||
|
||||
HapticsHandleMsg_HapSetConst( constant );
|
||||
#endif // WIN32
|
||||
}
|
||||
|
||||
void __MsgFunc_SPHapWeapEvent( bf_read &msg )
|
||||
{
|
||||
#ifdef WIN32
|
||||
int iActivity = msg.ReadLong();
|
||||
|
||||
HapticsHandleMsg_SPHapWeapEvent( iActivity );
|
||||
#endif // WIN32
|
||||
}
|
||||
|
||||
void __MsgFunc_HapPunch( bf_read &msg )
|
||||
{
|
||||
#ifdef WIN32
|
||||
float x = msg.ReadFloat();
|
||||
float y = msg.ReadFloat();
|
||||
float z = msg.ReadFloat();
|
||||
|
||||
HapticsHandleMsg_HapPunch( QAngle(x,y,z) );
|
||||
#endif // WIN32
|
||||
}
|
||||
|
||||
void __MsgFunc_HapDmg( bf_read &msg )
|
||||
{
|
||||
#ifdef WIN32
|
||||
float pitch = msg.ReadFloat();
|
||||
float yaw = msg.ReadFloat();
|
||||
float damage = msg.ReadFloat();
|
||||
int damageType = msg.ReadLong();
|
||||
|
||||
HapticsHandleMsg_HapDmg( pitch, yaw, damage, damageType );
|
||||
#endif // WIN32
|
||||
}
|
||||
|
||||
void __MsgFunc_HapMeleeContact( bf_read &msg )
|
||||
{
|
||||
#ifdef WIN32
|
||||
HapticsHandleMsg_HapMeleeContact();
|
||||
#endif // WIN32
|
||||
}
|
||||
#endif // CLIENT_DLL
|
||||
|
||||
|
Reference in New Issue
Block a user