]> git.tdb.fi Git - libs/gl.git/blobdiff - blender/io_mspgl/export_scene.py
Refactor some parts of the Blender exporter to improve reusability
[libs/gl.git] / blender / io_mspgl / export_scene.py
index 8666e98beee0ef9489557d28da89fdcf788ee036..00f91c1a4afcd6c5e5687066bc397c98baea628f 100644 (file)
@@ -122,10 +122,7 @@ class SceneExporter:
                if scene.use_hdr:
                        seq_res.statements.append(Statement("hdr", True))
 
-               ss = Statement("clear")
-               ss.sub.append(Statement("color", 0.0, 0.0, 0.0, 0.0))
-               ss.sub.append(Statement("depth", 1.0))
-               seq_res.statements.append(ss)
+               self.add_clear(seq_res.statements, (0.0, 0.0, 0.0, 0.0), 1.0)
 
                scene_res = resources[scene.name+".scene"]
                seq_res.statements.append(seq_res.create_reference_statement("renderable", "content", scene_res))
@@ -142,17 +139,13 @@ class SceneExporter:
                                any_blended = True
                        s = s.background_set
 
-               if any_opaque:
-                       ss = Statement("step", "", "content")
-                       ss.sub.append(Statement("depth_test", Token("LEQUAL")))
-                       ss.sub.append(seq_res.create_reference_statement("lighting", lighting_res))
-                       seq_res.statements.append(ss)
 
+               main_tags = []
+               if any_opaque:
+                       main_tags.append("")
                if any_blended:
-                       ss = Statement("step", "blended", "content")
-                       ss.sub.append(Statement("depth_test", Token("LEQUAL")))
-                       ss.sub.append(seq_res.create_reference_statement("lighting", lighting_res))
-                       seq_res.statements.append(ss)
+
+               self.add_content_steps(seq_res, "content", lighting_res, main_tags)
 
                if scene.use_ao:
                        ss = Statement("postprocessor")
@@ -180,3 +173,23 @@ class SceneExporter:
                        seq_res.statements.append(ss)
 
                return seq_res
+
+       def add_clear(self, statements, color, depth):
+               from .datafile import Statement
+
+               st = Statement("clear")
+               if color is not None:
+                       st.sub.append(Statement("color", *color))
+               if depth is not None:
+                       st.sub.append(Statement("depth", depth))
+               statements.append(st)
+
+       def add_content_steps(self, seq_res, renderable, lighting, tags):
+               from .datafile import Statement, Token
+
+               for t in tags:
+                       st = Statement("step", t, renderable)
+                       st.sub.append(Statement("depth_test", Token("LEQUAL")))
+                       if lighting:
+                               st.sub.append(seq_res.create_reference_statement("lighting", lighting))
+                       seq_res.statements.append(st)