EBTNodeResult::Type UATBTTask_MoveArea::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) { UNavigationSystem* NavigationSystem = UNavigationSystem::GetCurrent(GetWorld()); AATCharacterAI* MyCharacter = Cast<AATCharacterAI>(OwnerComp.GetAIOwner()->GetPawn()); if (NavigationSystem != nullptr && MyCharacter != nullptr) { FNavLocation RandomPointIn; if (NavigationSystem->GetRandomPointInNavigableRadius(MyCharacter->GetActorLocation(), MyCharacter->AreaRadius, RandomPointIn)) { OwnerComp.GetBlackboardComponent()->SetValue<UBlackboardKeyType_Vector>(GetSelectedBlackboardKey(), RandomPointIn.Location); return EBTNodeResult::Succeeded; } } return EBTNodeResult::Failed; }
FString UBTDecorator_UtilityBlackboard::GetStaticDescription() const { return FString::Printf(TEXT("Utility Key: %s"), *GetSelectedBlackboardKey().ToString()); }