void CPlayerHealthProxy::OnBind( void *pArg ) { // NOTE: Player health max is not available on the server... C_BaseEntity *pEntity = BindArgToEntity( pArg ); C_BaseTFPlayer* pPlayer = dynamic_cast<C_BaseTFPlayer*>(pEntity); if (!pPlayer) return; Assert( m_pResult ); SetFloatResult( pPlayer->HealthFraction() * m_Factor.GetFloat() ); /* // Should we draw their health? // If he's not on our team we can't see it unless we're a command with "targetinginfo". if ( GetLocalTeam() != GetTeam() && !(local->HasNamedTechnology("targetinginfo") && IsLocalPlayerClass(TFCLASS_COMMANDO) )) return drawn; // Don't draw health bars above myself if ( local == this ) return drawn; // Don't draw health bars over dead/dying player if ( GetHealth() <= 0 ) return drawn; return drawn; */ }
void CPlayerViewProxy::OnBind( void *pC_BaseEntity ) { if (!pC_BaseEntity) return; // Find the view angle between the player and this entity.... C_BaseEntity *pEntity = BindArgToEntity( pC_BaseEntity ); C_BaseEntity* pPlayer = C_BasePlayer::GetLocalPlayer(); if (!pPlayer) return; Vector delta; VectorSubtract( pEntity->WorldSpaceCenter(), pPlayer->WorldSpaceCenter(), delta ); VectorNormalize( delta ); Vector forward; AngleVectors( pPlayer->GetAbsAngles(), &forward ); Assert( m_pResult ); SetFloatResult( DotProduct( forward, delta ) * m_Factor ); if ( ToolsEnabled() ) { ToolFramework_RecordMaterialParams( GetMaterial() ); } }
void CProxyHealth::OnBind( void *pC_BaseEntity ) { if (!pC_BaseEntity) return; C_BaseEntity *pEntity = BindArgToEntity( pC_BaseEntity ); Assert( m_pResult ); SetFloatResult( pEntity->HealthFraction() * m_Factor.GetFloat() ); }
void CPlayerHealTimeProxy::OnBind( void *pArg ) { // NOTE: Player health max is not available on the server... C_BaseEntity *pEntity = BindArgToEntity( pArg ); C_BaseTFPlayer* pPlayer = dynamic_cast<C_BaseTFPlayer*>(pEntity); if (!pPlayer) return; Assert( m_pResult ); float dt = gpGlobals->curtime - pPlayer->GetLastGainHealthTime(); SetFloatResult( dt * m_Factor.GetFloat() ); }
void CConveyorMaterialProxy::OnBind( void *pC_BaseEntity ) { if( !pC_BaseEntity ) return; C_BaseEntity *pEntity = BindArgToEntity( pC_BaseEntity ); if ( !pEntity ) return; C_FuncConveyor *pConveyor = dynamic_cast<C_FuncConveyor*>(pEntity); if ( !pConveyor ) return; if ( !m_pTextureScrollVar ) { return; } float flConveyorSpeed = pConveyor->GetConveyorSpeed(); float flRate = abs( flConveyorSpeed ) / 128.0; float flAngle = (flConveyorSpeed >= 0) ? 180 : 0; float sOffset = gpGlobals->curtime * cos( flAngle * ( M_PI / 180.0f ) ) * flRate; float tOffset = gpGlobals->curtime * sin( flAngle * ( M_PI / 180.0f ) ) * flRate; // make sure that we are positive if( sOffset < 0.0f ) { sOffset += 1.0f + -( int )sOffset; } if( tOffset < 0.0f ) { tOffset += 1.0f + -( int )tOffset; } // make sure that we are in a [0,1] range sOffset = sOffset - ( int )sOffset; tOffset = tOffset - ( int )tOffset; if (m_pTextureScrollVar->GetType() == MATERIAL_VAR_TYPE_MATRIX) { VMatrix mat; MatrixBuildTranslation( mat, sOffset, tOffset, 0.0f ); m_pTextureScrollVar->SetMatrixValue( mat ); } else { m_pTextureScrollVar->SetVecValue( sOffset, tOffset, 0.0f ); } }
void CPlayerScoreProxy::OnBind( void *pArg ) { // Find the view angle between the player and this entity.... C_BaseEntity *pEntity = BindArgToEntity( pArg ); C_BaseTFPlayer* pPlayer = dynamic_cast<C_BaseTFPlayer*>(pEntity); if (!pPlayer) return; if ( !g_PR ) return; int score = g_PR->Get_Score(pPlayer->index); Assert( m_pResult ); SetFloatResult( score * m_Factor.GetFloat() ); }
//----------------------------------------------------------------------------- //----------------------------------------------------------------------------- void CTFSunroofProxy::OnBind( void *pArg ) { C_BaseEntity *pEntity = BindArgToEntity( pArg ); C_BaseTFFourWheelVehicle* pVehicle = dynamic_cast<C_BaseTFFourWheelVehicle*>(pEntity); if( !pVehicle ) return; if( pVehicle->GetPassengerCount() ) { SetFloatResult(0.f); } else { SetFloatResult(1.f); } }
void CEntityRandomProxy::OnBind( void *pC_BaseEntity ) { // Find the view angle between the player and this entity.... if (!pC_BaseEntity) return; // Find the view angle between the player and this entity.... C_BaseEntity *pEntity = BindArgToEntity( pC_BaseEntity ); Assert( m_pResult ); m_pResult->SetFloatValue( pEntity->ProxyRandomValue() * m_Factor.GetFloat() ); if ( ToolsEnabled() ) { ToolFramework_RecordMaterialParams( GetMaterial() ); } }
void CEntitySpeedProxy::OnBind( void *pC_BaseEntity ) { // Find the view angle between the player and this entity.... if (!pC_BaseEntity) return; // Find the view angle between the player and this entity.... C_BaseEntity *pEntity = BindArgToEntity( pC_BaseEntity ); Assert( m_pResult ); m_pResult->SetFloatValue( pEntity->GetLocalVelocity().Length() ); if ( ToolsEnabled() ) { ToolFramework_RecordMaterialParams( GetMaterial() ); } }
void C_BloodyTextureProxy::OnBind(void* pC_BaseEntity) { if (!pC_BaseEntity) return; C_BaseEntity *pEntity = BindArgToEntity(pC_BaseEntity); C_BaseViewModel *pViewModel = dynamic_cast<C_BaseViewModel *>(pEntity); if (pViewModel) { C_BasePlayer *pOwner = ToBasePlayer(pViewModel->GetOwner()); if (pOwner) blendFactor->SetFloatValue(pOwner->m_bShouldDrawBloodOverlay ? 1.0f : 0.0f); } if (ToolsEnabled()) ToolFramework_RecordMaterialParams(GetMaterial()); }
void CPlayerTeamMatchProxy::OnBind( void *pC_BaseEntity ) { if (!pC_BaseEntity) return; // Find the distance between the player and this entity.... C_BaseEntity *pEntity = BindArgToEntity( pC_BaseEntity ); C_BaseEntity* pPlayer = C_BasePlayer::GetLocalPlayer(); if (!pPlayer) return; Assert( m_pResult ); SetFloatResult( (pEntity->GetTeamNumber() == pPlayer->GetTeamNumber()) ? 1.0 : 0.0 ); if ( ToolsEnabled() ) { ToolFramework_RecordMaterialParams( GetMaterial() ); } }
//----------------------------------------------------------------------------- // Does the dirty deed //----------------------------------------------------------------------------- void CBaseToggleTextureProxy::OnBind( void *pC_BaseEntity ) { assert ( m_TextureVar ); if (!pC_BaseEntity) return; if( m_TextureVar->GetType() != MATERIAL_VAR_TYPE_TEXTURE ) { return; } ITexture *pTexture = NULL; pTexture = m_TextureVar->GetTextureValue(); if ( pTexture == NULL ) return; C_BaseEntity *pEntity = BindArgToEntity( pC_BaseEntity ); if ( pEntity == NULL ) return; int numFrames = pTexture->GetNumAnimationFrames(); int frame = pEntity->GetTextureFrameIndex(); int intFrame = ((int)frame) % numFrames; if ( m_WrapAnimation == false ) { if ( frame > numFrames ) intFrame = numFrames; } m_TextureFrameNumVar->SetIntValue( intFrame ); if ( ToolsEnabled() ) { ToolFramework_RecordMaterialParams( GetMaterial() ); } }
void CPlayerProximityProxy::OnBind( void *pC_BaseEntity ) { if (!pC_BaseEntity) return; // Find the distance between the player and this entity.... C_BaseEntity *pEntity = BindArgToEntity( pC_BaseEntity ); C_BaseEntity* pPlayer = C_BasePlayer::GetLocalPlayer(); if (!pPlayer || !pEntity) //<-- GE_DLL return; Vector delta; VectorSubtract( pEntity->WorldSpaceCenter(), pPlayer->WorldSpaceCenter(), delta ); Assert( m_pResult ); SetFloatResult( delta.Length() * m_Factor ); if ( ToolsEnabled() ) { ToolFramework_RecordMaterialParams( GetMaterial() ); } }