void AWalkerAIController::Tick(float DeltaSeconds) { Super::Tick(DeltaSeconds); if (Status != EWalkerStatus::RunOver) { switch (GetMoveStatus()) { case EPathFollowingStatus::Idle: case EPathFollowingStatus::Waiting: LOG_AI_WALKER(Warning, "is stuck!"); Status = EWalkerStatus::Stuck; break; case EPathFollowingStatus::Paused: LOG_AI_WALKER(Log, "is paused"); TryResumeMovement(); break; }; } }
void AWalkerAIController::Tick(float DeltaSeconds) { Super::Tick(DeltaSeconds); TimeInState+=DeltaSeconds; if (Status != EWalkerStatus::RunOver) { switch (GetMoveStatus()) { default: break; case EPathFollowingStatus::Idle: //case EPathFollowingStatus::Waiting: //<-- incomplete path LOG_AI_WALKER(Warning, "is stuck!"); ChangeStatus(EWalkerStatus::Stuck); break; case EPathFollowingStatus::Paused: if(TimeInState>WALKER_MAX_TIME_PAUSED){ LOG_AI_WALKER(Log, "is paused, trying resume movement"); TryResumeMovement(); } break; }; } }
void AWalkerAIController::TrySetMovement(bool paused) { if(paused) TryPauseMovement(false); else TryResumeMovement(); }