InvokeHelper.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef INVOKE_HELPER_H
  2. #define INVOKE_HELPER_H
  3. #if !RECASTNAVIGATION_STATIC && WIN32
  4. #define RECAST_DLL _declspec(dllexport)
  5. #else
  6. #define RECAST_DLL
  7. #endif
  8. #include "DetourNavMesh.h"
  9. #include <cstdint>
  10. #include <string>
  11. #include <map>
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. class NavMeshContex;
  16. RECAST_DLL NavMeshContex* RecastGet(int32_t id);
  17. RECAST_DLL NavMeshContex* RecastLoad(int32_t id, const char* buffer, int32_t n);
  18. RECAST_DLL void RecastClear();
  19. RECAST_DLL int32_t RecastFind(NavMeshContex* navMeshContex, float* extents, float* startPos, float* endPos, float* straightPath);
  20. RECAST_DLL int32_t RecastFindNearestPoint(NavMeshContex* navMeshContex, float* extents, float* pos, float* nearestPos);
  21. RECAST_DLL int32_t RecastFindRandomPoint(NavMeshContex* navMeshContex, float* pos);
  22. RECAST_DLL int32_t RecastFindRandomPointAroundCircle(NavMeshContex* navMeshContex, float* extents, const float* centerPos, const float maxRadius, float* pos);
  23. #ifdef __cplusplus
  24. }
  25. #endif
  26. int32_t InitNav(const char* buffer, int32_t n, dtNavMesh*& navMesh);
  27. class NavMesh
  28. {
  29. public:
  30. static NavMesh* instance;
  31. static NavMesh* GetInstace();
  32. std::map<int32_t, NavMeshContex*> navMeshContexs;
  33. NavMeshContex* New(int32_t id, const char* buffer, int32_t n);
  34. NavMeshContex* Get(int32_t id);
  35. void Clear();
  36. private:
  37. NavMesh();
  38. };
  39. #endif