void AeroCraftGUI:: camera (){ glMatrixMode( GL_PROJECTION ); glLoadIdentity(); float fov = VIEW_ZOOM_DEFAULT/zoom; glFrustum( -ASPECT_RATIO, ASPECT_RATIO, -1, 1, 1*fov, VIEW_DEPTH*fov ); Mat3d camMat; Vec3f camPos; convert(world->myCraft->pos, camPos ); float camDist = 10.0; if(first_person){ // third person camera attached to aero-craft camMat.setT( world->myCraft->rotMat ); //glTranslatef ( -camPos.x, -camPos.y, -camPos.z ); }else{ // third person camera attached to aero-craft qCamera.toMatrix( camMat ); camMat.T(); } float glMat[16]; Draw3D::toGLMatCam( { 0.0f, 0.0f, 0.0f}, camMat, glMat ); glMultMatrixf( glMat ); glTranslatef ( -camPos.x+camMat.cx*camDist, -camPos.y+camMat.cy*camDist, -camPos.z+camMat.cz*camDist ); glMatrixMode (GL_MODELVIEW); glLoadIdentity(); }