setattr(exporter, k, v)
class ExportMspGLMeshBase(ExportMspGLBase):
+ export_all: bpy.props.BoolProperty(name="Export all selected", description="Export all selected objects (use generated filenames)", default=False)
use_strips: bpy.props.BoolProperty(name="Use strips", description="Combine faces into triangle strips", default=True)
use_degen_tris: bpy.props.BoolProperty(name="Use degen tris", description="Concatenate triangle strips with degenerate triangles", default=False)
self.general_col = self.layout.column()
col = self.layout.column()
+ if len(context.selected_objects)>1:
+ col.label(text="Object selection")
+ col.prop(self, "export_all")
col.label(text="Triangle strips")
col.prop(self, "use_strips")
col.prop(self, "use_degen_tris")
import itertools
+import os
import bpy
import mathutils
self.show_progress = True
self.use_strips = True
self.use_degen_tris = False
+ self.export_all = False
def join_strips(self, strips):
big_strip = []
return big_strip
def export_to_file(self, context, out_fn):
- obj = context.active_object
+ if self.export_all:
+ objs = [o for o in context.selected_objects if o.type=="MESH"]
+ else:
+ objs = [context.active_object]
from .util import Progress
+ path, base = os.path.split(out_fn)
+ base, ext = os.path.splitext(base)
+
progress = Progress(self.show_progress and context)
- progress.push_task("", 0.0, 0.95)
- resource = self.export_mesh(context, obj, progress)
+ for i, obj in enumerate(objs):
+ if self.export_all:
+ out_fn = os.path.join(path, obj.data.name+ext)
- resource.write_to_file(out_fn)
+ progress.push_task_slice(obj.data.name, i, len(objs))
+ resource = self.export_mesh(context, obj, progress)
+
+ resource.write_to_file(out_fn)
+ progress.pop_task()
def export_mesh(self, context, mesh_or_obj, progress):
from .mesh import Mesh, create_mesh_from_object
self.use_strips = True
self.use_degen_tris = False
self.use_textures = True
+ self.export_all = False
self.collection = False
self.shared_resources = True
self.export_lods = True
return material_map_export
def export_to_file(self, context, out_fn):
- obj = context.active_object
+ if self.export_all:
+ objs = [o for o in context.selected_objects if o.type=="MESH"]
+ else:
+ objs = [context.active_object]
from .util import Progress
progress = Progress(self.show_progress and context)
path, base = os.path.split(out_fn)
- base = os.path.splitext(base)[0]
+ base, ext = os.path.splitext(base)
resources = {}
- self.export_object_resources(context, obj, resources, progress)
-
- obj_res = self.export_object(context, obj, progress, resources=resources)
- refs = obj_res.collect_references()
- if not self.shared_resources:
- numbers = {}
- for r in refs:
- ext = os.path.splitext(r.name)[1]
- n = numbers.get(ext, 0)
- if n>0:
- r.name = "{}_{}{}".format(base, n, ext)
- else:
- r.name = base+ext
- numbers[ext] = n+1
+ for i, obj in enumerate(objs):
+ if self.export_all:
+ out_fn = os.path.join(path, obj.name+ext)
- if self.collection:
- obj_res.write_collection(out_fn)
- else:
- for r in refs:
- r.write_to_file(os.path.join(path, r.name))
- obj_res.write_to_file(out_fn)
+ progress.push_task_slice(obj.name, i, len(objs))
+ self.export_object_resources(context, obj, resources, progress)
+
+ obj_res = self.export_object(context, obj, progress, resources=resources)
+ refs = obj_res.collect_references()
+ if not self.shared_resources:
+ numbers = {}
+ for r in refs:
+ res_ext = os.path.splitext(r.name)[1]
+ n = numbers.get(res_ext, 0)
+ if n>0:
+ r.name = "{}_{}{}".format(base, n, res_ext)
+ else:
+ r.name = base+res_ext
+ numbers[res_ext] = n+1
+
+ if self.collection:
+ obj_res.write_collection(out_fn)
+ else:
+ for r in refs:
+ r.write_to_file(os.path.join(path, r.name))
+ obj_res.write_to_file(out_fn)
+
+ progress.pop_task()
def export_object_resources(self, context, obj, resources, progress, material_maps=None):
if material_maps is None: