diff --git a/src/Cockpit/panel.cxx b/src/Cockpit/panel.cxx index 19a267202..bfdb5600c 100644 --- a/src/Cockpit/panel.cxx +++ b/src/Cockpit/panel.cxx @@ -436,6 +436,21 @@ FGPanel::draw() glPopMatrix(); } + // 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(int i=0; i<_instruments.size(); i++) + _instruments[i]->drawHotspots(); + + glPopAttrib(); + } + + // restore some original state glPopAttrib(); glPolygonOffset(0, 0); @@ -650,6 +665,25 @@ FGPanelInstrument::~FGPanelInstrument () } } +void +FGPanelInstrument::drawHotspots() +{ + for(int i=0; i<_actions.size(); i++) { + FGPanelAction* a = _actions[i]; + float x1 = getXPos() + a->getX(); + float x2 = x1 + a->getWidth(); + float y1 = getYPos() + a->getY(); + float y2 = y1 + a->getHeight(); + + glBegin(GL_LINE_LOOP); + glVertex2f(x1, y1); + glVertex2f(x1, y2); + glVertex2f(x2, y2); + glVertex2f(x2, y1); + glEnd(); + } +} + void FGPanelInstrument::setPosition (int x, int y) { diff --git a/src/Cockpit/panel.hxx b/src/Cockpit/panel.hxx index 0b41c2d25..4ef5fffc7 100644 --- a/src/Cockpit/panel.hxx +++ b/src/Cockpit/panel.hxx @@ -370,6 +370,7 @@ public: virtual ~FGPanelInstrument (); virtual void draw () = 0; + virtual void drawHotspots(); virtual void setPosition(int x, int y); virtual void setSize(int w, int h);