]> git.mxchange.org Git - flightgear.git/blobdiff - Main/views.hxx
C++-ifying.
[flightgear.git] / Main / views.hxx
index c4b3358785bdbb32e58ab498717f9a0620980f75..22b5f1c5f03e759c3e114ead0deb3b8253aee8cb 100644 (file)
@@ -1,4 +1,3 @@
-//
 // views.hxx -- data structures and routines for managing and view parameters.
 //
 // Written by Curtis Olson, started August 1997.
 #endif                                   
 
 
-#include <Include/fg_types.h>
-#include <Flight/flight.h>
+#include <Flight/flight.hxx>
 #include <Math/mat3.h>
+#include <Math/point3d.hxx>
 #include <Time/fg_time.hxx>
 #include <Time/light.hxx>
 
 #include "options.hxx"
 
-#ifndef BOOL
-#define BOOL int
-#endif
 
-#ifndef TRUE
-#define FALSE 0
-#define TRUE 1
-#endif
+// used in views.cxx and tilemgr.cxx
+#define USE_FAST_FOV_CLIP 
+
 
 // Define a structure containing view information
 class fgVIEW {
@@ -61,7 +56,7 @@ public:
     double goal_view_offset;
 
     // flag forcing update of fov related stuff
-    BOOL update_fov;
+    bool update_fov;
        
     // fov of view is specified in the y direction, win_ratio is used to
     // calculate the fov in the X direction = width/height
@@ -72,6 +67,7 @@ public:
 
     // sin and cos of (fov / 2) in Y axis
     double sin_fov_y, cos_fov_y;
+    double sinlon, coslon;
 
     // slope of view frustum edge in eye space Y axis
     double slope_y;
@@ -82,19 +78,26 @@ public:
     // slope of view frustum edge in eye space X axis
     double slope_x;
 
+#if defined( USE_FAST_FOV_CLIP )
+    double fov_x_clip, fov_y_clip;
+#endif // USE_FAST_FOV_CLIP
+
     // View frustum cull ratio (% of tiles culled ... used for
     // reporting purposes)
     double vfc_ratio;
 
+    // Number of triangles rendered;
+    int tris_rendered;
+
     // absolute view position
-    fgCartesianPoint3d abs_view_pos;
+    Point3D abs_view_pos;
 
     // view position translated to scenery.center
-    fgCartesianPoint3d view_pos;
+    Point3D view_pos;
 
     // cartesion coordinates of current lon/lat if at sea level
     // translated to scenery.center*/
-    fgCartesianPoint3d cur_zero_elev;
+    Point3D cur_zero_elev;
 
     // vector in cartesian coordinates from current position to the
     // postion on the earth's surface the sun is directly over
@@ -135,14 +138,29 @@ public:
     // coordinates to eye coordinates
     MAT3mat WORLD_TO_EYE;
 
+    // Current model view matrix;
+    GLdouble MODEL_VIEW[16];
+
     // Constructor
     fgVIEW( void );
 
     // Initialize a view class
     void Init( void );
 
+    void update_globals( fgFLIGHT *f );
+
+    // Basically, this is a modified version of the Mesa gluLookAt()
+    // function that's been modified slightly so we can capture the
+    // result before sending it off to OpenGL land.
+    void LookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez,
+                GLdouble centerx, GLdouble centery, GLdouble centerz,
+                GLdouble upx, GLdouble upy, GLdouble upz );
+
+    // Update the view volume, position, and orientation
+    void UpdateViewParams( void );
+
     // Update the view parameters
-    void Update( fgFLIGHT *f );
+    void UpdateViewMath( fgFLIGHT *f );
 
     // Update the "World to Eye" transformation matrix
     void UpdateWorldToEye(  fgFLIGHT *f );
@@ -162,6 +180,42 @@ extern fgVIEW current_view;
 
 
 // $Log$
+// Revision 1.15  1998/10/16 23:27:56  curt
+// C++-ifying.
+//
+// Revision 1.14  1998/10/16 00:54:04  curt
+// Converted to Point3D class.
+//
+// Revision 1.13  1998/09/08 15:04:36  curt
+// Optimizations by Norman Vine.
+//
+// Revision 1.12  1998/08/24 20:11:15  curt
+// Added i/I to toggle full vs. minimal HUD.
+// Added a --hud-tris vs --hud-culled option.
+// Moved options accessor funtions to options.hxx.
+//
+// Revision 1.11  1998/08/20 20:32:35  curt
+// Reshuffled some of the code in and around views.[ch]xx
+//
+// Revision 1.10  1998/07/08 14:45:09  curt
+// polar3d.h renamed to polar3d.hxx
+// vector.h renamed to vector.hxx
+// updated audio support so it waits to create audio classes (and tie up
+//   /dev/dsp) until the mpg123 player is finished.
+//
+// Revision 1.9  1998/07/04 00:52:27  curt
+// Add my own version of gluLookAt() (which is nearly identical to the
+// Mesa/glu version.)  But, by calculating the Model View matrix our selves
+// we can save this matrix without having to read it back in from the video
+// card.  This hopefully allows us to save a few cpu cycles when rendering
+// out the fragments because we can just use glLoadMatrixd() with the
+// precalculated matrix for each tile rather than doing a push(), translate(),
+// pop() for every fragment.
+//
+// Panel status defaults to off for now until it gets a bit more developed.
+//
+// Extract OpenGL driver info on initialization.
+//
 // Revision 1.8  1998/05/27 02:24:06  curt
 // View optimizations by Norman Vine.
 //