1
0
Fork 0

Update for tweaked SGPickCallback API.

(Requires corresponding SimGear commit)
This commit is contained in:
James Turner 2013-02-03 16:34:36 +00:00
parent 978a2cd8c6
commit 1a5b968d7e
4 changed files with 15 additions and 11 deletions

View file

@ -27,11 +27,13 @@
#endif
#include "FGMouseInput.hxx"
#include <osgGA/GUIEventAdapter>
#include "Main/globals.hxx"
using std::ios_base;
void ActivePickCallbacks::init( int b, const osgGA::GUIEventAdapter* ea )
void ActivePickCallbacks::init( int button, const osgGA::GUIEventAdapter* ea )
{
// Get the list of hit callbacks. Take the first callback that
// accepts the mouse button press and ignore the rest of them
@ -39,13 +41,15 @@ void ActivePickCallbacks::init( int b, const osgGA::GUIEventAdapter* ea )
// The nearest one is the first one and the deepest
// (the most specialized one in the scenegraph) is the first.
std::vector<SGSceneryPick> pickList;
if (globals->get_renderer()->pick(pickList, ea)) {
std::vector<SGSceneryPick>::const_iterator i;
for (i = pickList.begin(); i != pickList.end(); ++i) {
if (i->callback->buttonPressed(b, i->info)) {
(*this)[b].push_back(i->callback);
if (!globals->get_renderer()->pick(pickList, ea)) {
return;
}
std::vector<SGSceneryPick>::const_iterator i;
for (i = pickList.begin(); i != pickList.end(); ++i) {
if (i->callback->buttonPressed(button, ea, i->info)) {
(*this)[button].push_back(i->callback);
return;
}
}
}

View file

@ -45,7 +45,7 @@
class ActivePickCallbacks : public std::map<int, std::list<SGSharedPtr<SGPickCallback> > > {
public:
void update( double dt );
void init( int b, const osgGA::GUIEventAdapter* ea );
void init( int button, const osgGA::GUIEventAdapter* ea );
};

View file

@ -61,7 +61,7 @@ public:
panel(p)
{}
virtual bool buttonPressed(int b, const Info& info)
virtual bool buttonPressed(int b, const osgGA::GUIEventAdapter*, const Info& info)
{
button = b;
// convert to panel coordinates

View file

@ -59,7 +59,7 @@ using namespace simgear;
class FGGroundPickCallback : public SGPickCallback {
public:
virtual bool buttonPressed(int button, const Info& info)
virtual bool buttonPressed(int button, const osgGA::GUIEventAdapter*, const Info& info)
{
// only on left mouse button
if (button != 0)