Mathias Fröhlich's code, Curt Olson's comments:
Display the ground intersection point on mouse click (if click not consumed by the gui or the panel.) This should eventually get stuffed into the property tree.
This commit is contained in:
parent
bbb8b066eb
commit
7c0cf9dff9
1 changed files with 26 additions and 0 deletions
|
@ -57,6 +57,11 @@
|
|||
|
||||
#include "input.hxx"
|
||||
|
||||
#include <Scenery/scenery.hxx>
|
||||
#include <Main/renderer.hxx>
|
||||
#include <plib/ssg.h>
|
||||
#include <simgear/math/sg_geodesy.hxx>
|
||||
|
||||
SG_USING_STD(ifstream);
|
||||
SG_USING_STD(string);
|
||||
SG_USING_STD(vector);
|
||||
|
@ -308,6 +313,27 @@ FGInput::doMouseClick (int b, int updown, int x, int y)
|
|||
return;
|
||||
else if (fgHandle3DPanelMouseEvent(b, updown, x, y))
|
||||
return;
|
||||
else {
|
||||
// pui and the panel didn't want the click event so compute a
|
||||
// terrain intersection point corresponding to the mouse click
|
||||
// and be happy. This should eventually get written into a set
|
||||
// of properties so that some other [future] subsystems can do
|
||||
// something useful with the information.
|
||||
FGScenery* scenery = globals->get_scenery();
|
||||
sgdVec3 start, dir, hit;
|
||||
if (FGRenderer::getPickInfo(start, dir, x, y) &&
|
||||
scenery->get_cart_ground_intersection(start, dir, hit)) {
|
||||
|
||||
Point3D geod = sgCartToGeod(Point3D(hit[0], hit[1], hit[2]));
|
||||
|
||||
std::cout << "lon = " << geod.lon()*SGD_RADIANS_TO_DEGREES
|
||||
<< " deg, lat = " << geod.lat()*SGD_RADIANS_TO_DEGREES
|
||||
<< " deg, elev = " << geod.elev()
|
||||
<< " m" << std::endl;
|
||||
} else {
|
||||
std::cout << "Cannot find intersection point" << std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// OK, PUI and the panel didn't want the click
|
||||
|
|
Loading…
Add table
Reference in a new issue