From 4c7c65781487614e7e7f8a4ba1526971d3225e4b Mon Sep 17 00:00:00 2001 From: lordhavoc Date: Wed, 15 May 2002 02:30:05 +0000 Subject: [PATCH] sv_stepheight cvar, SV_Init now calls SV_Phys_Init, and another unsuccessful attempt to make items float in air if spawned on soon-deleted platforms (mapper trick for floating items) git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@1834 d7cf8633-e32d-0410-b094-e92efae38249 --- sv_main.c | 6 +++++- sv_phys.c | 16 +++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/sv_main.c b/sv_main.c index d8c47b0d..b1dd7400 100644 --- a/sv_main.c +++ b/sv_main.c @@ -35,6 +35,8 @@ static mempool_t *sv_edicts_mempool = NULL; //============================================================================ +extern void SV_Phys_Init (void); + /* =============== SV_Init @@ -61,6 +63,8 @@ void SV_Init (void) Cvar_RegisterVariable (&sv_cullentities_trace); Cvar_RegisterVariable (&sv_cullentities_stats); + SV_Phys_Init(); + for (i = 0;i < MAX_MODELS;i++) sprintf (localmodels[i], "*%i", i); @@ -1805,7 +1809,7 @@ void SV_SpawnServer (char *server) // serverflags are for cross level information (sigils) pr_global_struct->serverflags = svs.serverflags; - + ED_LoadFromFile (sv.worldmodel->entities); // LordHavoc: clear world angles (to fix e3m3.bsp) VectorClear(sv.edicts->v.angles); diff --git a/sv_phys.c b/sv_phys.c index d646562c..c40f0072 100644 --- a/sv_phys.c +++ b/sv_phys.c @@ -44,11 +44,17 @@ cvar_t sv_stopspeed = {0, "sv_stopspeed","100"}; cvar_t sv_gravity = {CVAR_NOTIFY, "sv_gravity","800"}; cvar_t sv_maxvelocity = {0, "sv_maxvelocity","2000"}; cvar_t sv_nostep = {0, "sv_nostep","0"}; +cvar_t sv_stepheight = {0, "sv_stepheight", "18"}; #define MOVE_EPSILON 0.01 void SV_Physics_Toss (edict_t *ent); +void SV_Phys_Init (void) +{ + Cvar_RegisterVariable(&sv_stepheight); +} + /* ================ SV_CheckAllEnts @@ -778,7 +784,7 @@ void SV_CheckStuck (edict_t *ent) SV_LinkEdict (ent, true); return; } - + for (z=0 ; z< 18 ; z++) for (i=-1 ; i <= 1 ; i++) for (j=-1 ; j <= 1 ; j++) @@ -931,7 +937,6 @@ SV_WalkMove Only used by players ====================== */ -#define STEPSIZE 18 void SV_WalkMove (edict_t *ent) { vec3_t upmove, downmove; @@ -977,8 +982,8 @@ void SV_WalkMove (edict_t *ent) VectorClear (upmove); VectorClear (downmove); - upmove[2] = STEPSIZE; - downmove[2] = -STEPSIZE + oldvel[2]*sv.frametime; + upmove[2] = sv_stepheight.value; + downmove[2] = -sv_stepheight.value + oldvel[2]*sv.frametime; // move up SV_PushEntity (ent, upmove, vec3_origin); // FIXME: don't link? @@ -1257,10 +1262,11 @@ void SV_Physics_Toss (edict_t *ent) groundentity = PROG_TO_EDICT(ent->v.groundentity); if (groundentity != NULL && groundentity->v.solid == SOLID_BSP) ent->suspendedinairflag = true; - else if (ent->suspendedinairflag && (groundentity == NULL || groundentity->v.solid != SOLID_BSP)) + else if (ent->suspendedinairflag && (groundentity == NULL || groundentity->free)) { // leave it suspended in the air ent->v.groundentity = 0; + ent->suspendedinairflag = false; return; } } -- 2.39.2