本文整理汇总了C++中IMaterialVar::SetVecValue方法的典型用法代码示例。如果您正苦于以下问题:C++ IMaterialVar::SetVecValue方法的具体用法?C++ IMaterialVar::SetVecValue怎么用?C++ IMaterialVar::SetVecValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IMaterialVar
的用法示例。
在下文中一共展示了IMaterialVar::SetVecValue方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnBind
void CWorldDimsProxy::OnBind( void *pC_BaseEntity )
{
if ( m_pMinsVar && m_pMaxsVar )
{
float mins[3] = {-500,-500,-500};
float maxs[3] = {+500,+500,+500};
m_pMinsVar->SetVecValue( (const float*)mins, 3 );
m_pMaxsVar->SetVecValue( (const float*)maxs, 3 );
}
}
示例2: OnBind
void CWorldDimsProxy::OnBind( void *pC_BaseEntity )
{
if ( m_pMinsVar && m_pMaxsVar )
{
C_World *pWorld = GetClientWorldEntity();
if ( pWorld )
{
m_pMinsVar->SetVecValue( (const float*)&pWorld->m_WorldMins, 3 );
m_pMaxsVar->SetVecValue( (const float*)&pWorld->m_WorldMaxs, 3 );
}
}
}
示例3: OnBind
void CThermalMaterialProxy::OnBind( C_BaseEntity *pEntity )
{
// FIXME, enable this later
return;
if( !m_ThermalVar )
{
return;
}
float min, max, period, value;
// set default values if these variables don't exist.
min = m_ThermalMin ? m_ThermalMin->GetFloatValue() : 0.0f;
max = m_ThermalMax ? m_ThermalMax->GetFloatValue() : 1.0f;
period = m_ThermalPeriod ? m_ThermalPeriod->GetFloatValue() : 1.0f;
// get a value in [0,1]
value = ( sin( 2.0f * M_PI * gpGlobals->curtime / period ) * 0.5f ) + 0.5f;
// get a value in [min,max]
value = ( max - min ) * value + min;
Vector color;
HueToRGB( 360.f * value, color );
m_ThermalVar->SetVecValue( color[0], color[1], color[2] );
}
示例4: DrawSniperScope
void CASWHudCrosshair::DrawSniperScope( int x, int y )
{
C_ASW_Player *pPlayer = C_ASW_Player::GetLocalASWPlayer();
if ( !pPlayer )
return;
C_ASW_Marine *pMarine = pPlayer->GetMarine();
if ( !pMarine )
return;
const int NUM_CIRCLE_POINTS = 40;
static vgui::Vertex_t points[ NUM_CIRCLE_POINTS ];
float width = YRES( asw_sniper_scope_radius.GetFloat() );
float height = YRES( asw_sniper_scope_radius.GetFloat() );
for ( int i = 0; i < NUM_CIRCLE_POINTS; i++ )
{
float flAngle = 2.0f * M_PI * ( (float) i / (float) NUM_CIRCLE_POINTS );
points[ i ].Init( Vector2D( x + width * cos( flAngle ), y + height * sin( flAngle ) ), Vector2D( 0.5f + 0.5f * cos( flAngle ), 0.5f + 0.5f * sin( flAngle ) ) );
}
surface()->DrawSetColor( Color(255,255,255,255) );
surface()->DrawSetTexture( m_nSniperMagnifyTexture );
IMaterial *pMaterial = materials->FindMaterial( "effects/magnifyinglens", TEXTURE_GROUP_OTHER );
IMaterialVar *pMagnificationCenterVar = pMaterial->FindVar( "$magnifyCenter", NULL );
float flCenterX = ( ( float )x / ( float )ScreenWidth() ) - 0.5f;
float flCenterY = ( ( float )y / ( float )ScreenHeight() ) - 0.5f;
pMagnificationCenterVar->SetVecValue( flCenterX, flCenterY, 0, 0 );
vgui::surface()->DrawTexturedPolygon( NUM_CIRCLE_POINTS, points );
}
示例5: OnBind
void CWorldDimsProxy::OnBind( void *pC_BaseEntity )
{
if ( m_pMinsVar && m_pMaxsVar )
{
C_World *pWorld = GetClientWorldEntity();
if ( pWorld )
{
m_pMinsVar->SetVecValue( (const float*)&pWorld->m_WorldMins, 3 );
m_pMaxsVar->SetVecValue( (const float*)&pWorld->m_WorldMaxs, 3 );
}
}
if ( ToolsEnabled() )
{
ToolFramework_RecordMaterialParams( GetMaterial() );
}
}
示例6: OnBind
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 );
}
}
示例7: OnBind
void CCoreOriginProxy::OnBind( void *pRenderable )
{
if( !pRenderable || !m_pSphereOriginTextureVar )
return;
IClientRenderable *pRend = ( IClientRenderable* )pRenderable;
if ( !pRend )
return;
const Vector &origin = pRend->GetRenderOrigin();
m_pSphereOriginTextureVar->SetVecValue(origin[0], origin[1], origin[2], 1);
}
示例8: OnBind
void CAccumBuffProxy::OnBind( void *pC_BaseEntity )
{
AccumParams_t *pAccumParams = (AccumParams_t *) pC_BaseEntity;
if( !m_pTexture0 || !m_pTexture1 || !m_pAccumBuffWeights )
{
return;
}
m_pTexture0->SetTextureValue( pAccumParams->m_pTexture0 );
m_pTexture1->SetTextureValue( pAccumParams->m_pTexture1 );
// If we're just using this material to do a clear to black...
if ( pAccumParams->m_bClear )
{
m_pAccumBuffWeights->SetVecValue( 0.0f, 0.0f, 0.0f, 0.0f );
}
else
{
m_pAccumBuffWeights->SetVecValue( pAccumParams->m_fSampleWeight, 1.0f - pAccumParams->m_fSampleWeight, 0.0f, 0.0f );
}
}
示例9: OnBind
void CTextureScrollMaterialProxy::OnBind( void *pC_BaseEntity )
{
if( !m_pTextureScrollVar )
{
return;
}
float rate, angle, scale;
// set default values if these variables don't exist.
rate = m_TextureScrollRate.GetFloat();
angle = m_TextureScrollAngle.GetFloat();
scale = m_TextureScale.GetFloat();
float sOffset, tOffset;
sOffset = gpGlobals->curtime * cos( angle * ( M_PI / 180.0f ) ) * rate;
tOffset = gpGlobals->curtime * sin( angle * ( M_PI / 180.0f ) ) * rate;
// 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( scale, 0.0f, 0.0f, sOffset,
0.0f, scale, 0.0f, tOffset,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f );
m_pTextureScrollVar->SetMatrixValue( mat );
}
else
{
m_pTextureScrollVar->SetVecValue( sOffset, tOffset, 0.0f );
}
if ( ToolsEnabled() )
{
ToolFramework_RecordMaterialParams( GetMaterial() );
}
}
示例10:
inline bool ASW_SetMaterialVarVector4D( IMaterial* pMat, const char* pVarName, const Vector4D &vValue )
{
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->SetVecValue( vValue.Base(), 4 );
}
return bFound;
}
示例11: DrawModel
int C_NEORagdoll::DrawModel( int flags )
{
C_NEOPlayer *pPlayer = dynamic_cast<C_NEOPlayer*>(m_hPlayer.Get());
if ( pPlayer && (pPlayer->IsLocalNEOPlayer() || pPlayer->m_bIsOnDeathScreen) )
return 0;
if ( pPlayer->m_iVision == 3 ) // Thermal vision
{
IMaterial* matThermal = g_pMaterialSystem->FindMaterial( "dev/thermal", "Other textures" );
if ( g_pMaterialSystemHardwareConfig->SupportsPixelShaders_2_0() )
{
bool found = false;
IMaterialVar* matVar = matThermal->FindVar( "$eyevec", &found );
if ( found )
{
Vector forward;
pPlayer->GetVectors( &forward, nullptr, nullptr );
matVar->SetVecValue( forward.x, forward.y, forward.z );
}
}
modelrender->ForcedMaterialOverride( matThermal );
int result = InternalDrawModel( flags );
modelrender->ForcedMaterialOverride( nullptr );
return result;
}
return BaseClass::DrawModel( flags );
}
示例12: DrawSpriteModel
void DrawSpriteModel( IClientEntity *baseentity, CEngineSprite *psprite, const Vector &origin, float fscale, float frame,
int rendermode, int r, int g, int b, int a, const Vector& forward, const Vector& right, const Vector& up, float flHDRColorScale )
{
float scale;
IMaterial *material;
// don't even bother culling, because it's just a single
// polygon without a surface cache
if ( fscale > 0 )
scale = fscale;
else
scale = 1.0f;
if ( rendermode == kRenderNormal )
{
render->SetBlend( 1.0f );
}
material = psprite->GetMaterial( (RenderMode_t)rendermode, frame );
if ( !material )
return;
CMatRenderContextPtr pRenderContext( materials );
if ( ShouldDrawInWireFrameMode() || r_drawsprites.GetInt() == 2 )
{
IMaterial *pMaterial = materials->FindMaterial( "debug/debugspritewireframe", TEXTURE_GROUP_OTHER );
pRenderContext->Bind( pMaterial, NULL );
}
else
{
pRenderContext->Bind( material, (IClientRenderable*)baseentity );
}
unsigned char color[4];
color[0] = r;
color[1] = g;
color[2] = b;
color[3] = a;
IMaterialVar *pHDRColorScaleVar = material->FindVarFast( "$HDRCOLORSCALE", &s_nHDRColorScaleCache );
if( pHDRColorScaleVar )
{
pHDRColorScaleVar->SetVecValue( flHDRColorScale, flHDRColorScale, flHDRColorScale );
}
Vector point;
IMesh* pMesh = pRenderContext->GetDynamicMesh();
CMeshBuilder meshBuilder;
meshBuilder.Begin( pMesh, MATERIAL_QUADS, 1 );
Vector vec_a;
Vector vec_b;
Vector vec_c;
Vector vec_d;
// isolate common terms
VectorMA( origin, psprite->GetDown() * scale, up, vec_a );
VectorScale( right, psprite->GetLeft() * scale, vec_b );
VectorMA( origin, psprite->GetUp() * scale, up, vec_c );
VectorScale( right, psprite->GetRight() * scale, vec_d );
float flMinU, flMinV, flMaxU, flMaxV;
psprite->GetTexCoordRange( &flMinU, &flMinV, &flMaxU, &flMaxV );
meshBuilder.Color4ubv( color );
meshBuilder.TexCoord2f( 0, flMinU, flMaxV );
VectorAdd( vec_a, vec_b, point );
meshBuilder.Position3fv( point.Base() );
meshBuilder.AdvanceVertex();
meshBuilder.Color4ubv( color );
meshBuilder.TexCoord2f( 0, flMinU, flMinV );
VectorAdd( vec_c, vec_b, point );
meshBuilder.Position3fv( point.Base() );
meshBuilder.AdvanceVertex();
meshBuilder.Color4ubv( color );
meshBuilder.TexCoord2f( 0, flMaxU, flMinV );
VectorAdd( vec_c, vec_d, point );
meshBuilder.Position3fv( point.Base() );
meshBuilder.AdvanceVertex();
meshBuilder.Color4ubv( color );
meshBuilder.TexCoord2f( 0, flMaxU, flMaxV );
VectorAdd( vec_a, vec_d, point );
meshBuilder.Position3fv( point.Base() );
meshBuilder.AdvanceVertex();
meshBuilder.End();
pMesh->Draw();
}