This is a bit of a suggestion related to visuals and not functionality, but it is something I wanted to see.
You know how a generic weather script makes a rain emitter all over the map but the rain still shows underneath a brick as if inside a house or similar structure?
Well I was thinking of an easy way so that emitters are cancelled so that they stop in relation to their origin point.
Let me make this easy to understand: You have an emitter brick or origin point, (say the skybox just for simplicity...) but we'll go with a brick for this example.
||[ NO-ZONE ]
||[ NO-ZONE ]
X ------> ||[ NO-ZONE ]
In relation to the brick's emitter direction and position, a brick in its path would act as an invisible no-emitter zone ceiling. The No-zone is as long as the emitter is originally and is not obstructed by any other brick. Perhaps its an "emitter" itself, but an anti-emitter.
For a brick's no-zone to be generated it must:
1] Be in the brick's emitter direction
2] Be in range of the emitter effect (hopefully with the way emitters work, "infinite" emitters are patched to prevent infinite no-zones)
3] Be completely "solid"
The criteria for rule 3 is only supposed to prevent bricks or other such custom bricks like a grill (which has holes, hurr) from stopping the emitter with a no-zone.
ADDENDUM: The no-zone only cancels emitters that hit the brick it is in relation too. This prevents situations such as:
||[ NO-ZONE ]
||[ NO-ZONE ] <------- X
X ------> ||[ NO-ZONE ]
Also, it is entirely dependent on the brick's raycasting.
Discuss. Hopefully, I didn't leave anything out.