Skip to main content
added 1234 characters in body
Source Link
Robotex
  • 251
  • 2
  • 12

I found the function what does exactly what I need:

bool ARecastNavMesh::ProjectPointMulti(const FVector& Point, TArray<FNavLocation>& OutLocations, const FVector& Extent,
    float MinZ, float MaxZ, FSharedConstNavQueryFilter Filter, const UObject* QueryOwner) const

There is the example of usage:

void UEnvQueryGenerator_VolumetricGrid::NavigationRaycast(TArray<FNavLocation>& Points, const FVector& Position, FEnvQueryInstance& QueryInstance) const
{
    const UObject* Querier = QueryInstance.Owner.Get();

    const ANavigationData* NavData = nullptr;
    NavData = FEQSHelpers::FindNavigationDataForQuery(QueryInstance);

    const ARecastNavMesh* NavMeshData = Cast<const ARecastNavMesh>(NavData);
    if (NavMeshData == nullptr || Querier == nullptr)
    {
        return;
    }

    FSharedConstNavQueryFilter NavigationFilter = UNavigationQueryFilter::GetQueryFilter(*NavData, Querier, ProjectionData.NavigationFilter);

    TArray<FNavLocation> HitLocations;
    const FVector ProjectionExtent(ProjectionData.ExtentX, ProjectionData.ExtentX, (ProjectionData.ProjectDown + ProjectionData.ProjectUp) / 2);
    
    NavMeshData->ProjectPointMulti(Position, HitLocations, ProjectionExtent, Position.Z - ProjectionData.ProjectDown, Position.Z + ProjectionData.ProjectUp, NavigationFilter, Querier);
    
    for (int32 HitIdx = 0; HitIdx < HitLocations.Num(); HitIdx++)
    {
        Points.Add(HitLocations[HitIdx]);
    }
}

I found the function what does exactly what I need:

bool ARecastNavMesh::ProjectPointMulti(const FVector& Point, TArray<FNavLocation>& OutLocations, const FVector& Extent,
    float MinZ, float MaxZ, FSharedConstNavQueryFilter Filter, const UObject* QueryOwner) const

I found the function what does exactly what I need:

bool ARecastNavMesh::ProjectPointMulti(const FVector& Point, TArray<FNavLocation>& OutLocations, const FVector& Extent,
    float MinZ, float MaxZ, FSharedConstNavQueryFilter Filter, const UObject* QueryOwner) const

There is the example of usage:

void UEnvQueryGenerator_VolumetricGrid::NavigationRaycast(TArray<FNavLocation>& Points, const FVector& Position, FEnvQueryInstance& QueryInstance) const
{
    const UObject* Querier = QueryInstance.Owner.Get();

    const ANavigationData* NavData = nullptr;
    NavData = FEQSHelpers::FindNavigationDataForQuery(QueryInstance);

    const ARecastNavMesh* NavMeshData = Cast<const ARecastNavMesh>(NavData);
    if (NavMeshData == nullptr || Querier == nullptr)
    {
        return;
    }

    FSharedConstNavQueryFilter NavigationFilter = UNavigationQueryFilter::GetQueryFilter(*NavData, Querier, ProjectionData.NavigationFilter);

    TArray<FNavLocation> HitLocations;
    const FVector ProjectionExtent(ProjectionData.ExtentX, ProjectionData.ExtentX, (ProjectionData.ProjectDown + ProjectionData.ProjectUp) / 2);
    
    NavMeshData->ProjectPointMulti(Position, HitLocations, ProjectionExtent, Position.Z - ProjectionData.ProjectDown, Position.Z + ProjectionData.ProjectUp, NavigationFilter, Querier);
    
    for (int32 HitIdx = 0; HitIdx < HitLocations.Num(); HitIdx++)
    {
        Points.Add(HitLocations[HitIdx]);
    }
}
Source Link
Robotex
  • 251
  • 2
  • 12

I found the function what does exactly what I need:

bool ARecastNavMesh::ProjectPointMulti(const FVector& Point, TArray<FNavLocation>& OutLocations, const FVector& Extent,
    float MinZ, float MaxZ, FSharedConstNavQueryFilter Filter, const UObject* QueryOwner) const