]> git.mxchange.org Git - simgear.git/commitdiff
Fix material animations with only a <texture-prop>
authortimoore <timoore>
Wed, 5 Sep 2007 22:12:00 +0000 (22:12 +0000)
committertimoore <timoore>
Wed, 5 Sep 2007 22:12:00 +0000 (22:12 +0000)
On 8/31/07, K. Hoercher <wbhoer@gmail.com> wrote:
> > Some notes:
> > - I found that in order to make the example from model-howto.html work
> > ( starting at "To make a texture replaceable at runtime") one has to
> > specify a valid (i.e. loadable) <texture>  in the material animation.

The cause seems to be the condition in SGMaterialAnimation.cxx l.277
ignoring any texture update by the UpdateCallback (only there
<texture-prop> is looked at)  without an already existing stateSet.
That in turn will not be created with a <texture-prop> alone l. 379ff.

Unless I overlooked some compelling reason contradicting, I'd like to
suggest allowing for a stateSet to be created for those situations
too. I think that would match the behaviour of animation.cxx
(PRE_OSG_PLIB_20061029) and is imho the more expected and also
documented one.

simgear/scene/model/SGMaterialAnimation.cxx

index 7e6a2acb0b0a266d12e1d1d77a9b24603176d712..ed5431486ae876f04e3e61e3f7982f9e77797966 100644 (file)
@@ -376,6 +376,8 @@ SGMaterialAnimation::createAnimationGroup(osg::Group& parent)
 
   osgDB::FilePathList texturePathList = osgDB::getDataFilePathList();
 
+  if (getConfig()->hasChild("texture-prop"))
+      osg::StateSet* stateSet = group->getOrCreateStateSet();
   if (getConfig()->hasChild("texture")) {
     std::string textureName = getConfig()->getStringValue("texture");
     std::string textureFile;