//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void C_TEExplosion::AffectRagdolls( void ) { if ( ( m_nRadius == 0 ) || ( m_nMagnitude == 0 ) || (!m_bShouldAffectRagdolls) ) return; CRagdollExplosionEnumerator ragdollEnum( m_vecOrigin, m_nRadius, m_nMagnitude ); partition->EnumerateElementsInSphere( PARTITION_CLIENT_RESPONSIVE_EDICTS, m_vecOrigin, m_nRadius, false, &ragdollEnum ); }
void StickRagdollNowFlechette( const Vector &vecOrigin, const Vector &vecDirection, int nSkin ) { Ray_t shotRay; Vector vecEnd = vecOrigin - vecDirection * 128; shotRay.Init( vecOrigin, vecEnd ); CRagdollBoltEnumerator ragdollEnum( shotRay, vecOrigin ); partition->EnumerateElementsAlongRay( PARTITION_CLIENT_RESPONSIVE_EDICTS, shotRay, false, &ragdollEnum ); CreateFlechette( vecOrigin, vecDirection, nSkin ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- bool AffectRagdolls( Vector vecOrigin, Vector vecStart, int iDamageType ) { Ray_t shotRay; shotRay.Init( vecStart, vecOrigin ); CRagdollEnumerator ragdollEnum( shotRay, CLIENT_SHOT_FORCE, iDamageType ); partition->EnumerateElementsAlongRay( PARTITION_CLIENT_RESPONSIVE_EDICTS, shotRay, false, &ragdollEnum ); return ragdollEnum.Hit(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- bool FX_AffectRagdolls( Vector vecOrigin, Vector vecStart, int iDamageType ) { // don't do this when lots of ragdolls are simulating if ( s_RagdollLRU.CountRagdolls(true) > 1 ) return false; Ray_t shotRay; shotRay.Init( vecStart, vecOrigin ); CRagdollEnumerator ragdollEnum( shotRay, iDamageType ); partition->EnumerateElementsAlongRay( PARTITION_CLIENT_RESPONSIVE_EDICTS, shotRay, false, &ragdollEnum ); return ragdollEnum.Hit(); }
void C_TEStickyBolt::FindRagdollInRay( void ) { Ray_t shotRay; Vector vecEnd = m_vecOrigin + m_vecDirection * 128; shotRay.Init( m_vecOrigin, vecEnd ); CRagdollBoltEnumerator ragdollEnum( shotRay, 100000, m_vecOrigin ); partition->EnumerateElementsAlongRay( PARTITION_CLIENT_RESPONSIVE_EDICTS, shotRay, false, &ragdollEnum ); model_t *pModel = (model_t *)engine->LoadModel( "models/crossbow_bolt.mdl" ); QAngle vAngles; VectorAngles( -m_vecDirection, vAngles ); tempents->SpawnTempModel( pModel, m_vecOrigin + m_vecDirection * 16, vAngles, Vector(0, 0, 0 ), 1, FTENT_NEVERDIE ); }
void StickRagdollNow( const Vector &vecOrigin, const Vector &vecDirection ) { Ray_t shotRay; trace_t tr; UTIL_TraceLine( vecOrigin, vecOrigin + vecDirection * 16, MASK_SOLID_BRUSHONLY, NULL, COLLISION_GROUP_NONE, &tr ); if ( tr.surface.flags & SURF_SKY ) return; Vector vecEnd = vecOrigin - vecDirection * 128; shotRay.Init( vecOrigin, vecEnd ); CRagdollBoltEnumerator ragdollEnum( shotRay, vecOrigin ); partition->EnumerateElementsAlongRay( PARTITION_CLIENT_RESPONSIVE_EDICTS, shotRay, false, &ragdollEnum ); CreateCrossbowBolt( vecOrigin, vecDirection ); }