atom.visible(mob/m or client/m)
if this returns zero, the atom is/becomes invisible to m.
returns(by default): atom.is_visible(m)
atom.is_visible(mob/m or client/m)
returns: 1 if the atom is visible to m, 0 if not.(more efficient than generating a view() or hearers() proc because it doesn't require a list and only checks for a single atom)
client-sided rendering for whether individual objects are visible is extremely sensible and vastly superior to using image objects.
being able to ask the engine whether a single atom is visible to another atom is also superior to the currently available methods in CPU usage and in design.
Also, if this was called several times the savings would disappear; the overhead from doing even a partial LOS/luminosity would still be in play. You'd be better off in that case grabbing view(m) and caching it for the remainder of the tick. That's a technique I actually use for the AIs in SotS II.