查看: 1597|回复: 2

求助~!~!

[复制链接]

该用户从未签到

发表于 2009-6-11 15:30:24 | 显示全部楼层 |阅读模式
这是pick程序中的一段,是在获得所选中的node和其父节点parent后的程序段。对选中的节点进行高亮显示,否则去除高亮显示。
if (nodePath.size() > 0)
      node = nodePath[nodePath.size() - 1];
if (nodePath.size() > 1)
      parent = dynamic_cast<Group*> (nodePath[nodePath.size() - 2]);

if(parent&&node)
{
osgFX::Scribe* parentAsScribe=dynamic_cast<osgFX::Scribe*>parent;//1
if(!parentAsScribe)//2
{
   osgFX::Scribe* scribe=new osgFX::Scribe;
   scribe->addChild(node);
   parent->replaceChild(node,scribe);
}
else
{
   osg::Node::parentList parentlist=parent->getParents();
   for(osg::Node::parentList::iterator itr=parentlist.begin();itr!=parentlist.end();itr++)
   {
      (*itr)->replaceChild(parentAsScribe,node);//3
   }
}
}
   这段代码中:(*itr)->replaceChild(parentAsScribe,node),为什么会用parentAsScribe?我对else语句中的程序段不理解,谁能帮我解释一下啊,谢谢。

该用户从未签到

发表于 2009-6-11 18:50:13 | 显示全部楼层
您这段代码里面,else语句段的作用似乎是 在该节点已经被高亮(父节点为Scribe)的前提下,取消它的高亮显示,因此把这个父节点替换掉了

该用户从未签到

 楼主| 发表于 2009-6-11 22:02:44 | 显示全部楼层
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表