From Fabien Lavignotte, "When exporting some models to OpenFlight, i found a crash if the texture

unit does not contain a TexEnv object.
Here's the small fix, just a test on the pointer."

Merged from svn trunk using:

svn merge -r 10490:10491 http://www.openscenegraph.org/svn/osg/OpenSceneGraph/trunk/src/osgPlugins/OpenFlight
This commit is contained in:
Robert Osfield
2009-07-16 12:11:18 +00:00
parent a5d6c1a6a3
commit 0029d8fc46

View File

@@ -647,24 +647,27 @@ FltExportVisitor::writeATTRFile( int unit, const osg::Texture2D* texture ) const
const osg::StateSet* ss = getCurrentStateSet();
const osg::TexEnv* texenv = dynamic_cast<const osg::TexEnv*>(
ss->getTextureAttribute( unit, osg::StateAttribute::TEXENV ) );
switch( texenv->getMode())
if (texenv)
{
case osg::TexEnv::DECAL:
ad.texEnvMode = AttrData::TEXENV_DECAL;
break;
case osg::TexEnv::MODULATE:
default:
ad.texEnvMode = AttrData::TEXENV_MODULATE;
break;
case osg::TexEnv::BLEND:
ad.texEnvMode = AttrData::TEXENV_BLEND;
break;
case osg::TexEnv::REPLACE:
ad.texEnvMode = AttrData::TEXENV_COLOR;
break;
case osg::TexEnv::ADD:
ad.texEnvMode = AttrData::TEXENV_ADD;
break;
switch( texenv->getMode())
{
case osg::TexEnv::DECAL:
ad.texEnvMode = AttrData::TEXENV_DECAL;
break;
case osg::TexEnv::MODULATE:
default:
ad.texEnvMode = AttrData::TEXENV_MODULATE;
break;
case osg::TexEnv::BLEND:
ad.texEnvMode = AttrData::TEXENV_BLEND;
break;
case osg::TexEnv::REPLACE:
ad.texEnvMode = AttrData::TEXENV_COLOR;
break;
case osg::TexEnv::ADD:
ad.texEnvMode = AttrData::TEXENV_ADD;
break;
}
}
osgDB::writeObjectFile( ad, name, _fltOpt.get() );