""" Contains Material and dependent types for representing materials easilly saved to a .msh file. """ from dataclasses import dataclass from typing import Tuple from enum import Enum, Flag from mathutils import Color class Rendertype(Enum): # TODO: Add SWBF1 rendertypes. NORMAL = 0 SCROLLING = 3 ENVMAPPED = 6 ANIMATED = 7 REFRACTION = 22 BLINK = 25 NORMALMAPPED_TILED = 24 NORMALMAPPED_ENVMAPPED = 26 NORMALMAPPED = 27 NORMALMAPPED_TILED_ENVMAP = 29 # Placeholders to avoid crashes/import-export inconsistencies OTHER_1 = 1 OTHER_2 = 2 OTHER_4 = 4 OTHER_5 = 5 OTHER_8 = 8 OTHER_9 = 9 OTHER_10 = 10 OTHER_11 = 11 OTHER_12 = 12 OTHER_13 = 13 OTHER_14 = 14 OTHER_15 = 15 OTHER_16 = 16 OTHER_17 = 17 OTHER_18 = 18 OTHER_19 = 19 OTHER_20 = 20 OTHER_21 = 21 OTHER_23 = 23 OTHER_28 = 28 OTHER_30 = 30 OTHER_31 = 31 class MaterialFlags(Flag): NONE = 0 UNLIT = 1 GLOW = 2 BLENDED_TRANSPARENCY = 4 DOUBLESIDED = 8 HARDEDGED_TRANSPARENCY = 16 PERPIXEL = 32 ADDITIVE_TRANSPARENCY = 64 SPECULAR = 128 @dataclass class Material: """ Data class representing a .msh material.""" name: str = "" specular_color: Color = Color((1.0, 1.0, 1.0)) rendertype: Rendertype = Rendertype.NORMAL flags: MaterialFlags = MaterialFlags.NONE data: Tuple[int, int] = (0, 0) texture0: str = "white.tga" texture1: str = "" texture2: str = "" texture3: str = ""