diff options
| author | zakk <zakk@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2005-08-26 04:48:05 +0000 | 
|---|---|---|
| committer | zakk <zakk@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2005-08-26 04:48:05 +0000 | 
| commit | 952c5c128f9efaea89d41d882c4ea3ade7df4591 (patch) | |
| tree | 91b84d9be7afad7e99ac64a640a65b6cb5081900 /code/game/be_ai_move.h | |
| parent | c2c2e0d25d6cdb7d42d7dc981a863f65f94f281d (diff) | |
| download | ioquake3-aero-952c5c128f9efaea89d41d882c4ea3ade7df4591.tar.gz ioquake3-aero-952c5c128f9efaea89d41d882c4ea3ade7df4591.zip  | |
Itsa me, quake3io!
git-svn-id: svn://svn.icculus.org/quake3/trunk@2 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'code/game/be_ai_move.h')
| -rwxr-xr-x | code/game/be_ai_move.h | 142 | 
1 files changed, 142 insertions, 0 deletions
diff --git a/code/game/be_ai_move.h b/code/game/be_ai_move.h new file mode 100755 index 0000000..1f0c756 --- /dev/null +++ b/code/game/be_ai_move.h @@ -0,0 +1,142 @@ +/*
 +===========================================================================
 +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_ai_move.h
 + *
 + * desc:		movement AI
 + *
 + * $Archive: /source/code/botlib/be_ai_move.h $
 + *
 + *****************************************************************************/
 +
 +//movement types
 +#define MOVE_WALK						1
 +#define MOVE_CROUCH						2
 +#define MOVE_JUMP						4
 +#define MOVE_GRAPPLE					8
 +#define MOVE_ROCKETJUMP					16
 +#define MOVE_BFGJUMP					32
 +//move flags
 +#define MFL_BARRIERJUMP					1		//bot is performing a barrier jump
 +#define MFL_ONGROUND					2		//bot is in the ground
 +#define MFL_SWIMMING					4		//bot is swimming
 +#define MFL_AGAINSTLADDER				8		//bot is against a ladder
 +#define MFL_WATERJUMP					16		//bot is waterjumping
 +#define MFL_TELEPORTED					32		//bot is being teleported
 +#define MFL_GRAPPLEPULL					64		//bot is being pulled by the grapple
 +#define MFL_ACTIVEGRAPPLE				128		//bot is using the grapple hook
 +#define MFL_GRAPPLERESET				256		//bot has reset the grapple
 +#define MFL_WALK						512		//bot should walk slowly
 +// move result flags
 +#define MOVERESULT_MOVEMENTVIEW			1		//bot uses view for movement
 +#define MOVERESULT_SWIMVIEW				2		//bot uses view for swimming
 +#define MOVERESULT_WAITING				4		//bot is waiting for something
 +#define MOVERESULT_MOVEMENTVIEWSET		8		//bot has set the view in movement code
 +#define MOVERESULT_MOVEMENTWEAPON		16		//bot uses weapon for movement
 +#define MOVERESULT_ONTOPOFOBSTACLE		32		//bot is ontop of obstacle
 +#define MOVERESULT_ONTOPOF_FUNCBOB		64		//bot is ontop of a func_bobbing
 +#define MOVERESULT_ONTOPOF_ELEVATOR		128		//bot is ontop of an elevator (func_plat)
 +#define MOVERESULT_BLOCKEDBYAVOIDSPOT	256		//bot is blocked by an avoid spot
 +//
 +#define MAX_AVOIDREACH					1
 +#define MAX_AVOIDSPOTS					32
 +// avoid spot types
 +#define AVOID_CLEAR						0		//clear all avoid spots
 +#define AVOID_ALWAYS					1		//avoid always
 +#define AVOID_DONTBLOCK					2		//never totally block
 +// restult types
 +#define RESULTTYPE_ELEVATORUP			1		//elevator is up
 +#define RESULTTYPE_WAITFORFUNCBOBBING	2		//waiting for func bobbing to arrive
 +#define RESULTTYPE_BADGRAPPLEPATH		4		//grapple path is obstructed
 +#define RESULTTYPE_INSOLIDAREA			8		//stuck in solid area, this is bad
 +
 +//structure used to initialize the movement state
 +//the or_moveflags MFL_ONGROUND, MFL_TELEPORTED and MFL_WATERJUMP come from the playerstate
 +typedef struct bot_initmove_s
 +{
 +	vec3_t origin;				//origin of the bot
 +	vec3_t velocity;			//velocity of the bot
 +	vec3_t viewoffset;			//view offset
 +	int entitynum;				//entity number of the bot
 +	int client;					//client number of the bot
 +	float thinktime;			//time the bot thinks
 +	int presencetype;			//presencetype of the bot
 +	vec3_t viewangles;			//view angles of the bot
 +	int or_moveflags;			//values ored to the movement flags
 +} bot_initmove_t;
 +
 +//NOTE: the ideal_viewangles are only valid if MFL_MOVEMENTVIEW is set
 +typedef struct bot_moveresult_s
 +{
 +	int failure;				//true if movement failed all together
 +	int type;					//failure or blocked type
 +	int blocked;				//true if blocked by an entity
 +	int blockentity;			//entity blocking the bot
 +	int traveltype;				//last executed travel type
 +	int flags;					//result flags
 +	int weapon;					//weapon used for movement
 +	vec3_t movedir;				//movement direction
 +	vec3_t ideal_viewangles;	//ideal viewangles for the movement
 +} bot_moveresult_t;
 +
 +// bk001204: from code/botlib/be_ai_move.c
 +// TTimo 04/12/2001 was moved here to avoid dup defines
 +typedef struct bot_avoidspot_s
 +{
 +	vec3_t origin;
 +	float radius;
 +	int type;
 +} bot_avoidspot_t;
 +
 +//resets the whole move state
 +void BotResetMoveState(int movestate);
 +//moves the bot to the given goal
 +void BotMoveToGoal(bot_moveresult_t *result, int movestate, bot_goal_t *goal, int travelflags);
 +//moves the bot in the specified direction using the specified type of movement
 +int BotMoveInDirection(int movestate, vec3_t dir, float speed, int type);
 +//reset avoid reachability
 +void BotResetAvoidReach(int movestate);
 +//resets the last avoid reachability
 +void BotResetLastAvoidReach(int movestate);
 +//returns a reachability area if the origin is in one
 +int BotReachabilityArea(vec3_t origin, int client);
 +//view target based on movement
 +int BotMovementViewTarget(int movestate, bot_goal_t *goal, int travelflags, float lookahead, vec3_t target);
 +//predict the position of a player based on movement towards a goal
 +int BotPredictVisiblePosition(vec3_t origin, int areanum, bot_goal_t *goal, int travelflags, vec3_t target);
 +//returns the handle of a newly allocated movestate
 +int BotAllocMoveState(void);
 +//frees the movestate with the given handle
 +void BotFreeMoveState(int handle);
 +//initialize movement state before performing any movement
 +void BotInitMoveState(int handle, bot_initmove_t *initmove);
 +//add a spot to avoid (if type == AVOID_CLEAR all spots are removed)
 +void BotAddAvoidSpot(int movestate, vec3_t origin, float radius, int type);
 +//must be called every map change
 +void BotSetBrushModelTypes(void);
 +//setup movement AI
 +int BotSetupMoveAI(void);
 +//shutdown movement AI
 +void BotShutdownMoveAI(void);
 +
  | 
