While working on my PGD competition entry I ran into a silly problem...

My nice quaternion based camera class works great in the first person shooter mode of my game, but if I remove the clamping and try to use it as a 6DOF camera it doesn't work properly. It rotates alright, but it always rotates about the world axis, not itself.

Ie. if I pitch (x-axis) the camera +90 degrees and then yaw (y-axis) +90 degrees it rotates about the world axis and it looks like the camera is actually rolling... How can I do proper cumulative rotation?

This is how I do it now:
Code:
q := Q_FromEuler(Roll, Pitch, Yaw);
Orientation := Q_Mult(Orientation, q);
I tried to look for answer and found some nice formulas etc. but I can't understand them. Oh yes, I suck at math.