本文整理汇总了C++中ClearCondition函数的典型用法代码示例。如果您正苦于以下问题:C++ ClearCondition函数的具体用法?C++ ClearCondition怎么用?C++ ClearCondition使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ClearCondition函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: SetCondition
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void CAI_OperatorBehavior::GatherConditions( void )
{
if( GetGoalEntity() )
{
if( GetGoalEntity()->GetState() == OPERATOR_STATE_FINISHED )
{
if( IsCurSchedule(SCHED_OPERATOR_OPERATE) )
{
// Break us out of the operator schedule if the operation completes.
SetCondition(COND_PROVOKED);
}
m_hGoalEntity.Set(NULL);
m_hPositionEnt.Set(NULL);
}
else
{
if( CanSeePositionEntity() )
{
ClearCondition( COND_OPERATOR_LOST_SIGHT_OF_POSITION );
}
else
{
SetCondition( COND_OPERATOR_LOST_SIGHT_OF_POSITION );
}
}
}
BaseClass::GatherConditions();
// Ignore player pushing.
ClearCondition( COND_PLAYER_PUSHING );
}
开发者ID:Black-Stormy,项目名称:DoubleAction,代码行数:35,代码来源:ai_behavior_operator.cpp
示例2: SetCondition
//-----------------------------------------------------------------------------
// Purpose: Move the zombie to the vehicle
//-----------------------------------------------------------------------------
int CAI_PassengerBehaviorZombie::SelectSchedule( void )
{
// See if our enemy got out
if ( GetOuter()->GetEnemy() != NULL && EnemyInVehicle() == false )
{
if ( GetPassengerState() == PASSENGER_STATE_INSIDE )
{
// Exit the vehicle
SetCondition( COND_PASSENGER_EXITING );
}
else if ( GetPassengerState() == PASSENGER_STATE_OUTSIDE )
{
// Our target has left the vehicle and we're outside as well, so give up
Disable();
return BaseClass::SelectSchedule();
}
}
// Entering schedule
if ( HasCondition( COND_PASSENGER_ENTERING ) )
{
ClearCondition( COND_PASSENGER_ENTERING );
return SCHED_PASSENGER_ZOMBIE_ENTER_VEHICLE;
}
// Exiting schedule
if ( HasCondition( COND_PASSENGER_EXITING ) )
{
ClearCondition( COND_PASSENGER_EXITING );
return SCHED_PASSENGER_ZOMBIE_EXIT_VEHICLE;
}
// Select different schedules based on our state
PassengerState_e nState = GetPassengerState();
int nNewSchedule = SCHED_NONE;
if ( nState == PASSENGER_STATE_INSIDE )
{
nNewSchedule = SelectInsideSchedule();
if ( nNewSchedule != SCHED_NONE )
return nNewSchedule;
}
else if ( nState == PASSENGER_STATE_OUTSIDE )
{
nNewSchedule = SelectOutsideSchedule();
if ( nNewSchedule != SCHED_NONE )
return nNewSchedule;
}
// Worst case he just stands here
Assert(0);
return SCHED_IDLE_STAND;
}
开发者ID:SizzlingStats,项目名称:hl2sdk-ob-valve,代码行数:56,代码来源:ai_behavior_passenger_zombie.cpp
示例3: SetCondition
//-----------------------------------------------------------------------------
// Purpose:
// Input :
// Output :
//-----------------------------------------------------------------------------
void CBaseHelicopter::GatherEnemyConditions( CBaseEntity *pEnemy )
{
// -------------------
// If enemy is dead
// -------------------
if ( !pEnemy->IsAlive() )
{
SetCondition( COND_ENEMY_DEAD );
ClearCondition( COND_SEE_ENEMY );
ClearCondition( COND_ENEMY_OCCLUDED );
return;
}
}
开发者ID:SizzlingStats,项目名称:hl2sdk-ob-valve,代码行数:18,代码来源:cbasehelicopter.cpp
示例4: ClearCondition
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CAI_PassengerBehaviorZombie::GatherConditions( void )
{
BaseClass::GatherConditions();
// Always clear the base conditions
ClearCondition( COND_CAN_MELEE_ATTACK1 );
// Behavior when outside the vehicle
if ( GetPassengerState() == PASSENGER_STATE_OUTSIDE )
{
if ( CanBeOnEnemyVehicle() && CanJumpToAttachToVehicle() )
{
SetCondition( COND_CAN_RANGE_ATTACK1 );
}
// Determine if we can latch on to the vehicle (out of sight)
ClearCondition( COND_PASSENGER_ZOMBIE_CAN_ATTACH_TO_VEHICLE );
CBasePlayer *pPlayer = AI_GetSinglePlayer();
if ( pPlayer != NULL &&
GetOuter()->GetEnemy() == pPlayer &&
pPlayer->GetVehicleEntity() == m_hVehicle )
{
// Can't be visible to the player and must be close enough
bool bNotVisibleToPlayer = ( pPlayer->FInViewCone( GetOuter() ) == false );
float flDistSqr = ( pPlayer->GetAbsOrigin() - GetOuter()->GetAbsOrigin() ).LengthSqr();
bool bInRange = ( flDistSqr < Square(250.0f) );
if ( bNotVisibleToPlayer && bInRange )
{
// We can latch on and "enter" the vehicle
SetCondition( COND_PASSENGER_ZOMBIE_CAN_ATTACH_TO_VEHICLE );
}
else if ( bNotVisibleToPlayer == false && flDistSqr < Square(128.0f) )
{
// Otherwise just hit the vehicle in anger
SetCondition( COND_CAN_MELEE_ATTACK1 );
}
}
}
// Behavior when on the car
if ( GetPassengerState() == PASSENGER_STATE_INSIDE )
{
// Check for melee attack
if ( GetOuter()->GetNextAttack() < gpGlobals->curtime )
{
SetCondition( COND_CAN_MELEE_ATTACK1 );
}
}
}
开发者ID:SizzlingStats,项目名称:hl2sdk-ob-valve,代码行数:53,代码来源:ai_behavior_passenger_zombie.cpp
示例5: Disable
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CAI_PolicingBehavior::GatherConditions( void )
{
BaseClass::GatherConditions();
// Mapmaker may have removed our goal while we're running our schedule
if ( !m_hPoliceGoal )
{
Disable();
return;
}
ClearCondition( COND_POLICE_TARGET_TOO_CLOSE_HARASS );
ClearCondition( COND_POLICE_TARGET_TOO_CLOSE_SUPPRESS );
CBaseEntity *pTarget = m_hPoliceGoal->GetTarget();
if ( pTarget == NULL )
{
DevMsg( "ai_goal_police with NULL target entity!\n" );
return;
}
// See if we need to knock out our target immediately
if ( ShouldKnockOutTarget( pTarget ) )
{
SetCondition( COND_POLICE_TARGET_TOO_CLOSE_SUPPRESS );
}
float flDistSqr = ( m_hPoliceGoal->WorldSpaceCenter() - pTarget->WorldSpaceCenter() ).Length2DSqr();
float radius = ( m_hPoliceGoal->GetRadius() * PATROL_RADIUS_RATIO );
float zDiff = fabs( m_hPoliceGoal->WorldSpaceCenter().z - pTarget->WorldSpaceCenter().z );
// If we're too far away, don't bother
if ( flDistSqr < (radius*radius) && zDiff < 32.0f )
{
SetCondition( COND_POLICE_TARGET_TOO_CLOSE_HARASS );
if ( flDistSqr < (m_hPoliceGoal->GetRadius()*m_hPoliceGoal->GetRadius()) )
{
SetCondition( COND_POLICE_TARGET_TOO_CLOSE_SUPPRESS );
}
}
// If we're supposed to stop chasing (aggression over), return
if ( m_bTargetIsHostile && m_flAggressiveTime < gpGlobals->curtime && IsCurSchedule(SCHED_CHASE_ENEMY) )
{
// Force me to re-evaluate my schedule
GetOuter()->ClearSchedule( "Stopped chasing, aggression over" );
}
}
开发者ID:SizzlingStats,项目名称:hl2sdk-ob-valve,代码行数:53,代码来源:ai_behavior_police.cpp
示例6: ClearCondition
int CRebelZombie::SelectFailSchedule( int failedSchedule, int failedTask, AI_TaskFailureCode_t taskFailCode )
{
if ( HasCondition( COND_BLOCKED_BY_DOOR ) && m_hBlockingDoor != NULL )
{
ClearCondition( COND_BLOCKED_BY_DOOR );
if ( m_NextTimeToStartDoorBash.Expired() && failedSchedule != SCHED_ZOMBIE_BASH_DOOR )
return SCHED_ZOMBIE_BASH_DOOR;
m_hBlockingDoor = NULL;
}
if ( failedSchedule != SCHED_ZOMBIE_CHARGE_ENEMY &&
IsPathTaskFailure( taskFailCode ) &&
random->RandomInt( 1, 100 ) < 50 )
{
return SCHED_ZOMBIE_CHARGE_ENEMY;
}
if ( failedSchedule != SCHED_ZOMBIE_WANDER_ANGRILY &&
( failedSchedule == SCHED_TAKE_COVER_FROM_ENEMY ||
failedSchedule == SCHED_CHASE_ENEMY_FAILED ) )
{
return SCHED_ZOMBIE_WANDER_ANGRILY;
}
return BaseClass::SelectFailSchedule( failedSchedule, failedTask, taskFailCode );
}
开发者ID:KyleGospo,项目名称:City-17-Episode-One-Source,代码行数:26,代码来源:npc_rebelzombie.cpp
示例7: SetNextThink
//------------------------------------------------------------------------------
// Purpose : The main think function for the helicopters
// Input :
// Output :
//------------------------------------------------------------------------------
void CBaseHelicopter::HelicopterThink( void )
{
SetNextThink( gpGlobals->curtime + HELICOPTER_THINK_INTERVAL );
// Don't keep this around for more than one frame.
ClearCondition( COND_ENEMY_DEAD );
// Animate and dispatch animation events.
StudioFrameAdvance( );
DispatchAnimEvents( this );
PrescheduleThink();
ShowDamage( );
// -----------------------------------------------
// If AI is disabled, kill any motion and return
// -----------------------------------------------
if (CAI_BaseNPC::m_nDebugBits & bits_debugDisableAI)
{
SetAbsVelocity( vec3_origin );
SetLocalAngularVelocity( vec3_angle );
SetNextThink( gpGlobals->curtime + HELICOPTER_THINK_INTERVAL );
return;
}
Hunt();
HelicopterPostThink();
}
开发者ID:RaisingTheDerp,项目名称:raisingthebar,代码行数:35,代码来源:cbasehelicopter.cpp
示例8: StopSound
//------------------------------------------------------------------------------
// Purpose : Draw attack beam and do damage / decals
// Input :
// Output :
//------------------------------------------------------------------------------
void CNPC_Stalker::KillAttackBeam(void)
{
if ( !m_pBeam )
return;
// Kill sound
StopSound(m_pBeam->entindex(), "NPC_Stalker.BurnWall" );
StopSound(m_pBeam->entindex(), "NPC_Stalker.BurnFlesh" );
UTIL_Remove( m_pLightGlow );
UTIL_Remove( m_pBeam);
m_pBeam = NULL;
m_bPlayingHitWall = false;
m_bPlayingHitFlesh = false;
SetThink(&CNPC_Stalker::CallNPCThink);
if ( m_flNextNPCThink > gpGlobals->curtime )
{
SetNextThink( m_flNextNPCThink );
}
// Beam has to recharge
m_fBeamRechargeTime = gpGlobals->curtime + STALKER_LASER_RECHARGE;
ClearCondition( COND_CAN_RANGE_ATTACK1 );
RelaxAim();
}
开发者ID:Muini,项目名称:Nag-asw,代码行数:33,代码来源:npc_stalker.cpp
示例9: ClearCondition
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CNPC_Assassin::GatherEnemyConditions( CBaseEntity *pEnemy )
{
ClearCondition( COND_ASSASSIN_ENEMY_TARGETTING_ME );
BaseClass::GatherEnemyConditions( pEnemy );
// See if we're being targetted specifically
if ( HasCondition( COND_ENEMY_FACING_ME ) )
{
Vector enemyDir = GetAbsOrigin() - pEnemy->GetAbsOrigin();
VectorNormalize( enemyDir );
Vector enemyBodyDir;
CBasePlayer *pPlayer = ToBasePlayer( pEnemy );
if ( pPlayer != NULL )
{
enemyBodyDir = pPlayer->BodyDirection3D();
}
else
{
AngleVectors( pEnemy->GetAbsAngles(), &enemyBodyDir );
}
float enemyDot = DotProduct( enemyBodyDir, enemyDir );
//FIXME: Need to refine this a bit
if ( enemyDot > 0.97f )
{
SetCondition( COND_ASSASSIN_ENEMY_TARGETTING_ME );
}
}
}
开发者ID:0xFEEDC0DE64,项目名称:UltraGame,代码行数:36,代码来源:npc_assassin.cpp
示例10: GetExpresser
void CAI_PlayerAlly::OnChangeRunningBehavior( CAI_BehaviorBase *pOldBehavior, CAI_BehaviorBase *pNewBehavior )
{
BaseClass::OnChangeRunningBehavior( pOldBehavior, pNewBehavior );
CAI_FollowBehavior *pFollowBehavior;
if ( dynamic_cast<CAI_FollowBehavior *>(pNewBehavior) != NULL )
{
GetExpresser()->SetSpokeConcept( TLK_HELLO, NULL ); // Don't say hi after you've started following
if ( IsOkToCombatSpeak() )
Speak( TLK_USE );
SetSpeechTarget( GetTarget() );
ClearCondition( COND_PLAYER_PUSHING );
}
else if ( ( pFollowBehavior = dynamic_cast<CAI_FollowBehavior *>(pOldBehavior) ) != NULL )
{
if ( !(m_afMemory & bits_MEMORY_PROVOKED) )
{
if ( IsOkToCombatSpeak() )
{
if ( pFollowBehavior->GetFollowTarget() == NULL )
Speak( TLK_UNUSE );
else
Speak( TLK_STOP );
}
SetSpeechTarget( FindNearestFriend(true) );
}
}
}
开发者ID:RaisingTheDerp,项目名称:raisingthebar,代码行数:27,代码来源:npc_talker.cpp
示例11: BestEnemy
//-----------------------------------------------------------------------------
// Purpose:
// Input :
// Output :
//-----------------------------------------------------------------------------
bool CBaseHelicopter::ChooseEnemy( void )
{
// See if there's a new enemy.
CBaseEntity *pNewEnemy;
pNewEnemy = BestEnemy();
if ( pNewEnemy != GetEnemy() )
{
if ( pNewEnemy != NULL )
{
// New enemy! Clear the timers and set conditions.
SetEnemy( pNewEnemy );
m_flLastSeen = m_flPrevSeen = gpGlobals->curtime;
}
else
{
SetEnemy( NULL );
SetState( NPC_STATE_ALERT );
}
return true;
}
else
{
ClearCondition( COND_NEW_ENEMY );
return false;
}
}
开发者ID:SizzlingStats,项目名称:hl2sdk-ob-valve,代码行数:33,代码来源:cbasehelicopter.cpp
示例12: ClearCondition
//---------------------------------------------------------
//---------------------------------------------------------
void CNPC_Combine_Cannon::InputDisableSniper( inputdata_t &inputdata )
{
ClearCondition( COND_CANNON_ENABLED );
SetCondition( COND_CANNON_DISABLED );
m_fEnabled = false;
}
开发者ID:SizzlingStats,项目名称:hl2sdk-ob-valve,代码行数:9,代码来源:npc_combine_cannon.cpp
示例13: ClearCondition
void CNPC_Hydra::CheckLength( )
{
int i;
ClearCondition( COND_HYDRA_SNAGGED );
ClearCondition( COND_HYDRA_NOSTUCK );
ClearCondition( COND_HYDRA_OVERSTRETCH );
m_bHasStuckSegments = m_body[m_body.Count() - 1].bStuck;
m_flCurrentLength = 0;
for (i = 1; i < m_body.Count() - 1; i++)
{
float length = (m_body[i+1].vecPos - m_body[i].vecPos).Length();
Assert( m_body[i+1].vecPos.IsValid( ) );
Assert( m_body[i].vecPos.IsValid( ) );
Assert( IsFinite( length ) );
m_body[i].flActualLength = length;
m_flCurrentLength += length;
// check for over streatched segements
if (length > m_idealSegmentLength * 3.0 && (m_body[i].bStuck || m_body[i+1].bStuck))
{
//NDebugOverlay::Line( m_body[i].vecPos, m_body[i+1].vecPos, 255, 0, 0, true, 1.0);
SetCondition( COND_HYDRA_SNAGGED );
}
if (m_body[i].bStuck)
{
m_bHasStuckSegments = true;
}
}
if (m_flCurrentLength > HYDRA_MAX_LENGTH) // FIXME
{
SetCondition( COND_HYDRA_OVERSTRETCH );
}
if (!m_bHasStuckSegments)
{
SetCondition( COND_HYDRA_NOSTUCK );
}
}
开发者ID:Adidasman1,项目名称:source-sdk-2013,代码行数:46,代码来源:npc_hydra.cpp
示例14: GetExpresser
void CNPCSimpleTalker::OnStartingFollow( CBaseEntity *pTarget )
{
GetExpresser()->SetSpokeConcept( TLK_HELLO, NULL ); // Don't say hi after you've started following
if ( IsOkToSpeak() ) // don't speak if idle talk is blocked. player commanded/use follow will always speak
Speak( TLK_STARTFOLLOW );
SetSpeechTarget( GetTarget() );
ClearCondition( COND_PLAYER_PUSHING );
}
开发者ID:Denzeriko,项目名称:hl2-mod,代码行数:8,代码来源:npc_talker.cpp
示例15: ClearCondition
void CNPC_Bullsquid::RemoveIgnoredConditions( void )
{
if ( m_flHungryTime > gpGlobals->curtime )
ClearCondition( COND_SQUID_SMELL_FOOD );
if ( gpGlobals->curtime - m_flLastHurtTime <= 20 )
{
// haven't been hurt in 20 seconds, so let the squid care about stink.
ClearCondition( COND_SMELL );
}
if ( GetEnemy() != NULL )
{
// ( Unless after a tasty headcrab, yumm ^_^ )
if ( FClassnameIs( GetEnemy(), "monster_headcrab" ) )
ClearCondition( COND_SMELL );
}
}
开发者ID:hitmen047,项目名称:TF2HLCoop,代码行数:18,代码来源:hl1_npc_bullsquid.cpp
示例16: GetAbsOrigin
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void CAI_AssaultBehavior::GatherConditions( void )
{
BaseClass::GatherConditions();
// If this NPC is moving towards an assault point which
// a) Has a Next Assault Point, and
// b) Is flagged to Clear On Arrival,
// then hit and clear the assault point (fire all entity I/O) and move on to the next one without
// interrupting the NPC's schedule. This provides a more fluid movement from point to point.
if( IsCurSchedule( SCHED_MOVE_TO_ASSAULT_POINT ) && hl2_episodic.GetBool() )
{
if( m_hAssaultPoint && m_hAssaultPoint->HasSpawnFlags(SF_ASSAULTPOINT_CLEARONARRIVAL) && m_hAssaultPoint->m_NextAssaultPointName != NULL_STRING )
{
float flDist = GetAbsOrigin().DistTo( m_hAssaultPoint->GetAbsOrigin() );
if( flDist <= GetOuter()->GetMotor()->MinStoppingDist() )
{
OnHitAssaultPoint();
ClearAssaultPoint();
AI_NavGoal_t goal( m_hAssaultPoint->GetAbsOrigin() );
goal.pTarget = m_hAssaultPoint;
if ( GetNavigator()->SetGoal( goal ) == false )
{
TaskFail( "Can't refresh assault path" );
}
}
}
if( OnStrictAssault() )
{
// Don't get distracted. Die trying if you have to.
ClearCondition( COND_HEAR_DANGER );
}
}
if ( IsForcingCrouch() && GetOuter()->IsCrouching() )
{
ClearCondition( COND_HEAR_BULLET_IMPACT );
}
}
开发者ID:paralin,项目名称:hl2sdk,代码行数:44,代码来源:ai_behavior_assault.cpp
示例17: ShutUpFriends
int CAI_PlayerAlly::PlayScriptedSentence( const char *pszSentence, float delay, float volume, soundlevel_t soundlevel, bool bConcurrent, CBaseEntity *pListener )
{
if ( !bConcurrent )
ShutUpFriends();
ClearCondition( COND_PLAYER_PUSHING ); // Forget about moving! I've got something to say!
int sentenceIndex = BaseClass::PlayScriptedSentence( pszSentence, delay, volume, soundlevel, bConcurrent, pListener );
SetSpeechTarget( pListener );
return sentenceIndex;
}
开发者ID:RaisingTheDerp,项目名称:raisingthebar,代码行数:11,代码来源:npc_talker.cpp
示例18: ClearCondition
//-----------------------------------------------------------------------------
// Purpose:
// Input : *pOther -
//-----------------------------------------------------------------------------
void CNPC_AntlionGrub::EndTouch( CBaseEntity *pOther )
{
ClearCondition( COND_ANTLIONGRUB_BEING_SQUASHED );
m_bSquashValid = false;
/*
CSoundEnvelopeController::GetController().SoundChangePitch( m_pVoiceSound, 100, 0.5f );
CSoundEnvelopeController::GetController().SoundChangeVolume( m_pVoiceSound, 0.0f, 1.0f );
*/
m_flPlaybackRate = 1.0f;
}
开发者ID:Bubbasacs,项目名称:FinalProj,代码行数:17,代码来源:npc_antliongrub.cpp
示例19: ClearCondition
//------------------------------------------------------------------------------
// Purpose: sets / clears conditions for when the behavior is active. this is
// generally a larger set of conditions to interrupt any tasks.
//------------------------------------------------------------------------------
void CAI_ASW_HealOtherBehavior::GatherConditions( )
{
BaseClass::GatherConditions();
ClearCondition( COND_HEAL_OTHER_HAS_FULL_HEALTH ); // needed?
if ( GetTarget() != NULL )
{
if ( GetTarget()->m_iHealth == GetTarget()->m_iMaxHealth )
{
SetCondition( COND_HEAL_OTHER_HAS_FULL_HEALTH );
}
}
}
开发者ID:jtanx,项目名称:ch1ckenscoop,代码行数:18,代码来源:asw_ai_behavior_heal_other.cpp
示例20: ClearCondition
int CNPC_Zombine::SelectSchedule( void )
{
if ( GetHealth() <= 0 )
return BaseClass::SelectSchedule();
if ( HasCondition( COND_ZOMBINE_GRENADE ) )
{
ClearCondition( COND_ZOMBINE_GRENADE );
return SCHED_ZOMBINE_PULL_GRENADE;
}
return BaseClass::SelectSchedule();
}
开发者ID:Baer42,项目名称:source-sdk-2013,代码行数:14,代码来源:npc_zombine.cpp
注:本文中的ClearCondition函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论