#ifndef PATHLIB_H #define PATHLIB_H #if defined(CSQC) #elif defined(MENUQC) #elif defined(SVQC) #include "../../common/util-pre.qh" #include "../sys-pre.qh" #include "../../dpdefs/progsdefs.qc" #include "../../dpdefs/dpextensions.qc" #include "../sys-post.qh" #include "../../warpzonelib/anglestransform.qh" #include "../../warpzonelib/mathlib.qh" #include "../../warpzonelib/common.qh" #include "../../warpzonelib/util_server.qh" #include "../../warpzonelib/server.qh" #include "../../common/constants.qh" #include "../../common/stats.qh" #include "../../common/teams.qh" #include "../../common/util.qh" #include "../../common/nades.qh" #include "../../common/buffs.qh" #include "../../common/test.qh" #include "../../common/counting.qh" #include "../../common/urllib.qh" #include "../../common/command/markup.qh" #include "../../common/command/rpn.qh" #include "../../common/command/generic.qh" #include "../../common/command/shared_defs.qh" #include "../../common/net_notice.qh" #include "../../common/animdecide.qh" #include "../../common/monsters/monsters.qh" #include "../../common/monsters/sv_monsters.qh" #include "../../common/monsters/spawn.qh" #include "../../common/weapons/config.qh" #include "../../common/weapons/weapons.qh" #include "../weapons/accuracy.qh" #include "../weapons/common.qh" #include "../weapons/csqcprojectile.qh" #include "../weapons/hitplot.qh" #include "../weapons/selection.qh" #include "../weapons/spawning.qh" #include "../weapons/throwing.qh" #include "../weapons/tracing.qh" #include "../weapons/weaponstats.qh" #include "../weapons/weaponsystem.qh" #include "../t_items.qh" #include "../autocvars.qh" #include "../constants.qh" #include "../defs.qh" #include "../../common/notifications.qh" #include "../../common/deathtypes.qh" #include "../mutators/mutators_include.qh" #include "../tturrets/include/turrets_early.qh" #include "../vehicles/vehicles_def.qh" #include "../campaign.qh" #include "../../common/campaign_common.qh" #include "../../common/mapinfo.qh" #include "../command/common.qh" #include "../command/banning.qh" #include "../command/radarmap.qh" #include "../command/vote.qh" #include "../command/getreplies.qh" #include "../command/cmd.qh" #include "../command/sv_cmd.qh" #include "../../common/csqcmodel_settings.qh" #include "../../csqcmodellib/common.qh" #include "../../csqcmodellib/sv_model.qh" #include "../anticheat.qh" #include "../cheats.qh" #include "../../common/playerstats.qh" #include "../portals.qh" #include "../g_hook.qh" #include "../scores.qh" #include "../spawnpoints.qh" #include "../mapvoting.qh" #include "../ipban.qh" #include "../race.qh" #include "../antilag.qh" #include "../playerdemo.qh" #include "../round_handler.qh" #include "../item_key.qh" #include "../secret.qh" #endif .entity pathlib_list; .entity path_next; .entity path_prev; #define inwater(point) (pointcontents(point) == CONTENT_WATER) #define medium spawnshieldtime const vector PLIB_FORWARD = '0 1 0'; //#define PLIB_BACK '0 -1 0' const vector PLIB_RIGHT = '1 0 0'; //#define PLIB_LEFT '-1 0 0' #define DEBUGPATHING #ifdef DEBUGPATHING void pathlib_showpath(entity start); void pathlib_showpath2(entity path); #endif entity openlist; entity closedlist; entity goal_node; entity start_node; .float is_path_node; .float pathlib_node_g; .float pathlib_node_h; .float pathlib_node_f; .float pathlib_node_c; const float pathlib_node_edgeflag_unknown = 0; const float pathlib_node_edgeflag_left = 2; const float pathlib_node_edgeflag_right = 4; const float pathlib_node_edgeflag_forward = 8; const float pathlib_node_edgeflag_back = 16; const float pathlib_node_edgeflag_backleft = 32; const float pathlib_node_edgeflag_backright = 64; const float pathlib_node_edgeflag_forwardleft = 128; const float pathlib_node_edgeflag_forwardright = 256; const float pathlib_node_edgeflag_none = 512; .float pathlib_node_edgeflags; float pathlib_open_cnt; float pathlib_closed_cnt; float pathlib_made_cnt; float pathlib_merge_cnt; float pathlib_searched_cnt; float pathlib_bestopen_seached; float pathlib_bestcash_hits; float pathlib_bestcash_saved; float pathlib_gridsize; float pathlib_movecost; float pathlib_movecost_diag; float pathlib_movecost_waterfactor; float pathlib_foundgoal; float pathlib_starttime; const float pathlib_maxtime = 60; entity best_open_node; vector tile_check_up; vector tile_check_down; float tile_check_size; float tile_check_cross(vector where); float tile_check_plus(vector where); float tile_check_star(vector where); var float tile_check(vector where); float movenode_stepsize; vector movenode_stepup; vector movenode_maxdrop; vector movenode_boxup; vector movenode_boxmax; vector movenode_boxmin; float pathlib_movenode_goodnode; vector pathlib_wateroutnode(vector start, vector end, float doedge); vector pathlib_swimnode(vector start, vector end, float doedge); vector pathlib_flynode(vector start, vector end, float doedge); vector pathlib_walknode(vector start, vector end, float doedge); var vector pathlib_movenode(vector start, vector end, float doedge); float pathlib_expandnode_star(entity node, vector start, vector goal); float pathlib_expandnode_box(entity node, vector start, vector goal); float pathlib_expandnode_octagon(entity node, vector start, vector goal); var float pathlib_expandnode(entity node, vector start, vector goal); float pathlib_g_static(entity parent, vector to, float static_cost); float pathlib_g_static_water(entity parent, vector to, float static_cost); float pathlib_g_euclidean(entity parent, vector to, float static_cost); float pathlib_g_euclidean_water(entity parent, vector to, float static_cost); var float pathlib_cost(entity parent, vector to, float static_cost); float pathlib_h_manhattan(vector a, vector b); float pathlib_h_diagonal(vector a, vector b); float pathlib_h_euclidean(vector a,vector b); float pathlib_h_diagonal2(vector a, vector b); float pathlib_h_diagonal3(vector a, vector b); float pathlib_h_diagonal2sdp(vector preprev, vector prev, vector point, vector end); float pathlib_h_none(vector preprev, vector prev) { return 0; } var float pathlib_heuristic(vector from, vector to); var float pathlib_makenode(entity parent,vector start, vector to, vector goal,float cost); var float buildpath_nodefilter(vector n,vector c,vector p); var float pathlib_wpp_waypointcallback(entity wp, entity wp_prev); #ifdef DEBUGPATHING #include "debug.qc" #endif #include "utility.qc" #include "movenode.qc" #include "costs.qc" #include "expandnode.qc" #include "main.qc" #include "path_waypoint.qc" #endif