Syntax
lineIntersectsSurface [start, end];
start - positionASL of line start
end - positionASL of line end
Return array: [object, distance, normal] or []
object - the object surface belongs to
distance - distance from start to intersected surface
normal - surface normal
At the moment the only way to find surface normal is by shooting something and collecting information with HitPart EH. So obviously the core mechanics is there, we just need to "shoot" virtual line so to speak :)