diff options
Diffstat (limited to 'code/botlib/be_aas_def.h')
-rwxr-xr-x | code/botlib/be_aas_def.h | 612 |
1 files changed, 306 insertions, 306 deletions
diff --git a/code/botlib/be_aas_def.h b/code/botlib/be_aas_def.h index 22ebbc5..72bb3e6 100755 --- a/code/botlib/be_aas_def.h +++ b/code/botlib/be_aas_def.h @@ -1,306 +1,306 @@ -/*
-===========================================================================
-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 Foobar; 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 $
- *
- *****************************************************************************/
-
-//debugging on
-#define AAS_DEBUG
-
-#define MAX_CLIENTS 64
-#define MAX_MODELS 256 // these are sent over the net as 8 bits
-#define MAX_SOUNDS 256 // so they cannot be blindly increased
-#define MAX_CONFIGSTRINGS 1024
-
-#define CS_SCORES 32
-#define CS_MODELS (CS_SCORES+MAX_CLIENTS)
-#define CS_SOUNDS (CS_MODELS+MAX_MODELS)
-
-#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])
-
-#ifndef MAX_PATH
- #define MAX_PATH MAX_QPATH
-#endif
-
-//string index (for model, sound and image index)
-typedef struct aas_stringindex_s
-{
- int numindexes;
- char **index;
-} aas_stringindex_t;
-
-//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_PATH];
- char mapname[MAX_PATH];
- //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;
- //string indexes
- char *configstrings[MAX_CONFIGSTRINGS];
- int indexessetup;
- //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
+/* +=========================================================================== +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 Foobar; 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 $ + * + *****************************************************************************/ + +//debugging on +#define AAS_DEBUG + +#define MAX_CLIENTS 64 +#define MAX_MODELS 256 // these are sent over the net as 8 bits +#define MAX_SOUNDS 256 // so they cannot be blindly increased +#define MAX_CONFIGSTRINGS 1024 + +#define CS_SCORES 32 +#define CS_MODELS (CS_SCORES+MAX_CLIENTS) +#define CS_SOUNDS (CS_MODELS+MAX_MODELS) + +#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]) + +#ifndef MAX_PATH + #define MAX_PATH MAX_QPATH +#endif + +//string index (for model, sound and image index) +typedef struct aas_stringindex_s +{ + int numindexes; + char **index; +} aas_stringindex_t; + +//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_PATH]; + char mapname[MAX_PATH]; + //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; + //string indexes + char *configstrings[MAX_CONFIGSTRINGS]; + int indexessetup; + //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 |