ref: soft: migrate to new way to get lightstyles and dlights

This commit is contained in:
Alibek Omarov 2024-11-02 22:52:13 +03:00
parent bb4e64ea58
commit 6cf11cb6cf
5 changed files with 19 additions and 13 deletions

View file

@ -35,12 +35,10 @@ CL_RunLightStyles
================== ==================
*/ */
void GAME_EXPORT CL_RunLightStyles( void ) void CL_RunLightStyles( void )
{ {
int i, k, flight, clight; int i;
float l, lerpfrac, backlerp; float frametime = (gp_cl->time - gp_cl->oldtime);
float frametime = (gp_cl->time - gp_cl->oldtime);
lightstyle_t *ls;
if( !WORLDMODEL ) if( !WORLDMODEL )
return; return;
@ -56,7 +54,9 @@ void GAME_EXPORT CL_RunLightStyles( void )
// 'm' is normal light, 'a' is no light, 'z' is double bright // 'm' is normal light, 'a' is no light, 'z' is double bright
for( i = 0; i < MAX_LIGHTSTYLES; i++ ) 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 ) if( !gp_cl->paused && frametime <= 0.1f )
ls->time += frametime; // evaluate local time ls->time += frametime; // evaluate local time
@ -77,7 +77,7 @@ void GAME_EXPORT CL_RunLightStyles( void )
tr.lightstylevalue[i] = ( ls->pattern[0] - 'a' ) * 22; tr.lightstylevalue[i] = ( ls->pattern[0] - 'a' ) * 22;
continue; 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; tr.lightstylevalue[i] = ( ls->pattern[flight%ls->length] - 'a' ) * 22;
continue; continue;
@ -164,7 +164,7 @@ void R_PushDlights( void )
for( i = 0; i < MAX_DLIGHTS; i++ ) 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 ) if( l->die < gp_cl->time || !l->radius )
continue; continue;

View file

@ -297,6 +297,9 @@ typedef struct
movevars_t *movevars; movevars_t *movevars;
color24 *palette; color24 *palette;
cl_entity_t *viewent; cl_entity_t *viewent;
lightstyle_t *lightstyles;
dlight_t *dlights;
dlight_t *elights;
byte *texgammatable; byte *texgammatable;
uint *lightgammatable; uint *lightgammatable;
uint *lineargammatable; uint *lineargammatable;

View file

@ -1172,7 +1172,7 @@ static void R_DrawBEntitiesOnList (void)
// calculate dynamic lighting for bmodel // calculate dynamic lighting for bmodel
for( k = 0; k < MAX_DLIGHTS; k++ ) for( k = 0; k < MAX_DLIGHTS; k++ )
{ {
dlight_t *l = gEngfuncs.GetDynamicLight( k ); dlight_t *l = &tr.dlights[k];
vec3_t origin_l, oldorigin; vec3_t origin_l, oldorigin;
if( l->die < gp_cl->time || !l->radius ) if( l->die < gp_cl->time || !l->radius )
@ -1327,7 +1327,7 @@ void R_DrawBrushModel(cl_entity_t *pent)
// calculate dynamic lighting for bmodel // calculate dynamic lighting for bmodel
for( k = 0; k < MAX_DLIGHTS; k++ ) for( k = 0; k < MAX_DLIGHTS; k++ )
{ {
dlight_t *l = gEngfuncs.GetDynamicLight( k ); dlight_t *l = &tr.dlights[k];
vec3_t origin_l, oldorigin; vec3_t origin_l, oldorigin;
if( l->die < gp_cl->time || !l->radius ) 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.lightgammatable = (uint *)ENGINE_GET_PARM( PARM_GET_LIGHTGAMMATABLE_PTR );
tr.screengammatable = (uint *)ENGINE_GET_PARM( PARM_GET_SCREENGAMMATABLE_PTR ); tr.screengammatable = (uint *)ENGINE_GET_PARM( PARM_GET_SCREENGAMMATABLE_PTR );
tr.lineargammatable = (uint *)ENGINE_GET_PARM( PARM_GET_LINEARGAMMATABLE_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 )) if( !R_InitBlit( glblit ))
{ {

View file

@ -1449,7 +1449,7 @@ static void R_StudioDynamicLight( cl_entity_t *ent, alight_t *plight )
for( lnum = 0; lnum < MAX_DLIGHTS; lnum++ ) for( lnum = 0; lnum < MAX_DLIGHTS; lnum++ )
{ {
dl = gEngfuncs.GetDynamicLight( lnum ); dl = &tr.dlights[lnum];
if( dl->die < g_studio.time || !r_dynamic->value ) if( dl->die < g_studio.time || !r_dynamic->value )
continue; continue;
@ -1532,7 +1532,7 @@ static void R_StudioEntityLight( alight_t *lightinfo )
for( lnum = 0; lnum < MAX_ELIGHTS; lnum++ ) 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 ) if( el->die < g_studio.time || el->radius <= 0.0f )
continue; continue;

View file

@ -109,7 +109,7 @@ static void R_AddDynamicLights( const msurface_t *surf )
if( !FBitSet( surf->dlightbits, BIT( lnum ))) if( !FBitSet( surf->dlightbits, BIT( lnum )))
continue; // not lit by this light continue; // not lit by this light
dl = gEngfuncs.GetDynamicLight( lnum ); dl = &tr.dlights[lnum];
// transform light origin to local bmodel space // transform light origin to local bmodel space
if( !tr.modelviewIdentity ) if( !tr.modelviewIdentity )