From 7cc5cbe667dce012676905361f1a49714dd87044 Mon Sep 17 00:00:00 2001 From: Colin Basnett Date: Mon, 9 Sep 2024 15:59:13 -0700 Subject: [PATCH] Added `Visible Only` option to the PSK collection exporter --- io_scene_psk_psa/psk/builder.py | 13 ++++++++----- io_scene_psk_psa/psk/export/operators.py | 8 +++++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/io_scene_psk_psa/psk/builder.py b/io_scene_psk_psa/psk/builder.py index c851f3a..f171413 100644 --- a/io_scene_psk_psa/psk/builder.py +++ b/io_scene_psk_psa/psk/builder.py @@ -25,10 +25,13 @@ class PskBuildOptions(object): self.should_enforce_bone_name_restrictions = False -def get_mesh_objects_for_collection(collection: Collection): +def get_mesh_objects_for_collection(collection: Collection, should_exclude_hidden_meshes: bool = True): for obj in collection.all_objects: - if obj.type == 'MESH': - yield obj + if obj.type != 'MESH': + continue + if should_exclude_hidden_meshes and obj.visible_get() is False: + continue + yield obj def get_mesh_objects_for_context(context: Context): @@ -79,8 +82,8 @@ def get_psk_input_objects_for_context(context: Context) -> PskInputObjects: return _get_psk_input_objects(mesh_objects) -def get_psk_input_objects_for_collection(collection: Collection) -> PskInputObjects: - mesh_objects = list(get_mesh_objects_for_collection(collection)) +def get_psk_input_objects_for_collection(collection: Collection, should_exclude_hidden_meshes: bool = True) -> PskInputObjects: + mesh_objects = list(get_mesh_objects_for_collection(collection, should_exclude_hidden_meshes)) return _get_psk_input_objects(mesh_objects) diff --git a/io_scene_psk_psa/psk/export/operators.py b/io_scene_psk_psa/psk/export/operators.py index 2ae9107..a08dcee 100644 --- a/io_scene_psk_psa/psk/export/operators.py +++ b/io_scene_psk_psa/psk/export/operators.py @@ -102,12 +102,17 @@ class PSK_OT_export_collection(Operator, ExportHelper): description='Enforce that bone names must only contain letters, numbers, spaces, hyphens and underscores.\n\n' 'Depending on the engine, improper bone names might not be referenced correctly by scripts' ) + should_exclude_hidden_meshes: BoolProperty( + default=True, + name='Visible Only', + description='Export only visible meshes' + ) def execute(self, context): collection = bpy.data.collections.get(self.collection) try: - input_objects = get_psk_input_objects_for_collection(collection) + input_objects = get_psk_input_objects_for_collection(collection, self.should_exclude_hidden_meshes) except RuntimeError as e: self.report({'ERROR_INVALID_CONTEXT'}, str(e)) return {'CANCELLED'} @@ -144,6 +149,7 @@ class PSK_OT_export_collection(Operator, ExportHelper): flow.use_property_split = True flow.use_property_decorate = False flow.prop(self, 'object_eval_state', text='Data') + flow.prop(self, 'should_exclude_hidden_meshes') # BONES bones_header, bones_panel = layout.panel('Bones', default_closed=False)