mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-12-26 23:43:34 +00:00
c26086aff5
* Add path height correction on world load * Increase height because Nexus Tower is tall * Update height checker - Only go up and down, do not deviate from the point you are on - As a backup, use the nearestPoint on the nearestPoly, should detour be able to find one. - Add a debug assert to fail the program should toReturn differ from nearestPoint[1]. Update dNavMesh.cpp Update dNavMesh.cpp * Fix if condition to actually return the value... --------- Co-authored-by: Aaron Kimbrell <aronwk.aaron@gmail.com>
50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include <vector>
|
|
#include <map>
|
|
#include <string>
|
|
#include <cstring>
|
|
|
|
#include "DetourExtensions.h"
|
|
|
|
class NiPoint3;
|
|
|
|
class dNavMesh {
|
|
public:
|
|
dNavMesh(uint32_t zoneId);
|
|
~dNavMesh();
|
|
|
|
/**
|
|
* Get the height at a point
|
|
*
|
|
* @param location The location to check for height at. This is the center of the search area.
|
|
* @param halfExtentsHeight The half extents height of the search area. This is the distance from the center to the top and bottom of the search area.
|
|
* The larger the value of halfExtentsHeight is, the larger the performance cost of the query.
|
|
* @return float The height at the point. If the point is not on the navmesh, the height of the point is returned.
|
|
*/
|
|
float GetHeightAtPoint(const NiPoint3& location, const float halfExtentsHeight = 32.0f) const;
|
|
std::vector<NiPoint3> GetPath(const NiPoint3& startPos, const NiPoint3& endPos, float speed = 10.0f);
|
|
|
|
class dtNavMesh* GetdtNavMesh() { return m_NavMesh; }
|
|
|
|
private:
|
|
void LoadNavmesh();
|
|
|
|
uint32_t m_ZoneId;
|
|
|
|
uint8_t* m_Triareas = nullptr;
|
|
rcHeightfield* m_Solid = nullptr;
|
|
rcCompactHeightfield* m_CHF = nullptr;
|
|
rcContourSet* m_CSet = nullptr;
|
|
rcPolyMesh* m_PMesh = nullptr;
|
|
rcConfig m_Config;
|
|
rcPolyMeshDetail* m_PMDMesh = nullptr;
|
|
|
|
class InputGeom* m_Geometry = nullptr;
|
|
class dtNavMesh* m_NavMesh = nullptr;
|
|
class dtNavMeshQuery* m_NavQuery = nullptr;
|
|
uint8_t m_NavMeshDrawFlags;
|
|
rcContext* m_Ctx = nullptr;
|
|
};
|