diff options
Diffstat (limited to 'game/client/c_basetempentity.cpp')
| -rw-r--r-- | game/client/c_basetempentity.cpp | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/game/client/c_basetempentity.cpp b/game/client/c_basetempentity.cpp new file mode 100644 index 0000000..fcb3ce5 --- /dev/null +++ b/game/client/c_basetempentity.cpp @@ -0,0 +1,201 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Core Temp Entity client implementation. +// +// $NoKeywords: $ +//=============================================================================// +#include "cbase.h" +#include "c_basetempentity.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +IMPLEMENT_CLIENTCLASS(C_BaseTempEntity, DT_BaseTempEntity, CBaseTempEntity); + +BEGIN_RECV_TABLE_NOBASE(C_BaseTempEntity, DT_BaseTempEntity) +END_RECV_TABLE() + + +// Global list of temp entity classes +C_BaseTempEntity *C_BaseTempEntity::s_pTempEntities = NULL; + +// Global list of dynamic temp entities +C_BaseTempEntity *C_BaseTempEntity::s_pDynamicEntities = NULL; + +//----------------------------------------------------------------------------- +// Purpose: Returns head of list +// Output : CBaseTempEntity * -- head of list +//----------------------------------------------------------------------------- +C_BaseTempEntity *C_BaseTempEntity::GetDynamicList( void ) +{ + return s_pDynamicEntities; +} + +//----------------------------------------------------------------------------- +// Purpose: Returns head of list +// Output : CBaseTempEntity * -- head of list +//----------------------------------------------------------------------------- +C_BaseTempEntity *C_BaseTempEntity::GetList( void ) +{ + return s_pTempEntities; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Output : +//----------------------------------------------------------------------------- +C_BaseTempEntity::C_BaseTempEntity( void ) +{ + // Add to list + m_pNext = s_pTempEntities; + s_pTempEntities = this; + + m_pNextDynamic = NULL; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Output : +//----------------------------------------------------------------------------- +C_BaseTempEntity::~C_BaseTempEntity( void ) +{ +} + +//----------------------------------------------------------------------------- +// Purpose: Get next temp ent in chain +// Output : CBaseTempEntity * +//----------------------------------------------------------------------------- +C_BaseTempEntity *C_BaseTempEntity::GetNext( void ) +{ + return m_pNext; +} + +//----------------------------------------------------------------------------- +// Purpose: Get next temp ent in chain +// Output : CBaseTempEntity * +//----------------------------------------------------------------------------- +C_BaseTempEntity *C_BaseTempEntity::GetNextDynamic( void ) +{ + return m_pNextDynamic; +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void C_BaseTempEntity::Precache( void ) +{ + // Nothing... +} + +//----------------------------------------------------------------------------- +// Purpose: Called at startup to allow temp entities to precache any models/sounds that they need +//----------------------------------------------------------------------------- +void C_BaseTempEntity::PrecacheTempEnts( void ) +{ + C_BaseTempEntity *pTe = GetList(); + while ( pTe ) + { + pTe->Precache(); + pTe = pTe->GetNext(); + } +} + +//----------------------------------------------------------------------------- +// Purpose: Called at startup and level load to clear out leftover temp entities +//----------------------------------------------------------------------------- +void C_BaseTempEntity::ClearDynamicTempEnts( void ) +{ + C_BaseTempEntity *next; + C_BaseTempEntity *pTe = s_pDynamicEntities; + while ( pTe ) + { + next = pTe->GetNextDynamic(); + delete pTe; + pTe = next; + } + + s_pDynamicEntities = NULL; +} + +//----------------------------------------------------------------------------- +// Purpose: Called at startup and level load to clear out leftover temp entities +//----------------------------------------------------------------------------- +void C_BaseTempEntity::CheckDynamicTempEnts( void ) +{ + C_BaseTempEntity *next, *newlist = NULL; + C_BaseTempEntity *pTe = s_pDynamicEntities; + while ( pTe ) + { + next = pTe->GetNextDynamic(); + if ( pTe->ShouldDestroy() ) + { + delete pTe; + } + else + { + pTe->m_pNextDynamic = newlist; + newlist = pTe; + } + pTe = next; + } + + s_pDynamicEntities = newlist; +} + +//----------------------------------------------------------------------------- +// Purpose: Dynamic/non-singleton temp entities are initialized by +// calling into here. They should be added to a list of C_BaseTempEntities so +// that their memory can be deallocated appropriately. +// Input : *pEnt - +// Output : Returns true on success, false on failure. +//----------------------------------------------------------------------------- +bool C_BaseTempEntity::Init( int entnum, int iSerialNum ) +{ + if ( entnum != -1 ) + { + Assert( 0 ); + } + + // Link into dynamic entity list + m_pNextDynamic = s_pDynamicEntities; + s_pDynamicEntities = this; + + return true; +} + + +void C_BaseTempEntity::Release() +{ + Assert( !"C_BaseTempEntity::Release should never be called" ); +} + + +void C_BaseTempEntity::NotifyShouldTransmit( ShouldTransmitState_t state ) +{ +} + + +//----------------------------------------------------------------------------- +// Purpose: +// Input : bool - +//----------------------------------------------------------------------------- +void C_BaseTempEntity::PreDataUpdate( DataUpdateType_t updateType ) +{ + // TE's may or may not implement this +} + + +int C_BaseTempEntity::entindex( void ) const { Assert( 0 ); return 0; } +void C_BaseTempEntity::PostDataUpdate( DataUpdateType_t updateType ) { Assert( 0 ); } +void C_BaseTempEntity::OnPreDataChanged( DataUpdateType_t updateType ) { Assert( 0 ); } +void C_BaseTempEntity::OnDataChanged( DataUpdateType_t updateType ) { Assert( 0 ); } +void C_BaseTempEntity::SetDormant( bool bDormant ) { Assert( 0 ); } +bool C_BaseTempEntity::IsDormant( void ) { Assert( 0 ); return false; }; +void C_BaseTempEntity::ReceiveMessage( int classID, bf_read &msg ) { Assert( 0 ); } +void C_BaseTempEntity::SetDestroyedOnRecreateEntities( void ) { Assert(0); } + +void* C_BaseTempEntity::GetDataTableBasePtr() +{ + return this; +} + |