//------------------------------------------------------------------------------ // Purpose : Spawn random gibs of the given gib type // Input : // Output : //------------------------------------------------------------------------------ void CGib::SpawnRandomGibs( CBaseEntity *pVictim, int cGibs, GibType_e eGibType ) { int cSplat; for ( cSplat = 0 ; cSplat < cGibs ; cSplat++ ) { CGib *pGib = CREATE_ENTITY( CGib, "gib" ); if ( g_Language.GetInt() == LANGUAGE_GERMAN ) { pGib->Spawn( "models/germangibs.mdl" ); pGib->m_nBody = random->RandomInt(0,GERMAN_GIB_COUNT-1); } else { switch (eGibType) { case GIB_HUMAN: // human pieces pGib->Spawn( "models/gibs/hgibs.mdl" ); pGib->m_nBody = random->RandomInt(1,HUMAN_GIB_COUNT-1);// start at one to avoid throwing random amounts of skulls (0th gib) break; case GIB_ALIEN: // alien pieces pGib->Spawn( "models/gibs/agibs.mdl" ); pGib->m_nBody = random->RandomInt(0,ALIEN_GIB_COUNT-1); break; } } pGib->InitGib( pVictim, 300, 400); } }
//------------------------------------------------------------------------------ // Purpose : Given an .mdl file with gibs and the number of gibs in the file // spawns them in pVictim's bounding box // Input : // Output : //------------------------------------------------------------------------------ void CGib::SpawnSpecificGibs( CBaseEntity* pVictim, int nNumGibs, float vMinVelocity, float vMaxVelocity, const char* cModelName, float flLifetime) { for ( int i = 0; i < nNumGibs; i++ ) { CGib *pGib = CREATE_ENTITY( CGib, "gib" ); pGib->Spawn( cModelName, flLifetime ); pGib->m_nBody = i; pGib->InitGib( pVictim, vMinVelocity, vMaxVelocity ); pGib->m_lifeTime = flLifetime; if ( pVictim != NULL ) { pGib->SetOwnerEntity( pVictim ); } //If pVictim is on fire, ignite pVictim's gibs as well. if ( pVictim->GetFlags() & FL_ONFIRE ) { pGib->Ignite( ( flLifetime - 1 ), false ); } } }
//------------------------------------------------------------------------------ // Purpose : Given an .mdl file with gibs and the number of gibs in the file // spawns them in pVictim's bounding box // Input : // Output : //------------------------------------------------------------------------------ void CGib::SpawnSpecificGibs( CBaseEntity* pVictim, int nNumGibs, float vMinVelocity, float vMaxVelocity, const char* cModelName, float flLifetime) { for (int i=0;i<nNumGibs;i++) { CGib *pGib = CREATE_ENTITY( CGib, "gib" ); pGib->Spawn( cModelName ); pGib->m_nBody = i; pGib->InitGib( pVictim, vMinVelocity, vMaxVelocity ); pGib->m_lifeTime = flLifetime; if ( pVictim != NULL ) { pGib->SetOwnerEntity( pVictim ); } } }