<div dir="ltr"><div dir="ltr"><div dir="ltr">Init<div><br></div><div><div>    auto scene = new osg::Group;</div><div>    auto swtch = new osg::Switch;</div><div>    auto scribe = new osgFX::Scribe;</div><div>    auto node = osgDB::readNodeFile(......);</div><div>    scene->addChild(swtch);</div><div>    swtch->addChild(node);</div><div>    swtch->addChild(scribe);</div><div>    scribe->addChild(node);</div><div>    swtch->setSingleChildOn(0);</div><div>    viewer->setSceneData(scene);</div></div><div><br></div><div><br></div><div><div>void enterWireFrame(const osgGA::GUIEventAdapter& ea, osgViewer::Viewer* viewer)</div><div>{</div><div>    osg::Node* scene = viewer->getSceneData();</div><div>    osg::Switch* swtch = scene->asGroup()->getChild(0)->asSwitch();</div><div>    swtch->setSingleChildOn(1);</div><div>}</div><div><br></div><div><br></div><div>void exitWireFrame(const osgGA::GUIEventAdapter& ea, osgViewer::Viewer* viewer)</div><div>{</div><div>    osg::Node* scene = viewer->getSceneData();</div><div>    osg::Switch* swtch = scene->asGroup()->getChild(0)->asSwitch();</div><div>    swtch->setSingleChildOn(0);</div><div>}</div></div><div><br></div></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Nov 7, 2018 at 4:50 PM Charlie Tan <<a href="mailto:chen.qunhan@gmail.com">chen.qunhan@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I just began using OSG for one of my projects. Basically one of the tasks is to enable/disable wireframe mode. I have tried to follow the osgkeyboardmouse example and tried to implement a different version(where you don't have to click on the model, but push a keyboard key) to toggle between the modes.<br>
<br>
To do this, I use 2 functions, enterWireFrame() and exitWireFrame() to toggle between the wireframe modes:<br>
<br>
void enterWireFrame(const osgGA::GUIEventAdapter& ea, osgViewer::Viewer* viewer)<br>
{<br>
  osg::Node* scene = viewer->getSceneData();<br>
<br>
  osg::Group* parent = scene->getParent(0);<br>
  osg::Node* node = parent->getChild(0);<br>
<br>
  auto scribe = new osgFX::Scribe();<br>
  scribe->addChild(node);<br>
<br>
  parent->replaceChild(node, scribe);<br>
}<br>
<br>
<br>
<br>
void exitWireFrame(const osgGA::GUIEventAdapter& ea, osgViewer::Viewer* viewer)<br>
{<br>
    osg::Node* scene = viewer->getSceneData();<br>
<br>
    osg::Group* parent = scene->getParent(0);<br>
    osg::Node* node = (dynamic_cast<osg::Group*>(scene))->getChild(0);<br>
<br>
    parent->replaceChild(parent, node);<br>
}<br>
<br>
<br>
I then ran enterWireFrame() followed by exitWireFrame(). I am able to render the wireframe after the 1st function, but the 2nd function does not do anything at all.<br>
<br>
I am totally new to OSG and would very much appreciate if someone could point me in the right direction where my mistake lies (probably in the 2nd function, but I can't figure it out).<br>
<br>
Thank you!<br>
<br>
Cheers,<br>
Charlie<br>
<br>
------------------<br>
Read this topic online here:<br>
<a href="http://forum.openscenegraph.org/viewtopic.php?p=75172#75172" rel="noreferrer" target="_blank">http://forum.openscenegraph.org/viewtopic.php?p=75172#75172</a><br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org" target="_blank">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
</blockquote></div>