Recast Navigation
Navigation-mesh Toolset for Games
Loading...
Searching...
No Matches
PartitionedMesh.h
Go to the documentation of this file.
1//
2// Copyright (c) 2009-2010 Mikko Mononen memon@inside.org
3//
4// This software is provided 'as-is', without any express or implied
5// warranty. In no event will the authors be held liable for any damages
6// arising from the use of this software.
7// Permission is granted to anyone to use this software for any purpose,
8// including commercial applications, and to alter it and redistribute it
9// freely, subject to the following restrictions:
10// 1. The origin of this software must not be misrepresented; you must not
11// claim that you wrote the original software. If you use this software
12// in a product, an acknowledgment in the product documentation would be
13// appreciated but is not required.
14// 2. Altered source versions must be plainly marked as such, and must not be
15// misrepresented as being the original software.
16// 3. This notice may not be removed or altered from any source distribution.
17//
18
19#pragma once
20
21#include <vector>
22
26{
27 struct Node
28 {
29 // xy bounds
30 float bmin[2];
31 float bmax[2];
32
35 };
36
37 std::vector<Node> nodes{};
38 int nnodes = 0;
39
40 std::vector<int> tris{};
42
43 void PartitionMesh(const float* verts, const int* tris, int numTris, int trisPerChunk);
44
46 void GetNodesOverlappingRect(float bmin[2], float bmax[2], std::vector<int>& outNodes) const;
47
49 void GetNodesOverlappingSegment(float start[2], float end[2], std::vector<int>& outNodes) const;
50};
Definition PartitionedMesh.h:28
int numTris
Definition PartitionedMesh.h:34
float bmin[2]
Definition PartitionedMesh.h:30
int triIndex
Definition PartitionedMesh.h:33
float bmax[2]
Definition PartitionedMesh.h:31
A spatially-partitioned mesh (k/d tree), where each node contains at max trisPerChunk triangles.
Definition PartitionedMesh.h:26
void GetNodesOverlappingSegment(float start[2], float end[2], std::vector< int > &outNodes) const
Returns the chunk indices which overlap the input segment.
Definition PartitionedMesh.cpp:255
void PartitionMesh(const float *verts, const int *tris, int numTris, int trisPerChunk)
Definition PartitionedMesh.cpp:183
int maxTrisPerChunk
Definition PartitionedMesh.h:41
std::vector< Node > nodes
Definition PartitionedMesh.h:37
std::vector< int > tris
Definition PartitionedMesh.h:40
void GetNodesOverlappingRect(float bmin[2], float bmax[2], std::vector< int > &outNodes) const
Finds the chunk indices that overlap the input rectangle.
Definition PartitionedMesh.cpp:229
int nnodes
Definition PartitionedMesh.h:38