Better checking of the existence of image filepath
authorMikko Rasa <tdb@tdb.fi>
Sun, 16 Jun 2019 10:15:32 +0000 (13:15 +0300)
committerMikko Rasa <tdb@tdb.fi>
Sun, 16 Jun 2019 10:15:32 +0000 (13:15 +0300)
Apparently packed images can get funny filepaths like "//../../../../"
in autosaves.  Best to check only the basename so there won't be empty
filenames in datafiles.

blender/io_mspgl/export_material.py
blender/io_mspgl/export_texture.py

index 8619142e9b4dff53d4543c2b8a3e31dde6cff016..336ca31698e9d7b401305198040ca6da92f1d195 100644 (file)
@@ -51,8 +51,9 @@ class MaterialExporter:
 
                        st = Statement("inherit", material.technique)
                        for s, t in textures.items():
-                               if t.default_filter and t.image.filepath:
-                                       st.sub.append(Statement("texture", s, os.path.basename(t.image.filepath)))
+                               fn = os.path.basename(t.image.filepath)
+                               if t.default_filter and fn:
+                                       st.sub.append(Statement("texture", s, fn))
                                else:
                                        st.sub.append(tech_res.create_reference_statement("texture", s, resources[t.name+".tex2d"]))
                        if material.override_material:
@@ -69,10 +70,11 @@ class MaterialExporter:
                                diffuse_tex = textures["diffuse_map"]
                                tex_res = resources[diffuse_tex.name+".tex2d"]
                                ss = Statement("texunit", 0)
+                               fn = os.path.basename(diffuse_tex.image.filepath)
                                if self.single_file:
                                        ss.sub.append(tech_res.create_embed_statement("texture2d", tex_res))
-                               elif diffuse_tex.default_filter and diffuse_tex.image.filepath:
-                                       ss.sub.append(Statement("texture", os.path.basename(diffuse_tex.image.filepath)))
+                               elif diffuse_tex.default_filter and fn:
+                                       ss.sub.append(Statement("texture", fn))
                                else:
                                        ss.sub.append(tech_res.create_reference_statement("texture", tex_res))
                                st.sub.append(ss)
index 9f520cbd7dea5edac5c8cdb690cc8cedd037d9bb..dd8191ce9f108652b2924ee1a77fbd0197d0f94c 100644 (file)
@@ -22,8 +22,9 @@ class TextureExporter:
                        else:
                                tex_res.statements.append(Statement("filter", Token('NEAREST')))
 
-               if not self.inline_data and texture.image.filepath:
-                       tex_res.statements.append(Statement("external_image", os.path.basename(texture.image.filepath)))
+               fn = os.path.basename(texture.image.filepath)
+               if not self.inline_data and fn:
+                       tex_res.statements.append(Statement("external_image", fn))
                else:
                        texdata = ""
                        colorspace = texture.image.colorspace_settings.name