From 39ed87570bdb2f86969d4be821c94b722dc71179 Mon Sep 17 00:00:00 2001 From: Joe Ludwig Date: Wed, 26 Jun 2013 15:22:04 -0700 Subject: First version of the SOurce SDK 2013 --- mp/src/game/server/hl2/ar2_explosion.cpp | 112 +++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 mp/src/game/server/hl2/ar2_explosion.cpp (limited to 'mp/src/game/server/hl2/ar2_explosion.cpp') diff --git a/mp/src/game/server/hl2/ar2_explosion.cpp b/mp/src/game/server/hl2/ar2_explosion.cpp new file mode 100644 index 00000000..6479a039 --- /dev/null +++ b/mp/src/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(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)); + } + } +} -- cgit v1.2.3