Fix spacing in particle system files

This commit is contained in:
Blixibon 2022-10-26 13:37:59 -05:00
parent 63a888252f
commit 12742b7815
3 changed files with 254 additions and 248 deletions

View File

@ -19,15 +19,15 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class C_ParticleSystem : public C_BaseEntity class C_ParticleSystem : public C_BaseEntity
{ {
DECLARE_CLASS(C_ParticleSystem, C_BaseEntity); DECLARE_CLASS( C_ParticleSystem, C_BaseEntity );
public: public:
DECLARE_CLIENTCLASS(); DECLARE_CLIENTCLASS();
C_ParticleSystem(); C_ParticleSystem();
void PreDataUpdate(DataUpdateType_t updateType); void PreDataUpdate( DataUpdateType_t updateType );
void PostDataUpdate(DataUpdateType_t updateType); void PostDataUpdate( DataUpdateType_t updateType );
void ClientThink(void); void ClientThink( void );
protected: protected:
int m_iEffectIndex; int m_iEffectIndex;
@ -51,24 +51,24 @@ protected:
IMPLEMENT_CLIENTCLASS(C_ParticleSystem, DT_ParticleSystem, CParticleSystem); IMPLEMENT_CLIENTCLASS(C_ParticleSystem, DT_ParticleSystem, CParticleSystem);
BEGIN_RECV_TABLE_NOBASE(C_ParticleSystem, DT_ParticleSystem) BEGIN_RECV_TABLE_NOBASE( C_ParticleSystem, DT_ParticleSystem )
RecvPropVector(RECVINFO_NAME(m_vecNetworkOrigin, m_vecOrigin)), RecvPropVector( RECVINFO_NAME( m_vecNetworkOrigin, m_vecOrigin ) ),
RecvPropEHandle(RECVINFO(m_hOwnerEntity)), RecvPropEHandle( RECVINFO(m_hOwnerEntity) ),
RecvPropInt(RECVINFO_NAME(m_hNetworkMoveParent, moveparent), 0, RecvProxy_IntToMoveParent), RecvPropInt( RECVINFO_NAME(m_hNetworkMoveParent, moveparent), 0, RecvProxy_IntToMoveParent ),
RecvPropInt(RECVINFO(m_iParentAttachment)), RecvPropInt( RECVINFO( m_iParentAttachment ) ),
RecvPropQAngles(RECVINFO_NAME(m_angNetworkAngles, m_angRotation)), RecvPropQAngles( RECVINFO_NAME( m_angNetworkAngles, m_angRotation ) ),
RecvPropInt(RECVINFO(m_iEffectIndex)), RecvPropInt( RECVINFO( m_iEffectIndex ) ),
RecvPropBool(RECVINFO(m_bActive)), RecvPropBool( RECVINFO( m_bActive ) ),
#ifdef MAPBASE #ifdef MAPBASE
RecvPropBool(RECVINFO(m_bDestroyImmediately)), RecvPropBool( RECVINFO( m_bDestroyImmediately ) ),
#endif #endif
RecvPropFloat(RECVINFO(m_flStartTime)), RecvPropFloat( RECVINFO( m_flStartTime ) ),
RecvPropArray3(RECVINFO_ARRAY(m_hControlPointEnts), RecvPropEHandle(RECVINFO(m_hControlPointEnts[0]))), RecvPropArray3( RECVINFO_ARRAY(m_hControlPointEnts), RecvPropEHandle( RECVINFO( m_hControlPointEnts[0] ) ) ),
RecvPropArray3(RECVINFO_ARRAY(m_vControlPointVecs), RecvPropVector(RECVINFO(m_vControlPointVecs[0]))), RecvPropArray3( RECVINFO_ARRAY(m_vControlPointVecs), RecvPropVector( RECVINFO( m_vControlPointVecs[0] ) ) ),
RecvPropArray3(RECVINFO_ARRAY(m_iControlPointParents), RecvPropInt(RECVINFO(m_iControlPointParents[0]))), RecvPropArray3( RECVINFO_ARRAY(m_iControlPointParents), RecvPropInt( RECVINFO(m_iControlPointParents[0]))),
RecvPropBool(RECVINFO(m_bWeatherEffect)), RecvPropBool( RECVINFO( m_bWeatherEffect ) ),
END_RECV_TABLE(); END_RECV_TABLE();
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -82,38 +82,38 @@ C_ParticleSystem::C_ParticleSystem()
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void C_ParticleSystem::PreDataUpdate(DataUpdateType_t updateType) void C_ParticleSystem::PreDataUpdate( DataUpdateType_t updateType )
{ {
m_bOldActive = m_bActive; m_bOldActive = m_bActive;
BaseClass::PreDataUpdate(updateType); BaseClass::PreDataUpdate( updateType );
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void C_ParticleSystem::PostDataUpdate(DataUpdateType_t updateType) void C_ParticleSystem::PostDataUpdate( DataUpdateType_t updateType )
{ {
BaseClass::PostDataUpdate(updateType); BaseClass::PostDataUpdate( updateType );
// Always restart if just created and updated // Always restart if just created and updated
// FIXME: Does this play fairly with PVS? // FIXME: Does this play fairly with PVS?
if (updateType == DATA_UPDATE_CREATED) if ( updateType == DATA_UPDATE_CREATED )
{ {
if (m_bActive) if ( m_bActive )
{ {
// Delayed here so that we don't get invalid abs queries on level init with active particle systems // Delayed here so that we don't get invalid abs queries on level init with active particle systems
SetNextClientThink(gpGlobals->curtime); SetNextClientThink( gpGlobals->curtime );
} }
} }
else else
{ {
if (m_bOldActive != m_bActive) if ( m_bOldActive != m_bActive )
{ {
if (m_bActive) if ( m_bActive )
{ {
// Delayed here so that we don't get invalid abs queries on level init with active particle systems // Delayed here so that we don't get invalid abs queries on level init with active particle systems
SetNextClientThink(gpGlobals->curtime); SetNextClientThink( gpGlobals->curtime );
} }
else else
#ifdef MAPBASE #ifdef MAPBASE
@ -125,8 +125,8 @@ void C_ParticleSystem::PostDataUpdate(DataUpdateType_t updateType)
} }
#else #else
{ {
ParticleProp()->StopEmission(); ParticleProp()->StopEmission();
} }
#endif #endif
} }
} }
@ -135,28 +135,30 @@ void C_ParticleSystem::PostDataUpdate(DataUpdateType_t updateType)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void C_ParticleSystem::ClientThink(void) void C_ParticleSystem::ClientThink( void )
{ {
if (m_bActive) if ( m_bActive )
{ {
const char *pszName = GetParticleSystemNameFromIndex(m_iEffectIndex); const char *pszName = GetParticleSystemNameFromIndex( m_iEffectIndex );
if (pszName && pszName[0]) if ( pszName && pszName[0] )
{ {
if (!GameRules()->AllowMapParticleEffect(pszName)) if ( !GameRules()->AllowMapParticleEffect( pszName ) )
return; return;
if (m_bWeatherEffect && !GameRules()->AllowWeatherParticles()) if ( m_bWeatherEffect && !GameRules()->AllowWeatherParticles() )
return; return;
CNewParticleEffect *pEffect = ParticleProp()->Create(pszName, PATTACH_ABSORIGIN_FOLLOW); CNewParticleEffect *pEffect = ParticleProp()->Create( pszName, PATTACH_ABSORIGIN_FOLLOW );
AssertMsg1(pEffect, "Particle system couldn't make %s", pszName); AssertMsg1( pEffect, "Particle system couldn't make %s", pszName );
if (pEffect) if (pEffect)
{ {
if (m_vControlPointVecs[0] != GetAbsOrigin() && m_hControlPointEnts[0] == NULL){ if (m_vControlPointVecs[0] != GetAbsOrigin() && m_hControlPointEnts[0] == NULL)
{
// we are using info_particle_system_coordinate // we are using info_particle_system_coordinate
for (int i = 0; i < kMAXCONTROLPOINTS; ++i) for (int i = 0; i < kMAXCONTROLPOINTS; ++i)
{ {
ParticleProp()->AddControlPoint(pEffect, i + 1, this, PATTACH_WORLDORIGIN, 0, m_vControlPointVecs[i] - GetAbsOrigin()); ParticleProp()->AddControlPoint(pEffect, i + 1, this, PATTACH_WORLDORIGIN, 0, m_vControlPointVecs[i] - GetAbsOrigin());
AssertMsg2(m_iControlPointParents[i] >= 0 && m_iControlPointParents[i] <= kMAXCONTROLPOINTS, AssertMsg2(m_iControlPointParents[i] >= 0 && m_iControlPointParents[i] <= kMAXCONTROLPOINTS,
"Particle system specified bogus control point parent (%d) for point %d.", "Particle system specified bogus control point parent (%d) for point %d.",
m_iControlPointParents[i], i); m_iControlPointParents[i], i);
@ -167,21 +169,23 @@ void C_ParticleSystem::ClientThink(void)
} }
} }
} }
else{ else
for (int i = 0; i < kMAXCONTROLPOINTS; ++i) {
for ( int i = 0 ; i < kMAXCONTROLPOINTS ; ++i )
{ {
CBaseEntity* pOnEntity = m_hControlPointEnts[i].Get(); CBaseEntity *pOnEntity = m_hControlPointEnts[i].Get();
if (pOnEntity) if ( pOnEntity )
{ {
ParticleProp()->AddControlPoint(pEffect, i + 1, pOnEntity, PATTACH_ABSORIGIN_FOLLOW); ParticleProp()->AddControlPoint( pEffect, i + 1, pOnEntity, PATTACH_ABSORIGIN_FOLLOW );
} }
AssertMsg2(m_iControlPointParents[i] >= 0 && m_iControlPointParents[i] <= kMAXCONTROLPOINTS,
AssertMsg2( m_iControlPointParents[i] >= 0 && m_iControlPointParents[i] <= kMAXCONTROLPOINTS ,
"Particle system specified bogus control point parent (%d) for point %d.", "Particle system specified bogus control point parent (%d) for point %d.",
m_iControlPointParents[i], i); m_iControlPointParents[i], i );
if (m_iControlPointParents[i] != 0) if (m_iControlPointParents[i] != 0)
{ {
pEffect->SetControlPointParent(i + 1, m_iControlPointParents[i]); pEffect->SetControlPointParent(i+1, m_iControlPointParents[i]);
} }
} }
} }
@ -190,14 +194,14 @@ void C_ParticleSystem::ClientThink(void)
// already past the end of it, denoting that we're finished. In that case, just destroy us and be done. -- jdw // already past the end of it, denoting that we're finished. In that case, just destroy us and be done. -- jdw
// TODO: This can go when the SkipToTime code below goes // TODO: This can go when the SkipToTime code below goes
ParticleProp()->OnParticleSystemUpdated(pEffect, 0.0f); ParticleProp()->OnParticleSystemUpdated( pEffect, 0.0f );
// Skip the effect ahead if we're restarting it // Skip the effect ahead if we're restarting it
float flTimeDelta = gpGlobals->curtime - m_flStartTime; float flTimeDelta = gpGlobals->curtime - m_flStartTime;
if (flTimeDelta > 0.01f) if ( flTimeDelta > 0.01f )
{ {
VPROF_BUDGET("C_ParticleSystem::ClientThink SkipToTime", "Particle Simulation"); VPROF_BUDGET( "C_ParticleSystem::ClientThink SkipToTime", "Particle Simulation" );
pEffect->SkipToTime(flTimeDelta); pEffect->SkipToTime( flTimeDelta );
} }
} }
} }
@ -211,39 +215,39 @@ void C_ParticleSystem::ClientThink(void)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void ParticleEffectCallback(const CEffectData &data) void ParticleEffectCallback( const CEffectData &data )
{ {
if (SuppressingParticleEffects()) if ( SuppressingParticleEffects() )
return; // this needs to be before using data.m_nHitBox, since that may be a serialized value that's past the end of the current particle system string table return; // this needs to be before using data.m_nHitBox, since that may be a serialized value that's past the end of the current particle system string table
const char *pszName = GetParticleSystemNameFromIndex(data.m_nHitBox); const char *pszName = GetParticleSystemNameFromIndex( data.m_nHitBox );
CSmartPtr<CNewParticleEffect> pEffect = NULL; CSmartPtr<CNewParticleEffect> pEffect = NULL;
if (data.m_fFlags & PARTICLE_DISPATCH_FROM_ENTITY) if ( data.m_fFlags & PARTICLE_DISPATCH_FROM_ENTITY )
{ {
if (data.m_hEntity.Get()) if ( data.m_hEntity.Get() )
{ {
C_BaseEntity *pEnt = C_BaseEntity::Instance(data.m_hEntity); C_BaseEntity *pEnt = C_BaseEntity::Instance( data.m_hEntity );
if (pEnt && !pEnt->IsDormant()) if ( pEnt && !pEnt->IsDormant() )
{ {
if (data.m_fFlags & PARTICLE_DISPATCH_RESET_PARTICLES) if ( data.m_fFlags & PARTICLE_DISPATCH_RESET_PARTICLES )
{ {
pEnt->ParticleProp()->StopEmission(); pEnt->ParticleProp()->StopEmission();
} }
pEffect = pEnt->ParticleProp()->Create(pszName, (ParticleAttachment_t)data.m_nDamageType, data.m_nAttachmentIndex); pEffect = pEnt->ParticleProp()->Create( pszName, (ParticleAttachment_t)data.m_nDamageType, data.m_nAttachmentIndex );
AssertMsg2(pEffect.IsValid() && pEffect->IsValid(), "%s could not create particle effect %s", AssertMsg2( pEffect.IsValid() && pEffect->IsValid(), "%s could not create particle effect %s",
C_BaseEntity::Instance(data.m_hEntity)->GetDebugName(), pszName); C_BaseEntity::Instance( data.m_hEntity )->GetDebugName(), pszName );
if (pEffect.IsValid() && pEffect->IsValid()) if ( pEffect.IsValid() && pEffect->IsValid() )
{ {
if ((ParticleAttachment_t)data.m_nDamageType == PATTACH_CUSTOMORIGIN) if ( (ParticleAttachment_t)data.m_nDamageType == PATTACH_CUSTOMORIGIN )
{ {
pEffect->SetSortOrigin(data.m_vOrigin); pEffect->SetSortOrigin( data.m_vOrigin );
pEffect->SetControlPoint(0, data.m_vOrigin); pEffect->SetControlPoint( 0, data.m_vOrigin );
pEffect->SetControlPoint(1, data.m_vStart); pEffect->SetControlPoint( 1, data.m_vStart );
Vector vecForward, vecRight, vecUp; Vector vecForward, vecRight, vecUp;
AngleVectors(data.m_vAngles, &vecForward, &vecRight, &vecUp); AngleVectors( data.m_vAngles, &vecForward, &vecRight, &vecUp );
pEffect->SetControlPointOrientation(0, vecForward, vecRight, vecUp); pEffect->SetControlPointOrientation( 0, vecForward, vecRight, vecUp );
} }
} }
} }
@ -251,39 +255,39 @@ void ParticleEffectCallback(const CEffectData &data)
} }
else else
{ {
if (GameRules()) if ( GameRules() )
{ {
pszName = GameRules()->TranslateEffectForVisionFilter("particles", pszName); pszName = GameRules()->TranslateEffectForVisionFilter( "particles", pszName );
} }
pEffect = CNewParticleEffect::Create(NULL, pszName); pEffect = CNewParticleEffect::Create( NULL, pszName );
if (pEffect->IsValid()) if ( pEffect->IsValid() )
{ {
pEffect->SetSortOrigin(data.m_vOrigin); pEffect->SetSortOrigin( data.m_vOrigin );
pEffect->SetControlPoint(0, data.m_vOrigin); pEffect->SetControlPoint( 0, data.m_vOrigin );
pEffect->SetControlPoint(1, data.m_vStart); pEffect->SetControlPoint( 1, data.m_vStart );
Vector vecForward, vecRight, vecUp; Vector vecForward, vecRight, vecUp;
AngleVectors(data.m_vAngles, &vecForward, &vecRight, &vecUp); AngleVectors( data.m_vAngles, &vecForward, &vecRight, &vecUp );
pEffect->SetControlPointOrientation(0, vecForward, vecRight, vecUp); pEffect->SetControlPointOrientation( 0, vecForward, vecRight, vecUp );
} }
} }
if (pEffect.IsValid() && pEffect->IsValid()) if ( pEffect.IsValid() && pEffect->IsValid() )
{ {
if (data.m_bCustomColors) if ( data.m_bCustomColors )
{ {
pEffect->SetControlPoint(CUSTOM_COLOR_CP1, data.m_CustomColors.m_vecColor1); pEffect->SetControlPoint( CUSTOM_COLOR_CP1, data.m_CustomColors.m_vecColor1 );
pEffect->SetControlPoint(CUSTOM_COLOR_CP2, data.m_CustomColors.m_vecColor2); pEffect->SetControlPoint( CUSTOM_COLOR_CP2, data.m_CustomColors.m_vecColor2 );
} }
if (data.m_bControlPoint1) if ( data.m_bControlPoint1 )
{ {
pEffect->SetControlPoint(1, data.m_ControlPoint1.m_vecOffset); pEffect->SetControlPoint( 1, data.m_ControlPoint1.m_vecOffset );
} }
} }
} }
DECLARE_CLIENT_EFFECT("ParticleEffect", ParticleEffectCallback); DECLARE_CLIENT_EFFECT( "ParticleEffect", ParticleEffectCallback );
//====================================================================================================================== //======================================================================================================================
@ -292,16 +296,16 @@ DECLARE_CLIENT_EFFECT("ParticleEffect", ParticleEffectCallback);
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void ParticleEffectStopCallback(const CEffectData &data) void ParticleEffectStopCallback( const CEffectData &data )
{ {
if (data.m_hEntity.Get()) if ( data.m_hEntity.Get() )
{ {
C_BaseEntity *pEnt = C_BaseEntity::Instance(data.m_hEntity); C_BaseEntity *pEnt = C_BaseEntity::Instance( data.m_hEntity );
if (pEnt) if ( pEnt )
{ {
pEnt->ParticleProp()->StopEmission(); pEnt->ParticleProp()->StopEmission();
}
} }
} }
}
DECLARE_CLIENT_EFFECT("ParticleEffectStop", ParticleEffectStopCallback); DECLARE_CLIENT_EFFECT( "ParticleEffectStop", ParticleEffectStopCallback );

View File

@ -12,128 +12,127 @@
// memdbgon must be the last include file in a .cpp file!!! // memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h" #include "tier0/memdbgon.h"
extern void SendProxy_Origin(const SendProp *pProp, const void *pStruct, const void *pData, DVariant *pOut, int iElement, int objectID); extern void SendProxy_Origin( const SendProp *pProp, const void *pStruct, const void *pData, DVariant *pOut, int iElement, int objectID );
extern void SendProxy_Angles(const SendProp *pProp, const void *pStruct, const void *pData, DVariant *pOut, int iElement, int objectID); extern void SendProxy_Angles( const SendProp *pProp, const void *pStruct, const void *pData, DVariant *pOut, int iElement, int objectID );
// Stripped down CBaseEntity send table // Stripped down CBaseEntity send table
IMPLEMENT_SERVERCLASS_ST_NOBASE(CParticleSystem, DT_ParticleSystem) IMPLEMENT_SERVERCLASS_ST_NOBASE(CParticleSystem, DT_ParticleSystem)
SendPropVector(SENDINFO(m_vecOrigin), -1, SPROP_COORD | SPROP_CHANGES_OFTEN, 0.0f, HIGH_DEFAULT, SendProxy_Origin), SendPropVector (SENDINFO(m_vecOrigin), -1, SPROP_COORD|SPROP_CHANGES_OFTEN, 0.0f, HIGH_DEFAULT, SendProxy_Origin ),
SendPropEHandle(SENDINFO(m_hOwnerEntity)), SendPropEHandle (SENDINFO(m_hOwnerEntity)),
SendPropEHandle(SENDINFO_NAME(m_hMoveParent, moveparent)), SendPropEHandle (SENDINFO_NAME(m_hMoveParent, moveparent)),
SendPropInt(SENDINFO(m_iParentAttachment), NUM_PARENTATTACHMENT_BITS, SPROP_UNSIGNED), SendPropInt (SENDINFO(m_iParentAttachment), NUM_PARENTATTACHMENT_BITS, SPROP_UNSIGNED),
SendPropQAngles(SENDINFO(m_angRotation), 13, SPROP_CHANGES_OFTEN, SendProxy_Angles), SendPropQAngles (SENDINFO(m_angRotation), 13, SPROP_CHANGES_OFTEN, SendProxy_Angles ),
SendPropInt(SENDINFO(m_iEffectIndex), MAX_PARTICLESYSTEMS_STRING_BITS, SPROP_UNSIGNED), SendPropInt( SENDINFO(m_iEffectIndex), MAX_PARTICLESYSTEMS_STRING_BITS, SPROP_UNSIGNED ),
SendPropBool(SENDINFO(m_bActive)), SendPropBool( SENDINFO(m_bActive) ),
#ifdef MAPBASE #ifdef MAPBASE
SendPropBool(SENDINFO(m_bDestroyImmediately)), SendPropBool( SENDINFO(m_bDestroyImmediately) ),
#endif #endif
SendPropFloat(SENDINFO(m_flStartTime)), SendPropFloat( SENDINFO(m_flStartTime) ),
SendPropArray3(SENDINFO_ARRAY3(m_hControlPointEnts), SendPropEHandle(SENDINFO_ARRAY(m_hControlPointEnts))), SendPropArray3( SENDINFO_ARRAY3(m_hControlPointEnts), SendPropEHandle( SENDINFO_ARRAY(m_hControlPointEnts) ) ),
SendPropArray3(SENDINFO_ARRAY3(m_vControlPointVecs), SendPropVector(SENDINFO_ARRAY(m_vControlPointVecs))), SendPropArray3( SENDINFO_ARRAY3(m_vControlPointVecs), SendPropVector( SENDINFO_ARRAY(m_vControlPointVecs) ) ),
SendPropArray3(SENDINFO_ARRAY3(m_iControlPointParents), SendPropInt(SENDINFO_ARRAY(m_iControlPointParents), 3, SPROP_UNSIGNED)), SendPropArray3( SENDINFO_ARRAY3(m_iControlPointParents), SendPropInt( SENDINFO_ARRAY(m_iControlPointParents), 3, SPROP_UNSIGNED ) ),
SendPropBool(SENDINFO(m_bWeatherEffect)), SendPropBool( SENDINFO(m_bWeatherEffect) ),
END_SEND_TABLE() END_SEND_TABLE()
BEGIN_DATADESC(CParticleSystem) BEGIN_DATADESC( CParticleSystem )
DEFINE_KEYFIELD(m_bStartActive, FIELD_BOOLEAN, "start_active"), DEFINE_KEYFIELD( m_bStartActive, FIELD_BOOLEAN, "start_active" ),
DEFINE_KEYFIELD(m_bWeatherEffect, FIELD_BOOLEAN, "flag_as_weather"), DEFINE_KEYFIELD( m_bWeatherEffect, FIELD_BOOLEAN, "flag_as_weather" ),
DEFINE_FIELD(m_bActive, FIELD_BOOLEAN), DEFINE_FIELD( m_bActive, FIELD_BOOLEAN ),
#ifdef MAPBASE #ifdef MAPBASE
DEFINE_FIELD(m_bDestroyImmediately, FIELD_BOOLEAN), DEFINE_FIELD( m_bDestroyImmediately, FIELD_BOOLEAN ),
#endif #endif
DEFINE_FIELD(m_flStartTime, FIELD_TIME), DEFINE_FIELD( m_flStartTime, FIELD_TIME ),
DEFINE_KEYFIELD(m_iszEffectName, FIELD_STRING, "effect_name"), DEFINE_KEYFIELD( m_iszEffectName, FIELD_STRING, "effect_name" ),
//DEFINE_FIELD( m_iEffectIndex, FIELD_INTEGER ), // Don't save. Refind after loading. //DEFINE_FIELD( m_iEffectIndex, FIELD_INTEGER ), // Don't save. Refind after loading.
DEFINE_KEYFIELD(m_iszControlPointNames[0], FIELD_STRING, "cpoint1"), DEFINE_KEYFIELD( m_iszControlPointNames[0], FIELD_STRING, "cpoint1" ),
DEFINE_KEYFIELD(m_iszControlPointNames[1], FIELD_STRING, "cpoint2"), DEFINE_KEYFIELD( m_iszControlPointNames[1], FIELD_STRING, "cpoint2" ),
DEFINE_KEYFIELD(m_iszControlPointNames[2], FIELD_STRING, "cpoint3"), DEFINE_KEYFIELD( m_iszControlPointNames[2], FIELD_STRING, "cpoint3" ),
DEFINE_KEYFIELD(m_iszControlPointNames[3], FIELD_STRING, "cpoint4"), DEFINE_KEYFIELD( m_iszControlPointNames[3], FIELD_STRING, "cpoint4" ),
DEFINE_KEYFIELD(m_iszControlPointNames[4], FIELD_STRING, "cpoint5"), DEFINE_KEYFIELD( m_iszControlPointNames[4], FIELD_STRING, "cpoint5" ),
DEFINE_KEYFIELD(m_iszControlPointNames[5], FIELD_STRING, "cpoint6"), DEFINE_KEYFIELD( m_iszControlPointNames[5], FIELD_STRING, "cpoint6" ),
DEFINE_KEYFIELD(m_iszControlPointNames[6], FIELD_STRING, "cpoint7"), DEFINE_KEYFIELD( m_iszControlPointNames[6], FIELD_STRING, "cpoint7" ),
DEFINE_KEYFIELD(m_iszControlPointNames[7], FIELD_STRING, "cpoint8"), DEFINE_KEYFIELD( m_iszControlPointNames[7], FIELD_STRING, "cpoint8" ),
DEFINE_KEYFIELD(m_iszControlPointNames[8], FIELD_STRING, "cpoint9"), DEFINE_KEYFIELD( m_iszControlPointNames[8], FIELD_STRING, "cpoint9" ),
DEFINE_KEYFIELD(m_iszControlPointNames[9], FIELD_STRING, "cpoint10"), DEFINE_KEYFIELD( m_iszControlPointNames[9], FIELD_STRING, "cpoint10" ),
DEFINE_KEYFIELD(m_iszControlPointNames[10], FIELD_STRING, "cpoint11"), DEFINE_KEYFIELD( m_iszControlPointNames[10], FIELD_STRING, "cpoint11" ),
DEFINE_KEYFIELD(m_iszControlPointNames[11], FIELD_STRING, "cpoint12"), DEFINE_KEYFIELD( m_iszControlPointNames[11], FIELD_STRING, "cpoint12" ),
DEFINE_KEYFIELD(m_iszControlPointNames[12], FIELD_STRING, "cpoint13"), DEFINE_KEYFIELD( m_iszControlPointNames[12], FIELD_STRING, "cpoint13" ),
DEFINE_KEYFIELD(m_iszControlPointNames[13], FIELD_STRING, "cpoint14"), DEFINE_KEYFIELD( m_iszControlPointNames[13], FIELD_STRING, "cpoint14" ),
DEFINE_KEYFIELD(m_iszControlPointNames[14], FIELD_STRING, "cpoint15"), DEFINE_KEYFIELD( m_iszControlPointNames[14], FIELD_STRING, "cpoint15" ),
DEFINE_KEYFIELD(m_iszControlPointNames[15], FIELD_STRING, "cpoint16"), DEFINE_KEYFIELD( m_iszControlPointNames[15], FIELD_STRING, "cpoint16" ),
DEFINE_KEYFIELD(m_iszControlPointNames[16], FIELD_STRING, "cpoint17"), DEFINE_KEYFIELD( m_iszControlPointNames[16], FIELD_STRING, "cpoint17" ),
DEFINE_KEYFIELD(m_iszControlPointNames[17], FIELD_STRING, "cpoint18"), DEFINE_KEYFIELD( m_iszControlPointNames[17], FIELD_STRING, "cpoint18" ),
DEFINE_KEYFIELD(m_iszControlPointNames[18], FIELD_STRING, "cpoint19"), DEFINE_KEYFIELD( m_iszControlPointNames[18], FIELD_STRING, "cpoint19" ),
DEFINE_KEYFIELD(m_iszControlPointNames[19], FIELD_STRING, "cpoint20"), DEFINE_KEYFIELD( m_iszControlPointNames[19], FIELD_STRING, "cpoint20" ),
DEFINE_KEYFIELD(m_iszControlPointNames[20], FIELD_STRING, "cpoint21"), DEFINE_KEYFIELD( m_iszControlPointNames[20], FIELD_STRING, "cpoint21" ),
DEFINE_KEYFIELD(m_iszControlPointNames[21], FIELD_STRING, "cpoint22"), DEFINE_KEYFIELD( m_iszControlPointNames[21], FIELD_STRING, "cpoint22" ),
DEFINE_KEYFIELD(m_iszControlPointNames[22], FIELD_STRING, "cpoint23"), DEFINE_KEYFIELD( m_iszControlPointNames[22], FIELD_STRING, "cpoint23" ),
DEFINE_KEYFIELD(m_iszControlPointNames[23], FIELD_STRING, "cpoint24"), DEFINE_KEYFIELD( m_iszControlPointNames[23], FIELD_STRING, "cpoint24" ),
DEFINE_KEYFIELD(m_iszControlPointNames[24], FIELD_STRING, "cpoint25"), DEFINE_KEYFIELD( m_iszControlPointNames[24], FIELD_STRING, "cpoint25" ),
DEFINE_KEYFIELD(m_iszControlPointNames[25], FIELD_STRING, "cpoint26"), DEFINE_KEYFIELD( m_iszControlPointNames[25], FIELD_STRING, "cpoint26" ),
DEFINE_KEYFIELD(m_iszControlPointNames[26], FIELD_STRING, "cpoint27"), DEFINE_KEYFIELD( m_iszControlPointNames[26], FIELD_STRING, "cpoint27" ),
DEFINE_KEYFIELD(m_iszControlPointNames[27], FIELD_STRING, "cpoint28"), DEFINE_KEYFIELD( m_iszControlPointNames[27], FIELD_STRING, "cpoint28" ),
DEFINE_KEYFIELD(m_iszControlPointNames[28], FIELD_STRING, "cpoint29"), DEFINE_KEYFIELD( m_iszControlPointNames[28], FIELD_STRING, "cpoint29" ),
DEFINE_KEYFIELD(m_iszControlPointNames[29], FIELD_STRING, "cpoint30"), DEFINE_KEYFIELD( m_iszControlPointNames[29], FIELD_STRING, "cpoint30" ),
DEFINE_KEYFIELD(m_iszControlPointNames[30], FIELD_STRING, "cpoint31"), DEFINE_KEYFIELD( m_iszControlPointNames[30], FIELD_STRING, "cpoint31" ),
DEFINE_KEYFIELD(m_iszControlPointNames[31], FIELD_STRING, "cpoint32"), DEFINE_KEYFIELD( m_iszControlPointNames[31], FIELD_STRING, "cpoint32" ),
DEFINE_KEYFIELD(m_iszControlPointNames[32], FIELD_STRING, "cpoint33"), DEFINE_KEYFIELD( m_iszControlPointNames[32], FIELD_STRING, "cpoint33" ),
DEFINE_KEYFIELD(m_iszControlPointNames[33], FIELD_STRING, "cpoint34"), DEFINE_KEYFIELD( m_iszControlPointNames[33], FIELD_STRING, "cpoint34" ),
DEFINE_KEYFIELD(m_iszControlPointNames[34], FIELD_STRING, "cpoint35"), DEFINE_KEYFIELD( m_iszControlPointNames[34], FIELD_STRING, "cpoint35" ),
DEFINE_KEYFIELD(m_iszControlPointNames[35], FIELD_STRING, "cpoint36"), DEFINE_KEYFIELD( m_iszControlPointNames[35], FIELD_STRING, "cpoint36" ),
DEFINE_KEYFIELD(m_iszControlPointNames[36], FIELD_STRING, "cpoint37"), DEFINE_KEYFIELD( m_iszControlPointNames[36], FIELD_STRING, "cpoint37" ),
DEFINE_KEYFIELD(m_iszControlPointNames[37], FIELD_STRING, "cpoint38"), DEFINE_KEYFIELD( m_iszControlPointNames[37], FIELD_STRING, "cpoint38" ),
DEFINE_KEYFIELD(m_iszControlPointNames[38], FIELD_STRING, "cpoint39"), DEFINE_KEYFIELD( m_iszControlPointNames[38], FIELD_STRING, "cpoint39" ),
DEFINE_KEYFIELD(m_iszControlPointNames[39], FIELD_STRING, "cpoint40"), DEFINE_KEYFIELD( m_iszControlPointNames[39], FIELD_STRING, "cpoint40" ),
DEFINE_KEYFIELD(m_iszControlPointNames[40], FIELD_STRING, "cpoint41"), DEFINE_KEYFIELD( m_iszControlPointNames[40], FIELD_STRING, "cpoint41" ),
DEFINE_KEYFIELD(m_iszControlPointNames[41], FIELD_STRING, "cpoint42"), DEFINE_KEYFIELD( m_iszControlPointNames[41], FIELD_STRING, "cpoint42" ),
DEFINE_KEYFIELD(m_iszControlPointNames[42], FIELD_STRING, "cpoint43"), DEFINE_KEYFIELD( m_iszControlPointNames[42], FIELD_STRING, "cpoint43" ),
DEFINE_KEYFIELD(m_iszControlPointNames[43], FIELD_STRING, "cpoint44"), DEFINE_KEYFIELD( m_iszControlPointNames[43], FIELD_STRING, "cpoint44" ),
DEFINE_KEYFIELD(m_iszControlPointNames[44], FIELD_STRING, "cpoint45"), DEFINE_KEYFIELD( m_iszControlPointNames[44], FIELD_STRING, "cpoint45" ),
DEFINE_KEYFIELD(m_iszControlPointNames[45], FIELD_STRING, "cpoint46"), DEFINE_KEYFIELD( m_iszControlPointNames[45], FIELD_STRING, "cpoint46" ),
DEFINE_KEYFIELD(m_iszControlPointNames[46], FIELD_STRING, "cpoint47"), DEFINE_KEYFIELD( m_iszControlPointNames[46], FIELD_STRING, "cpoint47" ),
DEFINE_KEYFIELD(m_iszControlPointNames[47], FIELD_STRING, "cpoint48"), DEFINE_KEYFIELD( m_iszControlPointNames[47], FIELD_STRING, "cpoint48" ),
DEFINE_KEYFIELD(m_iszControlPointNames[48], FIELD_STRING, "cpoint49"), DEFINE_KEYFIELD( m_iszControlPointNames[48], FIELD_STRING, "cpoint49" ),
DEFINE_KEYFIELD(m_iszControlPointNames[49], FIELD_STRING, "cpoint50"), DEFINE_KEYFIELD( m_iszControlPointNames[49], FIELD_STRING, "cpoint50" ),
DEFINE_KEYFIELD(m_iszControlPointNames[50], FIELD_STRING, "cpoint51"), DEFINE_KEYFIELD( m_iszControlPointNames[50], FIELD_STRING, "cpoint51" ),
DEFINE_KEYFIELD(m_iszControlPointNames[51], FIELD_STRING, "cpoint52"), DEFINE_KEYFIELD( m_iszControlPointNames[51], FIELD_STRING, "cpoint52" ),
DEFINE_KEYFIELD(m_iszControlPointNames[52], FIELD_STRING, "cpoint53"), DEFINE_KEYFIELD( m_iszControlPointNames[52], FIELD_STRING, "cpoint53" ),
DEFINE_KEYFIELD(m_iszControlPointNames[53], FIELD_STRING, "cpoint54"), DEFINE_KEYFIELD( m_iszControlPointNames[53], FIELD_STRING, "cpoint54" ),
DEFINE_KEYFIELD(m_iszControlPointNames[54], FIELD_STRING, "cpoint55"), DEFINE_KEYFIELD( m_iszControlPointNames[54], FIELD_STRING, "cpoint55" ),
DEFINE_KEYFIELD(m_iszControlPointNames[55], FIELD_STRING, "cpoint56"), DEFINE_KEYFIELD( m_iszControlPointNames[55], FIELD_STRING, "cpoint56" ),
DEFINE_KEYFIELD(m_iszControlPointNames[56], FIELD_STRING, "cpoint57"), DEFINE_KEYFIELD( m_iszControlPointNames[56], FIELD_STRING, "cpoint57" ),
DEFINE_KEYFIELD(m_iszControlPointNames[57], FIELD_STRING, "cpoint58"), DEFINE_KEYFIELD( m_iszControlPointNames[57], FIELD_STRING, "cpoint58" ),
DEFINE_KEYFIELD(m_iszControlPointNames[58], FIELD_STRING, "cpoint59"), DEFINE_KEYFIELD( m_iszControlPointNames[58], FIELD_STRING, "cpoint59" ),
DEFINE_KEYFIELD(m_iszControlPointNames[59], FIELD_STRING, "cpoint60"), DEFINE_KEYFIELD( m_iszControlPointNames[59], FIELD_STRING, "cpoint60" ),
DEFINE_KEYFIELD(m_iszControlPointNames[60], FIELD_STRING, "cpoint61"), DEFINE_KEYFIELD( m_iszControlPointNames[60], FIELD_STRING, "cpoint61" ),
DEFINE_KEYFIELD(m_iszControlPointNames[61], FIELD_STRING, "cpoint62"), DEFINE_KEYFIELD( m_iszControlPointNames[61], FIELD_STRING, "cpoint62" ),
DEFINE_KEYFIELD(m_iszControlPointNames[62], FIELD_STRING, "cpoint63"), DEFINE_KEYFIELD( m_iszControlPointNames[62], FIELD_STRING, "cpoint63" ),
DEFINE_KEYFIELD(m_iControlPointParents[0], FIELD_CHARACTER, "cpoint1_parent"), DEFINE_KEYFIELD( m_iControlPointParents[0], FIELD_CHARACTER, "cpoint1_parent" ),
DEFINE_KEYFIELD(m_iControlPointParents[1], FIELD_CHARACTER, "cpoint2_parent"), DEFINE_KEYFIELD( m_iControlPointParents[1], FIELD_CHARACTER, "cpoint2_parent" ),
DEFINE_KEYFIELD(m_iControlPointParents[2], FIELD_CHARACTER, "cpoint3_parent"), DEFINE_KEYFIELD( m_iControlPointParents[2], FIELD_CHARACTER, "cpoint3_parent" ),
DEFINE_KEYFIELD(m_iControlPointParents[3], FIELD_CHARACTER, "cpoint4_parent"), DEFINE_KEYFIELD( m_iControlPointParents[3], FIELD_CHARACTER, "cpoint4_parent" ),
DEFINE_KEYFIELD(m_iControlPointParents[4], FIELD_CHARACTER, "cpoint5_parent"), DEFINE_KEYFIELD( m_iControlPointParents[4], FIELD_CHARACTER, "cpoint5_parent" ),
DEFINE_KEYFIELD(m_iControlPointParents[5], FIELD_CHARACTER, "cpoint6_parent"), DEFINE_KEYFIELD( m_iControlPointParents[5], FIELD_CHARACTER, "cpoint6_parent" ),
DEFINE_KEYFIELD(m_iControlPointParents[6], FIELD_CHARACTER, "cpoint7_parent"), DEFINE_KEYFIELD( m_iControlPointParents[6], FIELD_CHARACTER, "cpoint7_parent" ),
DEFINE_AUTO_ARRAY(m_hControlPointEnts, FIELD_EHANDLE), DEFINE_AUTO_ARRAY( m_hControlPointEnts, FIELD_EHANDLE ),
DEFINE_AUTO_ARRAY(m_vControlPointVecs, FIELD_VECTOR),
DEFINE_INPUTFUNC(FIELD_VOID, "Start", InputStart), DEFINE_INPUTFUNC( FIELD_VOID, "Start", InputStart ),
DEFINE_INPUTFUNC(FIELD_VOID, "Stop", InputStop), DEFINE_INPUTFUNC( FIELD_VOID, "Stop", InputStop ),
#ifdef MAPBASE #ifdef MAPBASE
DEFINE_INPUTFUNC(FIELD_VOID, "DestroyImmediately", InputDestroyImmediately), DEFINE_INPUTFUNC( FIELD_VOID, "DestroyImmediately", InputDestroyImmediately ),
#endif #endif
DEFINE_THINKFUNC(StartParticleSystemThink), DEFINE_THINKFUNC( StartParticleSystemThink ),
END_DATADESC() END_DATADESC()
LINK_ENTITY_TO_CLASS(info_particle_system, CParticleSystem); LINK_ENTITY_TO_CLASS( info_particle_system, CParticleSystem );
LINK_ENTITY_TO_CLASS(info_particle_system_coordinate, CParticleSystemCoordinate); LINK_ENTITY_TO_CLASS( info_particle_system_coordinate, CParticleSystemCoordinate );
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
@ -146,22 +145,22 @@ CParticleSystem::CParticleSystem()
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Precache // Precache
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CParticleSystem::Precache(void) void CParticleSystem::Precache( void )
{ {
const char *pParticleSystemName = STRING(m_iszEffectName); const char *pParticleSystemName = STRING( m_iszEffectName );
if (pParticleSystemName == NULL || pParticleSystemName[0] == '\0') if ( pParticleSystemName == NULL || pParticleSystemName[0] == '\0' )
{ {
Warning("info_particle_system (%s) has no particle system name specified!\n", GetEntityName().ToCStr()); Warning( "info_particle_system (%s) has no particle system name specified!\n", GetEntityName().ToCStr() );
} }
PrecacheParticleSystem(pParticleSystemName); PrecacheParticleSystem( pParticleSystemName );
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CParticleSystem::Spawn(void) void CParticleSystem::Spawn( void )
{ {
BaseClass::Spawn(); BaseClass::Spawn();
@ -172,14 +171,14 @@ void CParticleSystem::Spawn(void)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CParticleSystem::Activate(void) void CParticleSystem::Activate( void )
{ {
BaseClass::Activate(); BaseClass::Activate();
// Find our particle effect index // Find our particle effect index
m_iEffectIndex = GetParticleSystemIndex(STRING(m_iszEffectName)); m_iEffectIndex = GetParticleSystemIndex( STRING(m_iszEffectName) );
if (m_bStartActive) if ( m_bStartActive )
{ {
m_bStartActive = false; m_bStartActive = false;
StartParticleSystem(); StartParticleSystem();
@ -189,7 +188,7 @@ void CParticleSystem::Activate(void)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CParticleSystem::StartParticleSystemThink(void) void CParticleSystem::StartParticleSystemThink( void )
{ {
StartParticleSystem(); StartParticleSystem();
} }
@ -199,15 +198,15 @@ void CParticleSystem::StartParticleSystemThink(void)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
int CParticleSystem::UpdateTransmitState() int CParticleSystem::UpdateTransmitState()
{ {
return SetTransmitState(FL_EDICT_ALWAYS); return SetTransmitState( FL_EDICT_ALWAYS );
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CParticleSystem::StartParticleSystem(void) void CParticleSystem::StartParticleSystem( void )
{ {
if (m_bActive == false) if ( m_bActive == false )
{ {
m_flStartTime = gpGlobals->curtime; m_flStartTime = gpGlobals->curtime;
m_bActive = true; m_bActive = true;
@ -223,7 +222,7 @@ void CParticleSystem::StartParticleSystem(void)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CParticleSystem::StopParticleSystem(void) void CParticleSystem::StopParticleSystem( void )
{ {
m_bActive = false; m_bActive = false;
} }
@ -231,7 +230,7 @@ void CParticleSystem::StopParticleSystem(void)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CParticleSystem::InputStart(inputdata_t &inputdata) void CParticleSystem::InputStart( inputdata_t &inputdata )
{ {
StartParticleSystem(); StartParticleSystem();
} }
@ -239,7 +238,7 @@ void CParticleSystem::InputStart(inputdata_t &inputdata)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CParticleSystem::InputStop(inputdata_t &inputdata) void CParticleSystem::InputStop( inputdata_t &inputdata )
{ {
StopParticleSystem(); StopParticleSystem();
} }
@ -248,7 +247,7 @@ void CParticleSystem::InputStop(inputdata_t &inputdata)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CParticleSystem::InputDestroyImmediately(inputdata_t &inputdata) void CParticleSystem::InputDestroyImmediately( inputdata_t &inputdata )
{ {
m_bDestroyImmediately = true; m_bDestroyImmediately = true;
StopParticleSystem(); StopParticleSystem();
@ -257,31 +256,34 @@ void CParticleSystem::InputDestroyImmediately(inputdata_t &inputdata)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Find each entity referred to by m_iszControlPointNames and // Purpose: Find each entity referred to by m_iszControlPointNames and
// resolve it into the corresponding slot in m_vControlPointVecs // resolve it into the corresponding slot in m_hControlPointEnts
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CParticleSystem::ReadControlPointEnts(void) void CParticleSystem::ReadControlPointEnts( void )
{ {
for (int i = 0; i < kMAXCONTROLPOINTS; ++i) for ( int i = 0 ; i < kMAXCONTROLPOINTS; ++i )
{ {
if (UsesCoordinates()) { if (UsesCoordinates())
{
Vector vecCoords; Vector vecCoords;
// cast str to vector, add vector to array // cast str to vector, add vector to array
const char* pszVector = STRING(m_iszControlPointNames[i]); const char* pszVector = STRING(m_iszControlPointNames[i]);
UTIL_StringToVector(vecCoords.Base(), pszVector); UTIL_StringToVector(vecCoords.Base(), pszVector);
m_vControlPointVecs.Set(i, vecCoords); m_vControlPointVecs.Set(i, vecCoords);
} }
else{ else
if (m_iszControlPointNames[i] == NULL_STRING) {
if ( m_iszControlPointNames[i] == NULL_STRING )
continue; continue;
CBaseEntity *pPointEnt = gEntList.FindEntityGeneric(NULL, STRING(m_iszControlPointNames[i]), this);
Assert(pPointEnt != NULL); CBaseEntity *pPointEnt = gEntList.FindEntityGeneric( NULL, STRING( m_iszControlPointNames[i] ), this );
if (pPointEnt == NULL) Assert( pPointEnt != NULL );
if ( pPointEnt == NULL )
{ {
Warning("Particle system %s could not find control point entity (%s)\n", GetEntityName().ToCStr(), m_iszControlPointNames[i].ToCStr()); Warning("Particle system %s could not find control point entity (%s)\n", GetEntityName().ToCStr(), m_iszControlPointNames[i].ToCStr() );
continue; continue;
} }
m_hControlPointEnts.Set(i, pPointEnt); m_hControlPointEnts.Set( i, pPointEnt );
} }
} }
} }

View File

@ -17,52 +17,52 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class CParticleSystem : public CBaseEntity class CParticleSystem : public CBaseEntity
{ {
DECLARE_CLASS(CParticleSystem, CBaseEntity); DECLARE_CLASS( CParticleSystem, CBaseEntity );
public: public:
DECLARE_SERVERCLASS(); DECLARE_SERVERCLASS();
DECLARE_DATADESC(); DECLARE_DATADESC();
CParticleSystem(); CParticleSystem();
virtual void Precache(void); virtual void Precache( void );
virtual void Spawn(void); virtual void Spawn( void );
virtual void Activate(void); virtual void Activate( void );
virtual int UpdateTransmitState(void); virtual int UpdateTransmitState(void);
void StartParticleSystem(void); void StartParticleSystem( void );
void StopParticleSystem(void); void StopParticleSystem( void );
void InputStart(inputdata_t &inputdata); void InputStart( inputdata_t &inputdata );
void InputStop(inputdata_t &inputdata); void InputStop( inputdata_t &inputdata );
#ifdef MAPBASE #ifdef MAPBASE
void InputDestroyImmediately(inputdata_t &inputdata); void InputDestroyImmediately( inputdata_t &inputdata );
#endif #endif
void StartParticleSystemThink(void); void StartParticleSystemThink( void );
enum { kMAXCONTROLPOINTS = 63 }; ///< actually one less than the total number of cpoints since 0 is assumed to be me enum { kMAXCONTROLPOINTS = 63 }; ///< actually one less than the total number of cpoints since 0 is assumed to be me
virtual bool UsesCoordinates(void) { return false; } virtual bool UsesCoordinates( void ) { return false; }
protected: protected:
/// Load up and resolve the entities that are supposed to be the control points /// Load up and resolve the entities that are supposed to be the control points
virtual void ReadControlPointEnts(void); void ReadControlPointEnts( void );
bool m_bStartActive; bool m_bStartActive;
string_t m_iszEffectName; string_t m_iszEffectName;
CNetworkVar(bool, m_bActive); CNetworkVar( bool, m_bActive );
#ifdef MAPBASE #ifdef MAPBASE
CNetworkVar(bool, m_bDestroyImmediately); CNetworkVar( bool, m_bDestroyImmediately );
#endif #endif
CNetworkVar(int, m_iEffectIndex) CNetworkVar( int, m_iEffectIndex )
CNetworkVar(float, m_flStartTime); // Time at which this effect was started. This is used after restoring an active effect. CNetworkVar( float, m_flStartTime ); // Time at which this effect was started. This is used after restoring an active effect.
string_t m_iszControlPointNames[kMAXCONTROLPOINTS]; string_t m_iszControlPointNames[kMAXCONTROLPOINTS];
CNetworkArray(EHANDLE, m_hControlPointEnts, kMAXCONTROLPOINTS); CNetworkArray( EHANDLE, m_hControlPointEnts, kMAXCONTROLPOINTS );
CNetworkArray(Vector, m_vControlPointVecs, kMAXCONTROLPOINTS); CNetworkArray( Vector, m_vControlPointVecs, kMAXCONTROLPOINTS );
CNetworkArray(unsigned char, m_iControlPointParents, kMAXCONTROLPOINTS); CNetworkArray( unsigned char, m_iControlPointParents, kMAXCONTROLPOINTS );
CNetworkVar(bool, m_bWeatherEffect); CNetworkVar( bool, m_bWeatherEffect );
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -70,9 +70,9 @@ protected:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class CParticleSystemCoordinate : public CParticleSystem class CParticleSystemCoordinate : public CParticleSystem
{ {
DECLARE_CLASS(CParticleSystemCoordinate, CParticleSystem); DECLARE_CLASS( CParticleSystemCoordinate, CParticleSystem );
public: public:
virtual bool UsesCoordinates(void) { return true; } virtual bool UsesCoordinates( void ) { return true; }
}; };
#endif // PARTICLE_SYSTEM_H #endif // PARTICLE_SYSTEM_H