diff options
Diffstat (limited to 'mp/src/game/server/te_effect_dispatch.cpp')
| -rw-r--r-- | mp/src/game/server/te_effect_dispatch.cpp | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/mp/src/game/server/te_effect_dispatch.cpp b/mp/src/game/server/te_effect_dispatch.cpp new file mode 100644 index 00000000..4bb7d6a3 --- /dev/null +++ b/mp/src/game/server/te_effect_dispatch.cpp @@ -0,0 +1,91 @@ +//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $Workfile: $
+// $Date: $
+//
+//-----------------------------------------------------------------------------
+// $Log: $
+//
+// $NoKeywords: $
+//=============================================================================//
+#include "cbase.h"
+#include "basetempentity.h"
+#include "te_effect_dispatch.h"
+#include "networkstringtable_gamedll.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+//-----------------------------------------------------------------------------
+// Purpose: This TE provides a simple interface to dispatch effects by name using DispatchEffect().
+//-----------------------------------------------------------------------------
+class CTEEffectDispatch : public CBaseTempEntity
+{
+public:
+ DECLARE_CLASS( CTEEffectDispatch, CBaseTempEntity );
+
+ CTEEffectDispatch( const char *name );
+ virtual ~CTEEffectDispatch( void );
+
+ DECLARE_SERVERCLASS();
+
+public:
+ CEffectData m_EffectData;
+};
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : *name -
+//-----------------------------------------------------------------------------
+CTEEffectDispatch::CTEEffectDispatch( const char *name ) :
+ CBaseTempEntity( name )
+{
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+CTEEffectDispatch::~CTEEffectDispatch( void )
+{
+}
+
+IMPLEMENT_SERVERCLASS_ST( CTEEffectDispatch, DT_TEEffectDispatch )
+
+ SendPropDataTable( SENDINFO_DT( m_EffectData ), &REFERENCE_SEND_TABLE( DT_EffectData ) )
+
+END_SEND_TABLE()
+
+
+// Singleton to fire TEEffectDispatch objects
+static CTEEffectDispatch g_TEEffectDispatch( "EffectDispatch" );
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void TE_DispatchEffect( IRecipientFilter& filter, float delay, const Vector &pos, const char *pName, const CEffectData &data )
+{
+ // Copy the supplied effect data.
+ g_TEEffectDispatch.m_EffectData = data;
+
+ // Get the entry index in the string table.
+ g_TEEffectDispatch.m_EffectData.m_iEffectName = g_pStringTableEffectDispatch->AddString( CBaseEntity::IsServer(), pName );
+
+ // Send it to anyone who can see the effect's origin.
+ g_TEEffectDispatch.Create( filter, 0 );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void DispatchEffect( const char *pName, const CEffectData &data )
+{
+ CPASFilter filter( data.m_vOrigin );
+ DispatchEffect( pName, data, filter );
+}
+
+void DispatchEffect( const char *pName, const CEffectData &data, CRecipientFilter &filter )
+{
+ te->DispatchEffect( filter, 0.0, data.m_vOrigin, pName, data );
+}
|