mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 01:39:36 +00:00
1
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user