From d2a92c3ad1177c446aa7cef212b66d945a5c28af Mon Sep 17 00:00:00 2001 From: Lila Date: Mon, 24 Nov 2025 11:50:23 +0000 Subject: [PATCH] Fix tex size update tex property --- material/parser.py | 2 +- properties.py | 39 ++++++++++++++++++++++++++++++++++----- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/material/parser.py b/material/parser.py index afbaf4d..a7d1cc2 100644 --- a/material/parser.py +++ b/material/parser.py @@ -438,7 +438,7 @@ def f64_material_parse(f3d_mat: "F3DMaterialProperty", always_set: bool, set_lig elif use_tex0 or use_tex1: uv_basis = 0 if use_tex0 else 1 if uv_basis is not None: - state.tex_size = tuple(getattr(f3d_mat, f"tex{uv_basis}").get_tex_size()) + state.tex_size = tuple(getattr(f3d_mat, f"tex{uv_basis}").tex_size) if cc_uses["Texture 0"] and cc_uses["Texture 1"]: state.mip_count = f3d_mat.rdp_settings.num_textures_mipmapped - 1 diff --git a/properties.py b/properties.py index 3a871ec..fa7b35f 100644 --- a/properties.py +++ b/properties.py @@ -27,7 +27,7 @@ def simplified_tex_update(self, context): from fast64_internal.f3d.f3d_material import setAutoProp - tex_size = self.get_tex_size() + tex_size = self.tex_size if self.tex is not None and self.autoprop: setAutoProp(self.S, tex_size[0]) setAutoProp(self.T, tex_size[1]) @@ -84,15 +84,44 @@ class TextureProperty(PropertyGroup): menu: bpy.props.BoolProperty() autoprop: bpy.props.BoolProperty( name="Autoprop", - default=True, update=simplified_tex_update, + default=True, ) - def get_tex_size(self) -> list[int]: - if self.tex: - return self.tex.size + @property + def is_ci(self): + self.tex_format: str + return self.tex_format.startswith("CI") + + @property + def is_set(self): + return self.tex_set and (self.use_tex_reference or self.tex is not None) + + @property + def tlut_mode(self): + return f"G_TT_{self.ci_format if self.is_ci else 'NONE'}" + + @property + def tex_size(self) -> list[int]: + if self.tex or self.use_tex_reference: + if self.tex is not None: + return list(self.tex.size) + else: + return list(self.tex_reference_size) return [0, 0] + @property + def word_usage(self): + return getTmemWordUsage(self.tex_format, *self.tex_size) + + @property + def format_type(self): + return texFormatOf[self.tex_format][len("G_IM_FMT_") :] + + @property + def format_size(self): + return bitSizeDict[texBitSizeF3D[self.tex_format]] + def draw_default_ui(self, layout: bpy.types.UILayout, index: int): def small_split(layout, prop: str, name: str): split = layout.split(factor=0.25)