X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fpathlib%2Fcosts.qc;h=1449e382a6913daffb425bb5d58d5b7e666cb564;hb=1b0decb9afb829407eae763b3053a122e2ae3de6;hp=0b2ee4559995671b324050c7664cf0dc2455a5e5;hpb=cfc1a19f21842b65814c855082b059b22ff0c392;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/pathlib/costs.qc b/qcsrc/server/pathlib/costs.qc index 0b2ee4559..1449e382a 100644 --- a/qcsrc/server/pathlib/costs.qc +++ b/qcsrc/server/pathlib/costs.qc @@ -1,3 +1,5 @@ +#include "costs.qh" + float pathlib_g_static(entity parent,vector to, float static_cost) { return parent.pathlib_node_g + static_cost; @@ -33,8 +35,7 @@ float pathlib_h_manhattan(vector a,vector b) { //h(n) = D * (abs(n.x-goal.x) + abs(n.y-goal.y)) - float h; - h = fabs(a.x - b.x); + float h = fabs(a.x - b.x); h += fabs(a.y - b.y); h *= pathlib_gridsize; @@ -48,11 +49,10 @@ float pathlib_h_manhattan(vector a,vector b) float pathlib_h_diagonal(vector a,vector b) { //h(n) = D * max(abs(n.x-goal.x), abs(n.y-goal.y)) - float h,x,y; - x = fabs(a.x - b.x); - y = fabs(a.y - b.y); - h = pathlib_movecost * max(x,y); + float hx = fabs(a.x - b.x); + float hy = fabs(a.y - b.y); + float h = pathlib_movecost * max(hx,hy); return h; } @@ -73,21 +73,19 @@ float pathlib_h_euclidean(vector a,vector b) **/ float pathlib_h_diagonal2(vector a,vector b) { - float h_diag,h_str,h,x,y; - /* h_diagonal(n) = min(abs(n.x-goal.x), abs(n.y-goal.y)) h_straight(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h(n) = D2 * h_diagonal(n) + D * (h_straight(n) - 2*h_diagonal(n))) */ - x = fabs(a.x - b.x); - y = fabs(a.y - b.y); + float hx = fabs(a.x - b.x); + float hy = fabs(a.y - b.y); - h_diag = min(x,y); - h_str = x + y; + float h_diag = min(hx,hy); + float h_str = hx + hy; - h = pathlib_movecost_diag * h_diag; + float h = pathlib_movecost_diag * h_diag; h += pathlib_movecost * (h_str - 2 * h_diag); return h; @@ -99,28 +97,23 @@ float pathlib_h_diagonal2(vector a,vector b) **/ float pathlib_h_diagonal2sdp(vector preprev,vector prev,vector point,vector end) { - float h_diag,h_str,h,x,y,z; - //h_diagonal(n) = min(abs(n.x-goal.x), abs(n.y-goal.y)) //h_straight(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) //h(n) = D2 * h_diagonal(n) + D * (h_straight(n) - 2*h_diagonal(n))) - x = fabs(point.x - end.x); - y = fabs(point.y - end.y); - z = fabs(point.z - end.z); + float hx = fabs(point.x - end.x); + float hy = fabs(point.y - end.y); + float hz = fabs(point.z - end.z); - h_diag = min3(x,y,z); - h_str = x + y + z; + float h_diag = min3(hx,hy,hz); + float h_str = hx + hy + hz; - h = pathlib_movecost_diag * h_diag; + float h = pathlib_movecost_diag * h_diag; h += pathlib_movecost * (h_str - 2 * h_diag); - float m; - vector d1,d2; - - d1 = normalize(preprev - point); - d2 = normalize(prev - point); - m = vlen(d1-d2); + vector d1 = normalize(preprev - point); + vector d2 = normalize(prev - point); + float m = vlen(d1-d2); return h * m; } @@ -128,16 +121,14 @@ float pathlib_h_diagonal2sdp(vector preprev,vector prev,vector point,vector end) float pathlib_h_diagonal3(vector a,vector b) { - float h_diag,h_str,h,x,y,z; - - x = fabs(a.x - b.x); - y = fabs(a.y - b.y); - z = fabs(a.z - b.z); + float hx = fabs(a.x - b.x); + float hy = fabs(a.y - b.y); + float hz = fabs(a.z - b.z); - h_diag = min3(x,y,z); - h_str = x + y + z; + float h_diag = min3(hx,hy,hz); + float h_str = hx + hy + hz; - h = pathlib_movecost_diag * h_diag; + float h = pathlib_movecost_diag * h_diag; h += pathlib_movecost * (h_str - 2 * h_diag); return h;