RecvPropFloat ( RECVINFO( m_flNextRespawn ) ), RecvPropFloat ( RECVINFO( m_flFatalityStart ) ), RecvPropEHandle ( RECVINFO( m_hLastAttacker ) ), RecvPropFloat ( RECVINFO( m_flLastAttackedTime ) ), RecvPropEHandle ( RECVINFO( m_hLastDOTAttacker ) ), RecvPropFloat ( RECVINFO( m_flStrongAttackJumpTime ) ), RecvPropBool ( RECVINFO( m_bStrongAttackJump ) ), RecvPropInt ( RECVINFO(m_iLatchTriggerCount) ), RecvPropTime ( RECVINFO( m_flLastLatch ) ), END_RECV_TABLE() IMPLEMENT_CLIENTCLASS_DT( C_CFPlayer, DT_CFPlayer, CCFPlayer ) RecvPropDataTable( "cflocaldata", 0, 0, &REFERENCE_RECV_TABLE(DT_CFLocalPlayerExclusive) ), RecvPropDataTable( "player_statistics_data", 0, 0, &REFERENCE_RECV_TABLE( DT_Statistics ), RecvProxy_Statistics ), RecvPropInt( RECVINFO( m_bInFollowMode ) ), RecvPropBool( RECVINFO( m_bLatched ) ), RecvPropBool( RECVINFO( m_bOverdrive ) ), RecvPropVector( RECVINFO( m_vecLatchPlaneNormal ) ), RecvPropBool (RECVINFO(m_bCanPowerjump)), RecvPropBool (RECVINFO(m_bPowerjump)), RecvPropBool (RECVINFO(m_bChargejump)), RecvPropInt( RECVINFO( m_eLHEffectElements ) ), RecvPropInt( RECVINFO( m_eRHEffectElements ) ),
"point_devshot_camera", "", // END Marker }; #ifdef CLIENT_DLL void RecvProxy_HL2MPRules( const RecvProp *pProp, void **pOut, void *pData, int objectID ) { CHL2MPRules *pRules = HL2MPRules(); Assert( pRules ); *pOut = pRules; } BEGIN_RECV_TABLE( CHL2MPGameRulesProxy, DT_HL2MPGameRulesProxy ) RecvPropDataTable( "hl2mp_gamerules_data", 0, 0, &REFERENCE_RECV_TABLE( DT_HL2MPRules ), RecvProxy_HL2MPRules ) END_RECV_TABLE() #else void* SendProxy_HL2MPRules( const SendProp *pProp, const void *pStructBase, const void *pData, CSendProxyRecipients *pRecipients, int objectID ) { CHL2MPRules *pRules = HL2MPRules(); Assert( pRules ); return pRules; } BEGIN_SEND_TABLE( CHL2MPGameRulesProxy, DT_HL2MPGameRulesProxy ) SendPropDataTable( "hl2mp_gamerules_data", 0, &REFERENCE_SEND_TABLE( DT_HL2MPRules ), SendProxy_HL2MPRules ) END_SEND_TABLE() #endif #ifndef CLIENT_DLL
IMPLEMENT_NETWORKCLASS_ALIASED( TFPipebombLauncher, DT_WeaponPipebombLauncher ) BEGIN_NETWORK_TABLE_NOBASE( CTFPipebombLauncher, DT_PipebombLauncherLocalData ) #ifdef CLIENT_DLL RecvPropInt( RECVINFO( m_iPipebombCount ) ), RecvPropTime( RECVINFO( m_flChargeBeginTime ) ), #else SendPropInt( SENDINFO( m_iPipebombCount ), 5, SPROP_UNSIGNED ), SendPropTime( SENDINFO( m_flChargeBeginTime ) ), #endif END_NETWORK_TABLE() BEGIN_NETWORK_TABLE( CTFPipebombLauncher, DT_WeaponPipebombLauncher ) #ifdef CLIENT_DLL RecvPropDataTable( "PipebombLauncherLocalData", 0, 0, &REFERENCE_RECV_TABLE( DT_PipebombLauncherLocalData ) ), #else SendPropDataTable( "PipebombLauncherLocalData", 0, &REFERENCE_SEND_TABLE( DT_PipebombLauncherLocalData ), SendProxy_SendLocalWeaponDataTable ), #endif END_NETWORK_TABLE() #ifdef CLIENT_DLL BEGIN_PREDICTION_DATA( CTFPipebombLauncher ) DEFINE_PRED_FIELD( m_flChargeBeginTime, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ), END_PREDICTION_DATA() #endif LINK_ENTITY_TO_CLASS( tf_weapon_pipebomblauncher, CTFPipebombLauncher ); PRECACHE_WEAPON_REGISTER( tf_weapon_pipebomblauncher ); // Server specific.
} else { BaseClass::DoMuzzleFlash(); } } IMPLEMENT_CLIENTCLASS(C_BaseCombatCharacter, DT_BaseCombatCharacter, CBaseCombatCharacter); // Only send active weapon index to local player BEGIN_RECV_TABLE_NOBASE( C_BaseCombatCharacter, DT_BCCLocalPlayerExclusive ) RecvPropTime( RECVINFO( m_flNextAttack ) ), END_RECV_TABLE(); BEGIN_RECV_TABLE(C_BaseCombatCharacter, DT_BaseCombatCharacter) RecvPropDataTable( "bcc_localdata", 0, 0, &REFERENCE_RECV_TABLE(DT_BCCLocalPlayerExclusive) ), RecvPropEHandle( RECVINFO( m_hActiveWeapon ) ), RecvPropArray3( RECVINFO_ARRAY(m_hMyWeapons), RecvPropEHandle( RECVINFO( m_hMyWeapons[0] ) ) ), #ifdef INVASION_CLIENT_DLL RecvPropInt( RECVINFO( m_iPowerups ) ), #endif END_RECV_TABLE() BEGIN_PREDICTION_DATA( C_BaseCombatCharacter ) DEFINE_PRED_ARRAY( m_iAmmo, FIELD_INTEGER, MAX_AMMO_TYPES, FTYPEDESC_INSENDTABLE ), DEFINE_PRED_FIELD( m_flNextAttack, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ), DEFINE_PRED_FIELD( m_hActiveWeapon, FIELD_EHANDLE, FTYPEDESC_INSENDTABLE ),
// How fast to avoid collisions with center of other object, in units per second #define AVOID_SPEED 2000.0f extern ConVar cl_forwardspeed; extern ConVar cl_backspeed; extern ConVar cl_sidespeed; extern ConVar zoom_sensitivity_ratio; extern ConVar default_fov; extern ConVar sensitivity; ConVar cl_npc_speedmod_intime( "cl_npc_speedmod_intime", "0.25", FCVAR_CLIENTDLL | FCVAR_ARCHIVE ); ConVar cl_npc_speedmod_outtime( "cl_npc_speedmod_outtime", "1.5", FCVAR_CLIENTDLL | FCVAR_ARCHIVE ); IMPLEMENT_CLIENTCLASS_DT(C_BaseHLPlayer, DT_HL2_Player, CHL2_Player) RecvPropDataTable( RECVINFO_DT(m_HL2Local),0, &REFERENCE_RECV_TABLE(DT_HL2Local) ), RecvPropBool( RECVINFO( m_fIsSprinting ) ), END_RECV_TABLE() BEGIN_PREDICTION_DATA( C_BaseHLPlayer ) DEFINE_PRED_TYPEDESCRIPTION( m_HL2Local, C_HL2PlayerLocalData ), DEFINE_PRED_FIELD( m_fIsSprinting, FIELD_BOOLEAN, FTYPEDESC_INSENDTABLE ), END_PREDICTION_DATA() void CC_PickerShader ( const CCommand &args ) { C_BasePlayer *pPlayer = (C_BasePlayer *) C_BasePlayer::GetLocalPlayer(); if ( !pPlayer ) return; trace_t tr;
#endif //============================================================================= // // Weapon Pistol tables. // IMPLEMENT_NETWORKCLASS_ALIASED( TFPistol, DT_WeaponPistol ) BEGIN_NETWORK_TABLE_NOBASE( CTFPistol, DT_PistolLocalData ) END_NETWORK_TABLE() BEGIN_NETWORK_TABLE( CTFPistol, DT_WeaponPistol ) #if !defined( CLIENT_DLL ) SendPropDataTable( "PistolLocalData", 0, &REFERENCE_SEND_TABLE( DT_PistolLocalData ), SendProxy_SendLocalWeaponDataTable ), #else RecvPropDataTable( "PistolLocalData", 0, 0, &REFERENCE_RECV_TABLE( DT_PistolLocalData ) ), #endif END_NETWORK_TABLE() BEGIN_PREDICTION_DATA( CTFPistol ) END_PREDICTION_DATA() LINK_ENTITY_TO_CLASS( tf_weapon_pistol, CTFPistol ); PRECACHE_WEAPON_REGISTER( tf_weapon_pistol ); // Server specific. #ifndef CLIENT_DLL BEGIN_DATADESC( CTFPistol ) END_DATADESC() #endif
RecvPropTime( RECVINFO( m_flUnProneTime ) ), #endif #if defined( SDK_USE_SPRINTING ) RecvPropBool( RECVINFO( m_bIsSprinting ) ), #endif RecvPropBool( RECVINFO( m_bJumping ) ), RecvPropBool( RECVINFO( m_bWasJumping ) ), RecvPropBool( RECVINFO( m_bFirstJumpFrame ) ), RecvPropTime( RECVINFO( m_flJumpStartTime ) ), RecvPropInt(RECVINFO(m_eAction)), RecvPropInt(RECVINFO(m_eCarryAnimation)), RecvPropInt(RECVINFO(m_eGesture)), RecvPropDataTable( "sdksharedlocaldata", 0, 0, &REFERENCE_RECV_TABLE(DT_SDKSharedLocalPlayerExclusive) ), END_RECV_TABLE() BEGIN_RECV_TABLE_NOBASE( C_SDKPlayer, DT_SDKLocalPlayerExclusive ) //new ios1.1 RecvPropVector( RECVINFO_NAME( m_vecNetworkOrigin, m_vecOrigin ) ), RecvPropFloat( RECVINFO( m_angEyeAngles[0] ) ), RecvPropFloat( RECVINFO( m_angEyeAngles[1] ) ), RecvPropFloat( RECVINFO( m_angCamViewAngles[0] ) ), RecvPropFloat( RECVINFO( m_angCamViewAngles[1] ) ), RecvPropVector(RECVINFO(m_vTargetPos)), RecvPropBool(RECVINFO(m_bIsAtTargetPos)), RecvPropBool(RECVINFO(m_bHoldAtTargetPos)), RecvPropTime( RECVINFO( m_flNextClientSettingsChangeTime ) ), RecvPropTime(RECVINFO(m_flNextJoin)), RecvPropBool(RECVINFO(m_bChargedshotBlocked)),
//----------------------------------------------------------------------------- // Purpose: // Input : **ppTable - // **ppObj - // Output : Returns true on success, false on failure. //----------------------------------------------------------------------------- bool C_SteamJet::GetPropEditInfo( RecvTable **ppTable, void **ppObj ) { *ppTable = &REFERENCE_RECV_TABLE(DT_SteamJet); *ppObj = this; return true; }
RecvProxy_Int32ToInt32( pData, pStruct, pOut ); // Reset the object sprite C_TFWeaponBuilder *pBuilder = ( C_TFWeaponBuilder * )pStruct; pBuilder->SetupObjectSelectionSprite(); } BEGIN_NETWORK_TABLE_NOBASE( C_TFWeaponBuilder, DT_BuilderLocalData ) RecvPropInt( RECVINFO(m_iObjectType), 0, RecvProxy_ObjectType ), RecvPropEHandle( RECVINFO(m_hObjectBeingBuilt) ), END_NETWORK_TABLE() IMPLEMENT_CLIENTCLASS_DT(C_TFWeaponBuilder, DT_TFWeaponBuilder, CTFWeaponBuilder) RecvPropInt( RECVINFO(m_iBuildState) ), RecvPropDataTable( "BuilderLocalData", 0, 0, &REFERENCE_RECV_TABLE( DT_BuilderLocalData ) ), END_RECV_TABLE() //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- C_TFWeaponBuilder::C_TFWeaponBuilder() { m_iBuildState = 0; m_iObjectType = BUILDER_INVALID_OBJECT; m_pSelectionTextureActive = NULL; m_pSelectionTextureInactive = NULL; m_iValidBuildPoseParam = -1; } //-----------------------------------------------------------------------------
RecvPropTime( RECVINFO( m_flShieldRaisedTime ) ), RecvPropTime( RECVINFO( m_flShieldLoweredTime ) ), #endif END_NETWORK_TABLE() BEGIN_NETWORK_TABLE( CWeaponCombatShield , DT_WeaponCombatShield ) #if !defined( CLIENT_DLL ) SendPropDataTable("this", 0, &REFERENCE_SEND_TABLE(DT_WeaponCombatShieldLocal), SendProxy_SendCombatShieldLocalWeaponDataTable ), SendPropTime( SENDINFO( m_flShieldUpStartTime ) ), SendPropTime( SENDINFO( m_flShieldDownStartTime ) ), SendPropInt( SENDINFO( m_iShieldState ), 3, SPROP_UNSIGNED ), SendPropInt( SENDINFO( m_bAllowPostFrame ), 1, SPROP_UNSIGNED ), SendPropInt( SENDINFO( m_bHasShieldParry ), 1, SPROP_UNSIGNED ), SendPropFloat(SENDINFO( m_flShieldHealth ), 8, SPROP_ROUNDDOWN, 0.0f, 1.0f ), #else RecvPropDataTable("this", 0, 0, &REFERENCE_RECV_TABLE(DT_WeaponCombatShieldLocal)), RecvPropTime( RECVINFO( m_flShieldUpStartTime ) ), RecvPropTime( RECVINFO( m_flShieldDownStartTime ) ), RecvPropInt( RECVINFO( m_iShieldState ) ), RecvPropInt( RECVINFO( m_bAllowPostFrame ) ), RecvPropInt( RECVINFO( m_bHasShieldParry ) ), RecvPropFloat(RECVINFO( m_flShieldHealth ) ), #endif END_NETWORK_TABLE() BEGIN_NETWORK_TABLE( CWeaponCombatShieldAlien, DT_WeaponCombatShieldAlien ) END_NETWORK_TABLE() BEGIN_PREDICTION_DATA( CWeaponCombatShield ) DEFINE_PRED_FIELD( CWeaponCombatShield, m_iShieldState, FIELD_INTEGER, FTYPEDESC_INSENDTABLE ),
IMPLEMENT_NETWORKCLASS_ALIASED( TFSniperRifle, DT_TFSniperRifle ) BEGIN_NETWORK_TABLE_NOBASE( CTFSniperRifle, DT_SniperRifleLocalData ) #if !defined( CLIENT_DLL ) SendPropFloat( SENDINFO(m_flChargedDamage), 0, SPROP_NOSCALE | SPROP_CHANGES_OFTEN ), #else RecvPropFloat( RECVINFO(m_flChargedDamage) ), #endif END_NETWORK_TABLE() BEGIN_NETWORK_TABLE( CTFSniperRifle, DT_TFSniperRifle ) #if !defined( CLIENT_DLL ) SendPropDataTable( "SniperRifleLocalData", 0, &REFERENCE_SEND_TABLE( DT_SniperRifleLocalData ), SendProxy_SendLocalWeaponDataTable ), #else RecvPropDataTable( "SniperRifleLocalData", 0, 0, &REFERENCE_RECV_TABLE( DT_SniperRifleLocalData ) ), #endif END_NETWORK_TABLE() BEGIN_PREDICTION_DATA( CTFSniperRifle ) #ifdef CLIENT_DLL DEFINE_PRED_FIELD( m_flUnzoomTime, FIELD_FLOAT, 0 ), DEFINE_PRED_FIELD( m_flRezoomTime, FIELD_FLOAT, 0 ), DEFINE_PRED_FIELD( m_bRezoomAfterShot, FIELD_BOOLEAN, 0 ), DEFINE_PRED_FIELD( m_flChargedDamage, FIELD_FLOAT, 0 ), #endif END_PREDICTION_DATA() LINK_ENTITY_TO_CLASS( tf_weapon_sniperrifle, CTFSniperRifle ); PRECACHE_WEAPON_REGISTER( tf_weapon_sniperrifle );
virtual void OnDataChanged( DataUpdateType_t updateType ); virtual void ClientThink(); private: C_EnvHeadcrabCanister( const C_EnvHeadcrabCanister & ); CEnvHeadcrabCanisterShared m_Shared; CNetworkVar( bool, m_bLanded ); }; EXTERN_RECV_TABLE(DT_EnvHeadcrabCanisterShared); IMPLEMENT_CLIENTCLASS_DT( C_EnvHeadcrabCanister, DT_EnvHeadcrabCanister, CEnvHeadcrabCanister ) RecvPropDataTable( RECVINFO_DT( m_Shared ), 0, &REFERENCE_RECV_TABLE(DT_EnvHeadcrabCanisterShared) ), RecvPropBool( RECVINFO( m_bLanded ) ), END_RECV_TABLE() //----------------------------------------------------------------------------- // Constructor //----------------------------------------------------------------------------- C_EnvHeadcrabCanister::C_EnvHeadcrabCanister() { } //----------------------------------------------------------------------------- // Destructor //-----------------------------------------------------------------------------
int m_iMaterialName; EntityParticleTrailInfo_t m_Info; EHANDLE m_hConstraintEntity; PMaterialHandle m_hMaterial; TimedEvent m_teParticleSpawn; }; //----------------------------------------------------------------------------- // Networking //----------------------------------------------------------------------------- IMPLEMENT_CLIENTCLASS_DT( C_EntityParticleTrail, DT_EntityParticleTrail, CEntityParticleTrail ) RecvPropInt(RECVINFO(m_iMaterialName)), RecvPropDataTable( RECVINFO_DT( m_Info ), 0, &REFERENCE_RECV_TABLE(DT_EntityParticleTrailInfo) ), RecvPropEHandle(RECVINFO(m_hConstraintEntity)), END_RECV_TABLE() //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- C_EntityParticleTrail::C_EntityParticleTrail( void ) { } C_EntityParticleTrail::~C_EntityParticleTrail() { ParticleMgr()->RemoveEffect( &m_ParticleEffect ); }
LINK_ENTITY_TO_CLASS( tfc_gamerules, CTFCGameRulesProxy ); IMPLEMENT_NETWORKCLASS_ALIASED( TFCGameRulesProxy, DT_TFCGameRulesProxy ) #ifdef CLIENT_DLL void RecvProxy_TFCGameRules( const RecvProp *pProp, void **pOut, void *pData, int objectID ) { CTFCGameRules *pRules = TFCGameRules(); Assert( pRules ); *pOut = pRules; } BEGIN_RECV_TABLE( CTFCGameRulesProxy, DT_TFCGameRulesProxy ) RecvPropDataTable( "tfc_gamerules_data", 0, 0, &REFERENCE_RECV_TABLE( DT_TFCGameRules ), RecvProxy_TFCGameRules ) END_RECV_TABLE() #else void *SendProxy_TFCGameRules( const SendProp *pProp, const void *pStructBase, const void *pData, CSendProxyRecipients *pRecipients, int objectID ) { CTFCGameRules *pRules = TFCGameRules(); Assert( pRules ); pRecipients->SetAllRecipients(); return pRules; } BEGIN_SEND_TABLE( CTFCGameRulesProxy, DT_TFCGameRulesProxy ) SendPropDataTable( "tfc_gamerules_data", 0, &REFERENCE_SEND_TABLE( DT_TFCGameRules ), SendProxy_TFCGameRules ) END_SEND_TABLE() #endif
for ( int i=0; i < len; i++ ) { IInterpolatedVar *pWatcher = &pVecIV->Element( i ); pWatcher->SetDebugName( s_m_iv_AnimOverlayNames[i] ); pEnt->AddVar( &pVec->Element( i ), pWatcher, LATCH_ANIMATION_VAR, true ); } // FIXME: need to set historical values of nOrder in pVecIV to MAX_OVERLAY } BEGIN_RECV_TABLE_NOBASE( C_BaseAnimatingOverlay, DT_OverlayVars ) RecvPropUtlVector( RECVINFO_UTLVECTOR_SIZEFN( m_AnimOverlay, ResizeAnimationLayerCallback ), C_BaseAnimatingOverlay::MAX_OVERLAYS, RecvPropDataTable(NULL, 0, 0, &REFERENCE_RECV_TABLE( DT_Animationlayer ) ) ) END_RECV_TABLE() IMPLEMENT_CLIENTCLASS_DT( C_BaseAnimatingOverlay, DT_BaseAnimatingOverlay, CBaseAnimatingOverlay ) RecvPropDataTable( "overlay_vars", 0, 0, &REFERENCE_RECV_TABLE( DT_OverlayVars ) ) END_RECV_TABLE() BEGIN_PREDICTION_DATA( C_BaseAnimatingOverlay ) /* DEFINE_FIELD( C_BaseAnimatingOverlay, m_Layer[0][2].m_nSequence, FIELD_INTEGER ), DEFINE_FIELD( C_BaseAnimatingOverlay, m_Layer[0][2].m_flCycle, FIELD_FLOAT ), DEFINE_FIELD( C_BaseAnimatingOverlay, m_Layer[0][2].m_flPlaybackRate, FIELD_FLOAT), DEFINE_FIELD( C_BaseAnimatingOverlay, m_Layer[0][2].m_flWeight, FIELD_FLOAT), DEFINE_FIELD( C_BaseAnimatingOverlay, m_Layer[1][2].m_nSequence, FIELD_INTEGER ),
END_PREDICTION_DATA() IMPLEMENT_NETWORKCLASS_ALIASED( BasePlasmaProjectile, DT_BasePlasmaProjectile) BEGIN_NETWORK_TABLE( CBasePlasmaProjectile, DT_BasePlasmaProjectile ) #if !defined( CLIENT_DLL ) SendPropDataTable(SENDINFO_DT(m_Shared), &REFERENCE_SEND_TABLE(DT_PlasmaProjectileShared)), SendPropExclude( "DT_BaseEntity", "m_vecVelocity" ), SendPropExclude( "DT_BaseEntity", "m_vecAbsOrigin" ), //SendPropVector(SENDINFO(m_vecGunOriginOffset), 0, SPROP_COORD), #else RecvPropDataTable(RECVINFO_DT(m_Shared), 0, &REFERENCE_RECV_TABLE(DT_PlasmaProjectileShared)), //RecvPropVector(RECVINFO(m_vecGunOriginOffset)), #endif END_NETWORK_TABLE() LINK_ENTITY_TO_CLASS( base_plasmaprojectile, CBasePlasmaProjectile ); PRECACHE_REGISTER(base_plasmaprojectile); BEGIN_PREDICTION_DATA( CBasePlasmaProjectile ) DEFINE_PRED_TYPEDESCRIPTION( m_Shared, CPlasmaProjectileShared ), DEFINE_PRED_FIELD( m_vecAbsOrigin, FIELD_VECTOR, FTYPEDESC_PRIVATE | FTYPEDESC_OVERRIDE ), DEFINE_PRED_FIELD( m_vecVelocity, FIELD_VECTOR, FTYPEDESC_PRIVATE | FTYPEDESC_OVERRIDE ),
END_NETWORK_TABLE() LINK_ENTITY_TO_CLASS( hl2_survival_gamerules, CHalfLife2SurvivalProxy ); IMPLEMENT_NETWORKCLASS_ALIASED( HalfLife2SurvivalProxy, DT_HalfLife2SurvivalProxy ) #ifdef CLIENT_DLL void RecvProxy_HL2SurvivalGameRules( const RecvProp *pProp, void **pOut, void *pData, int objectID ) { CHalfLife2Survival *pRules = HL2SurvivalGameRules(); Assert( pRules ); *pOut = pRules; } BEGIN_RECV_TABLE( CHalfLife2SurvivalProxy, DT_HalfLife2SurvivalProxy ) RecvPropDataTable( "hl2_survival_gamerules_data", 0, 0, &REFERENCE_RECV_TABLE( DT_HL2SurvivalGameRules ), RecvProxy_HL2SurvivalGameRules ) END_RECV_TABLE() #else void* SendProxy_HL2SurvivalGameRules( const SendProp *pProp, const void *pStructBase, const void *pData, CSendProxyRecipients *pRecipients, int objectID ) { CHalfLife2Survival *pRules = HL2SurvivalGameRules(); Assert( pRules ); pRecipients->SetAllRecipients(); return pRules; } BEGIN_SEND_TABLE( CHalfLife2SurvivalProxy, DT_HalfLife2SurvivalProxy ) SendPropDataTable( "hl2_survival_gamerules_data", 0, &REFERENCE_SEND_TABLE( DT_HL2SurvivalGameRules ), SendProxy_HL2SurvivalGameRules ) END_SEND_TABLE() #endif
RecvPropUtlVector( RECVINFO_UTLVECTOR( m_UtlVectorChar ), MAX_CHARARRAY_ELEMENTS, RecvPropInt( NULL, 0, sizeof( char ) ) ), RecvPropArray( RecvPropString(RECVINFO(m_Strings[0]), 0, RecvProxy_DTTestClientSubString), m_Strings), END_RECV_TABLE() BEGIN_RECV_TABLE_NOBASE(DTTestSub2Sub, DT_DTTestSub2Sub) RecvPropInt( RECVINFO( m_Int2 ), 32 ), END_RECV_TABLE() BEGIN_RECV_TABLE_NOBASE(DTTestSub2, DT_DTTestSub2) RecvPropDataTable(RECVINFO_DT(m_Sub), 0, &REFERENCE_RECV_TABLE(DT_DTTestSub2Sub)), RecvPropInt( RECVINFO( m_Int ) ), END_RECV_TABLE() // ------------------------------------------------------------------------------------------- // // DTTestClient and DataTable. // ------------------------------------------------------------------------------------------- // class DTTestClient { public: DTTestClientSub m_Sub; long m_Guard1;
} int m_WithProxy; }; // ---------------------------------------------------------------------------------------- // // Datatables. // ---------------------------------------------------------------------------------------- // BEGIN_RECV_TABLE_NOBASE( C_Test_ProxyToggle_Networkable, DT_ProxyToggle_ProxiedData ) RecvPropInt( RECVINFO( m_WithProxy ) ) END_RECV_TABLE() IMPLEMENT_CLIENTCLASS_DT( C_Test_ProxyToggle_Networkable, DT_ProxyToggle, CTest_ProxyToggle_Networkable ) RecvPropDataTable( "blah", 0, 0, &REFERENCE_RECV_TABLE( DT_ProxyToggle_ProxiedData ) ) END_RECV_TABLE() // ---------------------------------------------------------------------------------------- // // Console commands. // ---------------------------------------------------------------------------------------- // // The engine uses this to get the current value. CON_COMMAND_F( Test_ProxyToggle_EnsureValue, "Test_ProxyToggle_EnsureValue", FCVAR_CHEAT ) { if ( args.ArgC() < 2 ) { Error( "Test_ProxyToggle_EnsureValue: requires value parameter." ); }
void RunDataTableTest() { RecvTable *pRecvTable = &REFERENCE_RECV_TABLE(DT_DTTest); SendTable *pSendTable = &REFERENCE_SEND_TABLE(DT_DTTest); // Initialize the send and receive modules. SendTable_Init( &pSendTable, 1 ); RecvTable_Init( &pRecvTable, 1 ); pSendTable->SetWriteFlag( false ); // Send DataTable info to the client. unsigned char commBuf[8192]; bf_write bfWrite( "RunDataTableTest->commBuf", commBuf, sizeof(commBuf) ); if( !WriteSendTable_R( pSendTable, bfWrite, true ) ) { Assert( !"RunDataTableTest: SendTable_SendInfo failed." ); } bfWrite.WriteOneBit(0); // Receive the SendTable's info. bf_read bfRead( "RunDataTableTest->bfRead", commBuf, sizeof(commBuf)); while( bfRead.ReadOneBit() ) { bool bNeedsDecoder = bfRead.ReadOneBit()!=0; if( !RecvTable_RecvClassInfos( &bfRead, bNeedsDecoder ) ) { Assert( !"RunDataTableTest: RecvTable_ReadInfos failed." ); continue; } } // Register our receive table. if( !RecvTable_CreateDecoders( NULL ) ) { Assert(false); } // Setup the data with all zeros. DTTestServer dtServer; DTTestClient dtClient; unsigned char prevEncoded[4096]; unsigned char fullEncoded[4096]; memset(&dtServer, 0, sizeof(dtServer)); memset(&dtClient, 0, sizeof(dtClient)); memset(prevEncoded, 0, sizeof(prevEncoded)); SetGuardBytes( &dtClient ); // Now loop around, changing the data a little bit each time and send/recv deltas. int nIterations = 25; for( int iIteration=0; iIteration < nIterations; iIteration++ ) { // Change the server's data. g_bSendSub = true; if( (iIteration % 5) == 0 ) { g_bSendSub = false; // every 8th time, don't send the subtable } if( (iIteration & 3) == 0 ) { // Every once in a while, change ALL the properties. for( int iChange=0; iChange < NUMVARTESTINFOS; iChange++ ) g_VarTestInfos[iChange].m_ChangeFn( &dtServer ); } else { int nChanges = 3 + rand() % NUMVARTESTINFOS; for( int iChange=0; iChange < nChanges; iChange++ ) { int iInfo = rand() % NUMVARTESTINFOS; g_VarTestInfos[iInfo].m_ChangeFn( &dtServer ); } } // Fully encode it. bf_write bfFullEncoded( "RunDataTableTest->bfFullEncoded", fullEncoded, sizeof(fullEncoded) ); if( !SendTable_Encode( pSendTable, &dtServer, &bfFullEncoded, -1, NULL ) ) { Assert(false); } unsigned char deltaEncoded[4096]; bf_write bfDeltaEncoded( "RunDataTableTest->bfDeltaEncoded", deltaEncoded, sizeof(deltaEncoded) ); if ( iIteration == 0 ) { // On the first iteration, just write the whole state. if( !SendTable_Encode( pSendTable, &dtServer, &bfDeltaEncoded, -1, NULL ) ) { Assert( false ); } } else { // Figure out the delta between the newly encoded one and the previously encoded one. int deltaProps[MAX_DATATABLE_PROPS]; bf_read fullEncodedRead( "RunDataTableTest->fullEncodedRead", fullEncoded, sizeof( fullEncoded ), bfFullEncoded.GetNumBitsWritten() ); bf_read prevEncodedRead( "RunDataTableTest->prevEncodedRead", prevEncoded, sizeof( prevEncoded ) ); int nDeltaProps = SendTable_CalcDelta( pSendTable, prevEncoded, sizeof( prevEncoded ) * 8, fullEncoded, bfFullEncoded.GetNumBitsWritten(), deltaProps, ARRAYSIZE( deltaProps ), -1 ); Assert( nDeltaProps != -1 ); // BAD: buffer overflow // Reencode with just the delta. This is what is actually sent to the client. SendTable_WritePropList( pSendTable, fullEncoded, bfFullEncoded.GetNumBitsWritten(), &bfDeltaEncoded, -1111, deltaProps, nDeltaProps ); } memcpy( prevEncoded, fullEncoded, sizeof( prevEncoded ) ); // This step isn't necessary to have the client decode the data but it's here to test // RecvTable_CopyEncoding (and RecvTable_MergeDeltas). This call should just make an exact // copy of the encoded data. unsigned char copyEncoded[4096]; bf_read bfReadDeltaEncoded( "RunDataTableTest->bfReadDeltaEncoded", deltaEncoded, sizeof( deltaEncoded ) ); bf_write bfCopyEncoded( "RunDataTableTest->bfCopyEncoded", copyEncoded, sizeof(copyEncoded) ); RecvTable_CopyEncoding( pRecvTable, &bfReadDeltaEncoded, &bfCopyEncoded, -1 ); // Decode.. bf_read bfDecode( "RunDataTableTest->copyEncoded", copyEncoded, sizeof( copyEncoded ) ); if(!RecvTable_Decode(pRecvTable, &dtClient, &bfDecode, 1111)) { Assert(false); } // Make sure it didn't go into memory it shouldn't have. CheckGuardBytes( &dtClient ); // Verify that only the changed properties were sent and that they were received correctly. CompareDTTest( &dtClient, &dtServer ); } SendTable_Term(); RecvTable_Term(); }
// memdbgon must be the last include file in a .cpp file!!! #include "tier0/memdbgon.h" IMPLEMENT_CLIENTCLASS_DT_NOBASE( C_Func_Dust, DT_Func_Dust, CFunc_Dust ) RecvPropInt( RECVINFO(m_Color), 0, RecvProxy_Int32ToColor32 ), RecvPropInt( RECVINFO(m_SpawnRate) ), RecvPropFloat( RECVINFO(m_flSizeMin) ), RecvPropFloat( RECVINFO(m_flSizeMax) ), RecvPropInt( RECVINFO(m_LifetimeMin) ), RecvPropInt( RECVINFO(m_LifetimeMax) ), RecvPropInt( RECVINFO(m_DustFlags) ), RecvPropInt( RECVINFO(m_SpeedMax) ), RecvPropInt( RECVINFO(m_DistMax) ), RecvPropInt( RECVINFO( m_nModelIndex ) ), RecvPropFloat( RECVINFO( m_FallSpeed ) ), RecvPropDataTable( RECVINFO_DT( m_Collision ), 0, &REFERENCE_RECV_TABLE(DT_CollisionProperty) ), END_RECV_TABLE() // ------------------------------------------------------------------------------------ // // CDustEffect implementation. // ------------------------------------------------------------------------------------ // #define DUST_ACCEL 50 void CDustEffect::RenderParticles( CParticleRenderIterator *pIterator ) { const CFuncDustParticle *pParticle = (const CFuncDustParticle*)pIterator->GetFirst(); while ( pParticle ) {
// Input : bool - //----------------------------------------------------------------------------- void C_TEEffectDispatch::PostDataUpdate( DataUpdateType_t updateType ) { // Find the effect name. const char *pEffectName = networkstringtable->GetString( g_StringTableEffectDispatch, m_EffectData.GetEffectNameIndex() ); if ( pEffectName ) { DispatchEffectToCallback( pEffectName, m_EffectData ); } } IMPLEMENT_CLIENTCLASS_EVENT_DT( C_TEEffectDispatch, DT_TEEffectDispatch, CTEEffectDispatch ) RecvPropDataTable( RECVINFO_DT( m_EffectData ), 0, &REFERENCE_RECV_TABLE( DT_EffectData ) ) END_RECV_TABLE() //----------------------------------------------------------------------------- // Purpose: Clientside version //----------------------------------------------------------------------------- void TE_DispatchEffect( IRecipientFilter& filter, float delay, const Vector &pos, const char *pName, const CEffectData &data ) { DispatchEffectToCallback( pName, data ); } // Client version of dispatch effect, for predicted weapons void DispatchEffect( const char *pName, const CEffectData &data ) { CPASFilter filter( data.m_vOrigin );
#include "vgui_healthbar.h" #include "ObjectControlPanel.h" #include "tf_shareddefs.h" #include "VGUI_BitmapButton.h" #include "C_Func_Resource.h" // memdbgon must be the last include file in a .cpp file!!! #include "tier0/memdbgon.h" BEGIN_RECV_TABLE_NOBASE( C_ObjectResourcePump, DT_ResourcePumpTeamOnlyVars ) RecvPropInt( RECVINFO(m_iPumpLevel) ), RecvPropEHandle( RECVINFO(m_hResourceZone) ), END_RECV_TABLE() IMPLEMENT_CLIENTCLASS_DT(C_ObjectResourcePump, DT_ResourcePump, CObjectResourcePump) RecvPropDataTable( "teamonly", 0, 0, &REFERENCE_RECV_TABLE( DT_ResourcePumpTeamOnlyVars ) ) END_RECV_TABLE() C_ObjectResourcePump::C_ObjectResourcePump() { m_iPumpLevel = 1; m_pResourceBar = NULL; } void C_ObjectResourcePump::SetDormant( bool bDormant ) { BaseClass::SetDormant( bDormant ); ENTITY_PANEL_ACTIVATE( "resource_pump", !bDormant ); }
BEGIN_RECV_TABLE_NOBASE( C_DHL_Player, DT_DHLLocalPlayerExclusive ) RecvPropInt( RECVINFO( m_iDHLArmor ) ), RecvPropBool( RECVINFO(m_bProneStandReady) ), RecvPropBool( RECVINFO(m_bIsBleeding) ), RecvPropBool( RECVINFO(m_bBandaging) ), RecvPropInt( RECVINFO(m_iSelectedInventoryValue) ), RecvPropBool( RECVINFO(m_bScoped) ), RecvPropInt( RECVINFO(m_iStylePoints) ), RecvPropInt( RECVINFO(m_iItemFlags) ), RecvPropBool( RECVINFO(m_bAutoReload) ), END_RECV_TABLE() IMPLEMENT_CLIENTCLASS_DT(C_DHL_Player, DT_DHL_Player, CDHL_Player) RecvPropDataTable( "dhllocaldata", 0, 0, &REFERENCE_RECV_TABLE(DT_DHLLocalPlayerExclusive) ), RecvPropInt( RECVINFO( m_iStuntState ) ), RecvPropInt( RECVINFO( m_iStuntDir ) ), RecvPropBool( RECVINFO(m_bProne) ), END_RECV_TABLE() BEGIN_PREDICTION_DATA( C_DHL_Player ) DEFINE_PRED_FIELD( m_iStuntState, FIELD_INTEGER, FTYPEDESC_INSENDTABLE ), DEFINE_PRED_FIELD( m_iStuntDir, FIELD_INTEGER, FTYPEDESC_INSENDTABLE ), DEFINE_PRED_FIELD( m_bProne, FIELD_BOOLEAN, FTYPEDESC_INSENDTABLE ), DEFINE_FIELD( m_bProneStandReady, FIELD_BOOLEAN ), END_PREDICTION_DATA() C_DHL_Player::C_DHL_Player() {
LINK_ENTITY_TO_CLASS( sdk_gamerules, CSDKGameRulesProxy ); IMPLEMENT_NETWORKCLASS_ALIASED( SDKGameRulesProxy, DT_SDKGameRulesProxy ) #ifdef CLIENT_DLL void RecvProxy_SDKGameRules( const RecvProp *pProp, void **pOut, void *pData, int objectID ) { CSDKGameRules *pRules = SDKGameRules(); Assert( pRules ); *pOut = pRules; } BEGIN_RECV_TABLE( CSDKGameRulesProxy, DT_SDKGameRulesProxy ) RecvPropDataTable( "sdk_gamerules_data", 0, 0, &REFERENCE_RECV_TABLE( DT_SDKGameRules ), RecvProxy_SDKGameRules ) END_RECV_TABLE() #else void *SendProxy_SDKGameRules( const SendProp *pProp, const void *pStructBase, const void *pData, CSendProxyRecipients *pRecipients, int objectID ) { CSDKGameRules *pRules = SDKGameRules(); Assert( pRules ); pRecipients->SetAllRecipients(); return pRules; } BEGIN_SEND_TABLE( CSDKGameRulesProxy, DT_SDKGameRulesProxy ) SendPropDataTable( "sdk_gamerules_data", 0, &REFERENCE_SEND_TABLE( DT_SDKGameRules ), SendProxy_SDKGameRules ) END_SEND_TABLE() #endif
IMPLEMENT_NETWORKCLASS_ALIASED(TFHunterRifle, DT_TFHunterRifle) BEGIN_NETWORK_TABLE_NOBASE( CTFHunterRifle, DT_HunterRifleLocalData ) #if !defined( CLIENT_DLL ) SendPropFloat( SENDINFO(m_flChargedSpread), 0, SPROP_NOSCALE | SPROP_CHANGES_OFTEN ), #else RecvPropFloat( RECVINFO(m_flChargedSpread) ), #endif END_NETWORK_TABLE() BEGIN_NETWORK_TABLE(CTFHunterRifle, DT_TFHunterRifle) #if !defined( CLIENT_DLL ) SendPropDataTable( "HunterRifleLocalData", 0, &REFERENCE_SEND_TABLE( DT_HunterRifleLocalData ), SendProxy_SendLocalWeaponDataTable ), #else RecvPropDataTable("HunterRifleLocalData", 0, 0, &REFERENCE_RECV_TABLE(DT_HunterRifleLocalData)), #endif END_NETWORK_TABLE() BEGIN_PREDICTION_DATA( CTFHunterRifle ) #ifdef CLIENT_DLL DEFINE_PRED_FIELD( m_flUnzoomTime, FIELD_FLOAT, 0 ), DEFINE_PRED_FIELD( m_flRezoomTime, FIELD_FLOAT, 0 ), DEFINE_PRED_FIELD( m_bRezoomAfterShot, FIELD_BOOLEAN, 0 ), DEFINE_PRED_FIELD( m_flChargedSpread, FIELD_FLOAT, 0 ), #endif END_PREDICTION_DATA() LINK_ENTITY_TO_CLASS( tf_weapon_hunterrifle, CTFHunterRifle ); PRECACHE_WEAPON_REGISTER( tf_weapon_hunterrifle );
BEGIN_RECV_TABLE_NOBASE( C_HL2MP_Player, DT_HL2MPLocalPlayerExclusive ) RecvPropVector( RECVINFO_NAME( m_vecNetworkOrigin, m_vecOrigin ) ), RecvPropFloat( RECVINFO( m_angEyeAngles[0] ) ), // RecvPropFloat( RECVINFO( m_angEyeAngles[1] ) ), END_RECV_TABLE() BEGIN_RECV_TABLE_NOBASE( C_HL2MP_Player, DT_HL2MPNonLocalPlayerExclusive ) RecvPropVector( RECVINFO_NAME( m_vecNetworkOrigin, m_vecOrigin ) ), RecvPropFloat( RECVINFO( m_angEyeAngles[0] ) ), RecvPropFloat( RECVINFO( m_angEyeAngles[1] ) ), END_RECV_TABLE() IMPLEMENT_CLIENTCLASS_DT(C_HL2MP_Player, DT_HL2MP_Player, CHL2MP_Player) RecvPropDataTable( "hl2mplocaldata", 0, 0, &REFERENCE_RECV_TABLE(DT_HL2MPLocalPlayerExclusive) ), RecvPropDataTable( "hl2mpnonlocaldata", 0, 0, &REFERENCE_RECV_TABLE(DT_HL2MPNonLocalPlayerExclusive) ), RecvPropEHandle( RECVINFO( m_hRagdoll ) ), RecvPropBool( RECVINFO( m_bSpawnInterpCounter ) ), RecvPropInt( RECVINFO( m_iPlayerSoundType) ), RecvPropBool( RECVINFO( m_fIsWalking ) ), END_RECV_TABLE() BEGIN_PREDICTION_DATA( C_HL2MP_Player ) DEFINE_PRED_FIELD( m_flCycle, FIELD_FLOAT, FTYPEDESC_OVERRIDE | FTYPEDESC_PRIVATE | FTYPEDESC_NOERRORCHECK ), DEFINE_PRED_FIELD( m_fIsWalking, FIELD_BOOLEAN, FTYPEDESC_INSENDTABLE ), DEFINE_PRED_FIELD( m_nSequence, FIELD_INTEGER, FTYPEDESC_OVERRIDE | FTYPEDESC_PRIVATE | FTYPEDESC_NOERRORCHECK ), DEFINE_PRED_FIELD( m_flPlaybackRate, FIELD_FLOAT, FTYPEDESC_OVERRIDE | FTYPEDESC_PRIVATE | FTYPEDESC_NOERRORCHECK ), DEFINE_PRED_ARRAY_TOL( m_flEncodedController, FIELD_FLOAT, MAXSTUDIOBONECTRLS, FTYPEDESC_OVERRIDE | FTYPEDESC_PRIVATE, 0.02f ),
IRagdoll* C_NEORagdoll::GetIRagdoll() const { return m_pRagdoll; } BEGIN_RECV_TABLE_NOBASE( C_NEOPlayer, DT_NEOLocalPlayerExclusive ) RecvPropInt( RECVINFO( m_iShotsFired ) ), RecvPropFloat( RECVINFO( m_fSprintNRG ) ), RecvPropFloat( RECVINFO( m_fThermopticNRG ) ), RecvPropInt( RECVINFO( m_iReinforceTimer ) ), RecvPropInt( RECVINFO( m_iSprint ) ), RecvPropFloat( RECVINFO( m_fTurnSpeed ) ) END_RECV_TABLE() IMPLEMENT_CLIENTCLASS_DT( C_NEOPlayer, DT_NEOPlayer, CNEOPlayer ) RecvPropDataTable( "neolocaldata", 0, 0, &REFERENCE_RECV_TABLE( DT_NEOLocalPlayerExclusive ) ), RecvPropFloat( RECVINFO( m_angEyeAngles[ 0 ] ) ), RecvPropFloat( RECVINFO( m_angEyeAngles[ 1 ] ) ), RecvPropInt( RECVINFO( m_iThrowGrenadeCounter ) ), RecvPropEHandle( RECVINFO( m_hRagdoll ) ), RecvPropInt( RECVINFO( m_iClassType ) ), RecvPropInt( RECVINFO( m_iLives ) ), RecvPropInt( RECVINFO( m_iRank ) ), RecvPropInt( RECVINFO( m_iStar ) ), RecvPropInt( RECVINFO( m_iLean ) ), RecvPropInt( RECVINFO( m_iThermoptic ) ), RecvPropInt( RECVINFO( m_iNMFlash ) ), RecvPropInt( RECVINFO( m_iVision ) ), RecvPropInt( RECVINFO( m_bIsVIP ) ) END_RECV_TABLE()
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 #endif END_NETWORK_TABLE() #if !defined( CLIENT_DLL ) 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 ),
inline float UTIL_AngleMod(float a) { return anglemod(a); } //----------------------------------------------------------------------------- // Purpose: Base Sentrygun //----------------------------------------------------------------------------- BEGIN_RECV_TABLE_NOBASE(C_ObjectSentrygun, DT_SentrygunTeamOnlyVars) RecvPropInt(RECVINFO( m_iAmmo )), END_RECV_TABLE() IMPLEMENT_CLIENTCLASS_DT(C_ObjectSentrygun, DT_ObjectSentrygun, CObjectSentrygun) RecvPropInt( RECVINFO( m_iBaseTurnRate ) ), RecvPropEHandle(RECVINFO(m_hEnemy)), RecvPropDataTable( "teamonly", 0, 0, &REFERENCE_RECV_TABLE( DT_SentrygunTeamOnlyVars )), RecvPropInt(RECVINFO(m_bTurtled)), RecvPropInt( RECVINFO( m_nAnimationParity ) ), RecvPropInt( RECVINFO( m_nOrientationParity ) ), END_RECV_TABLE() //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- C_ObjectSentrygun::C_ObjectSentrygun() { m_fBoneXRotator = 0; m_fBoneYRotator = 0; m_iAmmo = 0; m_bTurtled = false; m_flStartedTurtlingAt = 0;