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.float dmg; // for danger detection
42
43/*
44// item it is linked from waypoint it.wpXX (INCOMING link)
45// links are sorted by their cost (wpXXmincost)
46// one of these links is added in game every time a bot heads to an item
47// even links that are not walkable are added (marked with a high cost)
48// so that bots next time know if they can walk it or not saving a tracewalk call
49.entity wp00, wp01, wp02, wp03, wp04, wp05, wp06, wp07, wp08, wp09, wp10, wp11, wp12, wp13, wp14, wp15;
50.entity wp16, wp17, wp18, wp19, wp20, wp21, wp22, wp23, wp24, wp25, wp26, wp27, wp28, wp29, wp30, wp31;
51
52.float wp00mincost, wp01mincost, wp02mincost, wp03mincost, wp04mincost, wp05mincost, wp06mincost, wp07mincost;
53.float wp08mincost, wp09mincost, wp10mincost, wp11mincost, wp12mincost, wp13mincost, wp14mincost, wp15mincost;
54.float wp16mincost, wp17mincost, wp18mincost, wp19mincost, wp20mincost, wp21mincost, wp22mincost, wp23mincost;
55.float wp24mincost, wp25mincost, wp26mincost, wp27mincost, wp28mincost, wp29mincost, wp30mincost, wp31mincost;
56*/
57
58#define navigation_item_initlinks_ifneeded(e) MACRO_BEGIN if (!e.wp00) waypoint_clearlinks(e); MACRO_END // initialize wpXXmincost fields
59#define navigation_item_getlinknum(to_item, from_wp) waypoint_getlinknum(to_item, from_wp)
60#define navigation_item_iswalkablelink(to_item, from_wp) (waypoint_get_assigned_link_cost(to_item, from_wp) < 999)
61
62#define navigation_item_add_link(from_wp, to_item, walkable) \
63 waypoint_addlink_customcost(to_item, from_wp, (walkable ? waypoint_getlinkcost(from_wp, to_item) : 999))
64
65#define TELEPORT_USED(pl, tele_wp) \
66 boxesoverlap(tele_wp.absmin, tele_wp.absmax, pl.lastteleport_origin + STAT(PL_MIN, pl), pl.lastteleport_origin + STAT(PL_MAX, pl))
67
70
73
76
78
81
82const float DEBUG_NODE_SUCCESS = 1;
83const float DEBUG_NODE_WARNING = 2;
84const float DEBUG_NODE_FAIL = 3;
86
87entity bot_waypoint_queue_owner; // Owner of the temporary list of goals
88entity bot_waypoint_queue_goal; // Head of the temporary list of goals
92
94
97void navigation_dynamicgoal_init(entity this, bool initially_static);
98void navigation_dynamicgoal_set(entity this, entity dropper);
100
102#define SUBMERGED_UNDEFINED 0
103#define SUBMERGED_NO 1
104#define SUBMERGED_YES 2
106
107
108/*
109 * Functions
110 */
111
112void debugresetnodes();
113void debugnode(entity this, vector node);
114void debugnodestatus(vector position, float status);
115
116void debuggoalstack(entity this);
117
118float tracewalk(entity e, vector start, vector m1, vector m2, vector end, float end_height, float movemode);
119
120float navigation_markroutes_nearestwaypoints(entity this, float maxdist);
121float navigation_routetogoal(entity this, entity e, vector startposition);
122
125void navigation_poproute(entity this);
126void navigation_markroutes_checkwaypoint(entity w, entity wp, float cost2, vector p);
127void navigation_markroutes(entity this, entity fixed_source_waypoint);
128void navigation_markroutes_inverted(entity fixed_source_waypoint);
129void navigation_routerating(entity this, entity e, float f, float rangebias);
137void navigation_unstuck(entity this);
138
139void botframe_updatedangerousobjects(float maxupdate);
140
141entity navigation_findnearestwaypoint(entity ent, float walkfromwp);
142float 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
float dmg
Definition breakable.qc:12
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:90
entity goalstack15
Definition navigation.qh:22
entity wp_goal_prev1
Definition navigation.qh:72
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:82
float bot_waypoint_queue_bestgoalrating
Definition navigation.qh:91
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:80
entity goalstack22
Definition navigation.qh:24
const float DEBUG_NODE_WARNING
Definition navigation.qh:83
entity goalcurrent
Definition navigation.qh:19
entity bot_waypoint_queue_owner
Definition navigation.qh:87
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:93
void navigation_poproute(entity this)
entity navigation_bestgoal
Definition navigation.qh:15
entity bot_waypoint_queue_nextgoal
Definition navigation.qh:89
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:79
void debuggoalstack(entity this)
int nav_submerged_state
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:77
void navigation_pushroute(entity this, entity e)
bool navigation_shortenpath(entity this)
entity bot_waypoint_queue_goal
Definition navigation.qh:88
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:68
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:69
void botframe_updatedangerousobjects(float maxupdate)
int navigation_poptouchedgoals(entity this)
entity wp_goal_prev0
Definition navigation.qh:71
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:84
void navigation_dynamicgoal_unset(entity this)
Definition navigation.qc:96
vector debuglastnode
Definition navigation.qh:85
void debugresetnodes()
entity goalstack01
Definition navigation.qh:19
entity goalstack26
Definition navigation.qh:25
vector
Definition self.qh:96
vector org
Definition self.qh:96