//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ // //=============================================================================// #include "cbase.h" // memdbgon must be the last include file in a .cpp file!!! #include "tier0/memdbgon.h" // -------------------------------------------------------------------------------- // // An entity used to test traceline // -------------------------------------------------------------------------------- // class CTestTraceline : public CPointEntity { public: DECLARE_CLASS( CTestTraceline, CPointEntity ); void Spawn( void ); int UpdateTransmitState(); 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( 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 ); } int CTestTraceline::UpdateTransmitState() { return SetTransmitState( FL_EDICT_ALWAYS ); }