+#include "path_waypoint.qh"
+#include "../bot/waypoints.qh"
+
+#include "pathlib.qh"
+#include "main.qh"
+
var float pathlib_wpp_open(entity wp, entity child, float cost);
void pathlib_wpp_close(entity wp)
wp.pathlib_list = closedlist;
if(wp == best_open_node)
- best_open_node = world;
+ best_open_node = NULL;
if(wp == goal_node)
pathlib_foundgoal = true;
pathlib_searched_cnt = 0;
pathlib_foundgoal = false;
- dprint("pathlib_waypointpath init\n");
+ LOG_TRACE("pathlib_waypointpath init\n");
// Initialize waypoint grid
// FIXME! presisted chain for better preformance
for(n = findchain(classname, "waypoint"); n; n = n.chain)
{
- n.pathlib_list = world;
+ n.pathlib_list = NULL;
n.pathlib_node_g = 0;
n.pathlib_node_f = 0;
n.pathlib_node_h = 0;
start_node = wp_from;
start_node.pathlib_list = closedlist;
- dprint("Expanding ",ftos(pathlib_wpp_expand(start_node))," links\n");
+ LOG_TRACE("Expanding ",ftos(pathlib_wpp_expand(start_node))," links\n");
if(pathlib_open_cnt <= 0)
{
- dprint("pathlib_waypointpath: Start waypoint not linked! aborting.\n");
- return world;
+ LOG_TRACE("pathlib_waypointpath: Start waypoint not linked! aborting.\n");
+ return NULL;
}
- return world;
+ return NULL;
}
entity pathlib_waypointpath_step()
n = pathlib_wpp_bestopen();
if(!n)
{
- dprint("Cannot find best open node, abort.\n");
- return world;
+ LOG_TRACE("Cannot find best open node, abort.\n");
+ return NULL;
}
pathlib_wpp_close(n);
- dprint("Expanding ",ftos(pathlib_wpp_expand(n))," links\n");
+ LOG_TRACE("Expanding ",ftos(pathlib_wpp_expand(n))," links\n");
if(pathlib_foundgoal)
{
entity start, end, open, ln;
- dprint("Target found. Rebuilding and filtering path...\n");
+ LOG_TRACE("Target found. Rebuilding and filtering path...\n");
buildpath_nodefilter = buildpath_nodefilter_none;
- start = path_build(world, start_node.origin, world, world);
- end = path_build(world, goal_node.origin, world, start);
+ start = path_build(NULL, start_node.origin, NULL, NULL);
+ end = path_build(NULL, goal_node.origin, NULL, start);
ln = end;
for(open = goal_node; open.path_prev != start_node; open = open.path_prev)
return start;
}
- return world;
+ return NULL;
}
-void plas_think()
+void plas_think(entity this)
{
pathlib_waypointpath_step();
if(pathlib_foundgoal)
return;
- self.nextthink = time + 0.1;
+ this.nextthink = time + 0.1;
}
void pathlib_waypointpath_autostep()
{
entity n;
n = spawn();
- n.think = plas_think;
+ setthink(n, plas_think);
n.nextthink = time + 0.1;
}