|
本帖最后由 hunandx2010 于 2011-12-3 14:54 编辑
各位大神,我下面是我写得一个pick函数的代码,目的是想要当鼠标点击之后,如果在节点集里找到了PositionTransfrom节点,这设置一个bool变量为true。下面是我的代码,请高手帮小弟看看是否正确:
void Pick(float x, float y)
{
osgUtil::LineSegmentIntersector::Intersections intersections;
osg::Vec3d intersectPoint;
if (mp_Viewer->computeIntersections(x, y, intersections))
{
osgUtil::LineSegmentIntersector::Intersections::iterator hitr = intersections.begin();
if (!hitr->nodePath.empty() && !(hitr->nodePath.back()->getName().empty()))
{
osg::NodePath& np = hitr ->nodePath ;
for (int i=np.size()-1; i>=0; --i) //遍历节点的NodePath,
{ //如果找到PositiongAttitudeTransform节点,则设置m_on的值为true,然后跳出循环,
osg::PositionAttitudeTransform* pos= dynamic_cast<osg::PositionAttitudeTransform*>(np);
if (pos !=NULL)
m_on = true;
break;
}
}
}
谢谢各位! |
|