diff --git a/addons/io_scene_swbf_msh/chunked_file_reader.py b/addons/io_scene_swbf_msh/chunked_file_reader.py index b83ef9b..7f7822e 100644 --- a/addons/io_scene_swbf_msh/chunked_file_reader.py +++ b/addons/io_scene_swbf_msh/chunked_file_reader.py @@ -138,6 +138,9 @@ class Reader: def how_much_left(self, pos): return self.end_pos - pos + def bytes_remaining(self): + return self.end_pos - self.file.tell() + def skip_until(self, header): while (self.could_have_child() and header not in self.peak_next_header()): self.skip_bytes(1) diff --git a/addons/io_scene_swbf_msh/msh_scene_read.py b/addons/io_scene_swbf_msh/msh_scene_read.py index fd40d4d..d4f9802 100644 --- a/addons/io_scene_swbf_msh/msh_scene_read.py +++ b/addons/io_scene_swbf_msh/msh_scene_read.py @@ -165,19 +165,23 @@ def _read_matd(matd: Reader) -> Material: elif next_header == "TX0D": with matd.read_child() as tx0d: - mat.texture0 = tx0d.read_string() + if tx0d.bytes_remaining() > 0: + mat.texture0 = tx0d.read_string() elif next_header == "TX1D": with matd.read_child() as tx1d: - mat.texture1 = tx1d.read_string() + if tx1d.bytes_remaining() > 0: + mat.texture1 = tx1d.read_string() elif next_header == "TX2D": with matd.read_child() as tx2d: - mat.texture2 = tx2d.read_string() + if tx2d.bytes_remaining() > 0: + mat.texture2 = tx2d.read_string() elif next_header == "TX3D": with matd.read_child() as tx3d: - mat.texture3 = tx3d.read_string() + if tx3d.bytes_remaining() > 0: + mat.texture3 = tx3d.read_string() else: matd.skip_bytes(1)