本文整理汇总了C++中EHANDLE::CollisionProp方法的典型用法代码示例。如果您正苦于以下问题:C++ EHANDLE::CollisionProp方法的具体用法?C++ EHANDLE::CollisionProp怎么用?C++ EHANDLE::CollisionProp使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EHANDLE
的用法示例。
在下文中一共展示了EHANDLE::CollisionProp方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SpawnEntity
//-----------------------------------------------------------------------------
// Purpose: Spawn an instance of the entity
//-----------------------------------------------------------------------------
void CEnvEntityMaker::SpawnEntity( Vector vecAlternateOrigin, QAngle vecAlternateAngles )
{
CPointTemplate *pTemplate = FindTemplate();
if (!pTemplate)
return;
// Spawn our template
Vector vecSpawnOrigin = GetAbsOrigin();
QAngle vecSpawnAngles = GetAbsAngles();
if( vecAlternateOrigin != vec3_invalid )
{
// We have a valid alternate origin and angles. Use those instead
// of spawning the items at my own origin and angles.
vecSpawnOrigin = vecAlternateOrigin;
vecSpawnAngles = vecAlternateAngles;
}
CUtlVector<CBaseEntity*> hNewEntities;
if ( !pTemplate->CreateInstance( vecSpawnOrigin, vecSpawnAngles, &hNewEntities, this ) )
return;
//Adrian: oops we couldn't spawn the entity (or entities) for some reason!
if ( hNewEntities.Count() == 0 )
return;
m_hCurrentInstance = hNewEntities[0];
// Assume it'll block us
m_hCurrentBlocker = m_hCurrentInstance;
m_vecBlockerOrigin = m_hCurrentBlocker->GetAbsOrigin();
// Store off the mins & maxs the first time we spawn
if ( m_vecEntityMins == vec3_origin )
{
m_hCurrentInstance->CollisionProp()->WorldSpaceAABB( &m_vecEntityMins, &m_vecEntityMaxs );
m_vecEntityMins -= m_hCurrentInstance->GetAbsOrigin();
m_vecEntityMaxs -= m_hCurrentInstance->GetAbsOrigin();
}
// Fire our output
m_pOutputOnSpawned.FireOutput( this, this );
// Start thinking
if ( m_spawnflags & SF_ENTMAKER_AUTOSPAWN )
{
SetThink( &CEnvEntityMaker::CheckSpawnThink );
SetNextThink( gpGlobals->curtime + 0.5f );
}
// If we have a specified post spawn speed, apply it to all spawned entities
if ( m_flPostSpawnSpeed )
{
for ( int i = 0; i < hNewEntities.Count(); i++ )
{
CBaseEntity *pEntity = hNewEntities[i];
if ( pEntity->GetMoveType() == MOVETYPE_NONE )
continue;
// Calculate a velocity for this entity
Vector vForward,vRight,vUp;
QAngle angSpawnDir( m_angPostSpawnDirection );
if ( m_bPostSpawnUseAngles )
{
if ( GetParent() )
{
angSpawnDir += GetParent()->GetAbsAngles();
}
else
{
angSpawnDir += GetAbsAngles();
}
}
AngleVectors( angSpawnDir, &vForward, &vRight, &vUp );
Vector vecShootDir = vForward;
vecShootDir += vRight * random->RandomFloat(-1, 1) * m_flPostSpawnDirectionVariance;
vecShootDir += vForward * random->RandomFloat(-1, 1) * m_flPostSpawnDirectionVariance;
vecShootDir += vUp * random->RandomFloat(-1, 1) * m_flPostSpawnDirectionVariance;
VectorNormalize( vecShootDir );
vecShootDir *= m_flPostSpawnSpeed;
// Apply it to the entity
IPhysicsObject *pPhysicsObject = pEntity->VPhysicsGetObject();
if ( pPhysicsObject )
{
pPhysicsObject->AddVelocity(&vecShootDir, NULL);
}
else
{
pEntity->SetAbsVelocity( vecShootDir );
}
}
}
pTemplate->CreationComplete( hNewEntities );
}