mirror of
https://github.com/Q3Rally-Team/q3rally.git
synced 2024-11-29 23:22:55 +00:00
95fbb18fa1
Fix going to previous browser source in q3_ui Limit ui_smallFont/ui_bigFont/cg_noTaunt cvars to missionpack Fix team chat box for spectators Don't draw crosshair 0 in Team Arena setup menu Make client for Windows x86_64 use OpenAL64.dll by default Fix loading renderer DLLs on Windows x86 Add Windows application manifest Disable DPI scaling on Windows ignore window resize event on fullscreen Don't reload arenas.txt/*.arena files in Team Arena UI Fix crash when out of memory in Team Arena's String_Alloc Fix in_nograb not releasing the mouse cursor Update UI player animation handling to match CGame Fix specifying minimum mac os version in make-macosx.sh Fix listen server sending snapshots each client frame Statically link libgcc on Windows Fix hit accuracy stats for lightning gun and shotgun kills Don't link to libGL at compile time Add common OpenGL version parsing + OpenGL 3 fixes Support parsing OpenGL ES version strings Fix setting cflags/libs from sdl2-config Load OpenGL ES 1.1 function procs [qcommon] Use unsigned types where wrapping arithmetic is intended OpenGL2: Fix brightness when r_autoExposure is disabled OpenGL2: Fix MD3 surface with zero shaders dividing by zero [botlib/be_aas_def.h] Change array size from MAX_PATH to MAX_QPATH Don't redefine MAX_PATH in bot code Fix memory leak in (unused) AAS_FloodAreas() Fix compiling GLSL shaders under Windows. Only draw cm_patch/bot debug polygons in world scenes Fix reading crash log when log wraps around buffer Don't send team overlay info to bots Fix a race condition in the makedirs target Fix shader corruption on OpenBSD
285 lines
7.7 KiB
C
285 lines
7.7 KiB
C
/*
|
|
===========================================================================
|
|
Copyright (C) 1999-2005 Id Software, Inc.
|
|
|
|
This file is part of Quake III Arena source code.
|
|
|
|
Quake III Arena source code is free software; you can redistribute it
|
|
and/or modify it under the terms of the GNU General Public License as
|
|
published by the Free Software Foundation; either version 2 of the License,
|
|
or (at your option) any later version.
|
|
|
|
Quake III Arena source code is distributed in the hope that it will be
|
|
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with Quake III Arena source code; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
===========================================================================
|
|
*/
|
|
|
|
/*****************************************************************************
|
|
* name: be_aas_def.h
|
|
*
|
|
* desc: AAS
|
|
*
|
|
* $Archive: /source/code/botlib/be_aas_def.h $
|
|
*
|
|
*****************************************************************************/
|
|
|
|
#include "../qcommon/q_shared.h"
|
|
|
|
//debugging on
|
|
#define AAS_DEBUG
|
|
|
|
#define DF_AASENTNUMBER(x) (x - aasworld.entities)
|
|
#define DF_NUMBERAASENT(x) (&aasworld.entities[x])
|
|
#define DF_AASENTCLIENT(x) (x - aasworld.entities - 1)
|
|
#define DF_CLIENTAASENT(x) (&aasworld.entities[x + 1])
|
|
|
|
//structure to link entities to areas and areas to entities
|
|
typedef struct aas_link_s
|
|
{
|
|
int entnum;
|
|
int areanum;
|
|
struct aas_link_s *next_ent, *prev_ent;
|
|
struct aas_link_s *next_area, *prev_area;
|
|
} aas_link_t;
|
|
|
|
//structure to link entities to leaves and leaves to entities
|
|
typedef struct bsp_link_s
|
|
{
|
|
int entnum;
|
|
int leafnum;
|
|
struct bsp_link_s *next_ent, *prev_ent;
|
|
struct bsp_link_s *next_leaf, *prev_leaf;
|
|
} bsp_link_t;
|
|
|
|
typedef struct bsp_entdata_s
|
|
{
|
|
vec3_t origin;
|
|
vec3_t angles;
|
|
vec3_t absmins;
|
|
vec3_t absmaxs;
|
|
int solid;
|
|
int modelnum;
|
|
} bsp_entdata_t;
|
|
|
|
//entity
|
|
typedef struct aas_entity_s
|
|
{
|
|
//entity info
|
|
aas_entityinfo_t i;
|
|
//links into the AAS areas
|
|
aas_link_t *areas;
|
|
//links into the BSP leaves
|
|
bsp_link_t *leaves;
|
|
} aas_entity_t;
|
|
|
|
typedef struct aas_settings_s
|
|
{
|
|
vec3_t phys_gravitydirection;
|
|
float phys_friction;
|
|
float phys_stopspeed;
|
|
float phys_gravity;
|
|
float phys_waterfriction;
|
|
float phys_watergravity;
|
|
float phys_maxvelocity;
|
|
float phys_maxwalkvelocity;
|
|
float phys_maxcrouchvelocity;
|
|
float phys_maxswimvelocity;
|
|
float phys_walkaccelerate;
|
|
float phys_airaccelerate;
|
|
float phys_swimaccelerate;
|
|
float phys_maxstep;
|
|
float phys_maxsteepness;
|
|
float phys_maxwaterjump;
|
|
float phys_maxbarrier;
|
|
float phys_jumpvel;
|
|
float phys_falldelta5;
|
|
float phys_falldelta10;
|
|
float rs_waterjump;
|
|
float rs_teleport;
|
|
float rs_barrierjump;
|
|
float rs_startcrouch;
|
|
float rs_startgrapple;
|
|
float rs_startwalkoffledge;
|
|
float rs_startjump;
|
|
float rs_rocketjump;
|
|
float rs_bfgjump;
|
|
float rs_jumppad;
|
|
float rs_aircontrolledjumppad;
|
|
float rs_funcbob;
|
|
float rs_startelevator;
|
|
float rs_falldamage5;
|
|
float rs_falldamage10;
|
|
float rs_maxfallheight;
|
|
float rs_maxjumpfallheight;
|
|
} aas_settings_t;
|
|
|
|
#define CACHETYPE_PORTAL 0
|
|
#define CACHETYPE_AREA 1
|
|
|
|
//routing cache
|
|
typedef struct aas_routingcache_s
|
|
{
|
|
byte type; //portal or area cache
|
|
float time; //last time accessed or updated
|
|
int size; //size of the routing cache
|
|
int cluster; //cluster the cache is for
|
|
int areanum; //area the cache is created for
|
|
vec3_t origin; //origin within the area
|
|
float starttraveltime; //travel time to start with
|
|
int travelflags; //combinations of the travel flags
|
|
struct aas_routingcache_s *prev, *next;
|
|
struct aas_routingcache_s *time_prev, *time_next;
|
|
unsigned char *reachabilities; //reachabilities used for routing
|
|
unsigned short int traveltimes[1]; //travel time for every area (variable sized)
|
|
} aas_routingcache_t;
|
|
|
|
//fields for the routing algorithm
|
|
typedef struct aas_routingupdate_s
|
|
{
|
|
int cluster;
|
|
int areanum; //area number of the update
|
|
vec3_t start; //start point the area was entered
|
|
unsigned short int tmptraveltime; //temporary travel time
|
|
unsigned short int *areatraveltimes; //travel times within the area
|
|
qboolean inlist; //true if the update is in the list
|
|
struct aas_routingupdate_s *next;
|
|
struct aas_routingupdate_s *prev;
|
|
} aas_routingupdate_t;
|
|
|
|
//reversed reachability link
|
|
typedef struct aas_reversedlink_s
|
|
{
|
|
int linknum; //the aas_areareachability_t
|
|
int areanum; //reachable from this area
|
|
struct aas_reversedlink_s *next; //next link
|
|
} aas_reversedlink_t;
|
|
|
|
//reversed area reachability
|
|
typedef struct aas_reversedreachability_s
|
|
{
|
|
int numlinks;
|
|
aas_reversedlink_t *first;
|
|
} aas_reversedreachability_t;
|
|
|
|
//areas a reachability goes through
|
|
typedef struct aas_reachabilityareas_s
|
|
{
|
|
int firstarea, numareas;
|
|
} aas_reachabilityareas_t;
|
|
|
|
typedef struct aas_s
|
|
{
|
|
int loaded; //true when an AAS file is loaded
|
|
int initialized; //true when AAS has been initialized
|
|
int savefile; //set true when file should be saved
|
|
int bspchecksum;
|
|
//current time
|
|
float time;
|
|
int numframes;
|
|
//name of the aas file
|
|
char filename[MAX_QPATH];
|
|
char mapname[MAX_QPATH];
|
|
//bounding boxes
|
|
int numbboxes;
|
|
aas_bbox_t *bboxes;
|
|
//vertexes
|
|
int numvertexes;
|
|
aas_vertex_t *vertexes;
|
|
//planes
|
|
int numplanes;
|
|
aas_plane_t *planes;
|
|
//edges
|
|
int numedges;
|
|
aas_edge_t *edges;
|
|
//edge index
|
|
int edgeindexsize;
|
|
aas_edgeindex_t *edgeindex;
|
|
//faces
|
|
int numfaces;
|
|
aas_face_t *faces;
|
|
//face index
|
|
int faceindexsize;
|
|
aas_faceindex_t *faceindex;
|
|
//convex areas
|
|
int numareas;
|
|
aas_area_t *areas;
|
|
//convex area settings
|
|
int numareasettings;
|
|
aas_areasettings_t *areasettings;
|
|
//reachablity list
|
|
int reachabilitysize;
|
|
aas_reachability_t *reachability;
|
|
//nodes of the bsp tree
|
|
int numnodes;
|
|
aas_node_t *nodes;
|
|
//cluster portals
|
|
int numportals;
|
|
aas_portal_t *portals;
|
|
//cluster portal index
|
|
int portalindexsize;
|
|
aas_portalindex_t *portalindex;
|
|
//clusters
|
|
int numclusters;
|
|
aas_cluster_t *clusters;
|
|
//
|
|
int numreachabilityareas;
|
|
float reachabilitytime;
|
|
//enities linked in the areas
|
|
aas_link_t *linkheap; //heap with link structures
|
|
int linkheapsize; //size of the link heap
|
|
aas_link_t *freelinks; //first free link
|
|
aas_link_t **arealinkedentities; //entities linked into areas
|
|
//entities
|
|
int maxentities;
|
|
int maxclients;
|
|
aas_entity_t *entities;
|
|
//index to retrieve travel flag for a travel type
|
|
int travelflagfortype[MAX_TRAVELTYPES];
|
|
//travel flags for each area based on contents
|
|
int *areacontentstravelflags;
|
|
//routing update
|
|
aas_routingupdate_t *areaupdate;
|
|
aas_routingupdate_t *portalupdate;
|
|
//number of routing updates during a frame (reset every frame)
|
|
int frameroutingupdates;
|
|
//reversed reachability links
|
|
aas_reversedreachability_t *reversedreachability;
|
|
//travel times within the areas
|
|
unsigned short ***areatraveltimes;
|
|
//array of size numclusters with cluster cache
|
|
aas_routingcache_t ***clusterareacache;
|
|
aas_routingcache_t **portalcache;
|
|
//cache list sorted on time
|
|
aas_routingcache_t *oldestcache; // start of cache list sorted on time
|
|
aas_routingcache_t *newestcache; // end of cache list sorted on time
|
|
//maximum travel time through portal areas
|
|
int *portalmaxtraveltimes;
|
|
//areas the reachabilities go through
|
|
int *reachabilityareaindex;
|
|
aas_reachabilityareas_t *reachabilityareas;
|
|
} aas_t;
|
|
|
|
#define AASINTERN
|
|
|
|
#ifndef BSPCINCLUDE
|
|
|
|
#include "be_aas_main.h"
|
|
#include "be_aas_entity.h"
|
|
#include "be_aas_sample.h"
|
|
#include "be_aas_cluster.h"
|
|
#include "be_aas_reach.h"
|
|
#include "be_aas_route.h"
|
|
#include "be_aas_routealt.h"
|
|
#include "be_aas_debug.h"
|
|
#include "be_aas_file.h"
|
|
#include "be_aas_optimize.h"
|
|
#include "be_aas_bsp.h"
|
|
#include "be_aas_move.h"
|
|
|
|
#endif //BSPCINCLUDE
|