mirror of
https://github.com/OpenMW/openmw.git
synced 2025-04-30 12:11:28 +00:00
Fix debug drawer crash
This commit is contained in:
parent
95465a1489
commit
1fd9fba7a3
2 changed files with 37 additions and 16 deletions
|
@ -28,6 +28,15 @@ DebugDrawer::DebugDrawer(osg::ref_ptr<osg::Group> parentNode, btDynamicsWorld *w
|
||||||
mParentNode->addChild(mGeode);
|
mParentNode->addChild(mGeode);
|
||||||
mGeode->setNodeMask(Mask_Debug);
|
mGeode->setNodeMask(Mask_Debug);
|
||||||
|
|
||||||
|
createGeometry();
|
||||||
|
|
||||||
|
mParentNode->addChild(mGeode);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DebugDrawer::createGeometry()
|
||||||
|
{
|
||||||
|
if (!mGeometry)
|
||||||
|
{
|
||||||
mGeometry = new osg::Geometry;
|
mGeometry = new osg::Geometry;
|
||||||
|
|
||||||
mVertices = new osg::Vec3Array;
|
mVertices = new osg::Vec3Array;
|
||||||
|
@ -40,7 +49,18 @@ DebugDrawer::DebugDrawer(osg::ref_ptr<osg::Group> parentNode, btDynamicsWorld *w
|
||||||
mGeometry->addPrimitiveSet(mDrawArrays);
|
mGeometry->addPrimitiveSet(mDrawArrays);
|
||||||
|
|
||||||
mGeode->addDrawable(mGeometry);
|
mGeode->addDrawable(mGeometry);
|
||||||
mParentNode->addChild(mGeode);
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DebugDrawer::destroyGeometry()
|
||||||
|
{
|
||||||
|
if (mGeometry)
|
||||||
|
{
|
||||||
|
mGeode->removeDrawable(mGeometry);
|
||||||
|
mGeometry = NULL;
|
||||||
|
mVertices = NULL;
|
||||||
|
mDrawArrays = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DebugDrawer::~DebugDrawer()
|
DebugDrawer::~DebugDrawer()
|
||||||
|
@ -81,11 +101,9 @@ void DebugDrawer::setDebugMode(int isOn)
|
||||||
mDebugOn = (isOn == 0) ? false : true;
|
mDebugOn = (isOn == 0) ? false : true;
|
||||||
|
|
||||||
if (!mDebugOn)
|
if (!mDebugOn)
|
||||||
{
|
destroyGeometry();
|
||||||
mVertices->clear();
|
else
|
||||||
mVertices->releaseGLObjects(0);
|
createGeometry();
|
||||||
mGeometry->releaseGLObjects(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int DebugDrawer::getDebugMode() const
|
int DebugDrawer::getDebugMode() const
|
||||||
|
|
|
@ -29,6 +29,9 @@ protected:
|
||||||
|
|
||||||
bool mDebugOn;
|
bool mDebugOn;
|
||||||
|
|
||||||
|
void createGeometry();
|
||||||
|
void destroyGeometry();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
DebugDrawer(osg::ref_ptr<osg::Group> parentNode, btDynamicsWorld *world);
|
DebugDrawer(osg::ref_ptr<osg::Group> parentNode, btDynamicsWorld *world);
|
||||||
|
|
Loading…
Reference in a new issue