Пример #1
0
class Bone(object):

    def __init__(self, name=None, parent=None, length=0, x=0, y=0, scaleX=1, scaleY=1, rotation=0):

        self.bone_data = None

        self.name = name
        self.local_tsr = TSR((x, y), scaleX, scaleY, rotation)
        self.global_tsr = TSR()
        self.parent = parent
        self.length = length
        self.childs = []

    def update_childs(self):
        data = self.global_tsr
        reduce(lambda _, child: child.update(data), self.childs, None)

    def update(self, data):
        #self.position, self.scale, self.rotation = data
        #pos, scale_x, scale_y, rot = self.bone_data[3:7:]
        #par_pos, par_scale_x, par_scale_y, par_rot = data
        #self.position, self.scale_x, self.scale_y, self.rotation = tsr_transform(data, self.bone_data[3:7:])
        self.global_tsr.set_by_named_pack(self.local_tsr.tsr_transform(data))
        self.update_childs()

    def add_bone(self, bone):
        self.childs.append(bone)

    def apply_bone_data(self):
        self.bone_data = Bone_Data(self.name, self.parent, self.length, self.local_tsr.copy())