コード例 #1
0
    def read(self, filereader: BinaryFileReader):
        super().read(filereader)

        self.normal = filereader.read_vec_f(3)
        self.UV = filereader.read_vec_f(2)
        self.unknown10 = filereader.read_float()  # no idea?
        self.color = filereader.read_rgb_color_24bpp_uint()
コード例 #2
0
    def read(self, filereader: BinaryFileReader):
        super().read(filereader)

        self.size = filereader.read_uint32()
        self.ID = filereader.read_uint32()

        self.version_string = SizedCString(filereader)
        if self.version_string.string == 'Version':
            self.versionNumber = filereader.read_uint32()
            self.material_name = SizedCString(filereader)
        else:
            self.material_name = self.version_string

        self.texture_name = SizedCString(filereader)

        self.opacity = filereader.read_float()
        self.emissiveStrength = filereader.read_float()
        self.textureAddressMode = filereader.read_uint32(
        )  #1 = WRAP, 3 = CLAMP. https://docs.microsoft.com/en-au/windows/desktop/direct3d9/d3dtextureaddress

        gameVer = self.get_material_game_version()

        #check if it's a rainbow six file, or rogue spear file
        if gameVer == RSEGameVersions.RAINBOW_SIX:
            # Rainbow Six files typically have material sizes this size, or contain no version number
            self.ambientColorUInt = filereader.read_rgb_color_24bpp_uint()
            self.ambientColorFloat = list(
                normalize_color(self.ambientColorUInt))

            self.diffuseColorUInt = filereader.read_rgb_color_24bpp_uint()
            self.diffuseColorFloat = list(
                normalize_color(self.diffuseColorUInt))

            self.specularColorUInt = filereader.read_rgb_color_24bpp_uint()
            self.specularColorFloat = list(
                normalize_color(self.specularColorUInt))

            self.normalizedColors = False
        elif gameVer == RSEGameVersions.ROGUE_SPEAR:
            #It's a Rogue Spear file
            self.ambientColorFloat = filereader.read_rgba_color_32bpp_float()
            self.ambientColorUInt = list(
                unnormalize_color(self.ambientColorFloat))

            self.diffuseColorFloat = filereader.read_rgba_color_32bpp_float()
            self.diffuseColorUInt = list(
                unnormalize_color(self.diffuseColorFloat))

            self.specularColorFloat = filereader.read_rgba_color_32bpp_float()
            self.specularColorUInt = list(
                unnormalize_color(self.specularColorFloat))

            self.normalizedColors = True
        else:
            log.warning("Unhandled case")

        self.specularLevel = filereader.read_float()
        self.twoSidedRaw = filereader.read_bytes(1)[0]
        #TODO: Find a better way to read floats, maybe make this a function
        self.twoSided = False
        if self.twoSidedRaw > 0:
            self.twoSided = True