本文整理汇总了C++中IMaterialVar::SetFloatValue方法的典型用法代码示例。如果您正苦于以下问题:C++ IMaterialVar::SetFloatValue方法的具体用法?C++ IMaterialVar::SetFloatValue怎么用?C++ IMaterialVar::SetFloatValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IMaterialVar
的用法示例。
在下文中一共展示了IMaterialVar::SetFloatValue方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnBind
//-----------------------------------------------------------------------------
// Purpose:
// Input :
//-----------------------------------------------------------------------------
void CViewModelInvisProxy::OnBind( C_BaseEntity *pEnt )
{
if ( !m_pPercentInvisible )
return;
if ( !pEnt )
return;
CTFViewModel *pVM = dynamic_cast<CTFViewModel *>( pEnt );
if ( !pVM )
{
m_pPercentInvisible->SetFloatValue( 0.0f );
return;
}
CTFPlayer *pPlayer = ToTFPlayer( pVM->GetOwner() );
if ( !pPlayer )
{
m_pPercentInvisible->SetFloatValue( 0.0f );
return;
}
float flPercentInvisible = pPlayer->GetPercentInvisible();
// remap from 0.22 to 0.5
// but drop to 0.0 if we're not invis at all
float flWeaponInvis = ( flPercentInvisible < 0.01 ) ?
0.0 :
RemapVal( flPercentInvisible, 0.0, 1.0, tf_vm_min_invis.GetFloat(), tf_vm_max_invis.GetFloat() );
m_pPercentInvisible->SetFloatValue( flWeaponInvis );
}
示例2: DrawModel
//-----------------------------------------------------------------------------
// Purpose: Updates and renders all effects
//-----------------------------------------------------------------------------
int C_HopwireExplosion::DrawModel( int flags )
{
AddParticles();
#ifndef C17
CMatRenderContextPtr pRenderContext( materials );
pRenderContext->Flush();
UpdateRefractTexture();
IMaterial *pMat = materials->FindMaterial( "effects/strider_pinch_dudv", TEXTURE_GROUP_CLIENT_EFFECTS );
float refract = m_FXCoreAlpha.Interp( gpGlobals->curtime );
float scale = m_FXCoreScale.Interp( gpGlobals->curtime );
IMaterialVar *pVar = pMat->FindVar( "$refractamount", NULL );
pVar->SetFloatValue( refract );
pRenderContext->Bind( pMat, (IClientRenderable*)this );
float sin1 = sinf( gpGlobals->curtime * 10 );
float sin2 = sinf( gpGlobals->curtime );
float scaleY = ( sin1 * sin2 ) * 32.0f;
float scaleX = (sin2 * sin2) * 32.0f;
// FIXME: The ball needs to sort properly at all times
static color32 white = {255,255,255,255};
DrawSpriteTangentSpace( GetRenderOrigin() + ( CurrentViewForward() * 128.0f ), scale+scaleX, scale+scaleY, white );
#endif
return 1;
}
示例3: OnBind
void CStatusEffectSkinProxy::OnBind( C_BaseEntity *pEnt )
{
float flEffectMagnitude;
if (pEnt->IsPlayer() && ToCFPlayer(pEnt))
{
C_CFPlayer* pPlayer = ToCFPlayer(pEnt);
flEffectMagnitude = pPlayer->m_pStats->GetEffectFromBitmask(STATUSEFFECT_SLOWNESS);
}
else if (pEnt->IsNPC() && dynamic_cast<C_CFActor*>(pEnt))
{
flEffectMagnitude = dynamic_cast<C_CFActor*>(pEnt)->m_flEffectMagnitude;
}
else
return;
if (m_pDetailBlend)
{
float flCurrent = m_pDetailBlend->GetFloatValue();
float flGoal = RemapValClamped(flEffectMagnitude, 0.0f, 1.0f, 0.3f, 1.0f );
if (flEffectMagnitude < 0.01)
flGoal = 0.0f;
m_pDetailBlend->SetFloatValue( Approach(flGoal, flCurrent, gpGlobals->frametime/10) );
}
}
示例4: OnBind
void CAlphaMaterialProxy::OnBind( C_BaseEntity *pEnt )
{
if (m_AlphaVar)
{
m_AlphaVar->SetFloatValue( pEnt->m_clrRender->a );
}
}
示例5: DrawHalo
//-----------------------------------------------------------------------------
// Purpose:
// Input : pMaterial -
// source -
// color -
//-----------------------------------------------------------------------------
void DrawHalo(IMaterial* pMaterial, const Vector& source, float scale, float const* color, float flHDRColorScale )
{
static unsigned int nHDRColorScaleCache = 0;
Vector point, screen;
if( pMaterial )
{
IMaterialVar *pHDRColorScaleVar = pMaterial->FindVarFast( "$hdrcolorscale", &nHDRColorScaleCache );
if( pHDRColorScaleVar )
{
pHDRColorScaleVar->SetFloatValue( flHDRColorScale );
}
}
CMatRenderContextPtr pRenderContext( materials );
IMesh* pMesh = pRenderContext->GetDynamicMesh( );
CMeshBuilder meshBuilder;
meshBuilder.Begin( pMesh, MATERIAL_QUADS, 1 );
// Transform source into screen space
ScreenTransform( source, screen );
meshBuilder.Color3fv (color);
meshBuilder.TexCoord2f (0, 0, 1);
VectorMA (source, -scale, CurrentViewUp(), point);
VectorMA (point, -scale, CurrentViewRight(), point);
meshBuilder.Position3fv (point.Base());
meshBuilder.AdvanceVertex();
meshBuilder.Color3fv (color);
meshBuilder.TexCoord2f (0, 0, 0);
VectorMA (source, scale, CurrentViewUp(), point);
VectorMA (point, -scale, CurrentViewRight(), point);
meshBuilder.Position3fv (point.Base());
meshBuilder.AdvanceVertex();
meshBuilder.Color3fv (color);
meshBuilder.TexCoord2f (0, 1, 0);
VectorMA (source, scale, CurrentViewUp(), point);
VectorMA (point, scale, CurrentViewRight(), point);
meshBuilder.Position3fv (point.Base());
meshBuilder.AdvanceVertex();
meshBuilder.Color3fv (color);
meshBuilder.TexCoord2f (0, 1, 1);
VectorMA (source, -scale, CurrentViewUp(), point);
VectorMA (point, scale, CurrentViewRight(), point);
meshBuilder.Position3fv (point.Base());
meshBuilder.AdvanceVertex();
meshBuilder.End();
pMesh->Draw();
}
示例6: OnBind
void CLampBeamProxy::OnBind( C_BaseEntity *pEnt )
{
if ( !m_pFadeValue )
return;
Vector vecLocal = pEnt->GetAbsOrigin() - CurrentViewOrigin();
VectorNormalize( vecLocal );
float fade = 1.0 - fabs( vecLocal.z );
m_pFadeValue->SetFloatValue( fade );
}
示例7: OnBind
void CzTestMaterialProxy::OnBind( void *pC_BaseEntity )
{
C_BaseEntity *pEnt = ( C_BaseEntity * )pC_BaseEntity;
if( !pEnt )
{
return;
}
if (m_AlphaVar)
{
m_AlphaVar->SetFloatValue( pEnt->m_clrRender.a );
}
}
示例8: OnBind
void CHeliBladeMaterialProxy::OnBind( C_BaseEntity *pEnt )
{
if (!m_AlphaVar)
return;
C_BaseHelicopter *pHeli = dynamic_cast<C_BaseHelicopter*>( pEnt );
if ( pHeli )
{
float dt = gpGlobals->curtime - pHeli->StartupTime();
dt /= FADE_IN_TIME;
dt = clamp( dt, 0.0f, 1.0f );
if ( m_bFadeOut )
{
dt = 1.0f - dt;
}
m_AlphaVar->SetFloatValue( dt );
}
else
{
m_AlphaVar->SetFloatValue( 1.0f );
}
}
示例9: SetFrame
void CEngineSprite::SetFrame( float frame )
{
if ( IsAVI() )
{
avi->SetFrame( m_hAVIMaterial, frame );
}
else
{
IMaterialVar* pFrameVar = m_material->FindVarFast( "$frame", &frameCache );
if (pFrameVar)
{
pFrameVar->SetFloatValue( frame );
}
return;
}
}
示例10: OnBind
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());
}
示例11: OnBind
void CPupilProxy::OnBind( C_BaseEntity *pBaseEntity )
{
if (!pBaseEntity || !m_pAnimatedTextureVar )
return;
if( m_pAnimatedTextureVar->GetType() != MATERIAL_VAR_TYPE_TEXTURE )
return;
ITexture *pTexture = m_pAnimatedTextureVar->GetTextureValue();
int nFrameCount = pTexture->GetNumAnimationFrames();
// Compute the lighting at the eye position of the entity; use it to dialate the pupil
Vector forward;
pBaseEntity->GetVectors( &forward, NULL, NULL );
Vector eyePt = pBaseEntity->EyePosition();
Vector color;
engine->ComputeLighting( eyePt, &forward, false, color );
// Compute the intensity...
float flIntensity = ( 0.299f * color[0] + 0.587f * color[1] + 0.114f * color[2] ) * 0.5;
flIntensity = clamp( flIntensity, 0, 1 );
float flLastIntensity = m_pLightingVar->GetFloatValue( );
if ( flIntensity > flLastIntensity )
{
float flMaxChange = m_flPupilCloseRate.GetFloat() * gpGlobals->frametime;
if ( flIntensity > (flMaxChange + flLastIntensity) )
{
flIntensity = flLastIntensity + flMaxChange;
}
}
else
{
float flMaxChange = m_flPupilOpenRate.GetFloat() * gpGlobals->frametime;
if ( flIntensity < (flLastIntensity - flMaxChange) )
{
flIntensity = flLastIntensity - flMaxChange;
}
}
int nFrame = nFrameCount * flIntensity;
nFrame = clamp( nFrame, 0, nFrameCount - 1 );
m_pAnimatedTextureFrameNumVar->SetIntValue( nFrame );
m_pLightingVar->SetFloatValue( flIntensity );
}
示例12: ASW_SetMaterialVarFloat
inline bool ASW_SetMaterialVarFloat( IMaterial* pMat, const char* pVarName, float flValue )
{
Assert( pMat != NULL );
Assert( pVarName != NULL );
if ( pMat == NULL || pVarName == NULL )
{
return false;
}
bool bFound = false;
IMaterialVar* pVar = pMat->FindVar( pVarName, &bFound );
if ( bFound )
{
pVar->SetFloatValue( flValue );
}
return bFound;
}
示例13: OnBindFloatLerp
//-----------------------------------------------------------------------------
// Does the dirty deed
//-----------------------------------------------------------------------------
void CMaterialModifyProxy::OnBindFloatLerp( C_MaterialModifyControl *pControl )
{
if ( !pControl )
return;
if ( pControl->HasNewAnimationCommands() )
{
pControl->SetAnimationStartTime( gpGlobals->curtime );
pControl->ClearAnimationCommands();
}
// Read the data from the modify entity
materialfloatlerpcommands_t sCommands;
pControl->GetFloatLerpCommands( &sCommands );
m_flStartValue = sCommands.flStartValue;
m_flEndValue = sCommands.flEndValue;
m_flTransitionTime = sCommands.flTransitionTime;
m_flStartTime = pControl->GetAnimationStartTime();
bool bFound;
m_pMaterialVar = m_pMaterial->FindVar( pControl->GetMaterialVariableName(), &bFound, false );
if( bFound )
{
float currentValue;
if( m_flTransitionTime > 0.0f )
{
currentValue = m_flStartValue + ( m_flEndValue - m_flStartValue ) * clamp( ( ( gpGlobals->curtime - m_flStartTime ) / m_flTransitionTime ), 0.0f, 1.0f );
}
else
{
currentValue = m_flEndValue;
}
if( debug_materialmodifycontrol_client.GetBool() && Q_stristr( m_pMaterial->GetName(), "faceandhair" ) && Q_stristr( m_pMaterialVar->GetName(), "warp" ) )
{
static int count = 0;
DevMsg( 1, "CMaterialFloatLerpProxy::OnBind \"%s\" %s=%f %d\n", m_pMaterial->GetName(), m_pMaterialVar->GetName(), currentValue, count++ );
}
m_pMaterialVar->SetFloatValue( currentValue );
}
}
示例14: OnBind
//-----------------------------------------------------------------------------
// Set the appropriate texture...
//-----------------------------------------------------------------------------
void CObjectBuildAlphaProxy::OnBind( C_BaseEntity *pEntity )
{
if( !m_pAlphaVar )
return;
// It needs to be a TF2 C_BaseObject to have this proxy applied
C_BaseObject *pObject = dynamic_cast< C_BaseObject * >( pEntity );
if ( !pObject )
return;
float build_amount = pObject->m_flCycle; //pObject->GetPercentageConstructed();
float frac;
if ( build_amount <= buildstart )
{
frac = 0.0f;
}
else if ( build_amount >= buildend )
{
frac = 1.0f;
}
else
{
// Avoid div by zero
if ( buildend == buildstart )
{
frac = 1.0f;
}
else
{
frac = ( build_amount - buildstart ) / ( buildend - buildstart );
frac = clamp( frac, 0.0f, 1.0f );
}
}
if ( !pObject->IsBuilding() )
{
frac = 1.0f;
}
m_pAlphaVar->SetFloatValue( frac );
}
示例15: OnBind
void CLampHaloProxy::OnBind( C_BaseEntity *pEnt )
{
if ( !m_pFadeValue )
return;
Vector vecLocal = pEnt->GetAbsOrigin() - CurrentViewOrigin();
VectorNormalize( vecLocal );
float fade = fabs( vecLocal.z );
// I hate these magic numbers here, will have to revise
// (sjb)
if( fade < 0.25 )
{
fade = 0.0;
}
else
{
fade = MIN( (fade - 0.25) * 1.35, 1.0f );
}
m_pFadeValue->SetFloatValue( fade );
}