mirror of
https://github.com/YGGverse/xash3d-fwgs.git
synced 2025-03-10 04:31:16 +00:00
ref_soft: Transform dlights for entitites
This commit is contained in:
parent
4bbcd5daef
commit
ebd1da2730
7
r_edge.c
7
r_edge.c
@ -1115,12 +1115,19 @@ void D_SolidSurf (surf_t *s)
|
|||||||
|
|
||||||
R_RotateBmodel (); // FIXME: don't mess with the frustum,
|
R_RotateBmodel (); // FIXME: don't mess with the frustum,
|
||||||
// make entity passed in
|
// make entity passed in
|
||||||
|
// setup dlight transform
|
||||||
|
if( s->msurf && s->msurf->dlightframe == tr.framecount )
|
||||||
|
{
|
||||||
|
Matrix4x4_CreateFromEntity( RI.objectMatrix, RI.currententity->angles, RI.currententity->origin, 1 );
|
||||||
|
tr.modelviewIdentity = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( alphaspans )
|
if( alphaspans )
|
||||||
return;
|
return;
|
||||||
RI.currententity = gEngfuncs.GetEntityByIndex(0); //r_worldentity;
|
RI.currententity = gEngfuncs.GetEntityByIndex(0); //r_worldentity;
|
||||||
|
tr.modelviewIdentity = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
pface = s->msurf;
|
pface = s->msurf;
|
||||||
|
18
r_main.c
18
r_main.c
@ -1196,16 +1196,18 @@ void R_DrawBEntitiesOnList (void)
|
|||||||
for( k = 0; k < MAX_DLIGHTS; k++ )
|
for( k = 0; k < MAX_DLIGHTS; k++ )
|
||||||
{
|
{
|
||||||
dlight_t *l = gEngfuncs.GetDynamicLight( k );
|
dlight_t *l = gEngfuncs.GetDynamicLight( k );
|
||||||
|
vec3_t origin_l, oldorigin;
|
||||||
|
|
||||||
if( l->die < gpGlobals->time || !l->radius )
|
if( l->die < gpGlobals->time || !l->radius )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/*VectorCopy( l->origin, oldorigin ); // save lightorigin
|
VectorCopy( l->origin, oldorigin ); // save lightorigin
|
||||||
|
Matrix4x4_CreateFromEntity( RI.objectMatrix, RI.currententity->angles, RI.currententity->origin, 1 );
|
||||||
Matrix4x4_VectorITransform( RI.objectMatrix, l->origin, origin_l );
|
Matrix4x4_VectorITransform( RI.objectMatrix, l->origin, origin_l );
|
||||||
VectorCopy( origin_l, l->origin ); // move light in bmodel space
|
VectorCopy( origin_l, l->origin ); // move light in bmodel space
|
||||||
R_MarkLights( l, 1<<k, clmodel->nodes + clmodel->hulls[0].firstclipnode );
|
|
||||||
VectorCopy( oldorigin, l->origin ); // restore lightorigin*/
|
|
||||||
R_MarkLights( l, 1<<k, RI.currentmodel->nodes + RI.currentmodel->hulls[0].firstclipnode );
|
R_MarkLights( l, 1<<k, RI.currentmodel->nodes + RI.currentmodel->hulls[0].firstclipnode );
|
||||||
|
VectorCopy( oldorigin, l->origin ); // restore lightorigin*/
|
||||||
|
//R_MarkLights( l, 1<<k, RI.currentmodel->nodes + RI.currentmodel->hulls[0].firstclipnode );
|
||||||
}
|
}
|
||||||
|
|
||||||
// RI.currentmodel = tr.draw_list->solid_entities[i]->model;
|
// RI.currentmodel = tr.draw_list->solid_entities[i]->model;
|
||||||
@ -1350,16 +1352,19 @@ void R_DrawBrushModel(cl_entity_t *pent)
|
|||||||
for( k = 0; k < MAX_DLIGHTS; k++ )
|
for( k = 0; k < MAX_DLIGHTS; k++ )
|
||||||
{
|
{
|
||||||
dlight_t *l = gEngfuncs.GetDynamicLight( k );
|
dlight_t *l = gEngfuncs.GetDynamicLight( k );
|
||||||
|
vec3_t origin_l, oldorigin;
|
||||||
|
|
||||||
if( l->die < gpGlobals->time || !l->radius )
|
if( l->die < gpGlobals->time || !l->radius )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/*VectorCopy( l->origin, oldorigin ); // save lightorigin
|
VectorCopy( l->origin, oldorigin ); // save lightorigin
|
||||||
|
Matrix4x4_CreateFromEntity( RI.objectMatrix, RI.currententity->angles, RI.currententity->origin, 1 );
|
||||||
Matrix4x4_VectorITransform( RI.objectMatrix, l->origin, origin_l );
|
Matrix4x4_VectorITransform( RI.objectMatrix, l->origin, origin_l );
|
||||||
|
tr.modelviewIdentity = false;
|
||||||
VectorCopy( origin_l, l->origin ); // move light in bmodel space
|
VectorCopy( origin_l, l->origin ); // move light in bmodel space
|
||||||
R_MarkLights( l, 1<<k, clmodel->nodes + clmodel->hulls[0].firstclipnode );
|
|
||||||
VectorCopy( oldorigin, l->origin ); // restore lightorigin*/
|
|
||||||
R_MarkLights( l, 1<<k, RI.currentmodel->nodes + RI.currentmodel->hulls[0].firstclipnode );
|
R_MarkLights( l, 1<<k, RI.currentmodel->nodes + RI.currentmodel->hulls[0].firstclipnode );
|
||||||
|
VectorCopy( oldorigin, l->origin ); // restore lightorigin*/
|
||||||
|
//R_MarkLights( l, 1<<k, RI.currentmodel->nodes + RI.currentmodel->hulls[0].firstclipnode );
|
||||||
}
|
}
|
||||||
|
|
||||||
// RI.currentmodel = tr.draw_list->solid_entities[i]->model;
|
// RI.currentmodel = tr.draw_list->solid_entities[i]->model;
|
||||||
@ -1598,6 +1603,7 @@ void R_RenderScene( void )
|
|||||||
R_SetupProjectionMatrix( RI.projectionMatrix );
|
R_SetupProjectionMatrix( RI.projectionMatrix );
|
||||||
|
|
||||||
Matrix4x4_Concat( RI.worldviewProjectionMatrix, RI.projectionMatrix, RI.worldviewMatrix );
|
Matrix4x4_Concat( RI.worldviewProjectionMatrix, RI.projectionMatrix, RI.worldviewMatrix );
|
||||||
|
tr.modelviewIdentity = true;
|
||||||
|
|
||||||
// R_SetupGL( true );
|
// R_SetupGL( true );
|
||||||
//R_Clear( ~0 );
|
//R_Clear( ~0 );
|
||||||
|
8
r_surf.c
8
r_surf.c
@ -105,10 +105,10 @@ void R_AddDynamicLights( msurface_t *surf )
|
|||||||
dl = gEngfuncs.GetDynamicLight( lnum );
|
dl = gEngfuncs.GetDynamicLight( lnum );
|
||||||
|
|
||||||
// transform light origin to local bmodel space
|
// transform light origin to local bmodel space
|
||||||
//if( !tr.modelviewIdentity )
|
if( !tr.modelviewIdentity )
|
||||||
//Matrix4x4_VectorITransform( RI.objectMatrix, dl->origin, origin_l );
|
Matrix4x4_VectorITransform( RI.objectMatrix, dl->origin, origin_l );
|
||||||
//else
|
else
|
||||||
VectorCopy( dl->origin, origin_l );
|
VectorCopy( dl->origin, origin_l );
|
||||||
|
|
||||||
rad = dl->radius;
|
rad = dl->radius;
|
||||||
dist = PlaneDiff( origin_l, surf->plane );
|
dist = PlaneDiff( origin_l, surf->plane );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user