NavMap
Loading...
Searching...
No Matches
NavMap.hpp File Reference

Core container and data structures for EasyNav navigable meshes. More...

#include <vector>
#include <memory>
#include <unordered_map>
#include <optional>
#include <string>
#include <array>
#include <limits>
#include <cmath>
#include <cstdint>
#include <type_traits>
#include <deque>
#include <algorithm>
#include <utility>
#include "Eigen/Core"
#include "navmap_core/Geometry.hpp"
Include dependency graph for NavMap.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  BVHNode
 Node in a per-surface bounding volume hierarchy (BVH). More...
struct  Colors
 Optional per-vertex colors (RGBA, 8-bit per channel). More...
struct  LayerMeta
 Metadata associated to a layer (optional). More...
class  LayerRegistry
 Registry of named layers (per-NavCel). More...
struct  LayerView< T >
 Typed layer view storing one T value per NavCel. More...
struct  LayerViewBase
 Non-templated base for runtime layer handling. More...
struct  NavMap::LocateOpts
 Options for the locate functions. More...
struct  NavCel
 Navigation cell (triangle) with geometry and adjacency. More...
class  NavMap
struct  Positions
 Structure-of-arrays for storing 3D vertex positions. More...
struct  Ray
 Simple ray (origin + direction). More...
struct  RayHit
 Result of a raycast against the NavMap. More...
struct  Surface
 A connected set of NavCels in a common reference frame. More...
 Connection between two NavCels that do not share an edge (stairs, an elevator, a door between surfaces that are not welded...). More...

Namespaces

namespace  navmap

Typedefs

using NavCelId = uint32_t
 Index of a triangle (NavCel) within the global mesh.
using PointId = uint32_t
 Index into the per-vertex position arrays (SoA).

Enumerations

enum class  AreaShape { CIRCULAR , RECTANGULAR }
 Shape selector for area-writing APIs. More...
enum class  LayerType : uint8_t { U8 = 0 , F32 = 1 , F64 = 2 , I16 = 3 }
 Runtime type tag for a layer's scalar storage. More...
enum class  LinkType : uint8_t {
  GENERIC = 0 , RAMP = 1 , STAIRS = 2 , ELEVATOR = 3 ,
  DOOR = 4
}
 Main container for navigable surfaces, geometry, and layers. More...

Functions

template<typename T>
constexpr LayerType layer_type_tag ()
 Helper to map C++ scalar type to navmap::LayerType tag.
template<>
constexpr LayerType layer_type_tag< double > ()
template<>
constexpr LayerType layer_type_tag< float > ()
template<>
constexpr LayerType layer_type_tag< int16_t > ()
template<>
constexpr LayerType layer_type_tag< uint8_t > ()

Detailed Description

Core container and data structures for EasyNav navigable meshes.

This header defines the fundamental types for NavMap:

  • Vertex storage as a structure-of-arrays (SoA) via navmap::Positions.
  • Triangle cells (navmap::NavCel) with cached geometry and adjacency.
  • Surfaces (navmap::Surface) as partitions of triangles with their own BVH.
  • A per-NavCel layer registry (navmap::LayerRegistry) to store arbitrary scalar attributes (occupancy, cost, elevation, etc.).
  • The main navmap::NavMap container, including geometry queries such as raycast, closest-triangle and nav-cell localization.

The API exposes low-level containers while providing convenience utilities for common workflows without sacrificing control.