|
osgEarth 2.1.1
|
Public Member Functions | |
| QueryTileHandler (osg::MatrixTransform *flag, const osgEarth::SpatialReference *srs) | |
| void | update (float x, float y, osgViewer::View *view) |
| bool | handle (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &aa) |
Public Attributes | |
| bool | _mouseDown |
| osg::ref_ptr < osg::MatrixTransform > | _flag |
| osg::ref_ptr< const osgEarth::SpatialReference > | _srs |
Definition at line 92 of file osgearth_seamless.cpp.
| QueryTileHandler::QueryTileHandler | ( | osg::MatrixTransform * | flag, |
| const osgEarth::SpatialReference * | srs | ||
| ) | [inline] |
Definition at line 94 of file osgearth_seamless.cpp.
: _mouseDown(false), _flag(flag), _srs(srs) { }
| bool QueryTileHandler::handle | ( | const osgGA::GUIEventAdapter & | ea, |
| osgGA::GUIActionAdapter & | aa | ||
| ) | [inline] |
Definition at line 142 of file osgearth_seamless.cpp.
{
if ( ea.getEventType() == osgGA::GUIEventAdapter::MOVE )
{
osgViewer::View* view = static_cast<osgViewer::View*>(aa.asView());
update( ea.getX(), ea.getY(), view );
}
return false;
}
| void QueryTileHandler::update | ( | float | x, |
| float | y, | ||
| osgViewer::View * | view | ||
| ) | [inline] |
Definition at line 98 of file osgearth_seamless.cpp.
{
using namespace osg;
using namespace osgUtil;
using namespace osgEarth;
LineSegmentIntersector::Intersections results;
TileKey key(TileKey::INVALID);
if ( view->computeIntersections( x, y, results, 0x01 ) )
{
// find the first hit under the mouse:
LineSegmentIntersector::Intersection first
= *(results.begin());
for (NodePath::const_reverse_iterator itr = first.nodePath.rbegin(),
end = first.nodePath.rend();
itr != end;
++itr)
{
const PagedLOD* plod = dynamic_cast<const PagedLOD*>(*itr);
if (!plod)
continue;
const seamless::PatchInfo* popt
= dynamic_cast<const seamless::PatchInfo*>(
plod->getDatabaseOptions());
if (!popt)
continue;
key = popt->getTileKey();
break;
}
if (!key.valid())
{
OE_WARN << "Couldn't get tile key.\n";
return;
}
osg::Vec3d point = first.getWorldIntersectPoint();
// transform it to map coordinates:
Matrixd coordFrame;
_srs->getEllipsoid()->computeLocalToWorldTransformFromXYZ(
point.x(), point.y(), point.z(), coordFrame);
updateFlag(_flag.get(), coordFrame, key);
}
}
Here is the call graph for this function:| osg::ref_ptr<osg::MatrixTransform> QueryTileHandler::_flag |
Definition at line 154 of file osgearth_seamless.cpp.
Definition at line 153 of file osgearth_seamless.cpp.
| osg::ref_ptr<const osgEarth::SpatialReference> QueryTileHandler::_srs |
Definition at line 155 of file osgearth_seamless.cpp.
1.7.3