/
Azarel
/
Metro2
Обзор
Документация
Войти
/
Azarel
/
Metro2
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Source/GameJam/Private/BTTask_FindRandomLocation.cpp
41 строка
1 KB
Arsenii
Initial commit
12 дек 2023, 21:31
12 дек 2023, 21:31
3c2092c
Код
Авторство
О чём код?
// Fill out your copyright notice in the Description page of Project Settings. #include "BTTask_FindRandomLocation.h" #include "BehaviorTree/BlackboardComponent.h" #include "NavigationSystem.h" #include "Base_AIController.h" UBTTask_FindRandomLocation::UBTTask_FindRandomLocation(FObjectInitializer const& ObjectInitializer) { NodeName = "Find Random Location In NavMesh"; } EBTNodeResult::Type UBTTask_FindRandomLocation::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) { //get AI controller and its enemy if (auto* const cont = Cast<ABase_AIController>(OwnerComp.GetAIOwner())) { if (auto* const enemyBase = cont->GetPawn()) { // obtain enemy location to use as a origin auto const Origin = enemyBase->GetActorLocation(); // get the navigetion system and generate a ranndom loacation if (auto* const NavSys = UNavigationSystemV1::GetCurrent(GetWorld())) { FNavLocation Loc; if (NavSys->GetRandomPointInNavigableRadius(Origin, SearchRadius, Loc)) { OwnerComp.GetBlackboardComponent()->SetValueAsVector(GetSelectedBlackboardKey(), Loc.Location); } //finish with success FinishLatentTask(OwnerComp, EBTNodeResult::Succeeded); return EBTNodeResult::Succeeded; } } } return EBTNodeResult::Failed; }