From 484d8e328a58d7677acc4fa955b3f979f78b1fd8 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 16 Jul 2009 12:09:47 +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." --- .../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 cb3b53a4c..47e0db85c 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() );