+class CamWnd : public GLWindow
+{
+public:
+ void MatchViewAxes(const vec3_t P, const vec3_t vec, int &axis, float &sgn);
+ void ReInitGL();
+ void BenchMark();
+ CamWnd();
+ virtual ~CamWnd();
+ camera_t *Camera(){return &m_Camera;};
+ void Cam_MouseControl(float dtime);
+ void Cam_ChangeFloor(qboolean up);
+ void ToggleFreeMove();
+ bool m_bFreeMove;
+
+protected:
+ void Cam_Init();
+ void Cam_BuildMatrix();
+ void Cam_PositionDrag();
+ void Cam_KeyControl(float dtime);
+ void Cam_MouseDown(int x, int y, int buttons);
+ void Cam_MouseUp (int x, int y, int buttons);
+ void Cam_MouseMoved (int x, int y, int buttons);
+ void InitCull();
+ qboolean CullBrush (brush_t *b);
+ void Cam_Draw();
+ void Cam_DrawStuff();
+ void Cam_DrawBrushes(int mode);
+ void Cam_DrawBrush(brush_t *b, int mode);
+
+ brush_t* m_TransBrushes[MAX_MAP_BRUSHES];
+ int m_nNumTransBrushes;
+ camera_t m_Camera;
+ int m_nCambuttonstate;
+ int m_ptButtonX;
+ int m_ptCursorX;
+ int m_ptLastCursorX;
+ int m_ptLastCamCursorX;
+ int m_ptButtonY;
+ int m_ptCursorY;
+ int m_ptLastCursorY;
+ int m_ptLastCamCursorY;
+ face_t* m_pSide_select;
+ vec3_t m_vCull1;
+ vec3_t m_vCull2;
+ int m_nCullv1[3];
+ int m_nCullv2[3];
+ bool m_bClipMode;
+ guint m_FocusOutHandler_id;
+
+ void OnCreate ();
+ void OnExpose ();
+ void OnLButtonDown (guint32 flags, int x, int y);
+ void OnRButtonDown (guint32 flags, int x, int y);
+ void OnMButtonDown (guint32 flags, int x, int y);
+ void OnLButtonUp (guint32 flags, int pointx, int pointy);
+ void OnRButtonUp (guint32 flags, int pointx, int pointy);
+ void OnMButtonUp (guint32 flags, int pointx, int pointy);
+ void OnMouseMove (guint32 flags, int pointx, int pointy);
+ void OnMouseWheel(bool bUp);
+ void OnSize(int cx, int cy);
+
+protected:
+ void OriginalMouseDown (guint32 nFlags, int pointX, int pointY);
+ void OriginalMouseUp (guint32 nFlags, int pointX, int pointY);
+
+private:
+ XORRectangle m_XORRectangle;
+
+ // project a point in geometric space into camera space
+ void ProjectCamera(const vec3_t A, vec_t B[2]);
+};