Daenks/Meridian59_103 — pull request #785 by skittles1 (2014-12-16 19:28:46+00:00)
Title: Particle system improvements.

- Added a new function in client3d.c, GetPointCeiling, which returns the height of the sector for the given x and y values.
- Increased the MAX_ITEMS value in drawbsp.c from 1200L to 2400L, was reaching that limit.
- New variables for particle emitters - bRandomize (used for x, y, z randomizing) now split into bRandomizeXY (map position) and bRandomizeZ (height); bGroundDestroy for particles that can be removed once they hit the floor and bWeatherEffect for weather effects such as snow.
- Weather effects now have randomized z velocities between 0.5 and 1.5 of the emitter's velocity.
- Snow and rain particles are destroyed when they hit the ground.
- Weather effects have a default height that should be relatively near the ceiling for a lot of screens, but low enough that there isn't much delay in drawing them on entry (snow anyway). Half of weather effect particles are given a starting point of the ceiling itself. Since ceiling heights are all over the place, drawing them all from the ceiling (ideal scenario) would cause issues on screens with very large heights. Note that there are reasons for not using bRandomzieZ for weather starting heights (sometimes the 'small' default height is greater than the ceiling height).
- Added slightly more snow particle emitters. With the above changes it runs much faster than before, even with 33% more emitters.