123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- /*
- Copyright (C) 1996-1997 Id Software, Inc.
- This program 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.
- This program 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 this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
- typedef struct
- {
- vec3_t normal;
- float dist;
- } pmplane_t;
- typedef struct
- {
- qboolean allsolid; // if true, plane is not valid
- qboolean startsolid; // if true, the initial point was in a solid area
- qboolean inopen, inwater;
- float fraction; // time completed, 1.0 = didn't hit anything
- vec3_t endpos; // final position
- pmplane_t plane; // surface normal at impact
- int ent; // entity the surface is on
- } pmtrace_t;
- #define MAX_PHYSENTS 32
- typedef struct
- {
- vec3_t origin;
- model_t *model; // only for bsp models
- vec3_t mins, maxs; // only for non-bsp models
- int info; // for client or server to identify
- } physent_t;
- typedef struct
- {
- int sequence; // just for debugging prints
- // player state
- vec3_t origin;
- vec3_t angles;
- vec3_t velocity;
- int oldbuttons;
- float waterjumptime;
- qboolean dead;
- int spectator;
- // world state
- int numphysent;
- physent_t physents[MAX_PHYSENTS]; // 0 should be the world
- // input
- usercmd_t cmd;
- // results
- int numtouch;
- int touchindex[MAX_PHYSENTS];
- } playermove_t;
- typedef struct {
- float gravity;
- float stopspeed;
- float maxspeed;
- float spectatormaxspeed;
- float accelerate;
- float airaccelerate;
- float wateraccelerate;
- float friction;
- float waterfriction;
- float entgravity;
- } movevars_t;
- extern movevars_t movevars;
- extern playermove_t pmove;
- extern int onground;
- extern int waterlevel;
- extern int watertype;
- void PlayerMove (void);
- void Pmove_Init (void);
- int PM_HullPointContents (hull_t *hull, int num, vec3_t p);
- int PM_PointContents (vec3_t point);
- qboolean PM_TestPlayerPosition (vec3_t point);
- pmtrace_t PM_PlayerMove (vec3_t start, vec3_t stop);
|