Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
navigation.qh
Go to the documentation of this file.
1#pragma once
2/*
3 * Globals and Fields
4 */
5
9
14
16
17// stack of current goals (the last one of which may be an item or other
18// desirable object, the rest are typically waypoints to reach it)
27
32
33// final goal (item, object or player) is also saved in this field
34.entity goalentity;
37
40
41/*
42// item it is linked from waypoint it.wpXX (INCOMING link)
43// links are sorted by their cost (wpXXmincost)
44// one of these links is added in game every time a bot heads to an item
45// even links that are not walkable are added (marked with a high cost)
46// so that bots next time know if they can walk it or not saving a tracewalk call
47.entity wp00, wp01, wp02, wp03, wp04, wp05, wp06, wp07, wp08, wp09, wp10, wp11, wp12, wp13, wp14, wp15;
48.entity wp16, wp17, wp18, wp19, wp20, wp21, wp22, wp23, wp24, wp25, wp26, wp27, wp28, wp29, wp30, wp31;
49
50.float wp00mincost, wp01mincost, wp02mincost, wp03mincost, wp04mincost, wp05mincost, wp06mincost, wp07mincost;
51.float wp08mincost, wp09mincost, wp10mincost, wp11mincost, wp12mincost, wp13mincost, wp14mincost, wp15mincost;
52.float wp16mincost, wp17mincost, wp18mincost, wp19mincost, wp20mincost, wp21mincost, wp22mincost, wp23mincost;
53.float wp24mincost, wp25mincost, wp26mincost, wp27mincost, wp28mincost, wp29mincost, wp30mincost, wp31mincost;
54*/
55
56#define navigation_item_initlinks_ifneeded(e) MACRO_BEGIN if (!e.wp00) waypoint_clearlinks(e); MACRO_END // initialize wpXXmincost fields
57#define navigation_item_getlinknum(to_item, from_wp) waypoint_getlinknum(to_item, from_wp)
58#define navigation_item_iswalkablelink(to_item, from_wp) (waypoint_get_assigned_link_cost(to_item, from_wp) < 999)
59
60#define navigation_item_add_link(from_wp, to_item, walkable) \
61 waypoint_addlink_customcost(to_item, from_wp, (walkable ? waypoint_getlinkcost(from_wp, to_item) : 999))
62
63#define TELEPORT_USED(pl, tele_wp) \
64 boxesoverlap(tele_wp.absmin, tele_wp.absmax, pl.lastteleport_origin + STAT(PL_MIN, pl), pl.lastteleport_origin + STAT(PL_MAX, pl))
65
68
71
74
76
79
80const float DEBUG_NODE_SUCCESS = 1;
81const float DEBUG_NODE_WARNING = 2;
82const float DEBUG_NODE_FAIL = 3;
84
85entity bot_waypoint_queue_owner; // Owner of the temporary list of goals
86entity bot_waypoint_queue_goal; // Head of the temporary list of goals
90
92
95void navigation_dynamicgoal_init(entity this, bool initially_static);
96void navigation_dynamicgoal_set(entity this, entity dropper);
98
100#define SUBMERGED_UNDEFINED 0
101#define SUBMERGED_NO 1
102#define SUBMERGED_YES 2
104
105
106/*
107 * Functions
108 */
109
110void debugresetnodes();
111void debugnode(entity this, vector node);
112void debugnodestatus(vector position, float status);
113
114void debuggoalstack(entity this);
115
116float tracewalk(entity e, vector start, vector m1, vector m2, vector end, float end_height, float movemode);
117
118float navigation_markroutes_nearestwaypoints(entity this, float maxdist);
119float navigation_routetogoal(entity this, entity e, vector startposition);
120
123void navigation_poproute(entity this);
124void navigation_markroutes_checkwaypoint(entity w, entity wp, float cost2, vector p);
125void navigation_markroutes(entity this, entity fixed_source_waypoint);
126void navigation_markroutes_inverted(entity fixed_source_waypoint);
127void navigation_routerating(entity this, entity e, float f, float rangebias);
135void navigation_unstuck(entity this);
136
137void botframe_updatedangerousobjects(float maxupdate);
138
139entity navigation_findnearestwaypoint(entity ent, float walkfromwp);
140float navigation_waypoint_will_link(vector v, vector org, entity ent, vector v2, float v2_height, vector o2, float o2_height, float walkfromwp, float bestdist);
entity bot_basewaypoint
Definition api.qh:106
float lastteleporttime
Definition api.qh:50
float nearestwaypointtimeout
Definition api.qh:53
entity nearestwaypoint
Definition api.qh:54
bool navigation_dynamicgoal
Definition api.qh:107
vector lastteleport_origin
Definition api.qh:51
float goalentity_lock_timeout
Definition api.qh:97
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
entity goalentity
Definition viewloc.qh:16
entity goalstack06
Definition navigation.qh:20
bool goalentity_shouldbefrozen
Definition navigation.qh:36
entity bot_waypoint_queue_bestgoal
Definition navigation.qh:88
entity goalstack15
Definition navigation.qh:22
entity wp_goal_prev1
Definition navigation.qh:70
void debugnodestatus(vector position, float status)
float navigation_routetogoal(entity this, entity e, vector startposition)
float navigation_waypoint_will_link(vector v, vector org, entity ent, vector v2, float v2_height, vector o2, float o2_height, float walkfromwp, float bestdist)
float bot_navigation_movemode
Definition navigation.qh:7
entity goalstack17
Definition navigation.qh:23
entity navigation_findnearestwaypoint(entity ent, float walkfromwp)
void navigation_goalrating_start(entity this)
entity goalstack03
Definition navigation.qh:19
void navigation_goalrating_timeout_force(entity this)
Definition navigation.qc:29
float goalcurrent_distance_2d
Definition navigation.qh:30
void navigation_markroutes_inverted(entity fixed_source_waypoint)
void navigation_goalrating_timeout_set(entity this)
Definition navigation.qc:20
void debugnode(entity this, vector node)
entity goalstack23
Definition navigation.qh:24
entity goalstack07
Definition navigation.qh:20
const float DEBUG_NODE_SUCCESS
Definition navigation.qh:80
float bot_waypoint_queue_bestgoalrating
Definition navigation.qh:89
void navigation_unstuck(entity this)
float goalcurrent_distance_time
Definition navigation.qh:31
entity goalstack19
Definition navigation.qh:23
entity goalstack27
Definition navigation.qh:25
void navigation_markroutes_checkwaypoint(entity w, entity wp, float cost2, vector p)
entity goalstack25
Definition navigation.qh:25
vector navigation_jetpack_point
Definition navigation.qh:78
entity goalstack22
Definition navigation.qh:24
const float DEBUG_NODE_WARNING
Definition navigation.qh:81
entity goalcurrent
Definition navigation.qh:19
entity bot_waypoint_queue_owner
Definition navigation.qh:85
float navigation_markroutes_nearestwaypoints(entity this, float maxdist)
entity goalstack12
Definition navigation.qh:22
vector jumpstepheightvec
Definition navigation.qh:10
vector stepheightvec
Definition navigation.qh:11
bool navigation_goalrating_timeout(entity this)
Definition navigation.qc:44
entity goalstack08
Definition navigation.qh:21
void navigation_dynamicgoal_init(entity this, bool initially_static)
Definition navigation.qc:77
void navigation_markroutes(entity this, entity fixed_source_waypoint)
const float BOT_BUNNYHOP_WP_DETECTION_RANGE
Definition navigation.qh:91
void navigation_poproute(entity this)
entity navigation_bestgoal
Definition navigation.qh:15
entity bot_waypoint_queue_nextgoal
Definition navigation.qh:87
entity goalstack11
Definition navigation.qh:21
void navigation_routerating(entity this, entity e, float f, float rangebias)
entity goalstack30
Definition navigation.qh:26
entity goalstack29
Definition navigation.qh:26
float tracewalk(entity e, vector start, vector m1, vector m2, vector end, float end_height, float movemode)
void navigation_dynamicgoal_set(entity this, entity dropper)
Definition navigation.qc:87
entity goalstack24
Definition navigation.qh:25
bool navigation_check_submerged_state(entity ent, vector pos)
void navigation_clearroute(entity this)
entity goalcurrent_prev
Definition navigation.qh:28
entity goalstack04
Definition navigation.qh:20
entity navigation_jetpack_goal
Definition navigation.qh:77
void debuggoalstack(entity this)
int nav_submerged_state
Definition navigation.qh:99
float goalcurrent_distance_z
Definition navigation.qh:29
void navigation_goalrating_end(entity this)
vector jumpheight_vec
Definition navigation.qh:12
entity goalstack05
Definition navigation.qh:20
entity goalstack16
Definition navigation.qh:23
float blacklisted
Definition navigation.qh:75
void navigation_pushroute(entity this, entity e)
bool navigation_shortenpath(entity this)
entity bot_waypoint_queue_goal
Definition navigation.qh:86
entity goalstack14
Definition navigation.qh:22
entity goalstack18
Definition navigation.qh:23
entity goalstack20
Definition navigation.qh:24
entity goalstack13
Definition navigation.qh:22
float jumpheight_time
Definition navigation.qh:13
vector tracewalk_dest
Definition navigation.qh:66
entity goalstack09
Definition navigation.qh:21
entity goalstack31
Definition navigation.qh:26
entity goalstack10
Definition navigation.qh:21
entity goalstack02
Definition navigation.qh:19
entity goalstack21
Definition navigation.qh:24
float tracewalk_dest_height
Definition navigation.qh:67
void botframe_updatedangerousobjects(float maxupdate)
int navigation_poptouchedgoals(entity this)
entity wp_goal_prev0
Definition navigation.qh:69
float navigation_bestrating
Definition navigation.qh:6
entity goalstack28
Definition navigation.qh:26
float navigation_testtracewalk
Definition navigation.qh:8
const float DEBUG_NODE_FAIL
Definition navigation.qh:82
void navigation_dynamicgoal_unset(entity this)
Definition navigation.qc:96
vector debuglastnode
Definition navigation.qh:83
void debugresetnodes()
entity goalstack01
Definition navigation.qh:19
entity goalstack26
Definition navigation.qh:25
vector
Definition self.qh:92
vector org
Definition self.qh:92