diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /mp/src/public/haptics/haptic_msgs.cpp | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/public/haptics/haptic_msgs.cpp')
| -rw-r--r-- | mp/src/public/haptics/haptic_msgs.cpp | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/mp/src/public/haptics/haptic_msgs.cpp b/mp/src/public/haptics/haptic_msgs.cpp new file mode 100644 index 00000000..717e5e24 --- /dev/null +++ b/mp/src/public/haptics/haptic_msgs.cpp @@ -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
+
+
|