In short, iterate through all lights in the scene, check if the location is currently lit. If not then check if the location is within the attenuation radius and cone angle. If it is, perform a line trace in a custom trace channel to check if the light source is obstructed. If it can light up the area, then it breaks the iteration and says that it is an invalid location to travel to. If the loop succeeds without any lights being able to see the location, the player can travel there