From 3a6f22d05c91a6b61a4a25bb5cb374fbf756af32 Mon Sep 17 00:00:00 2001 From: Spoike Date: Mon, 9 Jan 2023 05:11:23 +0000 Subject: [PATCH] Make sure runstandardplayerphysics builtin properly initialises everything it needs. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6308 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/client/cl_main.c | 1 + engine/client/pr_csqc.c | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/engine/client/cl_main.c b/engine/client/cl_main.c index 00a1bcbd9..096678d7d 100644 --- a/engine/client/cl_main.c +++ b/engine/client/cl_main.c @@ -2568,6 +2568,7 @@ void CL_CheckServerInfo(void) // movement vars for prediction cl.bunnyspeedcap = Q_atof(InfoBuf_ValueForKey(&cl.serverinfo, "pm_bunnyspeedcap")); movevars.slidefix = (Q_atof(InfoBuf_ValueForKey(&cl.serverinfo, "pm_slidefix")) != 0); + movevars.slidyslopes = (Q_atof(InfoBuf_ValueForKey(&cl.serverinfo, "pm_slidyslopes")) != 0); movevars.airstep = (Q_atof(InfoBuf_ValueForKey(&cl.serverinfo, "pm_airstep")) != 0); movevars.pground = (Q_atof(InfoBuf_ValueForKey(&cl.serverinfo, "pm_pground")) != 0); movevars.stepdown = (Q_atof(InfoBuf_ValueForKey(&cl.serverinfo, "pm_stepdown")) != 0); diff --git a/engine/client/pr_csqc.c b/engine/client/pr_csqc.c index c4a7c7532..1c93a7fc1 100644 --- a/engine/client/pr_csqc.c +++ b/engine/client/pr_csqc.c @@ -4268,16 +4268,24 @@ static void QCBUILTIN PF_cs_runplayerphysics (pubprogfuncs_t *prinst, struct glo pmove.cmd.sidemove = csqcg.input_movevalues[1]; pmove.cmd.upmove = csqcg.input_movevalues[2]; pmove.cmd.buttons = *csqcg.input_buttons; + pmove.onladder = false; pmove.safeorigin_known = false; pmove.capsule = false; //FIXME + movevars.bunnyspeedcap = cl.bunnyspeedcap; movevars.coordtype = cls.netchan.message.prim.coordtype; + if (csqc_playerseat >= 0 && cl.playerview[csqc_playerseat].playernum+1 == ent->xv->entnum) + { + movevars.entgravity = cl.playerview[csqc_playerseat].entgravity; + movevars.maxspeed = cl.playerview[csqc_playerseat].maxspeed; + } + else + { + movevars.entgravity = 1; + movevars.maxspeed = cl.playerview[0].maxspeed; + } if (ent->xv->gravity) movevars.entgravity = ent->xv->gravity; - else if (csqc_playerseat >= 0 && cl.playerview[csqc_playerseat].playernum+1 == ent->xv->entnum) - movevars.entgravity = cl.playerview[csqc_playerseat].entgravity; - else - movevars.entgravity = 1; if (ent->xv->entnum) pmove.skipent = ent->xv->entnum; @@ -4300,11 +4308,12 @@ static void QCBUILTIN PF_cs_runplayerphysics (pubprogfuncs_t *prinst, struct glo } pmove.jump_held = (int)ent->xv->pmove_flags & PMF_JUMP_HELD; pmove.waterjumptime = 0; - pmove.onground = (int)ent->v->flags & FL_ONGROUND; + pmove.onground = !!((int)ent->v->flags & FL_ONGROUND); VectorCopy(ent->v->origin, pmove.origin); VectorCopy(ent->v->velocity, pmove.velocity); VectorCopy(ent->v->maxs, pmove.player_maxs); VectorCopy(ent->v->mins, pmove.player_mins); + VectorCopy(ent->xv->gravitydir, pmove.gravitydir); CL_SetSolidEntities();