From: Mikko Rasa Date: Tue, 13 Apr 2021 21:04:13 +0000 (+0300) Subject: Add a scene type property to the Blender exporter X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=commitdiff_plain;h=1c189b2a4a6c91fe4baaa2bd6760f5fc4d7558d2 Add a scene type property to the Blender exporter --- diff --git a/blender/io_mspgl/export_scene.py b/blender/io_mspgl/export_scene.py index 2ec85ccb..0ba4ad76 100644 --- a/blender/io_mspgl/export_scene.py +++ b/blender/io_mspgl/export_scene.py @@ -113,9 +113,11 @@ class SceneExporter: progress.pop_task() def export_scene(self, context, objs, progress, *, prototypes, resources): - from .datafile import Resource, Statement + from .datafile import Resource, Statement, Token scene_res = Resource("scene.scene", "scene") + scene_res.statements.append(Statement("type", Token(context.scene.scene_type.lower()))) + for o in objs: obj_res = resources[prototypes[o.name].name+".object"] st = scene_res.create_reference_statement("object", obj_res, o.name) diff --git a/blender/io_mspgl/properties.py b/blender/io_mspgl/properties.py index 1272c60e..f52b9762 100644 --- a/blender/io_mspgl/properties.py +++ b/blender/io_mspgl/properties.py @@ -1,5 +1,17 @@ import bpy +class MspGLSceneProperties(bpy.types.Panel): + bl_idname = "SCENE_PT_mspgl_properties" + bl_label = "MspGL properties" + bl_space_type = "PROPERTIES" + bl_region_type = "WINDOW" + bl_context = "scene" + + def draw(self, context): + scene = context.scene + + self.layout.prop(scene, "scene_type") + class MspGLMeshProperties(bpy.types.Panel): bl_idname = "MESH_PT_mspgl_properties" bl_label = "MspGL properties" @@ -129,12 +141,17 @@ class MspGLUniformList(bpy.types.UIList): layout.prop(uniform, "name", text="", emboss=False, icon_value=icon) layout.label(text="({})".format(", ".join("{:.3f}".format(v) for v in uniform.values[:uniform.size]))) -classes = [MspGLMeshProperties, MspGLObjectProperties, MspGLMaterialProperties, MspGLTextureNodeProperties, MspGLUniform, MspGLUniformList] +classes = [MspGLSceneProperties, MspGLMeshProperties, MspGLObjectProperties, MspGLMaterialProperties, MspGLTextureNodeProperties, MspGLUniform, MspGLUniformList] def register_properties(): for c in classes: bpy.utils.register_class(c) + bpy.types.Scene.scene_type = bpy.props.EnumProperty(name="Scene type", description="Type of scene to use for exporting", default="SIMPLE", + items=(("SIMPLE", "Simple", "Objects are rendered in no specific order"), + ("ORDERED", "Ordered", "Objects are rendered in order by their name"), + ("ZSORTED", "Z-sorted", "Objects are rendered in order by their distance from the camera"))) + bpy.types.Mesh.winding_test = bpy.props.BoolProperty(name="Winding test", description="Perform winding test to skip back faces") bpy.types.Mesh.smoothing = bpy.props.EnumProperty(name="Smoothing", description="Smoothing method to use", default="MSPGL", items=(("NONE", "None", "No smoothing"),