5 #define inwater(point) (pointcontents(point) == CONTENT_WATER)
6 #define medium spawnshieldtime
8 #define PLIB_FORWARD '0 1 0'
9 //#define PLIB_BACK '0 -1 0'
10 #define PLIB_RIGHT '1 0 0'
11 //#define PLIB_LEFT '-1 0 0'
15 void pathlib_showpath(entity start);
16 void pathlib_showpath2(entity path);
27 .float pathlib_node_g;
28 .float pathlib_node_h;
29 .float pathlib_node_f;
30 .float pathlib_node_c;
32 #define pathlib_node_edgeflag_unknown 0
33 #define pathlib_node_edgeflag_left 2
34 #define pathlib_node_edgeflag_right 4
35 #define pathlib_node_edgeflag_forward 8
36 #define pathlib_node_edgeflag_back 16
37 #define pathlib_node_edgeflag_backleft 32
38 #define pathlib_node_edgeflag_backright 64
39 #define pathlib_node_edgeflag_forwardleft 128
40 #define pathlib_node_edgeflag_forwardright 256
41 #define pathlib_node_edgeflag_none 512
42 .float pathlib_node_edgeflags;
44 float pathlib_open_cnt;
45 float pathlib_closed_cnt;
46 float pathlib_made_cnt;
47 float pathlib_merge_cnt;
48 float pathlib_searched_cnt;
49 float pathlib_bestopen_seached;
50 float pathlib_bestcash_hits;
51 float pathlib_bestcash_saved;
52 float pathlib_gridsize;
53 float pathlib_movecost;
54 float pathlib_movecost_diag;
55 float pathlib_movecost_waterfactor;
56 float pathlib_foundgoal;
58 float pathlib_starttime;
59 #define pathlib_maxtime 60
61 entity best_open_node;
64 vector tile_check_down;
65 float tile_check_size;
66 float tile_check_cross(vector where);
67 float tile_check_plus(vector where);
68 float tile_check_star(vector where);
69 var float tile_check(vector where);
71 float movenode_stepsize;
72 vector movenode_stepup;
73 vector movenode_maxdrop;
74 vector movenode_boxup;
75 vector movenode_boxmax;
76 vector movenode_boxmin;
77 float pathlib_movenode_goodnode;
79 vector pathlib_wateroutnode(vector start, vector end);
80 vector pathlib_swimnode(vector start, vector end);
81 vector pathlib_flynode(vector start, vector end);
82 vector pathlib_walknode(vector start, vector end, float doedge);
83 var vector pathlib_movenode(vector start, vector end, float doedge);
85 float pathlib_expandnode_star(entity node, vector start, vector goal);
86 float pathlib_expandnode_box(entity node, vector start, vector goal);
87 float pathlib_expandnode_octagon(entity node, vector start, vector goal);
88 var float pathlib_expandnode(entity node, vector start, vector goal);
90 float pathlib_g_static(entity parent, vector to, float static_cost);
91 float pathlib_g_static_water(entity parent, vector to, float static_cost);
92 float pathlib_g_euclidean(entity parent, vector to, float static_cost);
93 float pathlib_g_euclidean_water(entity parent, vector to, float static_cost);
94 var float pathlib_cost(entity parent, vector to, float static_cost);
96 float pathlib_h_manhattan(vector a, vector b);
97 float pathlib_h_diagonal(vector a, vector b);
98 float pathlib_h_euclidean(vector a,vector b);
99 float pathlib_h_diagonal2(vector a, vector b);
100 float pathlib_h_diagonal3(vector a, vector b);
101 float pathlib_h_diagonal2sdp(vector preprev, vector prev, vector point, vector end);
102 float pathlib_h_none(vector preprev, vector prev) { return 0; }
103 var float pathlib_heuristic(vector from, vector to);
105 var float pathlib_makenode(entity parent,vector start, vector to, vector goal,float cost);
106 var float buildpath_nodefilter(vector n,vector c,vector p);
108 var float pathlib_wpp_waypointcallback(entity wp, entity wp_prev);
109 var const float pathlib_wpp_wpcb_null();
115 #include "utility.qc"
116 #include "movenode.qc"
118 #include "expandnode.qc"
120 #include "path_waypoint.qc"