diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/server/hl2/ar2_explosion.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/server/hl2/ar2_explosion.cpp')
| -rw-r--r-- | game/server/hl2/ar2_explosion.cpp | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/game/server/hl2/ar2_explosion.cpp b/game/server/hl2/ar2_explosion.cpp new file mode 100644 index 0000000..53bc463 --- /dev/null +++ b/game/server/hl2/ar2_explosion.cpp @@ -0,0 +1,112 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#include "cbase.h" +#include "ar2_explosion.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +#define AR2EXPLOSION_ENTITYNAME "ar2explosion" + + +IMPLEMENT_SERVERCLASS_ST(AR2Explosion, DT_AR2Explosion) + SendPropString( SENDINFO( m_szMaterialName ) ), +END_SEND_TABLE() + +LINK_ENTITY_TO_CLASS(ar2explosion, AR2Explosion); + + +//--------------------------------------------------------- +// Save/Restore +//--------------------------------------------------------- +BEGIN_DATADESC( AR2Explosion ) + + DEFINE_AUTO_ARRAY( m_szMaterialName, FIELD_CHARACTER ), + +END_DATADESC() + + +AR2Explosion* AR2Explosion::CreateAR2Explosion(const Vector &pos) +{ + CBaseEntity *pEnt = CreateEntityByName(AR2EXPLOSION_ENTITYNAME); + if(pEnt) + { + AR2Explosion *pEffect = dynamic_cast<AR2Explosion*>(pEnt); + if(pEffect && pEffect->edict()) + { + pEffect->SetLocalOrigin( pos ); + pEffect->Activate(); + return pEffect; + } + else + { + UTIL_Remove(pEnt); + } + } + + return NULL; +} + + +//----------------------------------------------------------------------------- +// A lightweight entity for level-designer placed AR2 explosions. +//----------------------------------------------------------------------------- +class CEnvAR2Explosion : public CPointEntity +{ +public: + DECLARE_CLASS( CEnvAR2Explosion, CPointEntity ); + + void Spawn( void ); + + // Input handlers + void InputExplode( inputdata_t &inputdata ); + + DECLARE_DATADESC(); + +private: + + string_t m_iszMaterialName; +}; + + +BEGIN_DATADESC( CEnvAR2Explosion ) + DEFINE_INPUTFUNC(FIELD_VOID, "Explode", InputExplode), + DEFINE_KEYFIELD(m_iszMaterialName, FIELD_STRING, "material"), +END_DATADESC() + +LINK_ENTITY_TO_CLASS( env_ar2explosion, CEnvAR2Explosion ); + + +//----------------------------------------------------------------------------- +// Purpose: So you can see where this function begins and the last one ends. +//----------------------------------------------------------------------------- +void CEnvAR2Explosion::Spawn( void ) +{ + Precache(); + + SetSolid( SOLID_NONE ); + AddEffects( EF_NODRAW ); + + SetMoveType( MOVETYPE_NONE ); +} + + +//----------------------------------------------------------------------------- +// Purpose: Creates the explosion effect. +//----------------------------------------------------------------------------- +void CEnvAR2Explosion::InputExplode( inputdata_t &inputdata ) +{ + AR2Explosion *pExplosion = AR2Explosion::CreateAR2Explosion(GetAbsOrigin()); + if (pExplosion) + { + pExplosion->SetLifetime( 10 ); + if (m_iszMaterialName != NULL_STRING) + { + pExplosion->SetMaterialName(STRING(m_iszMaterialName)); + } + } +} |