|
这是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语句中的程序段不理解,谁能帮我解释一下啊,谢谢。 |
|