GPS.inc 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #if defined _inc_gps
  2. #undef _inc_gps
  3. #endif
  4. #if defined _gps_included
  5. #endinput
  6. #endif
  7. #define _gps_included
  8. const MapNode:INVALID_MAP_NODE_ID = MapNode:-1;
  9. const Path:INVALID_PATH_ID = Path:-1;
  10. const Connection:INVALID_CONNECTION_ID = Connection:-1;
  11. enum _:GPS_ERROR
  12. {
  13. GPS_ERROR_NONE = 0,
  14. GPS_ERROR_INVALID_PARAMS = -1,
  15. GPS_ERROR_INVALID_PATH = -2,
  16. GPS_ERROR_INVALID_NODE = -3,
  17. GPS_ERROR_INVALID_CONNECTION = -4,
  18. GPS_ERROR_INTERNAL = -5
  19. }
  20. native CreateMapNode(Float:x, Float:y, Float:z, &MapNode:nodeid);
  21. native DestroyMapNode(MapNode:nodeid);
  22. native bool:IsValidMapNode(MapNode:nodeid);
  23. native GetMapNodePos(MapNode:nodeid, &Float:x, &Float:y, &Float:z);
  24. native CreateConnection(MapNode:source, MapNode:target, &Connection:connectionid);
  25. native DestroyConnection(Connection:connectionid);
  26. native GetConnectionSource(Connection:connectionid, &MapNode:nodeid);
  27. native GetConnectionTarget(Connection:connectionid, &MapNode:nodeid);
  28. native GetMapNodeConnectionCount(MapNode:nodeid, &count);
  29. native GetMapNodeConnection(MapNode:nodeid, index, &Connection:connectionid);
  30. native GetConnectionBetweenMapNodes(MapNode:source, MapNode:target, &Connection:connectionid);
  31. native GetDistanceBetweenMapNodes(MapNode:first, MapNode:second, &Float:distance);
  32. native GetAngleBetweenMapNodes(MapNode:first, MapNode:second, &Float:angle);
  33. native GetMapNodeDistanceFromPoint(MapNode:nodeid, Float:x, Float:y, Float:z, &Float:distance);
  34. native GetMapNodeAngleFromPoint(MapNode:nodeid, Float:x, Float:y, &Float:angle);
  35. native GetClosestMapNodeToPoint(Float:x, Float:y, Float:z, &MapNode:nodeid, MapNode:ignorednode = INVALID_MAP_NODE_ID);
  36. native GetHighestMapNodeID();
  37. native GetRandomMapNode(&MapNode:nodeid);
  38. native SaveMapNodesToFile(const filename[]);
  39. native FindPath(MapNode:source, MapNode:target, &Path:pathid);
  40. native FindPathThreaded(MapNode:source, MapNode:target, const callback[], const format[] = "", {Float, _}:...);
  41. native bool:IsValidPath(Path:pathid);
  42. native GetPathSize(Path:pathid, &size);
  43. native GetPathLength(Path:pathid, &Float:length);
  44. native GetPathNode(Path:pathid, index, &MapNode:nodeid);
  45. native GetPathNodeIndex(Path:pathid, MapNode:nodeid, &index);
  46. native DestroyPath(Path:pathid);
  47. #if defined _PawnPlus_included
  48. stock Task:FindPathAsync(MapNode:source, MapNode:target)
  49. {
  50. new Task:task = task_new();
  51. if (FindPathThreaded(source, target, "FindPathAsyncResponse", "i", _:task) != GPS_ERROR_NONE)
  52. {
  53. task_set_error_ticks(task, amx_err_exit, 0);
  54. }
  55. return task;
  56. }
  57. forward public FindPathAsyncResponse(Path:path, Task:task);
  58. public FindPathAsyncResponse(Path:path, Task:task)
  59. {
  60. task_set_result(task, _:path);
  61. }
  62. #endif