CBeam/definitions
< CBeam
Jump to navigation
Jump to search
Code:Serverside/Clientside definition is in a shared file separated by preprocessors. The code shown below is split based on that.
Todo: verify correctness
Serverside
class CBeam : public CBaseEntity
{
DECLARE_CLASS( CBeam, CBaseEntity );
public:
DECLARE_NETWORKCLASS();
DECLARE_PREDICTABLE();
DECLARE_DATADESC();
CBeam();
virtual void SetModel( const char *szModelName );
void Spawn( void );
void Precache( void );
int ObjectCaps( void );
void SetTransmit( CCheckTransmitInfo *pInfo, bool bAlways );
int UpdateTransmitState( void );
int ShouldTransmit( const CCheckTransmitInfo *pInfo );
virtual int DrawDebugTextOverlays(void);
// These functions are here to show the way beams are encoded as entities.
// Encoding beams as entities simplifies their management in the client/server architecture
void SetType( int type );
void SetBeamFlags( int flags );
void SetBeamFlag( int flag );
// NOTE: Start + End Pos are specified in *relative* coordinates
void SetStartPos( const Vector &pos );
void SetEndPos( const Vector &pos );
// This will change things so the abs position matches the requested spot
void SetAbsStartPos( const Vector &pos );
void SetAbsEndPos( const Vector &pos );
const Vector &GetAbsStartPos( void ) const;
const Vector &GetAbsEndPos( void ) const;
void SetStartEntity( CBaseEntity *pEntity );
void SetEndEntity( CBaseEntity *pEntity );
void SetStartAttachment( int attachment );
void SetEndAttachment( int attachment );
void SetTexture( int spriteIndex );
void SetHaloTexture( int spriteIndex );
void SetHaloScale( float haloScale );
void SetWidth( float width );
void SetEndWidth( float endWidth );
void SetFadeLength( float fadeLength );
void SetNoise( float amplitude );
void SetColor( int r, int g, int b );
void SetBrightness( int brightness );
void SetFrame( float frame );
void SetScrollRate( int speed );
void SetFireTime( float flFireTime );
void SetFrameRate( float flFrameRate ) { m_flFrameRate = flFrameRate; }
void SetMinDXLevel( int nMinDXLevel ) { m_nMinDXLevel = nMinDXLevel; }
void TurnOn( void );
void TurnOff( void );
int GetType( void ) const;
int GetBeamFlags( void ) const;
CBaseEntity* GetStartEntityPtr( void ) const;
int GetStartEntity( void ) const;
CBaseEntity* GetEndEntityPtr( void ) const;
int GetEndEntity( void ) const;
int GetStartAttachment() const;
int GetEndAttachment() const;
virtual const Vector &WorldSpaceCenter( void ) const;
int GetTexture( void );
float GetWidth( void ) const;
float GetEndWidth( void ) const;
float GetFadeLength( void ) const;
float GetNoise( void ) const;
int GetBrightness( void ) const;
float GetFrame( void ) const;
float GetScrollRate( void ) const;
float GetHDRColorScale( void ) const;
void SetHDRColorScale( float flScale ) { m_flHDRColorScale = flScale; }
// Call after you change start/end positions
void RelinkBeam( void );
void DoSparks( const Vector &start, const Vector &end );
CBaseEntity *RandomTargetname( const char *szName );
void BeamDamage( trace_t *ptr );
// Init after BeamCreate()
void BeamInit( const char *pSpriteName, float width );
void PointsInit( const Vector &start, const Vector &end );
void PointEntInit( const Vector &start, CBaseEntity *pEndEntity );
void EntsInit( CBaseEntity *pStartEntity, CBaseEntity *pEndEntity );
void LaserInit( CBaseEntity *pStartEntity, CBaseEntity *pEndEntity );
void HoseInit( const Vector &start, const Vector &direction );
void SplineInit( int nNumEnts, CBaseEntity** pEntList, int *attachment );
// Input handlers
static CBeam *BeamCreate( const char *pSpriteName, float width );
static CBeam *BeamCreatePredictable( const char *module, int line, bool persist, const char *pSpriteName, float width, CBasePlayer *pOwner );
void LiveForTime( float time );
void BeamDamageInstant( trace_t *ptr, float damage );
virtual const char *GetDecalName( void ) { return "BigShot"; }
protected:
CNetworkVar( float, m_flFrameRate );
CNetworkVar( float, m_flHDRColorScale );
float m_flFireTime;
float m_flDamage; // Damage per second to touchers.
CNetworkVar( int, m_nNumBeamEnts );
private:
void InputNoise( inputdata_t &inputdata );
void InputWidth( inputdata_t &inputdata );
void InputColorRedValue( inputdata_t &inputdata );
void InputColorBlueValue( inputdata_t &inputdata );
void InputColorGreenValue( inputdata_t &inputdata );
// Beam Data Elements
CNetworkVar( int, m_nHaloIndex );
CNetworkVar( int, m_nBeamType );
CNetworkVar( int, m_nBeamFlags );
CNetworkArray( EHANDLE, m_hAttachEntity, MAX_BEAM_ENTS );
CNetworkArray( int, m_nAttachIndex, MAX_BEAM_ENTS );
CNetworkVar( float, m_fWidth );
CNetworkVar( float, m_fEndWidth );
CNetworkVar( float, m_fFadeLength );
CNetworkVar( float, m_fHaloScale );
CNetworkVar( float, m_fAmplitude );
CNetworkVar( float, m_fStartFrame );
CNetworkVar( float, m_fSpeed );
CNetworkVar( int, m_nMinDXLevel );
CNetworkVar( float, m_flFrame );
CNetworkVector( m_vecEndPos );
EHANDLE m_hEndEntity;
int m_nDissolveType;
public:
#ifdef PORTAL
CNetworkVar( bool, m_bDrawInMainRender );
CNetworkVar( bool, m_bDrawInPortalRender );
#endif //#ifdef PORTAL
};
// This table encodes the CBeam data.
IMPLEMENT_NETWORKCLASS_ALIASED( Beam, DT_Beam )
#if !defined( NO_ENTITY_PREDICTION )
BEGIN_NETWORK_TABLE_NOBASE( CBeam, DT_BeamPredictableId )
SendPropPredictableId( SENDINFO( m_PredictableID ) ),
SendPropInt( SENDINFO( m_bIsPlayerSimulated ), 1, SPROP_UNSIGNED ),
END_NETWORK_TABLE()
#endif
BEGIN_NETWORK_TABLE_NOBASE( CBeam, DT_Beam )
SendPropInt (SENDINFO(m_nBeamType), Q_log2(NUM_BEAM_TYPES)+1, SPROP_UNSIGNED ),
SendPropInt (SENDINFO(m_nBeamFlags), NUM_BEAM_FLAGS, SPROP_UNSIGNED ),
SendPropInt (SENDINFO(m_nNumBeamEnts ), 5, SPROP_UNSIGNED ),
SendPropArray3
(
SENDINFO_ARRAY3(m_hAttachEntity),
SendPropEHandle( SENDINFO_ARRAY(m_hAttachEntity) )
),
SendPropArray3
(
SENDINFO_ARRAY3(m_nAttachIndex),
SendPropInt( SENDINFO_ARRAY(m_nAttachIndex), ATTACHMENT_INDEX_BITS, SPROP_UNSIGNED)
),
SendPropInt (SENDINFO(m_nHaloIndex), 16, SPROP_UNSIGNED ),
SendPropFloat (SENDINFO(m_fHaloScale), 0, SPROP_NOSCALE ),
SendPropFloat (SENDINFO(m_fWidth), 10, SPROP_ROUNDUP, 0.0f, MAX_BEAM_WIDTH ),
SendPropFloat (SENDINFO(m_fEndWidth), 10, SPROP_ROUNDUP, 0.0f, MAX_BEAM_WIDTH ),
SendPropFloat (SENDINFO(m_fFadeLength), 0, SPROP_NOSCALE ),
SendPropFloat (SENDINFO(m_fAmplitude), 8, SPROP_ROUNDDOWN, 0.0f, MAX_BEAM_NOISEAMPLITUDE ),
SendPropFloat (SENDINFO(m_fStartFrame), 8, SPROP_ROUNDDOWN, 0.0f, 256.0f),
SendPropFloat (SENDINFO(m_fSpeed), 8, SPROP_NOSCALE, 0.0f, MAX_BEAM_SCROLLSPEED),
SendPropInt (SENDINFO(m_nRenderFX), 8, SPROP_UNSIGNED ),
SendPropInt (SENDINFO(m_nRenderMode), 8, SPROP_UNSIGNED ),
SendPropFloat (SENDINFO(m_flFrameRate), 10, SPROP_ROUNDUP, -25.0f, 25.0f ),
SendPropFloat (SENDINFO(m_flHDRColorScale), 0, SPROP_NOSCALE, 0.0f, 100.0f ),
SendPropFloat (SENDINFO(m_flFrame), 20, SPROP_ROUNDDOWN | SPROP_CHANGES_OFTEN, 0.0f, 256.0f),
SendPropInt (SENDINFO(m_clrRender), 32, SPROP_UNSIGNED | SPROP_CHANGES_OFTEN ),
SendPropVector (SENDINFO(m_vecEndPos), -1, SPROP_COORD ),
#ifdef PORTAL
SendPropBool (SENDINFO(m_bDrawInMainRender) ),
SendPropBool (SENDINFO(m_bDrawInPortalRender) ),
#endif
SendPropModelIndex(SENDINFO(m_nModelIndex) ),
SendPropVector (SENDINFO(m_vecOrigin), 19, SPROP_CHANGES_OFTEN, MIN_COORD_INTEGER, MAX_COORD_INTEGER),
SendPropEHandle(SENDINFO_NAME(m_hMoveParent, moveparent) ),
SendPropInt (SENDINFO(m_nMinDXLevel), 8, SPROP_UNSIGNED ),
#if !defined( NO_ENTITY_PREDICTION )
SendPropDataTable( "beampredictable_id", 0, &REFERENCE_SEND_TABLE( DT_BeamPredictableId ), SendProxy_SendPredictableId ),
#endif
END_NETWORK_TABLE()
BEGIN_DATADESC( CBeam )
DEFINE_FIELD( m_nHaloIndex, FIELD_MODELINDEX ),
DEFINE_FIELD( m_nBeamType, FIELD_INTEGER ),
DEFINE_FIELD( m_nBeamFlags, FIELD_INTEGER ),
DEFINE_FIELD( m_nNumBeamEnts, FIELD_INTEGER ),
DEFINE_ARRAY( m_hAttachEntity, FIELD_EHANDLE, MAX_BEAM_ENTS ),
DEFINE_ARRAY( m_nAttachIndex, FIELD_INTEGER, MAX_BEAM_ENTS ),
DEFINE_FIELD( m_nMinDXLevel, FIELD_INTEGER ),
DEFINE_FIELD( m_fWidth, FIELD_FLOAT ),
DEFINE_FIELD( m_fEndWidth, FIELD_FLOAT ),
DEFINE_FIELD( m_fFadeLength, FIELD_FLOAT ),
DEFINE_FIELD( m_fHaloScale, FIELD_FLOAT ),
DEFINE_FIELD( m_fAmplitude, FIELD_FLOAT ),
DEFINE_FIELD( m_fStartFrame, FIELD_FLOAT ),
DEFINE_FIELD( m_fSpeed, FIELD_FLOAT ),
DEFINE_FIELD( m_flFrameRate, FIELD_FLOAT ),
DEFINE_FIELD( m_flFrame, FIELD_FLOAT ),
DEFINE_KEYFIELD( m_flHDRColorScale, FIELD_FLOAT, "HDRColorScale" ),
DEFINE_KEYFIELD( m_flDamage, FIELD_FLOAT, "damage" ),
DEFINE_FIELD( m_flFireTime, FIELD_TIME ),
DEFINE_FIELD( m_vecEndPos, FIELD_POSITION_VECTOR ),
DEFINE_FIELD( m_hEndEntity, FIELD_EHANDLE ),
DEFINE_KEYFIELD( m_nDissolveType, FIELD_INTEGER, "dissolvetype" ),
#ifdef PORTAL
DEFINE_FIELD( m_bDrawInMainRender, FIELD_BOOLEAN ),
DEFINE_FIELD( m_bDrawInPortalRender, FIELD_BOOLEAN ),
#endif
// Inputs
DEFINE_INPUTFUNC( FIELD_FLOAT, "Width", InputWidth ),
DEFINE_INPUTFUNC( FIELD_FLOAT, "Noise", InputNoise ),
DEFINE_INPUTFUNC( FIELD_FLOAT, "ColorRedValue", InputColorRedValue ),
DEFINE_INPUTFUNC( FIELD_FLOAT, "ColorGreenValue", InputColorGreenValue ),
DEFINE_INPUTFUNC( FIELD_FLOAT, "ColorBlueValue", InputColorBlueValue ),
DEFINE_INPUT( m_fSpeed, FIELD_FLOAT, "ScrollSpeed" ),
// don't save this
//DEFINE_FIELD( m_queryHandleHalo, FIELD_ ),
END_DATADESC()
Clientside
class C_Beam : public C_BaseEntity
{
DECLARE_CLASS( C_Beam, C_BaseEntity );
public:
DECLARE_NETWORKCLASS();
DECLARE_PREDICTABLE();
C_Beam();
virtual void SetModel( const char *szModelName );
void Spawn( void );
void Precache( void );
#if !defined( CLIENT_DLL )
int ObjectCaps( void );
void SetTransmit( CCheckTransmitInfo *pInfo, bool bAlways );
int UpdateTransmitState( void );
int ShouldTransmit( const CCheckTransmitInfo *pInfo );
#endif
virtual int DrawDebugTextOverlays(void);
// These functions are here to show the way beams are encoded as entities.
// Encoding beams as entities simplifies their management in the client/server architecture
void SetType( int type );
void SetBeamFlags( int flags );
void SetBeamFlag( int flag );
// NOTE: Start + End Pos are specified in *relative* coordinates
void SetStartPos( const Vector &pos );
void SetEndPos( const Vector &pos );
// This will change things so the abs position matches the requested spot
void SetAbsStartPos( const Vector &pos );
void SetAbsEndPos( const Vector &pos );
const Vector &GetAbsStartPos( void ) const;
const Vector &GetAbsEndPos( void ) const;
void SetStartEntity( C_BaseEntity *pEntity );
void SetEndEntity( C_BaseEntity *pEntity );
void SetStartAttachment( int attachment );
void SetEndAttachment( int attachment );
void SetTexture( int spriteIndex );
void SetHaloTexture( int spriteIndex );
void SetHaloScale( float haloScale );
void SetWidth( float width );
void SetEndWidth( float endWidth );
void SetFadeLength( float fadeLength );
void SetNoise( float amplitude );
void SetColor( int r, int g, int b );
void SetBrightness( int brightness );
void SetFrame( float frame );
void SetScrollRate( int speed );
void SetFireTime( float flFireTime );
void SetFrameRate( float flFrameRate ) { m_flFrameRate = flFrameRate; }
void SetMinDXLevel( int nMinDXLevel ) { m_nMinDXLevel = nMinDXLevel; }
void TurnOn( void );
void TurnOff( void );
int GetType( void ) const;
int GetBeamFlags( void ) const;
C_BaseEntity* GetStartEntityPtr( void ) const;
int GetStartEntity( void ) const;
C_BaseEntity* GetEndEntityPtr( void ) const;
int GetEndEntity( void ) const;
int GetStartAttachment() const;
int GetEndAttachment() const;
virtual const Vector &WorldSpaceCenter( void ) const;
int GetTexture( void );
float GetWidth( void ) const;
float GetEndWidth( void ) const;
float GetFadeLength( void ) const;
float GetNoise( void ) const;
int GetBrightness( void ) const;
float GetFrame( void ) const;
float GetScrollRate( void ) const;
float GetHDRColorScale( void ) const;
void SetHDRColorScale( float flScale ) { m_flHDRColorScale = flScale; }
// Call after you change start/end positions
void RelinkBeam( void );
void DoSparks( const Vector &start, const Vector &end );
C_BaseEntity *RandomTargetname( const char *szName );
void BeamDamage( trace_t *ptr );
// Init after BeamCreate()
void BeamInit( const char *pSpriteName, float width );
void PointsInit( const Vector &start, const Vector &end );
void PointEntInit( const Vector &start, C_BaseEntity *pEndEntity );
void EntsInit( C_BaseEntity *pStartEntity, C_BaseEntity *pEndEntity );
void LaserInit( C_BaseEntity *pStartEntity, C_BaseEntity *pEndEntity );
void HoseInit( const Vector &start, const Vector &direction );
void SplineInit( int nNumEnts, C_BaseEntity** pEntList, int *attachment );
// Input handlers
static C_Beam *BeamCreate( const char *pSpriteName, float width );
static C_Beam *BeamCreatePredictable( const char *module, int line, bool persist, const char *pSpriteName, float width, CBasePlayer *pOwner );
void LiveForTime( float time );
void BeamDamageInstant( trace_t *ptr, float damage );
// Only supported in TF2 right now
#if defined( INVASION_CLIENT_DLL )
virtual bool ShouldPredict( void )
{
return true;
}
#endif
virtual const char *GetDecalName( void ) { return "BigShot"; }
// IClientEntity overrides.
public:
virtual int DrawModel( int flags );
virtual bool IsTransparent( void );
virtual bool ShouldDraw();
virtual bool IgnoresZBuffer( void ) const { return true; }
virtual void OnDataChanged( DataUpdateType_t updateType );
virtual bool OnPredictedEntityRemove( bool isbeingremoved, C_BaseEntity *predicted );
// Add beam to visible entities list?
virtual void AddEntity( void );
virtual bool ShouldReceiveProjectedTextures( int flags )
{
return false;
}
// Beam Data Elements
private:
// Computes the bounding box of a beam local to the origin of the beam
void ComputeBounds( Vector& mins, Vector& maxs );
friend void RecvProxy_Beam_ScrollSpeed( const CRecvProxyData *pData, void *pStruct, void *pOut );
friend class CViewRenderBeams;
protected:
CNetworkVar( float, m_flFrameRate );
CNetworkVar( float, m_flHDRColorScale );
float m_flFireTime;
float m_flDamage; // Damage per second to touchers.
CNetworkVar( int, m_nNumBeamEnts );
pixelvis_handle_t m_queryHandleHalo;
private:
// Beam Data Elements
CNetworkVar( int, m_nHaloIndex );
CNetworkVar( int, m_nBeamType );
CNetworkVar( int, m_nBeamFlags );
CNetworkArray( EHANDLE, m_hAttachEntity, MAX_BEAM_ENTS );
CNetworkArray( int, m_nAttachIndex, MAX_BEAM_ENTS );
CNetworkVar( float, m_fWidth );
CNetworkVar( float, m_fEndWidth );
CNetworkVar( float, m_fFadeLength );
CNetworkVar( float, m_fHaloScale );
CNetworkVar( float, m_fAmplitude );
CNetworkVar( float, m_fStartFrame );
CNetworkVar( float, m_fSpeed );
CNetworkVar( int, m_nMinDXLevel );
CNetworkVar( float, m_flFrame );
CNetworkVector( m_vecEndPos );
EHANDLE m_hEndEntity;
public:
#ifdef PORTAL
CNetworkVar( bool, m_bDrawInMainRender );
CNetworkVar( bool, m_bDrawInPortalRender );
#endif //#ifdef PORTAL
};
// This table encodes the CBeam data.
IMPLEMENT_NETWORKCLASS_ALIASED( Beam, DT_Beam )
#if !defined( NO_ENTITY_PREDICTION )
BEGIN_NETWORK_TABLE_NOBASE( C_Beam, DT_BeamPredictableId )
RecvPropPredictableId( RECVINFO( m_PredictableID ) ),
RecvPropInt( RECVINFO( m_bIsPlayerSimulated ) ),
END_NETWORK_TABLE()
#endif
BEGIN_NETWORK_TABLE_NOBASE( C_Beam, DT_Beam )
RecvPropInt (RECVINFO(m_nBeamType)),
RecvPropInt (RECVINFO(m_nBeamFlags)),
RecvPropInt (RECVINFO(m_nNumBeamEnts)),
RecvPropArray3
(
RECVINFO_ARRAY( m_hAttachEntity ),
RecvPropEHandle (RECVINFO(m_hAttachEntity[0]))
),
RecvPropArray3
(
RECVINFO_ARRAY( m_nAttachIndex ),
RecvPropInt (RECVINFO(m_nAttachIndex[0]))
),
RecvPropInt (RECVINFO(m_nHaloIndex)),
RecvPropFloat (RECVINFO(m_fHaloScale)),
RecvPropFloat (RECVINFO(m_fWidth)),
RecvPropFloat (RECVINFO(m_fEndWidth)),
RecvPropFloat (RECVINFO(m_fFadeLength)),
RecvPropFloat (RECVINFO(m_fAmplitude)),
RecvPropFloat (RECVINFO(m_fStartFrame)),
RecvPropFloat (RECVINFO(m_fSpeed), 0, RecvProxy_Beam_ScrollSpeed ),
RecvPropFloat(RECVINFO(m_flFrameRate)),
RecvPropFloat(RECVINFO(m_flHDRColorScale)),
RecvPropInt(RECVINFO(m_clrRender)),
RecvPropInt(RECVINFO(m_nRenderFX)),
RecvPropInt(RECVINFO(m_nRenderMode)),
RecvPropFloat(RECVINFO(m_flFrame)),
RecvPropVector(RECVINFO(m_vecEndPos)),
#ifdef PORTAL
RecvPropBool(RECVINFO(m_bDrawInMainRender) ),
RecvPropBool(RECVINFO(m_bDrawInPortalRender) ),
#endif
RecvPropInt(RECVINFO(m_nModelIndex)),
RecvPropInt(RECVINFO(m_nMinDXLevel)),
RecvPropVector(RECVINFO_NAME(m_vecNetworkOrigin, m_vecOrigin)),
RecvPropInt( RECVINFO_NAME(m_hNetworkMoveParent, moveparent), 0, RecvProxy_IntToMoveParent ),
#if !defined( NO_ENTITY_PREDICTION )
RecvPropDataTable( "beampredictable_id", 0, 0, &REFERENCE_RECV_TABLE( DT_BeamPredictableId ) ),
#endif
END_NETWORK_TABLE()
BEGIN_PREDICTION_DATA( C_Beam )
DEFINE_PRED_FIELD( m_nBeamType, FIELD_INTEGER, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_nNumBeamEnts, FIELD_INTEGER, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_ARRAY( m_hAttachEntity, FIELD_EHANDLE, MAX_BEAM_ENTS, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_ARRAY( m_nAttachIndex, FIELD_INTEGER, MAX_BEAM_ENTS, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_nHaloIndex, FIELD_INTEGER, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_fHaloScale, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_fWidth, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_fEndWidth, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_fFadeLength, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_fAmplitude, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_fStartFrame, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_fSpeed, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_nRenderFX, FIELD_INTEGER, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_nRenderMode, FIELD_INTEGER, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_flFrameRate, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_flFrame, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_clrRender, FIELD_INTEGER, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_nMinDXLevel, FIELD_INTEGER, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD_TOL( m_vecEndPos, FIELD_VECTOR, FTYPEDESC_INSENDTABLE, 0.125f ),
#ifdef PORTAL
DEFINE_PRED_FIELD( m_bDrawInMainRender, FIELD_BOOLEAN, FTYPEDESC_INSENDTABLE ),
DEFINE_PRED_FIELD( m_bDrawInPortalRender, FIELD_BOOLEAN, FTYPEDESC_INSENDTABLE ),
#endif
DEFINE_PRED_FIELD( m_nModelIndex, FIELD_INTEGER, FTYPEDESC_INSENDTABLE | FTYPEDESC_MODELINDEX ),
DEFINE_PRED_FIELD_TOL( m_vecOrigin, FIELD_VECTOR, FTYPEDESC_INSENDTABLE, 0.125f ),
//DEFINE_PRED_FIELD( m_pMoveParent, SendProxy_MoveParent ),
//DEFINE_PRED_FIELD( m_flHDRColorScale, SendProxy_HDRColorScale ),
END_PREDICTION_DATA()