text: #include "cbase.h"
  
  
  // -------------------------------------------------------------------------------- //
  // An entity used to test traceline
  // -------------------------------------------------------------------------------- //
  
  class CTestTraceline : public CPointEntity
  {
  public:
  	DECLARE_CLASS( CTestTraceline, CPointEntity );
  
  	void	Spawn( void );
  	bool	ShouldTransmit( const edict_t *recipient, const void *pvs, int clientArea );
  
  	DECLARE_SERVERCLASS();
  	DECLARE_DATADESC();
  
  private:
  	void	Spin( void );
  };
  							  
  
  // This table encodes the CBaseEntity data.
  IMPLEMENT_SERVERCLASS_ST_NOBASE(CTestTraceline, DT_TestTraceline)
  	SendPropInt		(SENDINFO(m_clrRender),	32, SPROP_UNSIGNED ),
  	SendPropVector (SENDINFO(m_vecOrigin), 19, 0,	MIN_COORD_INTEGER, MAX_COORD_INTEGER),
  	SendPropFloat	(SENDINFO_VECTORELEM(m_angRotation, 0), 19, 0,	MIN_COORD_INTEGER, MAX_COORD_INTEGER),
  	SendPropFloat	(SENDINFO_VECTORELEM(m_angRotation, 1), 19, 0,	MIN_COORD_INTEGER, MAX_COORD_INTEGER),
  	SendPropFloat	(SENDINFO_VECTORELEM(m_angRotation, 2), 19, 0,	MIN_COORD_INTEGER, MAX_COORD_INTEGER),
  	SendPropEHandle (SENDINFO_NAME(m_hMoveParent, moveparent)),
  END_SEND_TABLE()
  
  LINK_ENTITY_TO_CLASS( test_traceline, CTestTraceline );
  
  BEGIN_DATADESC( CTestTraceline )
  
  	// Function Pointers
  	DEFINE_FUNCTION( CTestTraceline, Spin ),
  
  END_DATADESC()
  
  
  void	CTestTraceline::Spawn( void )
  {
  	SetRenderColor( 255, 255, 255, 255 );
  	SetNextThink( gpGlobals->curtime );
  
  	SetThink( &CTestTraceline::Spin );
  }
  
  void	CTestTraceline::Spin( void )
  {
  	static ConVar	traceline_spin( "traceline_spin","1" );
  
  	if (traceline_spin.GetInt())
  	{
  		float s = sin( gpGlobals->curtime );
  		QAngle angles = GetLocalAngles();
  
  		angles[0] = 180.0 * 0.5 * (s * s * s + 1.0f) + 90;
  		angles[1] = gpGlobals->curtime * 10;
  		   
  		SetLocalAngles( angles );
  
  	}
  	SetNextThink( gpGlobals->curtime );
  }
  
  bool CTestTraceline::ShouldTransmit( const edict_t *recipient, const void *pvs, int clientArea )
  {
  	return true;
  }
  