rmapc

2008 Rouslan Dimitrov

Intent
------

This project is my educational tool to deepen my knowledge in computer
architecture, computer graphics, game engine technology, compiler
design, and programming.


Acknowledgements
----------------

This work is strongly influenced and inspired by id's Quake 3.
The sources have greatly helped me in my attempt to dive into
the art of game programming. Although influenced by id Software's
quake map compiler q3map, rmapc is developed from scratch and 
does not reuse code with similar utilities.

Issues
------

Quake 3 compatibility issue 1 (plane equation):
	Quake uses Ax + By + Cz - D = 0 and this compiler uses "+ D".

Quake 3 compatibility issue 2 (brush sides):
	The game expects every brush to have at least 6 sides
	(order: left, right, bottom, top, far, near), even though some
	are never reachable. The only way to optimize this is to set
	sBSPBrush.numSides to less then 6, but still sBSPBrush.firstSide
	to index into at least 6 valid brush sides. While not perfect,
	this could still save some work. Note: this way, all left brush
	sides are always checked, but we could get a speed-up from not
	reachable near sides.