]> git.mxchange.org Git - flightgear.git/blobdiff - src/Cockpit/panel.cxx
Yank out all the glut dependencies and concentrate them in a (easily
[flightgear.git] / src / Cockpit / panel.cxx
index af851a1f19761b442858b4ab50d8e0b2e447d99f..ad4465878fbab12d58dad6783aee3b689bb8fa64 100644 (file)
@@ -53,7 +53,6 @@
 // my hardware/driver requires many more.
 #define POFF_UNITS 4
 
-\f
 ////////////////////////////////////////////////////////////////////////
 // Local functions.
 ////////////////////////////////////////////////////////////////////////
@@ -379,9 +378,11 @@ FGPanel::draw()
   glEnable(GL_COLOR_MATERIAL);
   glEnable(GL_CULL_FACE);
   glCullFace(GL_BACK);
-  glDepthMask(GL_FALSE);
+  glDisable(GL_DEPTH_TEST);
   sgVec4 panel_color;
-  sgCopyVec4( panel_color, cur_light_params.scene_diffuse );
+
+  FGLight *l = (FGLight *)(globals->get_subsystem("lighting"));
+  sgCopyVec4( panel_color, l->scene_diffuse());
   if ( fgGetDouble("/systems/electrical/outputs/instrument-lights") > 1.0 ) {
       if ( panel_color[0] < 0.7 ) panel_color[0] = 0.7;
       if ( panel_color[1] < 0.2 ) panel_color[1] = 0.2;
@@ -426,10 +427,6 @@ FGPanel::draw()
   instrument_list_type::const_iterator current = _instruments.begin();
   instrument_list_type::const_iterator end = _instruments.end();
 
-  // Don't let the instruments be visible trhought the roof of the c310-3d
-  // This does hurt the magnetic compass in the default c172-3d,
-  //  but we need a real 3d compass anyway.
-  glPolygonOffset(-1, -5*POFF_UNITS);
   for ( ; current != end; current++) {
     FGPanelInstrument * instr = *current;
     glPushMatrix();
@@ -441,15 +438,11 @@ FGPanel::draw()
   // Draw yellow "hotspots" if directed to.  This is a panel authoring
   // feature; not intended to be high performance or to look good.
   if ( fgGetBool("/sim/panel-hotspots") ) {
-    glPushAttrib(GL_ALL_ATTRIB_BITS);
-    glDisable(GL_DEPTH_TEST);
     glDisable(GL_TEXTURE_2D);
     glColor3f(1, 1, 0);
     
     for ( unsigned int i = 0; i < _instruments.size(); i++ )
       _instruments[i]->drawHotspots();
-
-    glPopAttrib();
   }
 
 
@@ -784,7 +777,6 @@ FGLayeredInstrument::draw ()
   
   for (int i = 0; i < (int)_layers.size(); i++) {
     glPushMatrix();
-    // glPolygonOffset(-1, -POFF_UNITS*(i+2));
     _layers[i]->draw();
     glPopMatrix();
   }
@@ -952,7 +944,9 @@ FGTexturedLayer::draw ()
                                // From Curt: turn on the panel
                                // lights after sundown.
     sgVec4 panel_color;
-    sgCopyVec4( panel_color, cur_light_params.scene_diffuse );
+
+    FGLight *l = (FGLight *)(globals->get_subsystem("lighting"));
+    sgCopyVec4( panel_color, l->scene_diffuse());
     if ( fgGetDouble("/systems/electrical/outputs/instrument-lights") > 1.0 ) {
         if ( panel_color[0] < 0.7 ) panel_color[0] = 0.7;
         if ( panel_color[1] < 0.2 ) panel_color[1] = 0.2;
@@ -1097,8 +1091,9 @@ FGTextLayer::Chunk::Chunk (const string &text, const string &fmt)
 }
 
 FGTextLayer::Chunk::Chunk (ChunkType type, const SGPropertyNode * node,
-                          const string &fmt, float mult)
-  : _type(type), _fmt(fmt), _mult(mult)
+                          const string &fmt, float mult, float offs,
+                           bool truncation)
+  : _type(type), _fmt(fmt), _mult(mult), _offs(offs), _trunc(truncation)
 {
   if (_fmt.empty()) {
     if (type == TEXT_VALUE)
@@ -1122,7 +1117,9 @@ FGTextLayer::Chunk::getValue () const
       sprintf(_buf, _fmt.c_str(), _node->getStringValue());
       break;
     case DOUBLE_VALUE:
-      sprintf(_buf, _fmt.c_str(), _node->getFloatValue() * _mult);
+      double d = _offs + _node->getFloatValue() * _mult;
+      if (_trunc)  d = (d < 0) ? -floor(-d) : floor(d);
+      sprintf(_buf, _fmt.c_str(), d);
       break;
     }
     return _buf;