From 560ec8fecd8954e412a616de2284e2a913b8158f Mon Sep 17 00:00:00 2001 From: Colin Basnett Date: Fri, 18 Aug 2023 18:22:16 -0700 Subject: [PATCH] Fixed a bug where exported PSKs would always use the mesh data's material instead of the object's material --- io_scene_psk_psa/psk/builder.py | 2 +- io_scene_psk_psa/psk/export/operators.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/io_scene_psk_psa/psk/builder.py b/io_scene_psk_psa/psk/builder.py index 7a22124..1053672 100644 --- a/io_scene_psk_psa/psk/builder.py +++ b/io_scene_psk_psa/psk/builder.py @@ -143,7 +143,7 @@ def build_psk(context, options: PskBuildOptions) -> Psk: for input_mesh_object in input_objects.mesh_objects: # MATERIALS - material_indices = [material_names.index(material.name) for material in input_mesh_object.data.materials] + material_indices = [material_names.index(material_slot.material.name) for material_slot in input_mesh_object.material_slots] # MESH DATA if options.use_raw_mesh_data: diff --git a/io_scene_psk_psa/psk/export/operators.py b/io_scene_psk_psa/psk/export/operators.py index cb48caa..ee799a0 100644 --- a/io_scene_psk_psa/psk/export/operators.py +++ b/io_scene_psk_psa/psk/export/operators.py @@ -22,10 +22,11 @@ def populate_material_list(mesh_objects, material_list): material_names = [] for mesh_object in mesh_objects: - for i, material in enumerate(mesh_object.data.materials): + for i, material_slot in enumerate(mesh_object.material_slots): + material = material_slot.material # TODO: put this in the poll arg? if material is None: - raise RuntimeError('Material cannot be empty (index ' + str(i) + ')') + raise RuntimeError('Material slot cannot be empty (index ' + str(i) + ')') if material.name not in material_names: material_names.append(material.name)