I wrote:
> Jim Wilson wrote: > > How hard would it be to have a property that toggles hotspot > > visibility? It'd be nice to be able to turn it on and have yellow > > rectangles show up on the hotspots... > > That's not a bad idea. It's actually an astoundingly good idea, and implementable over lunch to boot. :) Try the attached patch, which predicates the boxes on the /sim/panel-hotspots property. I mapped a toggle event on this to a spare joystick button, and had fun. :) [dpm: bound to Ctrl-C]
This commit is contained in:
parent
a53ccae248
commit
8eb735d149
2 changed files with 35 additions and 0 deletions
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue