#include <osgViewer/Viewer>
#include <simgear/constants.h>
+#include <simgear/sg_inlines.h>
#include <simgear/debug/logstream.hxx>
#include <simgear/scene/tgdb/userdata.hxx>
#include <simgear/scene/material/matlib.hxx>
+#include <simgear/scene/material/mat.hxx>
#include <simgear/scene/util/SGNodeMasks.hxx>
#include <simgear/scene/util/OsgMath.hxx>
#include <simgear/scene/util/SGSceneUserData.hxx>
#include <simgear/scene/model/CheckSceneryVisitor.hxx>
#include <simgear/bvh/BVHNode.hxx>
#include <simgear/bvh/BVHLineSegmentVisitor.hxx>
+#include <simgear/structure/commands.hxx>
#include <Viewer/renderer.hxx>
#include <Main/fg_props.hxx>
+#include <GUI/MouseCursor.hxx>
#include "tilemgr.hxx"
#include "scenery.hxx"
class FGGroundPickCallback : public SGPickCallback {
public:
- virtual bool buttonPressed(int button, const Info& info)
+ FGGroundPickCallback() : SGPickCallback(PriorityScenery)
+ { }
+
+ virtual bool buttonPressed( int button,
+ const osgGA::GUIEventAdapter&,
+ const Info& info )
{
// only on left mouse button
if (button != 0)
void FGScenery::init() {
// Scene graph root
scene_graph = new osg::Group;
- scene_graph->setName( "Scene" );
+ scene_graph->setName( "FGScenery" );
// Terrain branch
terrain_branch = new osg::Group;
}
-void FGScenery::update(double dt) {
+void FGScenery::update(double dt)
+{
+ SG_UNUSED(dt);
+ // nothing here, don't call again
+ suspend();
}
bool
FGScenery::get_cart_elevation_m(const SGVec3d& pos, double max_altoff,
- double& alt, const SGMaterial** material,
+ double& alt,
+ const simgear::BVHMaterial** material,
const osg::Node* butNotFrom)
{
SGGeod geod = SGGeod::fromCart(pos);
bool
FGScenery::get_elevation_m(const SGGeod& geod, double& alt,
- const SGMaterial** material,
+ const simgear::BVHMaterial** material,
const osg::Node* butNotFrom)
{
SGVec3d start = SGVec3d::fromGeod(geod);
geodEnd = SGGeod::fromCart(intersectVisitor.getLineSegment().getEnd());
alt = geodEnd.getElevationM();
if (material)
- *material = dynamic_cast<const SGMaterial*>(intersectVisitor.getMaterial());
+ *material = intersectVisitor.getMaterial();
return true;
}