From 0029d8fc4697b61faec42f1450d5e849b1080bb6 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 16 Jul 2009 12:11:18 +0000 Subject: [PATCH] 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 --- .../OpenFlight/FltExportVisitor.cpp | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/osgPlugins/OpenFlight/FltExportVisitor.cpp b/src/osgPlugins/OpenFlight/FltExportVisitor.cpp index 437fdb22a..9d2b592b0 100644 --- a/src/osgPlugins/OpenFlight/FltExportVisitor.cpp +++ b/src/osgPlugins/OpenFlight/FltExportVisitor.cpp @@ -647,24 +647,27 @@ FltExportVisitor::writeATTRFile( int unit, const osg::Texture2D* texture ) const const osg::StateSet* ss = getCurrentStateSet(); const osg::TexEnv* texenv = dynamic_cast( 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() );