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/basetempentity.cpp | 126 ++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 mp/src/game/server/basetempentity.cpp (limited to 'mp/src/game/server/basetempentity.cpp') diff --git a/mp/src/game/server/basetempentity.cpp b/mp/src/game/server/basetempentity.cpp new file mode 100644 index 00000000..ca3c11c7 --- /dev/null +++ b/mp/src/game/server/basetempentity.cpp @@ -0,0 +1,126 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $Workfile: $ +// $Date: $ +// +//----------------------------------------------------------------------------- +// $Log: $ +// +// $NoKeywords: $ +//=============================================================================// +#include "cbase.h" +#include "mathlib/mathlib.h" +#include "basetempentity.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +IMPLEMENT_SERVERCLASS_ST_NOBASE(CBaseTempEntity, DT_BaseTempEntity) +END_SEND_TABLE() + + + + +// Global list of temp entity event classes +CBaseTempEntity *CBaseTempEntity::s_pTempEntities = NULL; + +//----------------------------------------------------------------------------- +// Purpose: Returns head of list +// Output : CBaseTempEntity * -- head of list +//----------------------------------------------------------------------------- +CBaseTempEntity *CBaseTempEntity::GetList( void ) +{ + return s_pTempEntities; +} + +//----------------------------------------------------------------------------- +// Purpose: Creates temp entity, sets name, adds to global list +// Input : *name - +//----------------------------------------------------------------------------- +CBaseTempEntity::CBaseTempEntity( const char *name ) +{ + m_pszName = name; + Assert( m_pszName ); + + // Add to list + m_pNext = s_pTempEntities; + s_pTempEntities = this; +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +CBaseTempEntity::~CBaseTempEntity( void ) +{ +} + +//----------------------------------------------------------------------------- +// Purpose: Get the name of this temp entity +// Output : const char * +//----------------------------------------------------------------------------- +const char *CBaseTempEntity::GetName( void ) +{ + return m_pszName ? m_pszName : "Unnamed"; +} + +//----------------------------------------------------------------------------- +// Purpose: Get next temp ent in chain +// Output : CBaseTempEntity * +//----------------------------------------------------------------------------- +CBaseTempEntity *CBaseTempEntity::GetNext( void ) +{ + return m_pNext; +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CBaseTempEntity::Precache( void ) +{ + // Nothing... +} + +//----------------------------------------------------------------------------- +// Purpose: Default test implementation. Should only be called by derived classes +// Input : *current_origin - +// *current_angles - +//----------------------------------------------------------------------------- +void CBaseTempEntity::Test( const Vector& current_origin, const QAngle& current_angles ) +{ + Vector origin, forward; + + Msg( "%s\n", m_pszName ); + AngleVectors( current_angles, &forward ); + + VectorMA( current_origin, 20, forward, origin ); + + CBroadcastRecipientFilter filter; + + Create( filter, 0.0 ); +} + +//----------------------------------------------------------------------------- +// Purpose: Called at startup to allow temp entities to precache any models/sounds that they need +//----------------------------------------------------------------------------- +void CBaseTempEntity::PrecacheTempEnts( void ) +{ + CBaseTempEntity *te = GetList(); + while ( te ) + { + te->Precache(); + te = te->GetNext(); + } +} + + +void CBaseTempEntity::Create( IRecipientFilter& filter, float delay ) +{ + // temp entities can't be reliable or part of the signon message, use real entities instead + Assert( !filter.IsInitMessage() && !filter.IsInitMessage() ); + Assert( delay >= -1 && delay <= 1); // 1 second max delay + + engine->PlaybackTempEntity( filter, delay, + (void *)this, GetServerClass()->m_pTable, GetServerClass()->m_ClassID ); +} -- cgit v1.2.3