From e0eea3add3769f5ce1acdfa52dfbea9c3532b003 Mon Sep 17 00:00:00 2001 From: havoc Date: Thu, 8 May 2008 17:22:08 +0000 Subject: [PATCH] split VM_getmousepos into client and menu versions because they need to check different variables to decide whether to return window coordinates or delta mouse motions git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@8290 d7cf8633-e32d-0410-b094-e92efae38249 --- cl_screen.c | 2 +- clvm_cmds.c | 13 ++++++++++++- mvm_cmds.c | 13 ++++++++++++- prvm_cmds.c | 18 ------------------ 4 files changed, 25 insertions(+), 21 deletions(-) diff --git a/cl_screen.c b/cl_screen.c index 044dc6db..9dbeb562 100644 --- a/cl_screen.c +++ b/cl_screen.c @@ -2277,7 +2277,7 @@ void CL_UpdateScreen(void) else if (key_dest == key_menu_grabbed) grabmouse = true; else if (key_dest == key_menu) - grabmouse = in_client_mouse; + grabmouse = !in_client_mouse; else if (key_dest == key_game) grabmouse = vid_mouse.integer && !cls.demoplayback && !cl.csqc_wantsmousemove; else diff --git a/clvm_cmds.c b/clvm_cmds.c index cd35395f..83aa12a6 100644 --- a/clvm_cmds.c +++ b/clvm_cmds.c @@ -1107,6 +1107,17 @@ static void VM_CL_setcursormode (void) cl_ignoremousemoves = 2; } +//#344 vector() getmousepos (EXT_CSQC) +static void VM_CL_getmousepos(void) +{ + VM_SAFEPARMCOUNT(0,VM_CL_getmousepos); + + if (cl.csqc_wantsmousemove) + VectorSet(PRVM_G_VECTOR(OFS_RETURN), in_windowmouse_x * vid_conwidth.integer / vid.width, in_windowmouse_y * vid_conheight.integer / vid.height, 0); + else + VectorSet(PRVM_G_VECTOR(OFS_RETURN), in_mouse_x * vid_conwidth.integer / vid.width, in_mouse_y * vid_conheight.integer / vid.height, 0); +} + //#345 float(float framenum) getinputstate (EXT_CSQC) static void VM_CL_getinputstate (void) { @@ -3247,7 +3258,7 @@ VM_keynumtostring, // #340 string(float keynum) keynumtostring (EXT_CSQC) VM_stringtokeynum, // #341 float(string keyname) stringtokeynum (EXT_CSQC) VM_CL_getkeybind, // #342 string(float keynum) getkeybind (EXT_CSQC) VM_CL_setcursormode, // #343 void(float usecursor) setcursormode (EXT_CSQC) -VM_getmousepos, // #344 vector() getmousepos (EXT_CSQC) +VM_CL_getmousepos, // #344 vector() getmousepos (EXT_CSQC) VM_CL_getinputstate, // #345 float(float framenum) getinputstate (EXT_CSQC) VM_CL_setsensitivityscale, // #346 void(float sens) setsensitivityscale (EXT_CSQC) VM_CL_runplayerphysics, // #347 void() runstandardplayerphysics (EXT_CSQC) diff --git a/mvm_cmds.c b/mvm_cmds.c index 391076f5..34a0a22c 100644 --- a/mvm_cmds.c +++ b/mvm_cmds.c @@ -785,6 +785,17 @@ static void VM_M_copyentity (void) memcpy(out->fields.vp, in->fields.vp, prog->progs->entityfields * 4); } +//#66 vector() getmousepos (EXT_CSQC) +static void VM_M_getmousepos(void) +{ + VM_SAFEPARMCOUNT(0,VM_M_getmousepos); + + if (in_client_mouse) + VectorSet(PRVM_G_VECTOR(OFS_RETURN), in_windowmouse_x * vid_conwidth.integer / vid.width, in_windowmouse_y * vid_conheight.integer / vid.height, 0); + else + VectorSet(PRVM_G_VECTOR(OFS_RETURN), in_mouse_x * vid_conwidth.integer / vid.width, in_mouse_y * vid_conheight.integer / vid.height, 0); +} + prvm_builtin_t vm_m_builtins[] = { NULL, // #0 NULL function (not callable) VM_checkextension, // #1 @@ -852,7 +863,7 @@ VM_clientstate, // #62 VM_clcommand, // #63 VM_changelevel, // #64 VM_localsound, // #65 -VM_getmousepos, // #66 +VM_M_getmousepos, // #66 VM_gettime, // #67 VM_loadfromdata, // #68 VM_loadfromfile, // #69 diff --git a/prvm_cmds.c b/prvm_cmds.c index eb677b61..71bebfff 100644 --- a/prvm_cmds.c +++ b/prvm_cmds.c @@ -2298,24 +2298,6 @@ void VM_getostype(void) #endif } -/* -========= -VM_getmousepos - -vector getmousepos() -========= -*/ -void VM_getmousepos(void) -{ - VM_SAFEPARMCOUNT(0,VM_getmousepos); - - // FIXME: somehow this should involve in_client_mouse if this is menu progs - if (!vid.mouseaim) - VectorSet(PRVM_G_VECTOR(OFS_RETURN), in_windowmouse_x * vid_conwidth.integer / vid.width, in_windowmouse_y * vid_conheight.integer / vid.height, 0); - else - VectorSet(PRVM_G_VECTOR(OFS_RETURN), in_mouse_x * vid_conwidth.integer / vid.width, in_mouse_y * vid_conheight.integer / vid.height, 0); -} - /* ========= VM_gettime -- 2.39.2