float radius = rStrat.radius(x, y, x + dir.deltaX, y + dir.deltaY);
float brightness = light - resistanceMap[x][y];//light is reduced by the portion of the square passed through
brightness -= radius * decay;//reduce by the amount of decay from passing through
pushLight(x + dir.deltaX, y + dir.deltaY, brightness, dir, dir, PRIMARY);
DirectionIntercardinal pushing = dir.clockwise();
radius = rStrat.radius(x, y, x + pushing.deltaX, y + pushing.deltaY);
brightness = light - resistanceMap[x][y];//light is reduced by the portion of the square passed through
brightness -= radius * decay;//reduce by the amount of decay from passing through
pushLight(x + pushing.deltaX, y + pushing.deltaY, brightness, dir, pushing, SECONDARY);
pushing = dir.counterClockwise();
radius = rStrat.radius(x, y, x + pushing.deltaX, y + pushing.deltaY);
brightness = light - resistanceMap[x][y];//light is reduced by the portion of the square passed through
brightness -= radius * decay;//reduce by the amount of decay from passing through
pushLight(x + pushing.deltaX, y + pushing.deltaY, brightness, dir, pushing, SECONDARY);
} else {//type == SECONDARY at this point
//push pass-through secondary ray
DirectionIntercardinal pushing = previous;//redirect to previous' previous direction
float radius = rStrat.radius(x, y, x + pushing.deltaX, y + pushing.deltaY);
float brightness = light - resistanceMap[x][y];//light is reduced by the portion of the square passed through
brightness -= radius * decay;//reduce by the amount of decay from passing through
pushLight(x + pushing.deltaX, y + pushing.deltaY, brightness, dir, pushing, SECONDARY);