From 2da136116dfa21b515cde77364fabbf3dff04a64 Mon Sep 17 00:00:00 2001 From: Japa Date: Mon, 24 Jun 2013 05:10:01 +0530 Subject: [PATCH] Added some fast checking for obstacles around lights, resulting in a huge speedup outside. --- plugins/rendermax/renderer_light.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/plugins/rendermax/renderer_light.cpp b/plugins/rendermax/renderer_light.cpp index 187b3d2d8..87eb210ad 100644 --- a/plugins/rendermax/renderer_light.cpp +++ b/plugins/rendermax/renderer_light.cpp @@ -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)); } } }