From 0023db327bc1db00068284b70e1db45857aeee35 Mon Sep 17 00:00:00 2001 From: Travis Bradshaw Date: Tue, 31 Jan 2012 14:32:09 -0600 Subject: The Quake sources as originally release under the GPL license on December 21, 1999 --- QW/client/pmove.h | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 QW/client/pmove.h (limited to 'QW/client/pmove.h') diff --git a/QW/client/pmove.h b/QW/client/pmove.h new file mode 100644 index 0000000..302c506 --- /dev/null +++ b/QW/client/pmove.h @@ -0,0 +1,101 @@ +/* +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); -- cgit v1.2.3