Antkeeper
0.0.1
src
engine
ai
navmesh.hpp
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2023 Christopher J. Howard
3
*
4
* This file is part of Antkeeper source code.
5
*
6
* Antkeeper source code is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* Antkeeper source code is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#ifndef ANTKEEPER_AI_NAVMESH_HPP
21
#define ANTKEEPER_AI_NAVMESH_HPP
22
23
#include <
engine/math/vector.hpp
>
24
#include <
engine/math/se3.hpp
>
25
#include <
engine/geom/brep/brep-mesh.hpp
>
26
#include <
engine/geom/primitives/point.hpp
>
27
#include <
engine/geom/primitives/ray.hpp
>
28
#include <
engine/geom/coordinates.hpp
>
29
#include <vector>
30
31
namespace
ai
{
32
33
struct
navmesh_traversal
34
{
35
geom::brep_face
*
face
;
36
geom::brep_edge
*
edge
;
37
geom::point<float, 3>
barycentric
;
38
39
geom::point<float, 3>
target_point
;
40
geom::point<float, 3>
closest_point
;
41
geom::triangle_region
closest_region
;
42
};
43
47
[[nodiscard]]
navmesh_traversal
traverse_navmesh
(
const
geom::brep_mesh
& mesh,
geom::brep_face
* face,
const
math::fvec3
& start,
const
math::fvec3
& end);
48
49
}
// namespace ai
50
51
#endif
// ANTKEEPER_AI_NAVMESH_HPP
brep-mesh.hpp
geom::brep_edge
Curve segment bounded by two vertices.
Definition:
brep-edge.hpp:237
geom::brep_face
Portion of a shell bounded by loops.
Definition:
brep-face.hpp:244
geom::brep_mesh
Boundary representation (B-rep) of a mesh.
Definition:
brep-mesh.hpp:34
coordinates.hpp
ai
Artificial intelligence (AI)
Definition:
ai.hpp:24
ai::traverse_navmesh
navmesh_traversal traverse_navmesh(const geom::brep_mesh &mesh, geom::brep_face *face, const math::fvec3 &start, const math::fvec3 &end)
Moves a point along the surface of a mesh.
Definition:
navmesh.cpp:29
geom::triangle_region
triangle_region
Voronoi regions of a triangle.
Definition:
coordinates.hpp:34
point.hpp
ray.hpp
se3.hpp
ai::navmesh_traversal
Definition:
navmesh.hpp:34
ai::navmesh_traversal::target_point
geom::point< float, 3 > target_point
Definition:
navmesh.hpp:39
ai::navmesh_traversal::closest_region
geom::triangle_region closest_region
Definition:
navmesh.hpp:41
ai::navmesh_traversal::closest_point
geom::point< float, 3 > closest_point
Definition:
navmesh.hpp:40
ai::navmesh_traversal::barycentric
geom::point< float, 3 > barycentric
Definition:
navmesh.hpp:37
ai::navmesh_traversal::edge
geom::brep_edge * edge
Definition:
navmesh.hpp:36
ai::navmesh_traversal::face
geom::brep_face * face
Definition:
navmesh.hpp:35
math::vector
n-dimensional vector.
Definition:
vector.hpp:44
vector.hpp