You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
2.6 KiB
110 lines
2.6 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $Workfile: $ |
|
// $Date: $ |
|
// |
|
//----------------------------------------------------------------------------- |
|
// $Log: $ |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
#include "cbase.h" |
|
#include "c_te_particlesystem.h" |
|
|
|
// memdbgon must be the last include file in a .cpp file!!! |
|
#include "tier0/memdbgon.h" |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Show Line TE |
|
//----------------------------------------------------------------------------- |
|
class C_TEShowLine : public C_TEParticleSystem |
|
{ |
|
public: |
|
DECLARE_CLASS( C_TEShowLine, C_TEParticleSystem ); |
|
DECLARE_CLIENTCLASS(); |
|
|
|
C_TEShowLine( void ); |
|
virtual ~C_TEShowLine( void ); |
|
|
|
virtual void PostDataUpdate( DataUpdateType_t updateType ); |
|
|
|
public: |
|
Vector m_vecEnd; |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
C_TEShowLine::C_TEShowLine( void ) |
|
{ |
|
m_vecEnd.Init(); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
C_TEShowLine::~C_TEShowLine( void ) |
|
{ |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : bool - |
|
//----------------------------------------------------------------------------- |
|
void C_TEShowLine::PostDataUpdate( DataUpdateType_t updateType ) |
|
{ |
|
Vector vec; |
|
float len; |
|
StandardParticle_t *p; |
|
int dec; |
|
static int tracercount; |
|
|
|
VectorSubtract (m_vecEnd, m_vecOrigin, vec); |
|
len = VectorNormalize (vec); |
|
|
|
dec = 3; |
|
|
|
VectorScale(vec, dec, vec); |
|
|
|
CSmartPtr<CTEParticleRenderer> pRen = CTEParticleRenderer::Create( "TEShowLine", m_vecOrigin ); |
|
if( !pRen ) |
|
return; |
|
|
|
while (len > 0) |
|
{ |
|
len -= dec; |
|
|
|
p = pRen->AddParticle(); |
|
if ( p ) |
|
{ |
|
p->m_Velocity.Init(); |
|
|
|
pRen->SetParticleLifetime(p, 30); |
|
|
|
p->SetColor(0, 1, 1); |
|
p->SetAlpha(1); |
|
pRen->SetParticleType(p, pt_static); |
|
|
|
p->m_Pos = m_vecOrigin; |
|
|
|
m_vecOrigin += vec; |
|
} |
|
} |
|
} |
|
|
|
IMPLEMENT_CLIENTCLASS_EVENT_DT(C_TEShowLine, DT_TEShowLine, CTEShowLine) |
|
RecvPropVector( RECVINFO(m_vecEnd)), |
|
END_RECV_TABLE() |
|
|
|
void TE_ShowLine( IRecipientFilter& filter, float delay, |
|
const Vector* start, const Vector* end ) |
|
{ |
|
// Major hack to simulate receiving network message |
|
__g_C_TEShowLine.m_vecOrigin = *start; |
|
__g_C_TEShowLine.m_vecEnd = *end; |
|
|
|
__g_C_TEShowLine.PostDataUpdate( DATA_UPDATE_CREATED ); |
|
} |