(I'm not sure if I already posted this, it hasn't shown up ??)

I used the "CONTENT" command for my bubble particles that float to the surface of water, in the bubble movement function I'd check the particles .Z position for Passable with the CONTENT command, if it wasn't passable (not water) then I'd terminate the particle & generate a new one.

Worked absolutely brilliant...