FPathFindingResult AAbstractNavData::FindPathAbstract(const FNavAgentProperties& AgentProperties, const FPathFindingQuery& Query) { const ANavigationData* Self = Query.NavData.Get(); if (Self == NULL) { return ENavigationQueryResult::Error; } FPathFindingResult Result; Result.Path = Query.PathInstanceToFill.IsValid() ? Query.PathInstanceToFill : Self->CreatePathInstance<FAbstractNavigationPath>(Query.Owner.Get()); Result.Path->GetPathPoints().Reset(); Result.Path->GetPathPoints().Add(FNavPathPoint(Query.StartLocation)); Result.Path->GetPathPoints().Add(FNavPathPoint(Query.EndLocation)); Result.Path->MarkReady(); Result.Result = ENavigationQueryResult::Success; return Result; }
FNavigationPath::FNavigationPath(const TArray<FVector>& Points, AActor* InBase) : PathType(FNavigationPath::Type) , bUpToDate(true) , bIsReady(true) , bIsPartial(false) , bReachedSearchLimit(false) , GoalActorLocationTetherDistanceSq(-1.f) { Base = InBase; PathPoints.AddZeroed(Points.Num()); for (int32 i = 0; i < Points.Num(); i++) { FBasedPosition BasedPoint(InBase, Points[i]); PathPoints[i] = FNavPathPoint(*BasedPoint); } }