本文整理汇总了C++中CBaseEntity::AddSpawnFlags方法的典型用法代码示例。如果您正苦于以下问题:C++ CBaseEntity::AddSpawnFlags方法的具体用法?C++ CBaseEntity::AddSpawnFlags怎么用?C++ CBaseEntity::AddSpawnFlags使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CBaseEntity
的用法示例。
在下文中一共展示了CBaseEntity::AddSpawnFlags方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LayHeadcrab
void CNPC_BigMomma::LayHeadcrab( void )
{
CBaseEntity *pChild = CBaseEntity::Create( BIG_CHILDCLASS, GetAbsOrigin(), GetAbsAngles(), this );
pChild->AddSpawnFlags( SF_NPC_FALL_TO_GROUND );
pChild->SetOwnerEntity( this );
// Is this the second crab in a pair?
if ( HasMemory( bits_MEMORY_CHILDPAIR ) )
{
m_crabTime = gpGlobals->curtime + RandomFloat( 5, 10 );
Forget( bits_MEMORY_CHILDPAIR );
}
else
{
m_crabTime = gpGlobals->curtime + RandomFloat( 0.5, 2.5 );
Remember( bits_MEMORY_CHILDPAIR );
}
trace_t tr;
UTIL_TraceLine( GetAbsOrigin(), GetAbsOrigin() - Vector(0,0,100), MASK_SOLID, this, COLLISION_GROUP_NONE, &tr );
UTIL_DecalTrace( &tr, "Splash" );
CPASAttenuationFilter filter( this );
EmitSound( filter, entindex(), "BigMomma.LayHeadcrab" );
m_crabCount++;
}
示例2: Spawn
void CWorldItem::Spawn( void )
{
CBaseEntity *pEntity = NULL;
switch (m_iType)
{
case 44: // ITEM_BATTERY:
pEntity = CBaseEntity::Create( "item_battery", GetLocalOrigin(), GetLocalAngles() );
break;
case 45: // ITEM_SUIT:
pEntity = CBaseEntity::Create( "item_suit", GetLocalOrigin(), GetLocalAngles() );
break;
}
if (!pEntity)
{
Warning("unable to create world_item %d\n", m_iType );
}
else
{
pEntity->m_target = m_target;
pEntity->SetName( GetEntityName() );
pEntity->ClearSpawnFlags();
pEntity->AddSpawnFlags( m_spawnflags );
}
UTIL_RemoveImmediate( this );
}
示例3: CreateEntityByName
CBaseEntity * CEntHost::GiveNamedItem( const char * szName, int iSubType, bool removeIfNotCarried )
{
// If I already own this type don't create one
if ( GetHost()->Weapon_OwnsThisType( szName, iSubType ) )
return NULL;
CBaseEntity *pEntity = CreateEntityByName( szName );
if ( !pEntity ) {
Msg( "NULL Ent in GiveNamedItem!\n" );
return NULL;
}
pEntity->SetLocalOrigin( GetLocalOrigin() );
pEntity->AddSpawnFlags( SF_NORESPAWN );
CBaseCombatWeapon *pWeapon = dynamic_cast<CBaseCombatWeapon *>(pEntity);
DispatchSpawn( pEntity );
if ( pWeapon ) {
pWeapon->SetSubType( iSubType );
GetHost()->Weapon_Equip( pWeapon );
}
else {
if ( pEntity && !(pEntity->IsMarkedForDeletion()) ) {
pEntity->Touch( GetHost() );
}
}
return pEntity;
}
示例4: STRING
//-----------------------------------------------------------------------------
// Purpose: Creates the NPC.
//-----------------------------------------------------------------------------
void CHL1NPCMaker::MakeNPC( void )
{
if (!CanMakeNPC())
{
return;
}
CBaseEntity *pent = (CBaseEntity*)CreateEntityByName( STRING(m_iszNPCClassname) );
if ( !pent )
{
Warning("NULL Ent in NPCMakerHL1!\n" );
return;
}
m_OnSpawnNPC.FireOutput( this, this );
pent->SetLocalOrigin( GetAbsOrigin() );
pent->SetLocalAngles( GetAbsAngles() );
pent->AddSpawnFlags( SF_NPC_FALL_TO_GROUND );
if ( m_spawnflags & SF_NPCMakerHL1_FADE )
{
pent->AddSpawnFlags( SF_NPC_FADE_CORPSE );
}
DispatchSpawn( pent );
pent->SetOwnerEntity( this );
m_cLiveChildren++;// count this NPC
if (!(m_spawnflags & SF_NPCMakerHL1_INF_CHILD))
{
m_iMaxNumNPCs--;
if ( IsDepleted() )
{
// Disable this forever. Don't kill it because it still gets death notices
SetThink( NULL );
SetUse( NULL );
}
}
}
示例5: OnBreak
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CItem_ItemCrate::OnBreak( const Vector &vecVelocity, const AngularImpulse &angImpulse, CBaseEntity *pBreaker )
{
// FIXME: We could simply store the name of an entity to put into the crate
// as a string entered in by worldcraft. Should we? I'd do it for sure
// if it was easy to get a dropdown with all entity types in it.
m_OnCacheInteraction.FireOutput(pBreaker,this);
for ( int i = 0; i < m_nItemCount; ++i )
{
CBaseEntity *pSpawn = NULL;
switch( m_CrateType )
{
case CRATE_SPECIFIC_ITEM:
pSpawn = CreateEntityByName( STRING(m_strItemClass) );
break;
default:
break;
}
if ( !pSpawn )
return;
// Give a little randomness...
Vector vecOrigin;
CollisionProp()->RandomPointInBounds( Vector(0.25, 0.25, 0.25), Vector( 0.75, 0.75, 0.75 ), &vecOrigin );
pSpawn->SetAbsOrigin( vecOrigin );
QAngle vecAngles;
vecAngles.x = random->RandomFloat( -20.0f, 20.0f );
vecAngles.y = random->RandomFloat( 0.0f, 360.0f );
vecAngles.z = random->RandomFloat( -20.0f, 20.0f );
pSpawn->SetAbsAngles( vecAngles );
Vector vecActualVelocity;
vecActualVelocity.Random( -10.0f, 10.0f );
// vecActualVelocity += vecVelocity;
pSpawn->SetAbsVelocity( vecActualVelocity );
QAngle angVel;
AngularImpulseToQAngle( angImpulse, angVel );
pSpawn->SetLocalAngularVelocity( angVel );
// If we're creating an item, it can't be picked up until it comes to rest
// But only if it wasn't broken by a vehicle
CItem *pItem = dynamic_cast<CItem*>(pSpawn);
if ( pItem && !pBreaker->GetServerVehicle())
{
pItem->ActivateWhenAtRest();
}
pSpawn->Spawn();
// Avoid missing items drops by a dynamic resupply because they don't think immediately
if ( FClassnameIs( pSpawn, "item_dynamic_resupply" ) )
{
if ( m_strAlternateMaster != NULL_STRING )
{
DynamicResupply_InitFromAlternateMaster( pSpawn, m_strAlternateMaster );
}
if ( i == 0 )
{
pSpawn->AddSpawnFlags( SF_DYNAMICRESUPPLY_ALWAYS_SPAWN );
}
pSpawn->SetNextThink( gpGlobals->curtime );
}
}
}
示例6: SpawnAlien
IASW_Spawnable_NPC* CASW_Base_Spawner::SpawnAlien( const char *szAlienClassName, const Vector &vecHullMins, const Vector &vecHullMaxs )
{
if ( !IsValidOnThisSkillLevel() )
{
UTIL_Remove(this); // delete ourself if this spawner isn't valid on this difficulty level
return NULL;
}
if ( !CanSpawn( vecHullMins, vecHullMaxs ) ) // this may turn off m_bCurrentlySpawningUber if there's no room
return NULL;
CBaseEntity *pEntity = CreateEntityByName( szAlienClassName );
if ( !pEntity )
{
Msg( "Failed to spawn %s\n", szAlienClassName );
return NULL;
}
CAI_BaseNPC *pNPC = pEntity->MyNPCPointer();
if ( pNPC )
{
pNPC->AddSpawnFlags( SF_NPC_FALL_TO_GROUND );
}
// check if he can see far
if ( m_bLongRangeNPC )
pEntity->AddSpawnFlags( SF_NPC_LONG_RANGE );
if ( HasSpawnFlags( ASW_SF_NEVER_SLEEP ) )
pEntity->AddSpawnFlags( SF_NPC_ALWAYSTHINK );
// Strip pitch and roll from the spawner's angles. Pass only yaw to the spawned NPC.
QAngle angles = GetAbsAngles();
angles.x = 0.0;
angles.z = 0.0;
pEntity->SetAbsOrigin( GetAbsOrigin() );
pEntity->SetAbsAngles( angles );
IASW_Spawnable_NPC* pSpawnable = dynamic_cast<IASW_Spawnable_NPC*>(pEntity);
Assert( pSpawnable );
if ( !pSpawnable )
{
Warning( "NULL Spawnable Ent in asw_spawner! AlienClass = %s\n", szAlienClassName );
UTIL_Remove( pEntity );
return NULL;
}
m_flLastSpawnTime = gpGlobals->curtime;
if ( m_bStartBurrowed )
{
pSpawnable->StartBurrowed();
}
if ( m_bStartBurrowed )
{
pSpawnable->SetUnburrowIdleActivity( m_UnburrowIdleActivity );
pSpawnable->SetUnburrowActivity( m_UnburrowActivity );
}
DispatchSpawn( pEntity );
pEntity->SetOwnerEntity( this );
pEntity->Activate();
if ( m_AlienName != NULL_STRING )
{
pEntity->SetName( m_AlienName );
}
pSpawnable->SetSpawner( this );
RemoveObstructingProps( pEntity );
// give our aliens the orders
pSpawnable->SetAlienOrders( m_AlienOrders, vec3_origin, GetOrderTarget() );
m_OnSpawned.FireOutput(pEntity, this);
return pSpawnable;
}
示例7: HandleAnimEvent
//=========================================================
// HandleAnimEvent - catches the monster-specific messages
// that occur when tagged animation frames are played.
//
// Returns number of events handled, 0 if none.
//=========================================================
void CNPC_Vortigaunt::HandleAnimEvent( animevent_t *pEvent )
{
// ALERT( at_console, "event %d : %f\n", pEvent->event, pev->frame );
switch( pEvent->event )
{
case ISLAVE_AE_CLAW:
{
// SOUND HERE!
CBaseEntity *pHurt = CheckTraceHullAttack( 40, Vector(-10,-10,-10), Vector(10,10,10), sk_islave_dmg_claw.GetFloat(), DMG_SLASH );
CPASAttenuationFilter filter( this );
if ( pHurt )
{
if ( pHurt->GetFlags() & ( FL_NPC | FL_CLIENT ) )
pHurt->ViewPunch( QAngle( 5, 0, -18 ) );
// Play a random attack hit sound
enginesound->EmitSound( filter, entindex(), CHAN_WEAPON, pAttackHitSounds[ random->RandomInt(0,ARRAYSIZE(pAttackHitSounds)-1) ], 1.0, ATTN_NORM, 0, m_iVoicePitch );
}
else
// Play a random attack miss sound
enginesound->EmitSound( filter, entindex(), CHAN_WEAPON, pAttackMissSounds[ random->RandomInt(0,ARRAYSIZE(pAttackMissSounds)-1) ], 1.0, ATTN_NORM, 0, m_iVoicePitch );
}
break;
case ISLAVE_AE_CLAWRAKE:
{
CBaseEntity *pHurt = CheckTraceHullAttack( 40, Vector(-10,-10,-10), Vector(10,10,10), sk_islave_dmg_clawrake.GetFloat(), DMG_SLASH );
CPASAttenuationFilter filter2( this );
if ( pHurt )
{
if ( pHurt->GetFlags() & ( FL_NPC | FL_CLIENT ) )
pHurt->ViewPunch( QAngle( 5, 0, 18 ) );
enginesound->EmitSound( filter2, entindex(), CHAN_WEAPON, pAttackHitSounds[ random->RandomInt(0,ARRAYSIZE(pAttackHitSounds)-1) ], 1.0, ATTN_NORM, 0, m_iVoicePitch );
}
else
enginesound->EmitSound( filter2, entindex(), CHAN_WEAPON, pAttackMissSounds[ random->RandomInt(0,ARRAYSIZE(pAttackMissSounds)-1) ], 1.0, ATTN_NORM, 0, m_iVoicePitch );
}
break;
case ISLAVE_AE_ZAP_POWERUP:
{
// speed up attack when on hard
if ( g_iSkillLevel == SKILL_HARD )
m_flPlaybackRate = 1.5;
Vector v_forward;
GetVectors( &v_forward, NULL, NULL );
CBroadcastRecipientFilter filter;
te->DynamicLight( filter, 0.0, &GetAbsOrigin(), 125, 200, 100, 2, 120, 0.2 / m_flPlaybackRate, 0 );
if ( m_hDead != NULL )
{
WackBeam( -1, m_hDead );
WackBeam( 1, m_hDead );
}
else
{
ArmBeam( -1 );
ArmBeam( 1 );
BeamGlow( );
}
CPASAttenuationFilter filter3( this );
enginesound->EmitSound( filter3, entindex(), CHAN_WEAPON, "debris/zap4.wav", 1, ATTN_NORM, 0, 100 + m_iBeams * 10 );
// Huh? Model doesn't have multiple texturegroups, commented this out. -LH
// m_nSkin = m_iBeams / 2;
}
break;
case ISLAVE_AE_ZAP_SHOOT:
{
ClearBeams( );
if ( m_hDead != NULL )
{
Vector vecDest = m_hDead->GetAbsOrigin() + Vector( 0, 0, 38 );
trace_t trace;
UTIL_TraceHull( vecDest, vecDest, GetHullMins(), GetHullMaxs(),MASK_SOLID, m_hDead, COLLISION_GROUP_NONE, &trace );
if ( !trace.startsolid )
{
CBaseEntity *pNew = Create( "monster_alien_slave", m_hDead->GetAbsOrigin(), m_hDead->GetAbsAngles() );
pNew->AddSpawnFlags( 1 );
WackBeam( -1, pNew );
WackBeam( 1, pNew );
UTIL_Remove( m_hDead );
break;
}
}
//.........这里部分代码省略.........