everyones favourite solution is BSP ... its gonna be everyones downfall if you ask me.
there are SOOOOO many ways you can achieve collision with a world its stupid - easiest with X is to shove it into a memblock and then make an array for distance whereby you have 3 values X, Y, Z
if you set them up to be the MAXIMUM area of your world
0 being Min
and then Max being the Max from 0,0,0 * 2
you can then simply populate the array with either 1 or 0 for if it has something there or not ...
then do collision based on if ptrCollision( x-WldMax, y-WldMax, z-WldMax) = 1 then << whatever you want to happen when collision happens >>
Anata aru kowagaru no watashi! 