Hey list,
also posted this on the steam forum
In my HL2MP Ep1 mod I'm maually creating particles using a derived class 
from the original hl2 explosion, the explosion I'm currently working on 
only has a particle effect based on the fire_embers released after an 
explosion.

Everything's good about it except the moving speed I've tried a bunch of 
thing but can't seem to decrease the speed at which they float away from 
the explosion, normally this wouldn't be so important due to the short 
life span of the particles, but mine have a much higher lifetime (or 
dietime if you wanna kill it that)

Here's the code I'm using:
    if ( m_fFlags & TE_EXPLFLAG_NOFIREBALL )
        return;

    Vector    offset;

    //Spread constricts as force rises
    float force = m_flForce;

    //Cap our force
    if ( force < EXPLOSION_FORCE_MIN )
        force = 0.5f;
   
    if ( force > EXPLOSION_FORCE_MAX )
        force = 0.5f;

    float spread = 1.0f - ( 0.15f * force );

    SimpleParticle    *pParticle;

    CSmartPtr<CExplosionParticle> pSimple = CExplosionParticle::Create( 
"exp_smoke" );
    pSimple->SetSortOrigin( m_vecOrigin );
    pSimple->SetNearClip( 64, 128 );

    pSimple->GetBinding().SetBBox( m_vecOrigin - Vector( 128, 128, 128 
), m_vecOrigin + Vector( 128, 128, 128 ) );

    //FIXME: Better sampling area
    offset = m_vecOrigin + ( m_vecDirection * 10.0f );

    //Find area ambient light color and use it to tint smoke
    Vector worldLight = WorldGetLightForPoint( offset, true );
   
    Vector    tint;
    float    luminosity;
    if ( worldLight == vec3_origin )
    {
        tint = vec3_origin;
        luminosity = 0.0f;
    }
    else
        UTIL_GetNormalizedColorTintAndLuminosity( worldLight, &tint, 
&luminosity );

    // We only take a portion of the tint
    tint = (tint * 0.25f)+(Vector(0.75f,0.75f,0.75f));

    //
    // Embers
    //

    if ( m_Material_Embers[0] == NULL )
        m_Material_Embers[0] = pSimple->GetPMaterial( 
"effects/holyn_particle1" );

    if ( m_Material_Embers[1] == NULL )
        m_Material_Embers[1] = pSimple->GetPMaterial( 
"effects/holyn_particle2" );

    for ( int i = 0; i < 50; i++ )
    {
        offset.Random( -3.0f, 3.0f );
        offset += m_vecOrigin;

        pParticle = (SimpleParticle *) pSimple->AddParticle( sizeof( 
SimpleParticle ), m_Material_Embers[random->RandomInt(0,1)], offset );

        if ( pParticle != NULL )
        {
            pParticle->m_flLifetime = 0.0f;
            pParticle->m_flDieTime    = random->RandomFloat( 17.5f, 20.0f );

            pParticle->m_vecVelocity.Random( -spread*4, spread*4 );
            pParticle->m_vecVelocity += m_vecDirection / 6;
           
            VectorNormalize( pParticle->m_vecVelocity );

            float    fForce = 1.0f;

            //Scale the force down as we fall away from our main direction
            float    vDev = ScaleForceByDeviation( 
pParticle->m_vecVelocity, m_vecDirection, spread );

            pParticle->m_vecVelocity *= fForce * ( 0.75f * 
(vDev*vDev*0.15f) / 6 );
           
            #if __EXPLOSION_DEBUG
            debugoverlay->AddLineOverlay( m_vecOrigin, m_vecOrigin + 
pParticle->m_vecVelocity, 255, 0, 0, false, 3 );
            #endif

            pParticle->m_uchColor[0] = 255;
            pParticle->m_uchColor[1] = 255;
            pParticle->m_uchColor[2] = 255;
           
            pParticle->m_uchStartSize    = random->RandomInt( 2, 3 );

            //pParticle->m_uchStartSize    = clamp( 
pParticle->m_uchStartSize, 4, 32 );

            pParticle->m_uchEndSize        = 1;
           
            pParticle->m_uchStartAlpha    = 80;
            pParticle->m_uchEndAlpha    = 0;
           
            pParticle->m_flRoll            = random->RandomInt( 0, 360 );
            pParticle->m_flRollDelta    = random->RandomFloat( -3.0f, 
3.0f );
        }
    }

And also a picture of how it currently looks like:
http://i65.photobucket.com/albums/h208/InfernoNL/fo_complex0000-1.jpg

I kinda wanna decrease the speed that much that by the time the 
particles have moved that far they would have almost faded already.

I've messed with force, spread, velocity and more, the speed seems to 
remain unaltered.

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to