aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/shared/baseparticleentity.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 /mp/src/game/shared/baseparticleentity.cpp
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/shared/baseparticleentity.cpp')
-rw-r--r--mp/src/game/shared/baseparticleentity.cpp115
1 files changed, 115 insertions, 0 deletions
diff --git a/mp/src/game/shared/baseparticleentity.cpp b/mp/src/game/shared/baseparticleentity.cpp
new file mode 100644
index 00000000..8211017b
--- /dev/null
+++ b/mp/src/game/shared/baseparticleentity.cpp
@@ -0,0 +1,115 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//
+//===========================================================================//
+
+#include "cbase.h"
+#include "baseparticleentity.h"
+
+#ifdef CLIENT_DLL
+#include "tier1/KeyValues.h"
+#include "toolframework_client.h"
+#endif
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+IMPLEMENT_NETWORKCLASS_ALIASED( BaseParticleEntity, DT_BaseParticleEntity )
+
+BEGIN_NETWORK_TABLE( CBaseParticleEntity, DT_BaseParticleEntity )
+END_NETWORK_TABLE()
+
+BEGIN_PREDICTION_DATA( CBaseParticleEntity )
+END_PREDICTION_DATA()
+
+#ifdef CLIENT_DLL
+REGISTER_EFFECT( CBaseParticleEntity );
+#endif
+
+CBaseParticleEntity::CBaseParticleEntity( void )
+{
+#if defined( CLIENT_DLL )
+ m_bSimulate = true;
+ m_nToolParticleEffectId = TOOLPARTICLESYSTEMID_INVALID;
+#endif
+}
+
+CBaseParticleEntity::~CBaseParticleEntity( void )
+{
+#if defined( CLIENT_DLL )
+ if ( ToolsEnabled() && ( m_nToolParticleEffectId != TOOLPARTICLESYSTEMID_INVALID ) && clienttools->IsInRecordingMode() )
+ {
+ KeyValues *msg = new KeyValues( "ParticleSystem_Destroy" );
+ msg->SetInt( "id", m_nToolParticleEffectId );
+ m_nToolParticleEffectId = TOOLPARTICLESYSTEMID_INVALID;
+ }
+#endif
+}
+
+#if !defined( CLIENT_DLL )
+int CBaseParticleEntity::UpdateTransmitState( void )
+{
+ if ( IsEffectActive( EF_NODRAW ) )
+ return SetTransmitState( FL_EDICT_DONTSEND );
+
+ if ( IsEFlagSet( EFL_IN_SKYBOX ) )
+ return SetTransmitState( FL_EDICT_ALWAYS );
+
+ // cull against PVS
+ return SetTransmitState( FL_EDICT_PVSCHECK );
+}
+#endif
+
+void CBaseParticleEntity::Activate()
+{
+#if !defined( CLIENT_DLL )
+ BaseClass::Activate();
+#endif
+}
+
+
+void CBaseParticleEntity::Think()
+{
+ Remove( );
+}
+
+
+void CBaseParticleEntity::FollowEntity(CBaseEntity *pEntity)
+{
+ BaseClass::FollowEntity( pEntity );
+ SetLocalOrigin( vec3_origin );
+}
+
+
+void CBaseParticleEntity::SetLifetime(float lifetime)
+{
+ if(lifetime == -1)
+ SetNextThink( TICK_NEVER_THINK );
+ else
+ SetNextThink( gpGlobals->curtime + lifetime );
+}
+
+#if defined( CLIENT_DLL )
+const Vector &CBaseParticleEntity::GetSortOrigin()
+{
+ // By default, we do the cheaper behavior of getting the root parent's abs origin, so we don't have to
+ // setup any bones along the way. If this screws anything up, we can always make it an option.
+ return GetRootMoveParent()->GetAbsOrigin();
+}
+
+void CBaseParticleEntity::SimulateParticles( CParticleSimulateIterator *pIterator )
+{
+ // If you derive from CBaseParticleEntity, you must implement simulation and rendering.
+ Assert( false );
+}
+
+void CBaseParticleEntity::RenderParticles( CParticleRenderIterator *pIterator )
+{
+ // If you derive from CBaseParticleEntity, you must implement simulation and rendering.
+ Assert( false );
+}
+
+#endif