From 8e67475fccc7ec7475b8ddb9a53122adda88f948 Mon Sep 17 00:00:00 2001 From: divverent Date: Sat, 12 Nov 2011 19:52:01 +0000 Subject: [PATCH] support pmove_flags (the actual flag values may be wrong, someone please find the CSQC spec about them) git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@11551 d7cf8633-e32d-0410-b094-e92efae38249 --- clvm_cmds.c | 7 +++++-- prvm_offsets.h | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/clvm_cmds.c b/clvm_cmds.c index 1d40a1c9..ba7926c8 100644 --- a/clvm_cmds.c +++ b/clvm_cmds.c @@ -1451,7 +1451,7 @@ static void VM_CL_runplayerphysics (prvm_prog_t *prog) VectorCopy(PRVM_clientedictvector(ent, velocity), s.velocity); VectorCopy(PRVM_clientglobalvector(pmove_mins), s.mins); VectorCopy(PRVM_clientglobalvector(pmove_maxs), s.maxs); - s.crouched = 0; // FIXME we need the current crouched status + s.crouched = ((int)PRVM_clientedictfloat(ent, pmove_flags) & 1) != 0; // FIXME which flag? s.waterjumptime = 0; // FIXME where do we get this from? VectorCopy(PRVM_clientglobalvector(input_angles), s.cmd.viewangles); s.cmd.forwardmove = PRVM_clientglobalvector(input_movevalues)[0]; @@ -1459,7 +1459,7 @@ static void VM_CL_runplayerphysics (prvm_prog_t *prog) s.cmd.upmove = PRVM_clientglobalvector(input_movevalues)[2]; s.cmd.buttons = PRVM_clientglobalfloat(input_buttons); s.cmd.frametime = PRVM_clientglobalfloat(input_timelength); - s.cmd.canjump = 1; // FIXME we need the current canjump status + s.cmd.canjump = ((int)PRVM_clientedictfloat(ent, pmove_flags) & 2) != 0; // FIXME which flag? s.cmd.jump = (s.cmd.buttons & 2) != 0; s.cmd.crouch = (s.cmd.buttons & 16) != 0; @@ -1467,6 +1467,9 @@ static void VM_CL_runplayerphysics (prvm_prog_t *prog) VectorCopy(s.origin, PRVM_clientedictvector(ent, origin)); VectorCopy(s.velocity, PRVM_clientedictvector(ent, velocity)); + PRVM_clientedictfloat(ent, pmove_flags) = + (s.crouched ? 1 : 0) | + (s.cmd.canjump ? 2 : 0); } //#348 string(float playernum, string keyname) getplayerkeyvalue (EXT_CSQC) diff --git a/prvm_offsets.h b/prvm_offsets.h index 39f5d363..09ac75ed 100644 --- a/prvm_offsets.h +++ b/prvm_offsets.h @@ -35,6 +35,7 @@ PRVM_DECLARE_clientfieldfloat(modelindex) PRVM_DECLARE_clientfieldfloat(movetype) PRVM_DECLARE_clientfieldfloat(nextthink) PRVM_DECLARE_clientfieldfloat(pitch_speed) +PRVM_DECLARE_clientfieldfloat(pmove_flags) PRVM_DECLARE_clientfieldfloat(renderflags) PRVM_DECLARE_clientfieldfloat(scale) PRVM_DECLARE_clientfieldfloat(shadertime) @@ -338,6 +339,7 @@ PRVM_DECLARE_field(pitch_speed) PRVM_DECLARE_field(playermodel) PRVM_DECLARE_field(playerskin) PRVM_DECLARE_field(pmodel) +PRVM_DECLARE_field(pmove_flags) PRVM_DECLARE_field(predraw) PRVM_DECLARE_field(punchangle) PRVM_DECLARE_field(punchvector) @@ -824,4 +826,4 @@ PRVM_DECLARE_serverglobalvector(trace_endpos) PRVM_DECLARE_serverglobalvector(trace_plane_normal) PRVM_DECLARE_serverglobalvector(v_forward) PRVM_DECLARE_serverglobalvector(v_right) -PRVM_DECLARE_serverglobalvector(v_up) \ No newline at end of file +PRVM_DECLARE_serverglobalvector(v_up) -- 2.39.2