int DrawModel( int flags, const RenderableInstance_t &instance ) { //FIXME: This sucks, but I can't easily create temp ents... if ( m_bActive ) { Vector vecOrigin; QAngle vecAngles; float color[3]; color[0] = color[1] = color[2] = random->RandomFloat( 0.1f, 0.2f ); GetAttachment( 1, vecOrigin, vecAngles ); Vector vForward; AngleVectors( vecAngles, &vForward ); Vector vEnd = vecOrigin - vForward * 1.0f; IMaterial *pMaterial = materials->FindMaterial( "effects/stunstick", NULL, false ); CMatRenderContextPtr pRenderContext( materials ); pRenderContext->Bind( pMaterial ); DrawHalo( pMaterial, vEnd, random->RandomFloat( 4.0f, 6.0f ), color ); color[0] = color[1] = color[2] = random->RandomFloat( 0.9f, 1.0f ); DrawHalo( pMaterial, vEnd, random->RandomFloat( 2.0f, 3.0f ), color ); } return BaseClass::DrawModel( flags, instance ); }
//----------------------------------------------------------------------------- // Purpose: Draw our special effects //----------------------------------------------------------------------------- void C_WeaponStunStick::DrawFirstPersonEffects( void ) { Vector vecOrigin; QAngle vecAngles; float color[3]; float scale; CMatRenderContextPtr pRenderContext( materials ); IMaterial *pMaterial = materials->FindMaterial( STUNSTICK_GLOW_MATERIAL_NOZ, NULL, false ); // FIXME: Needs to work with new IMaterial system! pRenderContext->Bind( pMaterial ); // Find where we are in the fade float fadeAmount = RemapValClamped( gpGlobals->curtime, m_flFadeTime, m_flFadeTime + FADE_DURATION, 1.0f, 0.1f ); // Get bright when swung if ( InSwing() ) { color[0] = color[1] = color[2] = 0.4f; scale = 22.0f; } else { color[0] = color[1] = color[2] = 0.4f * fadeAmount; scale = 20.0f; } if ( color[0] > 0.0f ) { // Draw an all encompassing glow around the entire head UTIL_GetWeaponAttachment( this, m_BeamCenterAttachment, vecOrigin, vecAngles ); DrawHalo( pMaterial, vecOrigin, scale, color ); } // Draw bright points at each attachment location for ( int i = 0; i < (NUM_BEAM_ATTACHMENTS*2)+1; i++ ) { if ( InSwing() ) { color[0] = color[1] = color[2] = random->RandomFloat( 0.05f, 0.5f ); scale = random->RandomFloat( 4.0f, 5.0f ); } else { color[0] = color[1] = color[2] = random->RandomFloat( 0.05f, 0.5f ) * fadeAmount; scale = random->RandomFloat( 4.0f, 5.0f ) * fadeAmount; } if ( color[0] > 0.0f ) { UTIL_GetWeaponAttachment( this, i, vecOrigin, vecAngles ); DrawHalo( pMaterial, vecOrigin, scale, color ); } } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void C_PropCombineBall::DrawMotionBlur( void ) { float color[3]; Vector vecDir = GetAbsOrigin() - m_vecLastOrigin; float speed = VectorNormalize( vecDir ); speed = clamp( speed, 0, 32 ); float stepSize = MIN( ( speed * 0.5f ), 4.0f ); Vector spawnPos = GetAbsOrigin(); Vector spawnStep = -vecDir * stepSize; float base = RemapValClamped( speed, 4, 32, 0.0f, 1.0f ); CMatRenderContextPtr pRenderContext( materials ); pRenderContext->Bind( m_pBlurMaterial ); // Draw the motion blurred trail for ( int i = 0; i < 8; i++ ) { spawnPos += spawnStep; color[0] = color[1] = color[2] = base * ( 1.0f - ( (float) i / 12.0f ) ); DrawHalo( m_pBlurMaterial, spawnPos, m_flRadius, color ); } }
void CDrawingObject::_init(DrawingObjectType type) { SetType(type); SetRotation(0); IsSolid(true); DrawHalo(true); DrawStippled(false); SetThickness(1.5f); SetHaloColor(floatColor(1.0f, 1.0f, 1.0f)); m_bSelected = false; m_pParent = nullptr; }
//----------------------------------------------------------------------------- // Purpose: // Input : flags - // Output : int //----------------------------------------------------------------------------- int C_PortalBolt::DrawModel( int flags ) { // See if we're drawing the motion blur if ( flags & STUDIO_TRANSPARENCY ) { float color[3]; IMaterial *pBlurMaterial = materials->FindMaterial( "effects/muzzleflash1", NULL, false ); Vector vecDir = GetAbsOrigin() - m_vecLastOrigin; float speed = VectorNormalize( vecDir ); speed = clamp( speed, 0, 32 ); if ( speed > 0 ) { float stepSize = min( ( speed * 0.5f ), 4.0f ); Vector spawnPos = GetAbsOrigin() + ( vecDir * 24.0f ); Vector spawnStep = -vecDir * stepSize; CMatRenderContextPtr pRenderContext( materials ); pRenderContext->Bind( pBlurMaterial ); float alpha; // Draw the motion blurred trail for ( int i = 0; i < 20; i++ ) { spawnPos += spawnStep; alpha = RemapValClamped( i, 5, 11, 0.25f, 0.05f ); color[0] = color[1] = color[2] = alpha; DrawHalo( pBlurMaterial, spawnPos, 3.0f, color ); } } if ( gpGlobals->frametime > 0.0f && !m_bUpdated) { m_bUpdated = true; m_vecLastOrigin = GetAbsOrigin(); } return 1; } // Draw the normal portion return BaseClass::DrawModel( flags ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void C_PropCombineBall::DrawFlicker( void ) { float rand1 = random->RandomFloat( 0.2f, 0.3f ); float rand2 = random->RandomFloat( 1.5f, 2.5f ); if ( gpGlobals->frametime == 0.0f ) { rand1 = 0.2f; rand2 = 1.5f; } float color[3]; color[0] = color[1] = color[2] = rand1; // Draw the flickering glow CMatRenderContextPtr pRenderContext( materials ); pRenderContext->Bind( m_pFlickerMaterial ); DrawHalo( m_pFlickerMaterial, GetAbsOrigin(), m_flRadius * rand2, color ); }
void CLightingEditor::RenderSprites() { CMatRenderContextPtr pRenderContext( materials ); pRenderContext->Bind( m_matSprite_Light ); CUtlVector< def_light_t* > hSortedLights; hSortedLights.AddVectorToTail( m_hEditorLights ); hSortedLights.Sort( DefLightSort ); FOR_EACH_VEC( hSortedLights, i ) { def_light_t *pLight = hSortedLights[ i ]; Vector origin = pLight->pos; float flC3[3] = { 0 }; float flMax = MAX( 1, MAX( pLight->col_diffuse[0], MAX( pLight->col_diffuse[1], pLight->col_diffuse[2] ) ) ); for ( int i = 0; i < 3; i++ ) flC3[i] = clamp( pLight->col_diffuse[i] / flMax, 0, 1 ); DrawHalo( m_matSprite_Light, origin, LIGHT_BOX_SIZE, flC3 ); }
//----------------------------------------------------------------------------- // Purpose: Draw our special effects //----------------------------------------------------------------------------- void C_WeaponStunStick::DrawThirdPersonEffects( void ) { Vector vecOrigin; QAngle vecAngles; float color[3]; float scale; CMatRenderContextPtr pRenderContext( materials ); IMaterial *pMaterial = materials->FindMaterial( STUNSTICK_GLOW_MATERIAL, NULL, false ); pRenderContext->Bind( pMaterial ); // Get bright when swung if ( InSwing() ) { color[0] = color[1] = color[2] = 0.4f; scale = 22.0f; } else { color[0] = color[1] = color[2] = 0.1f; scale = 20.0f; } // Draw an all encompassing glow around the entire head UTIL_GetWeaponAttachment( this, m_BeamCenterAttachment, vecOrigin, vecAngles ); DrawHalo( pMaterial, vecOrigin, scale, color ); if ( InSwing() ) { pMaterial = materials->FindMaterial( STUNSTICK_GLOW_MATERIAL2, NULL, false ); pRenderContext->Bind( pMaterial ); color[0] = color[1] = color[2] = random->RandomFloat( 0.6f, 0.8f ); scale = random->RandomFloat( 4.0f, 6.0f ); // Draw an all encompassing glow around the entire head UTIL_GetWeaponAttachment( this, m_BeamCenterAttachment, vecOrigin, vecAngles ); DrawHalo( pMaterial, vecOrigin, scale, color ); // Update our effects if ( gpGlobals->frametime != 0.0f && ( random->RandomInt( 0, 5 ) == 0 ) ) { Vector vecOrigin; QAngle vecAngles; GetAttachment( 1, vecOrigin, vecAngles ); Vector vForward; AngleVectors( vecAngles, &vForward ); Vector vEnd = vecOrigin - vForward * 1.0f; // Inner beams BeamInfo_t beamInfo; beamInfo.m_vecStart = vEnd; Vector offset = RandomVector( -12, 8 ); offset += Vector(4,4,4); beamInfo.m_vecEnd = vecOrigin + offset; beamInfo.m_pStartEnt= cl_entitylist->GetEnt( BEAMENT_ENTITY( entindex() ) ); beamInfo.m_pEndEnt = cl_entitylist->GetEnt( BEAMENT_ENTITY( entindex() ) ); beamInfo.m_nStartAttachment = 1; beamInfo.m_nEndAttachment = -1; beamInfo.m_nType = TE_BEAMTESLA; beamInfo.m_pszModelName = STUNSTICK_BEAM_MATERIAL; beamInfo.m_flHaloScale = 0.0f; beamInfo.m_flLife = 0.01f; beamInfo.m_flWidth = random->RandomFloat( 1.0f, 3.0f ); beamInfo.m_flEndWidth = 0; beamInfo.m_flFadeLength = 0.0f; beamInfo.m_flAmplitude = random->RandomFloat( 1, 2 ); beamInfo.m_flBrightness = 255.0; beamInfo.m_flSpeed = 0.0; beamInfo.m_nStartFrame = 0.0; beamInfo.m_flFrameRate = 1.0f; beamInfo.m_flRed = 255.0f;; beamInfo.m_flGreen = 255.0f; beamInfo.m_flBlue = 255.0f; beamInfo.m_nSegments = 16; beamInfo.m_bRenderable = true; beamInfo.m_nFlags = FBEAM_SHADEOUT; beams->CreateBeamPoints( beamInfo ); } } }