From f48335f2f2158805d19bac21d77d4175b9613b45 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Thu, 28 Mar 2019 18:17:26 +0300 Subject: [PATCH] ref: get rid of fov in globals, add RenderFrame wrapper, which correctly initialize shared global values --- engine/client/cl_gameui.c | 2 +- engine/client/cl_main.c | 3 --- engine/client/cl_parse.c | 3 --- engine/client/cl_view.c | 2 +- engine/client/input.c | 8 ++++---- engine/client/ref_common.c | 14 ++++++++++++++ engine/client/ref_common.h | 2 ++ engine/ref_api.h | 6 ++---- 8 files changed, 24 insertions(+), 16 deletions(-) diff --git a/engine/client/cl_gameui.c b/engine/client/cl_gameui.c index 1604ba60..aee9a893 100644 --- a/engine/client/cl_gameui.c +++ b/engine/client/cl_gameui.c @@ -727,7 +727,7 @@ static void pfnRenderScene( const ref_viewpass_t *rvp ) copy.flags = 0; ref.dllFuncs.R_Set2DMode( false ); - ref.dllFuncs.GL_RenderFrame( © ); + GL_RenderFrame( © ); ref.dllFuncs.R_Set2DMode( true ); ref.dllFuncs.R_PopScene(); } diff --git a/engine/client/cl_main.c b/engine/client/cl_main.c index 590de8b8..c4e1c9c6 100644 --- a/engine/client/cl_main.c +++ b/engine/client/cl_main.c @@ -293,7 +293,6 @@ static float CL_LerpPoint( void ) frac = ( cl.time - cl.mtime[1] ) / f; } #endif - refState.time = cl.time; return frac; } @@ -2868,8 +2867,6 @@ void CL_AdjustClock( void ) if( cl.oldtime > cl.time ) cl.oldtime = cl.time; } - refState.oldtime = cl.oldtime; - refState.time = cl.time; } /* diff --git a/engine/client/cl_parse.c b/engine/client/cl_parse.c index 5673cb8c..0750b174 100644 --- a/engine/client/cl_parse.c +++ b/engine/client/cl_parse.c @@ -208,9 +208,6 @@ void CL_ParseServerTime( sizebuf_t *msg ) if( cl.oldtime > cl.time ) cl.oldtime = cl.time; - - refState.oldtime = cl.oldtime; - refState.time = cl.time; } /* diff --git a/engine/client/cl_view.c b/engine/client/cl_view.c index 8902766e..af11fed0 100644 --- a/engine/client/cl_view.c +++ b/engine/client/cl_view.c @@ -335,7 +335,7 @@ void V_RenderView( void ) ref.dllFuncs.R_ClearScreen(); } - ref.dllFuncs.GL_RenderFrame( &rvp ); + GL_RenderFrame( &rvp ); S_UpdateFrame( &rvp ); viewnum++; diff --git a/engine/client/input.c b/engine/client/input.c index 80880f0d..de983bcf 100644 --- a/engine/client/input.c +++ b/engine/client/input.c @@ -550,15 +550,15 @@ void IN_EngineAppendMove( float frametime, usercmd_t *cmd, qboolean active ) if( active ) { - float sensitivity = ( (float)refState.fov_x / (float)90.0f ); + float sensitivity = ( (float)cl.local.scr_fov / (float)90.0f ); IN_CollectInput( &forward, &side, &pitch, &yaw, in_mouseinitialized, m_enginemouse->value ); IN_JoyAppendMove( cmd, forward, side ); - refState.viewangles[YAW] += yaw * sensitivity; - refState.viewangles[PITCH] += pitch * sensitivity; - refState.viewangles[PITCH] = bound( -90, refState.viewangles[PITCH], 90 ); + cmd->viewangles[YAW] += yaw * sensitivity; + cmd->viewangles[PITCH] += pitch * sensitivity; + cmd->viewangles[PITCH] = bound( -90, cmd->viewangles[PITCH], 90 ); } } diff --git a/engine/client/ref_common.c b/engine/client/ref_common.c index 9a54dc04..bd8bbd45 100644 --- a/engine/client/ref_common.c +++ b/engine/client/ref_common.c @@ -35,6 +35,20 @@ void GL_FreeImage( const char *name ) ref.dllFuncs.GL_FreeTexture( texnum ); } +int GL_RenderFrame( const ref_viewpass_t *rvp ) +{ + refState.time = cl.time; + refState.oldtime = cl.oldtime; + refState.realtime = host.realtime; + refState.frametime = host.frametime; + + VectorCopy( rvp->vieworigin, refState.vieworg ); + VectorCopy( rvp->viewangles, refState.viewangles ); + AngleVectors( refState.viewangles, refState.vforward, refState.vright, refState.vup ); + + ref.dllFuncs.GL_RenderFrame( rvp ); +} + static int pfnEngineGetParm( int parm, int arg ) { return CL_RenderGetParm( parm, arg, false ); // prevent recursion diff --git a/engine/client/ref_common.h b/engine/client/ref_common.h index 7fa594d9..d5f63d2a 100644 --- a/engine/client/ref_common.h +++ b/engine/client/ref_common.h @@ -37,6 +37,8 @@ void R_GetTextureParms( int *w, int *h, int texnum ); #define GL_LoadTextureInternal( name, pic, flags ) ref.dllFuncs.GL_LoadTextureFromBuffer( name, pic, flags, false ) #define GL_UpdateTextureInternal( name, pic, flags ) ref.dllFuncs.GL_LoadTextureFromBuffer( name, pic, flags, true ) +int GL_RenderFrame( const struct ref_viewpass_s *rvp ); + // common engine and renderer cvars extern convar_t *r_decals; extern convar_t *r_adjust_fov; diff --git a/engine/ref_api.h b/engine/ref_api.h index 29046dca..1f644b4d 100644 --- a/engine/ref_api.h +++ b/engine/ref_api.h @@ -99,8 +99,6 @@ typedef struct ref_globals_s cl_entity_t *currententity; model_t *currentmodel; - float fov_x, fov_y; - // todo: fill this without engine help // move to local @@ -592,8 +590,8 @@ typedef struct ref_interface_s void (*TriRenderMode)( int mode ); void (*Begin)( int primitiveCode ); void (*End)( void ); - void (*Color4f)( float r, float g, float b, float a ); - void (*Color4ub)( unsigned char r, unsigned char g, unsigned char b, unsigned char a ); + void (*Color4f)( float r, float g, float b, float a ); // real glColor4f + void (*Color4ub)( unsigned char r, unsigned char g, unsigned char b, unsigned char a ); // real glColor4ub void (*TexCoord2f)( float u, float v ); void (*Vertex3fv)( const float *worldPnt ); void (*Vertex3f)( float x, float y, float z );