def get_drag_limbs(self): limbs = [] pose = self.animation.poses[self.pose_index] for i, limb in enumerate(self.skeleton.limbs): vertices = ik.solve(limb.vertices, pose.targets[i]) limbs.append(Polygon(vertices, closed=False)) return limbs
def on_mouse_drag(self, x, y, dx, dy, button, modifiers): if self.limb_index is None: return mouse_point = self.camera.get_world_point(Point2(x, y)) limb = self.skeleton.limbs[self.limb_index] vertices = ik.solve(limb.vertices, mouse_point) self.drag_limbs[self.limb_index] = Polygon(vertices, closed=False) pose = self.animation.poses[self.pose_index] pose.targets[self.limb_index] = vertices[-1].copy()