//----------------------------------------------------------------------------- // Purpose: // Input : fTimeDelta - //----------------------------------------------------------------------------- void C_EntityParticleTrail::Update( float fTimeDelta ) { float tempDelta = fTimeDelta; studiohdr_t *pStudioHdr; mstudiohitboxset_t *set; matrix3x4_t *hitboxbones[MAXSTUDIOBONES]; C_BaseEntity *pMoveParent = GetMoveParent(); if ( !pMoveParent ) return; C_BaseAnimating *pAnimating = pMoveParent->GetBaseAnimating(); if (!pAnimating) goto trailNoHitboxes; if ( !pAnimating->HitboxToWorldTransforms( hitboxbones ) ) goto trailNoHitboxes; pStudioHdr = modelinfo->GetStudiomodel( pAnimating->GetModel() ); if (!pStudioHdr) goto trailNoHitboxes; set = pStudioHdr->pHitboxSet( pAnimating->GetHitboxSet() ); if ( !set ) goto trailNoHitboxes; //Add new particles while ( m_teParticleSpawn.NextEvent( tempDelta ) ) { int nHitbox = random->RandomInt( 0, set->numhitboxes - 1 ); mstudiobbox_t *pBox = set->pHitbox(nHitbox); AddParticle( tempDelta, pBox->bbmin, pBox->bbmax, *hitboxbones[pBox->bone] ); } return; trailNoHitboxes: while ( m_teParticleSpawn.NextEvent( tempDelta ) ) { AddParticle( tempDelta, pMoveParent->CollisionProp()->OBBMins(), pMoveParent->CollisionProp()->OBBMaxs(), pMoveParent->EntityToWorldTransform() ); } }