RavEngine
Loading...
Searching...
No Matches
DetourPathCorridor.h
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#ifndef DETOUTPATHCORRIDOR_H
20#define DETOUTPATHCORRIDOR_H
21
22#include "DetourNavMeshQuery.h"
23
27{
28 float m_pos[3];
29 float m_target[3];
30
31 dtPolyRef* m_path;
32 int m_npath;
33 int m_maxPath;
34
35public:
38
42 bool init(const int maxPath);
43
47 void reset(dtPolyRef ref, const float* pos);
48
58 int findCorners(float* cornerVerts, unsigned char* cornerFlags,
59 dtPolyRef* cornerPolys, const int maxCorners,
60 dtNavMeshQuery* navquery, const dtQueryFilter* filter);
61
67 void optimizePathVisibility(const float* next, const float pathOptimizationRange,
68 dtNavMeshQuery* navquery, const dtQueryFilter* filter);
69
73 bool optimizePathTopology(dtNavMeshQuery* navquery, const dtQueryFilter* filter);
74
75 bool moveOverOffmeshConnection(dtPolyRef offMeshConRef, dtPolyRef* refs,
76 float* startPos, float* endPos,
77 dtNavMeshQuery* navquery);
78
79 bool fixPathStart(dtPolyRef safeRef, const float* safePos);
80
81 bool trimInvalidPath(dtPolyRef safeRef, const float* safePos,
82 dtNavMeshQuery* navquery, const dtQueryFilter* filter);
83
88 bool isValid(const int maxLookAhead, dtNavMeshQuery* navquery, const dtQueryFilter* filter);
89
96 bool movePosition(const float* npos, dtNavMeshQuery* navquery, const dtQueryFilter* filter);
97
104 bool moveTargetPosition(const float* npos, dtNavMeshQuery* navquery, const dtQueryFilter* filter);
105
110 void setCorridor(const float* target, const dtPolyRef* polys, const int npath);
111
114 inline const float* getPos() const { return m_pos; }
115
118 inline const float* getTarget() const { return m_target; }
119
122 inline dtPolyRef getFirstPoly() const { return m_npath ? m_path[0] : 0; }
123
126 inline dtPolyRef getLastPoly() const { return m_npath ? m_path[m_npath-1] : 0; }
127
130 inline const dtPolyRef* getPath() const { return m_path; }
131
134 inline int getPathCount() const { return m_npath; }
135
136private:
137 // Explicitly disabled copy constructor and copy assignment operator.
139 dtPathCorridor& operator=(const dtPathCorridor&);
140};
141
142int dtMergeCorridorStartMoved(dtPolyRef* path, const int npath, const int maxPath,
143 const dtPolyRef* visited, const int nvisited);
144
145int dtMergeCorridorEndMoved(dtPolyRef* path, const int npath, const int maxPath,
146 const dtPolyRef* visited, const int nvisited);
147
148int dtMergeCorridorStartShortcut(dtPolyRef* path, const int npath, const int maxPath,
149 const dtPolyRef* visited, const int nvisited);
150
151#endif // DETOUTPATHCORRIDOR_H
Definition DetourNavMeshQuery.h:166
Definition DetourPathCorridor.h:27
dtPolyRef getFirstPoly() const
Definition DetourPathCorridor.h:122
int getPathCount() const
Definition DetourPathCorridor.h:134
bool movePosition(const float *npos, dtNavMeshQuery *navquery, const dtQueryFilter *filter)
Definition DetourPathCorridor.cpp:439
void optimizePathVisibility(const float *next, const float pathOptimizationRange, dtNavMeshQuery *navquery, const dtQueryFilter *filter)
Definition DetourPathCorridor.cpp:310
dtPolyRef getLastPoly() const
Definition DetourPathCorridor.h:126
bool moveTargetPosition(const float *npos, dtNavMeshQuery *navquery, const dtQueryFilter *filter)
Definition DetourPathCorridor.cpp:477
bool optimizePathTopology(dtNavMeshQuery *navquery, const dtQueryFilter *filter)
Definition DetourPathCorridor.cpp:353
const dtPolyRef * getPath() const
Definition DetourPathCorridor.h:130
bool init(const int maxPath)
Definition DetourPathCorridor.cpp:215
int findCorners(float *cornerVerts, unsigned char *cornerFlags, dtPolyRef *cornerPolys, const int maxCorners, dtNavMeshQuery *navquery, const dtQueryFilter *filter)
Definition DetourPathCorridor.cpp:251
const float * getPos() const
Definition DetourPathCorridor.h:114
void reset(dtPolyRef ref, const float *pos)
Definition DetourPathCorridor.cpp:230
const float * getTarget() const
Definition DetourPathCorridor.h:118
bool isValid(const int maxLookAhead, dtNavMeshQuery *navquery, const dtQueryFilter *filter)
Definition DetourPathCorridor.cpp:586
void setCorridor(const float *target, const dtPolyRef *polys, const int npath)
Definition DetourPathCorridor.cpp:511
Definition DetourNavMeshQuery.h:36
unsigned int dtPolyRef
Definition DetourNavMesh.h:48