void C_PortalGhostRenderable::PerFrameUpdate( void ) { if( m_pGhostedRenderable ) { SetModelName( m_pGhostedRenderable->GetModelName() ); SetModelIndex( m_pGhostedRenderable->GetModelIndex() ); SetEffects( m_pGhostedRenderable->GetEffects() | EF_NOINTERP ); m_flAnimTime = m_pGhostedRenderable->m_flAnimTime; if( m_bSourceIsBaseAnimating ) { C_BaseAnimating *pSource = (C_BaseAnimating *)m_pGhostedRenderable; SetCycle( pSource->GetCycle() ); SetSequence( pSource->GetSequence() ); m_nBody = pSource->m_nBody; m_nSkin = pSource->m_nSkin; } } // Set position and angles relative to the object it's ghosting Vector ptNewOrigin = m_matGhostTransform * m_pGhostedRenderable->GetAbsOrigin(); QAngle qNewAngles = TransformAnglesToWorldSpace( m_pGhostedRenderable->GetAbsAngles(), m_matGhostTransform.As3x4() ); SetAbsOrigin( ptNewOrigin ); SetAbsAngles( qNewAngles ); AddEffects( EF_NOINTERP ); RemoveFromInterpolationList(); g_pClientLeafSystem->RenderableChanged( RenderHandle() ); }
C_PortalGhostRenderable::~C_PortalGhostRenderable( void ) { m_pGhostedRenderable = NULL; g_pClientLeafSystem->RemoveRenderable( RenderHandle() ); cl_entitylist->RemoveEntity( GetIClientUnknown()->GetRefEHandle() ); DestroyModelInstance(); }
//----------------------------------------------------------------------------- // Starts up the particle system //----------------------------------------------------------------------------- void C_EnvParticleScript::OnDataChanged( DataUpdateType_t updateType ) { BaseClass::OnDataChanged( updateType ); if( updateType == DATA_UPDATE_CREATED ) { ParticleMgr()->AddEffect( &m_ParticleEffect, this ); g_pClientLeafSystem->EnableRendering( RenderHandle(), false ); } if ( m_nOldSequence != GetSequence() ) { DestroyAllParticles(); } }