BSP Flight Box... with BSP Collision!

``Oh, noe, BSP Collision!, errr... BSP? Collision?''

Alex S.

[FlightBox.java] [pMatrix.java] [BufferedApplet.java] [pBSPNode.java] [pFace.java] [pMapGen.java] [pPlane.java] [pBrush.java] [pMap.java] [pWinding.java]

You control pitch with W/S keys (Up Arrow/Down Arrow).
You control yaw with A/D keys (Left Arrow/Right Arrow).
You control roll with Q/E keys (Delete/Insert keys).
You control speed with Z/X (Z moves you forward, X moves you backwards). You can also use the '>' and '<' keys.

You can also use a mouse. A very convinient way to fly around is to control direction with the mouse, and keep holding down the 'Z' key.

The code starts up by generating a `random' map (made of boxes---yes, they're all just boxes, scaled/rotated, etc.), then builds the BSP tree (Binary Space Partition Tree; thing used in DOOM/Quake and nearly all modern games), then renders it. Rendering is so that you can see how the BSP cut up the objects. Once in a while, you see unaligned seams (like you can see stuff through a `cut' in the box) that's due to the `integer only' clipping routines (will be fixed eventually); they sometimes do inappropriate round offs... using doubles would solve it, but then it would also be a bit slower.