Added some fast checking for obstacles around lights, resulting in a huge speedup outside.

develop
Japa 2013-06-24 05:10:01 +05:30
parent 30697ee115
commit 2da136116d
1 changed files with 17 additions and 2 deletions

@ -168,8 +168,23 @@ void lightingEngineViewscreen::doFovs()
radius*=flicker;
power=power*flicker;
}
plotCircle(i,j,radius,
std::bind(&lightingEngineViewscreen::doRay,this,power,i,j,_1,_2));
int surrounds = 0;
lightCell curPower;
if(lightUpCell(curPower = power, 0, 0,i+0, j+0))
{
surrounds += lightUpCell(curPower = power, 0, 1,i+0, j+1);
surrounds += lightUpCell(curPower = power, 1, 1,i+1, j+1);
surrounds += lightUpCell(curPower = power, 1, 0,i+1, j+0);
surrounds += lightUpCell(curPower = power, 1,-1,i+1, j-1);
surrounds += lightUpCell(curPower = power, 0,-1,i+0, j-1);
surrounds += lightUpCell(curPower = power,-1,-1,i-1, j-1);
surrounds += lightUpCell(curPower = power,-1, 0,i-1, j+0);
surrounds += lightUpCell(curPower = power,-1, 1,i-1, j+1);
}
if(surrounds)
plotCircle(i,j,radius,
std::bind(&lightingEngineViewscreen::doRay,this,power,i,j,_1,_2));
}
}
}