from .PPtr import PPtr
from .Renderer import Renderer


class SkinnedMeshRenderer(Renderer):
    def __init__(self, reader):
        super().__init__(reader=reader)
        version = self.version
        self.m_Quality = reader.read_int()
        self.m_UpdateWhenOffscreen = reader.read_boolean()
        self.m_SkinNormals = reader.read_boolean()  # 3.1.0 and below
        reader.align_stream()

        if version[0] == 2 and version[1] < 6:  # 2.6 down
            self.m_DisableAnimationWhenOffscreen = PPtr(reader)  # Animation

        self.m_Mesh = PPtr(reader)  # Mesh

        m_BonesSize = reader.read_int()
        self.m_Bones = [PPtr(reader) for _ in range(m_BonesSize)]

        if version[0] > 4 or (version[0] == 4 and version[1] >= 3):  # 4.3 and up
            self.m_BlendShapeWeights = reader.read_float_array()
