Просмотр исходного кода

Support instance_image in Collada 1.5 files

The <instance_image> tag in sampler2D elements is not expected by
ColladaParser. This patch parses the instance_image element and
gets the image ID.
Danke Xie 9 лет назад
Родитель
Сommit
24b68b1e3d
1 измененных файлов с 14 добавлено и 1 удалено
  1. 14 1
      code/ColladaParser.cpp

+ 14 - 1
code/ColladaParser.cpp

@@ -1509,7 +1509,7 @@ void ColladaParser::ReadEffectParam( Collada::EffectParam& pParam)
                 // don't care for remaining stuff
                 SkipElement( "surface");
             }
-            else if( IsElement( "sampler2D"))
+            else if( IsElement( "sampler2D") && (FV_1_4_n == mFormat || FV_1_3_n == mFormat))
             {
                 // surface ID is given inside <source> tags
                 TestOpening( "source");
@@ -1520,6 +1520,19 @@ void ColladaParser::ReadEffectParam( Collada::EffectParam& pParam)
 
                 // don't care for remaining stuff
                 SkipElement( "sampler2D");
+            }
+            else if( IsElement( "sampler2D"))
+            {
+                // surface ID is given inside <instance_image> tags
+                TestOpening( "instance_image");
+                int attrURL = GetAttribute("url");
+                const char* url = mReader->getAttributeValue( attrURL);
+                if( url[0] != '#')
+                    ThrowException( "Unsupported URL format in instance_image");
+                url++;
+                pParam.mType = Param_Sampler;
+                pParam.mReference = url;
+                SkipElement( "sampler2D");
             } else
             {
                 // ignore unknown element