mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-07-21 08:44:06 +00:00
Revert "Seems to fix wireframe crashes"
This reverts commit 31a0bbcb23
.
Better fix coming up
This commit is contained in:
parent
7c1386b62b
commit
0b4e7e59bc
1 changed files with 10 additions and 25 deletions
|
@ -22,8 +22,9 @@
|
||||||
class WireframeKeyHandler : public osgGA::GUIEventHandler
|
class WireframeKeyHandler : public osgGA::GUIEventHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
WireframeKeyHandler()
|
WireframeKeyHandler(osg::Node* node)
|
||||||
: mWireframe(false)
|
: mWireframe(false)
|
||||||
|
, mNode(node)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -36,7 +37,12 @@ public:
|
||||||
if (adapter.getKey() == osgGA::GUIEventAdapter::KEY_W)
|
if (adapter.getKey() == osgGA::GUIEventAdapter::KEY_W)
|
||||||
{
|
{
|
||||||
mWireframe = !mWireframe;
|
mWireframe = !mWireframe;
|
||||||
// applying state from an event handler doesn't appear to be safe, so do it in the frame update
|
osg::PolygonMode* mode = new osg::PolygonMode;
|
||||||
|
mode->setMode(osg::PolygonMode::FRONT_AND_BACK,
|
||||||
|
mWireframe ? osg::PolygonMode::LINE : osg::PolygonMode::FILL);
|
||||||
|
mNode->getOrCreateStateSet()->setAttributeAndModes(mode, osg::StateAttribute::ON);
|
||||||
|
mNode->getOrCreateStateSet()->setMode(GL_CULL_FACE, mWireframe ? osg::StateAttribute::OFF
|
||||||
|
: osg::StateAttribute::ON);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -45,13 +51,9 @@ public:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool getWireframe() const
|
|
||||||
{
|
|
||||||
return mWireframe;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool mWireframe;
|
bool mWireframe;
|
||||||
|
osg::Node* mNode;
|
||||||
};
|
};
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
|
@ -128,28 +130,11 @@ int main(int argc, char** argv)
|
||||||
viewer.setUpViewInWindow(0, 0, 800, 600);
|
viewer.setUpViewInWindow(0, 0, 800, 600);
|
||||||
viewer.realize();
|
viewer.realize();
|
||||||
viewer.setCameraManipulator(new osgGA::TrackballManipulator());
|
viewer.setCameraManipulator(new osgGA::TrackballManipulator());
|
||||||
|
viewer.addEventHandler(new WireframeKeyHandler(root));
|
||||||
WireframeKeyHandler* keyHandler = new WireframeKeyHandler;
|
|
||||||
|
|
||||||
viewer.addEventHandler(keyHandler);
|
|
||||||
viewer.addEventHandler(new osgViewer::StatsHandler);
|
viewer.addEventHandler(new osgViewer::StatsHandler);
|
||||||
|
|
||||||
bool wireframe = false;
|
|
||||||
|
|
||||||
while (!viewer.done())
|
while (!viewer.done())
|
||||||
{
|
{
|
||||||
|
|
||||||
if (wireframe != keyHandler->getWireframe())
|
|
||||||
{
|
|
||||||
wireframe = keyHandler->getWireframe();
|
|
||||||
osg::PolygonMode* mode = new osg::PolygonMode;
|
|
||||||
mode->setMode(osg::PolygonMode::FRONT_AND_BACK,
|
|
||||||
wireframe ? osg::PolygonMode::LINE : osg::PolygonMode::FILL);
|
|
||||||
root->getOrCreateStateSet()->setAttributeAndModes(mode, osg::StateAttribute::ON);
|
|
||||||
root->getOrCreateStateSet()->setMode(GL_CULL_FACE, wireframe ? osg::StateAttribute::OFF
|
|
||||||
: osg::StateAttribute::ON);
|
|
||||||
}
|
|
||||||
|
|
||||||
viewer.frame();
|
viewer.frame();
|
||||||
|
|
||||||
for (unsigned int i=0; i<controllers.size(); ++i)
|
for (unsigned int i=0; i<controllers.size(); ++i)
|
||||||
|
|
Loading…
Reference in a new issue