mark old tiles for update
This commit is contained in:
parent
46eab8409e
commit
d35195bded
1 changed files with 51 additions and 14 deletions
|
|
@ -758,6 +758,8 @@ void FDynamicLight::CollectWithinRadius(const DVector3 &opos, FSection *section,
|
|||
|
||||
void FDynamicLight::LinkLight()
|
||||
{
|
||||
bool markTiles = (Trace() && Level->levelMesh);
|
||||
|
||||
// mark the old light nodes
|
||||
FLightNode * node;
|
||||
|
||||
|
|
@ -787,27 +789,62 @@ void FDynamicLight::LinkLight()
|
|||
|
||||
// Now delete any nodes that won't be used. These are the ones where
|
||||
// m_thing is still nullptr.
|
||||
|
||||
node = touching_sides;
|
||||
while (node)
|
||||
{
|
||||
if (node->lightsource == nullptr)
|
||||
{
|
||||
node = DeleteLightNode(node);
|
||||
}
|
||||
else
|
||||
node = node->nextTarget;
|
||||
}
|
||||
|
||||
node = touching_sector;
|
||||
while (node)
|
||||
if(markTiles)
|
||||
{
|
||||
if (node->lightsource == nullptr)
|
||||
node = touching_sides;
|
||||
while (node)
|
||||
{
|
||||
node = DeleteLightNode(node);
|
||||
if (node->lightsource == nullptr)
|
||||
{
|
||||
MarkTilesForUpdate(Level, node->targLine->LightmapTiles);
|
||||
|
||||
node = DeleteLightNode(node);
|
||||
}
|
||||
else
|
||||
node = node->nextTarget;
|
||||
}
|
||||
|
||||
node = touching_sector;
|
||||
while (node)
|
||||
{
|
||||
if (node->lightsource == nullptr)
|
||||
{
|
||||
for(subsector_t * ss : static_cast<FSection *>(node->targ)->subsectors)
|
||||
{
|
||||
MarkTilesForUpdate(Level, ss->LightmapTiles[0]);
|
||||
MarkTilesForUpdate(Level, ss->LightmapTiles[1]);
|
||||
}
|
||||
|
||||
node = DeleteLightNode(node);
|
||||
}
|
||||
else
|
||||
node = node->nextTarget;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
node = touching_sides;
|
||||
while (node)
|
||||
{
|
||||
if (node->lightsource == nullptr)
|
||||
{
|
||||
node = DeleteLightNode(node);
|
||||
}
|
||||
else
|
||||
node = node->nextTarget;
|
||||
}
|
||||
|
||||
node = touching_sector;
|
||||
while (node)
|
||||
{
|
||||
if (node->lightsource == nullptr)
|
||||
{
|
||||
node = DeleteLightNode(node);
|
||||
}
|
||||
else
|
||||
node = node->nextTarget;
|
||||
}
|
||||
else
|
||||
node = node->nextTarget;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue