本文整理汇总了C++中SetCollisionGroup函数的典型用法代码示例。如果您正苦于以下问题:C++ SetCollisionGroup函数的具体用法?C++ SetCollisionGroup怎么用?C++ SetCollisionGroup使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了SetCollisionGroup函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LaserOff
void CNPC_Portal_FloorTurret::InactiveThink( void )
{
LaserOff();
RopesOff();
// Update our PVS state
CheckPVSCondition();
SetNextThink( gpGlobals->curtime + 1.0f );
// Wake up if we're not on our side
if ( !OnSide() && VPhysicsGetObject()->GetContactPoint( NULL, NULL ) && m_bEnabled )
{
// Never return to life!
SetCollisionGroup( COLLISION_GROUP_NONE );
//ReturnToLife();
}
else
{
IPhysicsObject *pTurretPhys = VPhysicsGetObject();
if ( !(pTurretPhys->GetGameFlags() & FVPHYSICS_PLAYER_HELD) && pTurretPhys->IsAsleep() )
SetCollisionGroup( COLLISION_GROUP_DEBRIS_TRIGGER );
else
SetCollisionGroup( COLLISION_GROUP_NONE );
}
}
示例2: UTIL_Remove
//-----------------------------------------------------------------------------
// Purpose: Plays the engine sound.
//-----------------------------------------------------------------------------
void CNPC_Houndeye::NPCThink(void)
{
if (m_pEnergyWave)
{
if (gpGlobals->curtime > m_flEndEnergyWaveTime)
{
UTIL_Remove(m_pEnergyWave);
m_pEnergyWave = NULL;
}
}
// -----------------------------------------------------
// Update collision group
// While I'm running I'm allowed to penetrate
// other houndeyes
// -----------------------------------------------------
Vector vVelocity;
GetVelocity( &vVelocity, NULL );
if (vVelocity.Length() > 10)
{
SetCollisionGroup( HL2COLLISION_GROUP_HOUNDEYE );
}
else
{
// Don't go solid if resting in another houndeye
trace_t tr;
AI_TraceHull( GetAbsOrigin(), GetAbsOrigin() + Vector(0,0,1),
GetHullMins(), GetHullMaxs(),
MASK_NPCSOLID, this, COLLISION_GROUP_NONE, &tr );
if (!tr.startsolid)
{
SetCollisionGroup( COLLISION_GROUP_NONE );
}
else
{
SetCollisionGroup( HL2COLLISION_GROUP_HOUNDEYE );
}
}
/*
if (GetCollisionGroup() == HL2COLLISION_GROUP_HOUNDEYE)
{
NDebugOverlay::Box(GetAbsOrigin(), GetHullMins(), GetHullMaxs(), 0, 255, 0, 0, 0);
}
else
{
NDebugOverlay::Box(GetAbsOrigin(), GetHullMins(), GetHullMaxs(), 255, 0, 0, 0, 0);
}
*/
BaseClass::NPCThink();
}
示例3: SetOwnerEntity
bool CBoneFollower::Init( CBaseEntity *pOwner, const char *pModelName, solid_t &solid, const Vector &position, const QAngle &orientation )
{
SetOwnerEntity( pOwner );
UTIL_SetModel( this, pModelName );
m_fEffects |= EF_NODRAW; // invisible
#if VISUALIZE_FOLLOWERS_BOUNDINGBOX
m_debugOverlays |= OVERLAY_BBOX_BIT;
#endif
m_modelIndex = modelinfo->GetModelIndex( pModelName );
m_solidIndex = solid.index;
SetAbsOrigin( position );
SetAbsAngles( orientation );
SetMoveType( MOVETYPE_PUSH );
SetSolid( SOLID_VPHYSICS );
SetCollisionGroup( pOwner->GetCollisionGroup() );
AddSolidFlags( FSOLID_CUSTOMRAYTEST | FSOLID_CUSTOMBOXTEST );
solid.params.pGameData = (void *)this;
IPhysicsObject *pPhysics = VPhysicsInitShadow( false, false, &solid );
if ( !pPhysics )
return false;
pPhysics->SetCallbackFlags( pPhysics->GetCallbackFlags() | CALLBACK_GLOBAL_TOUCH );
pPhysics->EnableGravity( false );
return true;
}
示例4: Precache
void CGrenadeSpit::Spawn( void )
{
Precache( );
SetSolid( SOLID_BBOX );
SetMoveType( MOVETYPE_FLYGRAVITY );
// FIXME, if these is a sprite, then we need a base class derived from CSprite rather than
// CBaseAnimating. pev->scale becomes m_flSpriteScale in that case.
SetModel( "models/spitball_large.mdl" );
UTIL_SetSize(this, Vector(0, 0, 0), Vector(0, 0, 0));
m_nRenderMode = kRenderTransAdd;
SetRenderColor( 255, 255, 255, 255 );
m_nRenderFX = kRenderFxNone;
SetThink( SpitThink );
SetUse( DetonateUse );
SetTouch( GrenadeSpitTouch );
SetNextThink( gpGlobals->curtime + 0.1f );
m_flDamage = sk_dmg_spit_grenade.GetFloat();
m_DmgRadius = sk_spit_grenade_radius.GetFloat();
m_takedamage = DAMAGE_YES;
m_iHealth = 1;
SetGravity( UTIL_ScaleForGravity( SPIT_GRAVITY ) );
SetFriction( 0.8 );
SetSequence( 1 );
SetCollisionGroup( HL2COLLISION_GROUP_SPIT );
}
示例5: Precache
void CSatchelCharge::Spawn( void )
{
Precache( );
SetModel( "models/Weapons/w_slam.mdl" );
VPhysicsInitNormal( SOLID_BBOX, GetSolidFlags() | FSOLID_TRIGGER, false );
SetMoveType( MOVETYPE_VPHYSICS );
SetCollisionGroup( COLLISION_GROUP_WEAPON );
UTIL_SetSize(this, Vector( -6, -6, -2), Vector(6, 6, 2));
SetThink( &CSatchelCharge::SatchelThink );
SetNextThink( gpGlobals->curtime + 0.1f );
m_flDamage = sk_plr_dmg_satchel.GetFloat();
m_DmgRadius = sk_satchel_radius.GetFloat();
m_takedamage = DAMAGE_YES;
m_iHealth = 1;
SetGravity( UTIL_ScaleForGravity( 560 ) ); // slightly lower gravity
SetFriction( 1.0 );
SetSequence( 1 );
SetDamage( 150 );
m_bIsAttached = false;
m_bInAir = true;
m_flNextBounceSoundTime = 0;
m_vLastPosition = vec3_origin;
m_hGlowSprite = NULL;
CreateEffects();
}
示例6: Precache
//------------------------------------------------
// Spawn
//------------------------------------------------
void CPropCannon::Spawn( void )
{
Precache();
SetModel( STRING( GetModelName() ) );
SetCollisionGroup( COLLISION_GROUP_VEHICLE );
BaseClass::Spawn();
SetSolid( SOLID_BBOX );
AddSolidFlags( FSOLID_NOT_SOLID );
SetMoveType( MOVETYPE_NOCLIP );
m_takedamage = DAMAGE_EVENTS_ONLY;
m_takedamage = DAMAGE_EVENTS_ONLY;
m_flTurn = 0;
m_flExtension = 0;
m_flFlyTime = 0.0f;
m_flNextAttackTime = gpGlobals->curtime;
InitCannonSpeeds();
SetPoseParameter( "armextensionpose", m_flExtension );
CreateVPhysics();
SetNextThink( gpGlobals->curtime );
}
示例7: Precache
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CGETKnife::Spawn( void )
{
Precache();
BaseClass::Spawn();
SetModel( "models/weapons/knife/w_tknife.mdl" );
SetSize( -Vector(8,8,8), Vector(8,8,8) );
// Init our physics definition
VPhysicsInitNormal( SOLID_VPHYSICS, GetSolidFlags() | FSOLID_TRIGGER, false );
SetMoveType( MOVETYPE_VPHYSICS );
SetCollisionGroup( COLLISION_GROUP_GRENADE );
// No Air-Drag, lower gravity
VPhysicsGetObject()->EnableDrag( false );
SetGravity( UTIL_ScaleForGravity( 540.0f ) );
m_bInAir = true;
m_takedamage = DAMAGE_NO;
AddSolidFlags( FSOLID_NOT_STANDABLE );
m_flStopFlyingTime = gpGlobals->curtime + 4.5f;
// const CBaseEntity *host = te->GetSuppressHost();
// te->SetSuppressHost( NULL );
// DispatchParticleEffect( "tracer_tknife", PATTACH_POINT_FOLLOW, this, "tip" );
// te->SetSuppressHost( (CBaseEntity*)host );
SetTouch( &CGETKnife::DamageTouch );
SetThink( &CGETKnife::SoundThink );
SetNextThink( gpGlobals->curtime );
}
示例8: Precache
void CASW_Rocket::Spawn( void )
{
Precache();
SetSolid( SOLID_BBOX );
SetModel(ASW_ROCKET_MODEL);
UTIL_SetSize( this, -Vector(4,4,4), Vector(4,4,4) );
SetTouch( &CASW_Rocket::MissileTouch );
SetCollisionGroup( ASW_COLLISION_GROUP_PLAYER_MISSILE );
SetMoveType( MOVETYPE_FLYGRAVITY, MOVECOLLIDE_FLY_BOUNCE );
SetThink( &CASW_Rocket::IgniteThink );
SetNextThink( gpGlobals->curtime + 0.01f );
SetDamage( 200.0f );
AddEffects( EF_NOSHADOW );
m_takedamage = DAMAGE_NO;
m_iHealth = m_iMaxHealth = 100;
m_bloodColor = DONT_BLEED;
m_flGracePeriodEndsAt = 0;
m_flNextWobbleTime = gpGlobals->curtime + asw_rocket_wobble_freq.GetFloat();
m_fSpawnTime = gpGlobals->curtime;
m_fDieTime = gpGlobals->curtime + ASW_ROCKET_LIFETIME;
AddFlag( FL_OBJECT );
}
示例9: Precache
void CGEGrenade::Spawn( void )
{
Precache();
BaseClass::Spawn();
SetModel( "models/weapons/grenade/w_grenade.mdl" );
// So NPC's can "see" us
AddFlag( FL_OBJECT );
m_takedamage = DAMAGE_YES;
m_iHealth = 1;
m_bHitSomething = false;
m_bDroppedOnDeath = false;
// Default Damages they should be modified by the thrower
SetDamage( 320 );
SetDamageRadius( 260 );
SetSize( -Vector(4,4,4), Vector(4,4,4) );
SetCollisionGroup( COLLISION_GROUP_MINE );
// Init our physics definition
VPhysicsInitNormal( SOLID_VPHYSICS, GetSolidFlags() | FSOLID_TRIGGER, false );
SetMoveType( MOVETYPE_VPHYSICS );
// Don't think until we have a time to think about!
SetThink( NULL );
// Bounce if we hit something!
SetTouch( &BaseClass::BounceTouch );
AddSolidFlags( FSOLID_NOT_STANDABLE );
}
示例10: Msg
// set the mine up for exploding
void CASW_Mine::Prime()
{
if (asw_debug_mine.GetBool())
Msg("Mine primed!\n");
EmitSound("ASW_Mine.Lay");
SetSolid( SOLID_BBOX );
float boxWidth = 150;
UTIL_SetSize(this, Vector(-boxWidth,-boxWidth,-boxWidth),Vector(boxWidth,boxWidth,boxWidth * 2));
SetCollisionGroup( ASW_COLLISION_GROUP_PASSABLE );
CollisionProp()->UseTriggerBounds( true, 24 );
AddSolidFlags(FSOLID_TRIGGER);
AddSolidFlags(FSOLID_NOT_SOLID);
SetTouch( &CASW_Mine::MineTouch );
m_bPrimed = true;
// attach to whatever we're standing on
CBaseEntity *pGround = GetGroundEntity();
if ( pGround && !pGround->IsWorld() )
{
if (asw_debug_mine.GetBool())
Msg( "Parenting mine to %s\n", GetGroundEntity()->GetClassname() );
SetParent( GetGroundEntity() );
SetMoveType( MOVETYPE_NONE );
}
}
示例11: SetSolid
//-----------------------------------------------------------------------------
// Purpose: Called when spawning, after keyvalues have been handled.
//-----------------------------------------------------------------------------
void CASWEnvSpark::Spawn(void)
{
SetSolid( SOLID_NONE );
SetMoveType( MOVETYPE_NONE );
SetCollisionGroup( COLLISION_GROUP_NONE );
SetThink( NULL );
if ( FBitSet(m_spawnflags, SF_ASW_SPARK_START_ON) )
{
m_bEnabled = true;
}
if ( FBitSet(m_spawnflags, SF_ASW_SPARK_SILENT) )
{
m_bPlaySound = false;
}
if ( FBitSet(m_spawnflags, SF_ASW_SPARK_ELECTRICAL) )
{
m_bElectrical = true;
}
// Clamp the delay and percentage of aolliding particles
m_flMinDelay = clamp( m_flMinDelay, 0, 100 );
m_flMaxDelay = clamp( m_flMaxDelay, 0, 100 );
m_flPercentCollide = clamp( m_flPercentCollide, 0, 100 );
Precache( );
}
示例12: SetSolid
//-----------------------------------------------------------------------------
// Purpose: Spawns this entitye
//-----------------------------------------------------------------------------
void CTFFlameEntity::Spawn( void )
{
BaseClass::Spawn();
// don't collide with anything, we do our own collision detection in our think method
SetSolid( SOLID_NONE );
SetSolidFlags( FSOLID_NOT_SOLID );
SetCollisionGroup( COLLISION_GROUP_NONE );
// move noclip: update position from velocity, that's it
SetMoveType( MOVETYPE_NOCLIP, MOVECOLLIDE_DEFAULT );
AddEFlags( EFL_NO_WATER_VELOCITY_CHANGE );
float flBoxSize = tf_flamethrower_boxsize.GetFloat();
CALL_ATTRIB_HOOK_FLOAT_ON_OTHER( GetOwnerEntity(), flBoxSize, mult_flame_size );
UTIL_SetSize( this, -Vector( flBoxSize, flBoxSize, flBoxSize ), Vector( flBoxSize, flBoxSize, flBoxSize ) );
// Setup attributes.
m_takedamage = DAMAGE_NO;
m_vecInitialPos = GetAbsOrigin();
m_vecPrevPos = m_vecInitialPos;
m_flTimeRemove = gpGlobals->curtime + ( tf_flamethrower_flametime.GetFloat() * random->RandomFloat( 0.9, 1.1 ) );
m_hLauncher = dynamic_cast<CTFFlameThrower *>( GetOwnerEntity() );
// Setup the think function.
SetThink( &CTFFlameEntity::FlameThink );
SetNextThink( gpGlobals->curtime );
}
示例13: SetVehicleType
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CPropAirboat::Spawn( void )
{
// Setup vehicle as a ray-cast airboat.
SetVehicleType( VEHICLE_TYPE_AIRBOAT_RAYCAST );
SetCollisionGroup( COLLISION_GROUP_VEHICLE );
BaseClass::Spawn();
// Handbrake data.
m_flHandbrakeTime = gpGlobals->curtime + 0.1;
m_bInitialHandbrake = false;
m_VehiclePhysics.SetHasBrakePedal( false );
// Slow reverse.
m_VehiclePhysics.SetMaxReverseThrottle( -0.3f );
// Setup vehicle variables.
m_pVehicle = m_VehiclePhysics.GetVehicle();
m_takedamage = DAMAGE_EVENTS_ONLY;
// Get the physics object so we can adjust the buoyancy.
IPhysicsObject *pPhysAirboat = VPhysicsGetObject();
if ( pPhysAirboat )
{
pPhysAirboat->SetBuoyancyRatio( 0.0f );
}
}
示例14: SetModelName
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CResourceChunk::Spawn( )
{
// Init model
if ( IsProcessed() )
{
SetModelName( AllocPooledString( sProcessedResourceChunkModel ) );
}
else
{
SetModelName( AllocPooledString( sResourceChunkModel ) );
}
BaseClass::Spawn();
UTIL_SetSize( this, Vector(-4,-4,-4), Vector(4,4,4) );
SetMoveType( MOVETYPE_FLYGRAVITY, MOVECOLLIDE_FLY_BOUNCE );
SetSolid( SOLID_BBOX );
AddSolidFlags( FSOLID_TRIGGER );
CollisionProp()->UseTriggerBounds( true, 24 );
SetCollisionGroup( TFCOLLISION_GROUP_RESOURCE_CHUNK );
SetGravity( 1.0 );
SetFriction( 1 );
SetTouch( ChunkTouch );
SetThink( ChunkRemove );
SetNextThink( gpGlobals->curtime + random->RandomFloat( 50.0, 80.0 ) ); // Remove myself the
}
示例15: Precache
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CGrenadeBugBait::Spawn( void )
{
Precache();
SetModel( GRENADE_MODEL );
SetCollisionGroup( COLLISION_GROUP_PROJECTILE );
SetMoveType( MOVETYPE_FLYGRAVITY, MOVECOLLIDE_DEFAULT );
SetSolid( SOLID_BBOX );
UTIL_SetSize( this, Vector( -2, -2, -2), Vector( 2, 2, 2 ) );
SetTouch( &CGrenadeBugBait::BugBaitTouch );
m_takedamage = DAMAGE_NO;
m_pSporeTrail = NULL;
/*
m_pSporeTrail = SporeTrail::CreateSporeTrail();
m_pSporeTrail->m_bEmit = true;
m_pSporeTrail->m_flSpawnRate = 100.0f;
m_pSporeTrail->m_flParticleLifetime = 1.0f;
m_pSporeTrail->m_flStartSize = 1.0f;
m_pSporeTrail->m_flEndSize = 1.0f;
m_pSporeTrail->m_flSpawnRadius = 8.0f;
m_pSporeTrail->m_vecEndColor = Vector( 0, 0, 0 );
*/
}