aboutsummaryrefslogtreecommitdiff
path: root/sp/src/game/client/c_te_sparks.cpp
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /sp/src/game/client/c_te_sparks.cpp
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'sp/src/game/client/c_te_sparks.cpp')
-rw-r--r--sp/src/game/client/c_te_sparks.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/sp/src/game/client/c_te_sparks.cpp b/sp/src/game/client/c_te_sparks.cpp
new file mode 100644
index 00000000..4feb0737
--- /dev/null
+++ b/sp/src/game/client/c_te_sparks.cpp
@@ -0,0 +1,105 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//===========================================================================//
+#include "cbase.h"
+#include "c_te_particlesystem.h"
+#include "IEffects.h"
+#include "tier1/KeyValues.h"
+#include "toolframework_client.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+//-----------------------------------------------------------------------------
+// Purpose: Sparks TE
+//-----------------------------------------------------------------------------
+class C_TESparks : public C_TEParticleSystem
+{
+public:
+ DECLARE_CLASS( C_TESparks, C_TEParticleSystem );
+ DECLARE_CLIENTCLASS();
+
+ C_TESparks( void );
+ virtual ~C_TESparks( void );
+
+ virtual void PostDataUpdate( DataUpdateType_t updateType );
+ virtual void Precache( void );
+
+ int m_nMagnitude;
+ int m_nTrailLength;
+ Vector m_vecDir;
+};
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+C_TESparks::C_TESparks( void )
+{
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+C_TESparks::~C_TESparks( void )
+{
+}
+
+void C_TESparks::Precache( void )
+{
+}
+
+
+//-----------------------------------------------------------------------------
+// Recording
+//-----------------------------------------------------------------------------
+static inline void RecordSparks( const Vector &start, int nMagnitude, int nTrailLength, const Vector &direction )
+{
+ if ( !ToolsEnabled() )
+ return;
+
+ if ( clienttools->IsInRecordingMode() )
+ {
+ KeyValues *msg = new KeyValues( "TempEntity" );
+
+ msg->SetInt( "te", TE_SPARKS );
+ msg->SetString( "name", "TE_Sparks" );
+ msg->SetFloat( "time", gpGlobals->curtime );
+ msg->SetFloat( "originx", start.x );
+ msg->SetFloat( "originy", start.y );
+ msg->SetFloat( "originz", start.z );
+ msg->SetFloat( "directionx", direction.x );
+ msg->SetFloat( "directiony", direction.y );
+ msg->SetFloat( "directionz", direction.z );
+ msg->SetInt( "magnitude", nMagnitude );
+ msg->SetInt( "traillength", nTrailLength );
+
+ ToolFramework_PostToolMessage( HTOOLHANDLE_INVALID, msg );
+ msg->deleteThis();
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void C_TESparks::PostDataUpdate( DataUpdateType_t updateType )
+{
+ g_pEffects->Sparks( m_vecOrigin, m_nMagnitude, m_nTrailLength, &m_vecDir );
+ RecordSparks( m_vecOrigin, m_nMagnitude, m_nTrailLength, m_vecDir );
+}
+
+void TE_Sparks( IRecipientFilter& filter, float delay,
+ const Vector* pos, int nMagnitude, int nTrailLength, const Vector *pDir )
+{
+ g_pEffects->Sparks( *pos, nMagnitude, nTrailLength, pDir );
+ RecordSparks( *pos, nMagnitude, nTrailLength, *pDir );
+}
+
+IMPLEMENT_CLIENTCLASS_EVENT_DT(C_TESparks, DT_TESparks, CTESparks)
+ RecvPropInt( RECVINFO( m_nMagnitude ) ),
+ RecvPropInt( RECVINFO( m_nTrailLength ) ),
+ RecvPropVector( RECVINFO( m_vecDir ) ),
+END_RECV_TABLE()