Skip to content

Commit b4071f0

Browse files
committed
More tag upgrading work and fix an issue with model importing
1 parent baf9a46 commit b4071f0

11 files changed

Lines changed: 832 additions & 602 deletions

File tree

io_scene_halo/file_tag/build_scene/build_bsp.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -426,8 +426,8 @@ def build_scene(context, tag_ref, asset_cache, game_title, fix_rotations, empty_
426426
SHAD_ASSET["blender_assets"][material_name] = mat
427427

428428
else:
429-
material_name = "invalid"
430-
if global_functions.string_empty_check(shader_name):
429+
material_name = "invalid_%sidx" % material_idx
430+
if not global_functions.string_empty_check(shader_name):
431431
material_name = os.path.basename(shader_name)
432432

433433
if has_permutation:
@@ -654,7 +654,7 @@ def build_scene(context, tag_ref, asset_cache, game_title, fix_rotations, empty_
654654
path = split_result[1]
655655
shader_collection_dic[path] = prefix
656656

657-
for material in level_data["materials"]:
657+
for material_idx, material in enumerate(level_data["materials"]):
658658
shader_tag = material["shader"]
659659
old_shader_tag = material["old shader"]
660660
shader_group = shader_tag["group name"]
@@ -709,8 +709,8 @@ def build_scene(context, tag_ref, asset_cache, game_title, fix_rotations, empty_
709709
SHAD_ASSET["blender_assets"][material_name] = mat
710710

711711
else:
712-
material_name = "invalid"
713-
if global_functions.string_empty_check(shader_name):
712+
material_name = "invalid_%sidx" % material_idx
713+
if not global_functions.string_empty_check(shader_name):
714714
material_name = os.path.basename(shader_name)
715715

716716
if has_collection:

io_scene_halo/file_tag/h1/file_model/build_mesh.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ def build_mesh(mode_asset, geometry, armature, LOD, region_name, permutation_nam
202202
base_name = os.path.basename(shader_name)
203203
SHAD_ASSET = asset_cache.get(shader_group, {}).get(shader_name)
204204
if SHAD_ASSET is not None:
205+
205206
material_name = base_name
206207
if has_permutation:
207208
material_name = "%s%s" % (base_name, permutation)
@@ -213,8 +214,8 @@ def build_mesh(mode_asset, geometry, armature, LOD, region_name, permutation_nam
213214
SHAD_ASSET["blender_assets"][material_name] = mat
214215

215216
else:
216-
material_name = "invalid"
217-
if global_functions.string_empty_check(base_name):
217+
material_name = "invalid_%sidx" % triangle_material_index
218+
if not global_functions.string_empty_check(base_name):
218219
material_name = base_name
219220

220221
if has_permutation:
@@ -293,18 +294,22 @@ def get_geometry_layout(tag_ref, asset_cache, armature, is_triangle_list, report
293294
random_color_gen = global_functions.RandomColorGenerator() # generates a random sequence of colors
294295
for shader in mode_data["shaders"]:
295296
shad_tag_ref = shader["shader"]
296-
SHAD_ASSET = asset_cache[shad_tag_ref["group name"]][shad_tag_ref["path"]]
297297

298298
material_name = os.path.basename(shad_tag_ref["path"])
299299
if shader["permutation"] != 0:
300300
material_name = "%s%s" % (material_name, shader["permutation"])
301301

302-
mat = SHAD_ASSET["blender_assets"].get(material_name)
303-
if not mat:
304-
mat = bpy.data.materials.new(name=material_name)
305-
SHAD_ASSET["blender_assets"][material_name] = mat
306-
307-
shader_processing.generate_h1_shader(mat, shad_tag_ref, shader["permutation"], asset_cache, report)
302+
group_entry = asset_cache.get(shad_tag_ref["group name"])
303+
SHAD_ASSET = None
304+
if group_entry is not None:
305+
SHAD_ASSET = group_entry.get(shad_tag_ref["path"])
306+
if SHAD_ASSET is not None:
307+
mat = SHAD_ASSET["blender_assets"].get(material_name)
308+
if not mat:
309+
mat = bpy.data.materials.new(name=material_name)
310+
SHAD_ASSET["blender_assets"][material_name] = mat
311+
312+
shader_processing.generate_h1_shader(mat, shad_tag_ref, shader["permutation"], asset_cache, report)
308313

309314
full_mesh = None
310315
if simple_mesh:

io_scene_halo/file_tag/h2/file_render_model/build_mesh.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ def build_mesh(render_asset, geometry, armature, LOD, region_name, permutation_n
230230
mat = mesh_processing.get_material(tag_element, asset_cache, "halo2", shader_collection_dic)
231231

232232
else:
233-
material_name = "invalid"
233+
material_name = "invalid_%sidx" % triangle_material_index
234234
mat = bpy.data.materials.get(material_name)
235235
if mat is None:
236236
mat = bpy.data.materials.new(name=material_name)
@@ -338,7 +338,7 @@ def get_geometry_layout(tag_ref, asset_cache, armature, report, simple_mesh=Fals
338338
path = split_result[1]
339339
shader_collection_dic[path] = prefix
340340

341-
for material in render_data["materials"]:
341+
for material_idx, material in enumerate(render_data["materials"]):
342342
shader_tag = material["shader"]
343343
old_shader_tag = material["old shader"]
344344
shader_group = shader_tag["group name"]
@@ -393,8 +393,8 @@ def get_geometry_layout(tag_ref, asset_cache, armature, report, simple_mesh=Fals
393393
SHAD_ASSET["blender_assets"][material_name] = mat
394394

395395
else:
396-
material_name = "invalid"
397-
if global_functions.string_empty_check(shader_name):
396+
material_name = "invalid_%sidx" % material_idx
397+
if not global_functions.string_empty_check(shader_name):
398398
material_name = os.path.basename(shader_name)
399399

400400
if has_collection:

0 commit comments

Comments
 (0)