From 6cf11cb6cf01f6b8aeec56a62109114197ae4e2e Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Sat, 2 Nov 2024 22:52:13 +0300 Subject: [PATCH] ref: soft: migrate to new way to get lightstyles and dlights --- ref/soft/r_light.c | 16 ++++++++-------- ref/soft/r_local.h | 3 +++ ref/soft/r_main.c | 7 +++++-- ref/soft/r_studio.c | 4 ++-- ref/soft/r_surf.c | 2 +- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/ref/soft/r_light.c b/ref/soft/r_light.c index 7ceb1231..917bbcfe 100644 --- a/ref/soft/r_light.c +++ b/ref/soft/r_light.c @@ -35,12 +35,10 @@ CL_RunLightStyles ================== */ -void GAME_EXPORT CL_RunLightStyles( void ) +void CL_RunLightStyles( void ) { - int i, k, flight, clight; - float l, lerpfrac, backlerp; - float frametime = (gp_cl->time - gp_cl->oldtime); - lightstyle_t *ls; + int i; + float frametime = (gp_cl->time - gp_cl->oldtime); if( !WORLDMODEL ) return; @@ -56,7 +54,9 @@ void GAME_EXPORT CL_RunLightStyles( void ) // 'm' is normal light, 'a' is no light, 'z' is double bright for( i = 0; i < MAX_LIGHTSTYLES; i++ ) { - ls = gEngfuncs.GetLightStyle( i ); + int k, flight, clight; + float l, lerpfrac, backlerp; + lightstyle_t *ls = &tr.lightstyles[i]; if( !gp_cl->paused && frametime <= 0.1f ) ls->time += frametime; // evaluate local time @@ -77,7 +77,7 @@ void GAME_EXPORT CL_RunLightStyles( void ) tr.lightstylevalue[i] = ( ls->pattern[0] - 'a' ) * 22; continue; } - else if( !ls->interp ) // || !CVAR_TO_BOOL( cl_lightstyle_lerping )) + else if( !ls->interp || !cl_lightstyle_lerping->flags ) { tr.lightstylevalue[i] = ( ls->pattern[flight%ls->length] - 'a' ) * 22; continue; @@ -164,7 +164,7 @@ void R_PushDlights( void ) for( i = 0; i < MAX_DLIGHTS; i++ ) { - dlight_t *l = gEngfuncs.GetDynamicLight( i ); + dlight_t *l = &tr.dlights[i]; if( l->die < gp_cl->time || !l->radius ) continue; diff --git a/ref/soft/r_local.h b/ref/soft/r_local.h index 5cae907b..1c138854 100644 --- a/ref/soft/r_local.h +++ b/ref/soft/r_local.h @@ -297,6 +297,9 @@ typedef struct movevars_t *movevars; color24 *palette; cl_entity_t *viewent; + lightstyle_t *lightstyles; + dlight_t *dlights; + dlight_t *elights; byte *texgammatable; uint *lightgammatable; uint *lineargammatable; diff --git a/ref/soft/r_main.c b/ref/soft/r_main.c index 68085e34..73ae8fe5 100644 --- a/ref/soft/r_main.c +++ b/ref/soft/r_main.c @@ -1172,7 +1172,7 @@ static void R_DrawBEntitiesOnList (void) // calculate dynamic lighting for bmodel for( k = 0; k < MAX_DLIGHTS; k++ ) { - dlight_t *l = gEngfuncs.GetDynamicLight( k ); + dlight_t *l = &tr.dlights[k]; vec3_t origin_l, oldorigin; if( l->die < gp_cl->time || !l->radius ) @@ -1327,7 +1327,7 @@ void R_DrawBrushModel(cl_entity_t *pent) // calculate dynamic lighting for bmodel for( k = 0; k < MAX_DLIGHTS; k++ ) { - dlight_t *l = gEngfuncs.GetDynamicLight( k ); + dlight_t *l = &tr.dlights[k]; vec3_t origin_l, oldorigin; if( l->die < gp_cl->time || !l->radius ) @@ -1901,6 +1901,9 @@ qboolean GAME_EXPORT R_Init( void ) tr.lightgammatable = (uint *)ENGINE_GET_PARM( PARM_GET_LIGHTGAMMATABLE_PTR ); tr.screengammatable = (uint *)ENGINE_GET_PARM( PARM_GET_SCREENGAMMATABLE_PTR ); tr.lineargammatable = (uint *)ENGINE_GET_PARM( PARM_GET_LINEARGAMMATABLE_PTR ); + tr.lightstyles = (lightstyle_t *)ENGINE_GET_PARM( PARM_GET_LIGHTSTYLES_PTR ); + tr.dlights = (dlight_t *)ENGINE_GET_PARM( PARM_GET_DLIGHTS_PTR ); + tr.elights = (dlight_t *)ENGINE_GET_PARM( PARM_GET_ELIGHTS_PTR ); if( !R_InitBlit( glblit )) { diff --git a/ref/soft/r_studio.c b/ref/soft/r_studio.c index 15fe6993..7134cd16 100644 --- a/ref/soft/r_studio.c +++ b/ref/soft/r_studio.c @@ -1449,7 +1449,7 @@ static void R_StudioDynamicLight( cl_entity_t *ent, alight_t *plight ) for( lnum = 0; lnum < MAX_DLIGHTS; lnum++ ) { - dl = gEngfuncs.GetDynamicLight( lnum ); + dl = &tr.dlights[lnum]; if( dl->die < g_studio.time || !r_dynamic->value ) continue; @@ -1532,7 +1532,7 @@ static void R_StudioEntityLight( alight_t *lightinfo ) for( lnum = 0; lnum < MAX_ELIGHTS; lnum++ ) { - el = gEngfuncs.GetEntityLight( lnum ); + el = &tr.elights[lnum]; if( el->die < g_studio.time || el->radius <= 0.0f ) continue; diff --git a/ref/soft/r_surf.c b/ref/soft/r_surf.c index 8b2245b5..f025da04 100644 --- a/ref/soft/r_surf.c +++ b/ref/soft/r_surf.c @@ -109,7 +109,7 @@ static void R_AddDynamicLights( const msurface_t *surf ) if( !FBitSet( surf->dlightbits, BIT( lnum ))) continue; // not lit by this light - dl = gEngfuncs.GetDynamicLight( lnum ); + dl = &tr.dlights[lnum]; // transform light origin to local bmodel space if( !tr.modelviewIdentity )