def do_draw(self, context, scene, layout, obj): obj = get_unity_target(context) unity_settings = scene.unity_settings col = layout.column(align=True) row = col.row(align=True) row.prop(unity_settings, "mode") row.separator() if unity_settings.mode != "ACTIVE": row.prop_search( unity_settings, "target_armature", bpy.data, "objects", text="", icon=icons.ARMATURE_DATA, ) row.separator() row.prop( unity_settings, "draw_sheets", toggle=True, text="", icon=unity_settings.icon_sheets, ) row.prop( unity_settings, "draw_keyframes", toggle=True, text="", icon=unity_settings.icon_keys, ) row.prop( unity_settings, "draw_clips", toggle=True, text="", icon=unity_settings.icon_clips, ) obj = get_unity_target(context) if obj: row.separator() row.prop(obj.data, "pose_position", expand=True)
def finish_draw(self, context, scene, layout, obj, action, clip): obj = get_unity_target(context) box = layout.box() col = box.column(align=True) row = col.row(align=True) row_1 = row.split() row_1.enabled = False row_1.prop(clip, "action") row_2 = row.split() row_2.operator(UNITY_OT_sync_actions_with_clips.bl_idname, text="Sync") row_2.enabled = clip.action != clip.id_data row_3 = col.row(align=True) row_3.enabled = False row_3.prop(clip, "fbx_name") row_4 = col.row(align=True) row_4a = row_4.split() row_4a.prop(clip, "name") row_4a.enabled = clip.can_edit row_4b = row_4.split() row_4b.prop(clip, "can_edit", toggle=True, text="", icon=icons.UNLOCKED) row_4b.enabled = True
def do_execute(self, context): action = get_unity_target(context).animation_data.action clip = action.unity_clips[self.clip_name] clip.decorate_action(action) return {"FINISHED"}
def do_execute(self, context): action = get_unity_target(context).animation_data.action for clip in action.unity_clips: clip.action = action return {"FINISHED"}
def do_execute(self, context): obj = get_unity_target(context) action, clip, clip_index = get_unity_action_and_clip(context) self.bake_action(context, obj, action, clip) return {"FINISHED"}
def do_execute(self, context): obj = get_unity_target(context) action = obj.animation_data.action action.unity_clips.clear() return {"FINISHED"}
def do_draw(self, context, scene, layout, obj): obj = get_unity_target(context) action, clip, clip_index = get_unity_action_and_clip(context) if action is None or clip is None: return self.finish_draw(context, scene, layout, obj, action, clip)
def do_execute(self, context): obj = get_unity_target(context) action = obj.animation_data.action collections.sort(action.unity_clips, "frame_start") return {"FINISHED"}
def do_execute(self, context): obj = get_unity_target(context) scene = context.scene action = obj.animation_data.action clip = action.unity_clips[0] clip.refresh_keys() return {"FINISHED"}
def do_execute(self, context): obj = get_unity_target(context) clips = get_filtered_clips(context) for clip in clips: self.bake_action(context, obj, clip.action, clip) return {"FINISHED"}
def do_execute(self, context): obj = get_unity_target(context) scene = context.scene key_offset = 1 path = bpy.path.abspath(scene.unity_settings.sheet_dir_path) action, clip, clip_index = get_unity_action_and_clip(context) UnityClipMetadata.parse_clip_files(context, path, key_offset, action) return {"FINISHED"}
def do_execute(self, context): master_action_name = "MASTER" master_action = bpy.data.actions[master_action_name] obj = get_unity_target(context) padding = 10 round_to_nearest = 10 master_action.unity_metadata.master_action = True master_action.unity_metadata.clips_protected = True master_action.unity_clips.clear() for marker in reversed(master_action.pose_markers): master_action.pose_markers.remove(marker) start = 1 for action in bpy.data.actions: if (action == master_action or action.name.endswith("Action") or action.name.endswith("_Layer") or "PoseLib" in action.name): continue print("Getting metadata for action {0}".format(action.name)) if start != 1: start += padding # 47 + 10 = 57 overlap = start % round_to_nearest # 57 % 5 = 2 offset = round_to_nearest - overlap # 5 - 2 = 3 start += offset # 57 + 3 = 60 - clean frame start action_start = action.frame_range[0] action_end = action.frame_range[1] start -= action_start if action.unity_clips: for unity_clip in action.unity_clips: new_clip = master_action.unity_clips.add() new_clip.copy_from(unity_clip) new_clip.action = master_action new_clip.frame_start += start new_clip.frame_end += start start += (action_end - action_start) + 1 # print('Decorating {0} clips'.format(len(master_action.unity_clips))) # for clip in master_action.unity_clips: # clip.decorate(master_action) for fc in master_action.fcurves: fc.update() return {"FINISHED"}
def do_execute(self, context): action = get_unity_target(context).animation_data.action for fcurve in action.fcurves: for clip in action.unity_clips: clip.demarcate(fcurve) for fcurve in action.fcurves: fcurve.update() return {"FINISHED"}
def do_execute(self, context): obj = get_unity_target(context) action = obj.animation_data.action clip = None if action.unity_clips: clip = action.unity_clips[action.unity_metadata.clip_index] self.do_clip(context, obj, action, clip) return {"FINISHED"}
def finish_draw(self, context, scene, layout, obj, action, clip): obj = get_unity_target(context) box = layout.box() col = box.column(align=True) row = col.row(align=True) row.operator(UNITY_OT_split_by_clip.bl_idname) row.operator(UNITY_OT_decorate_clip.bl_idname) row.operator(UNITY_OT_demarcate_clip.bl_idname) row = col.row(align=True) row.operator(UNITY_OT_bake_clip.bl_idname)
def do_poll(cls, context): ao = get_unity_target(context) if not ao: return False s = ao.data.root_motion_settings if not s: return False if s.original_root_bone == "": return False return True
def do_execute(self, context): action = get_unity_target(context).animation_data.action template = action.unity_metadata.clip_template action.unity_clips.clear() for clip in template.unity_clips: new_clip = action.unity_clips.add() new_clip.copy_from(clip) new_clip.action = action return {"FINISHED"}
def do_execute(self, context): action = get_unity_target(context).animation_data.action f = context.scene.frame_current for index, clip in enumerate(action.unity_clips): if f >= clip.frame_start and f <= clip.frame_end: action.unity_metadata.clip_index = index active_clip = clip break clamp_to_unity_clip(context, active_clip, True) return {"FINISHED"}
def do_execute(self, context): obj = get_unity_target(context) action = obj.animation_data.action for bone in obj.data.bones: if bone.parent is None and not self.rooted: bone.select = False else: bone.select = True apply_pose_to_frame(context, obj, self.pose_name, self.frame) return {"FINISHED"}
def finish_header(self, context, scene, layout, obj): obj = get_unity_target(context) action, clip, clip_index = get_unity_action_and_clip(context) if action is None or clip is None: return row = layout.row(align=True) row.label(text=clip.name) r2 = row.split() r2.alignment = "RIGHT" draw_settings = scene.unity_settings r2.prop( draw_settings, "draw_metadata", toggle=True, text="", icon=scene.unity_settings.icon_metadata, ) r2.prop( draw_settings, "draw_root_motion", toggle=True, text="", icon=scene.unity_settings.icon_root_motion, ) r2.prop( draw_settings, "draw_frames", toggle=True, text="", icon=scene.unity_settings.icon_frames, ) r2.prop( draw_settings, "draw_pose", toggle=True, text="", icon=scene.unity_settings.icon_pose, ) r2.prop( draw_settings, "draw_operations", toggle=True, text="", icon=scene.unity_settings.icon_operations, )
def finish_draw(self, context, scene, layout, obj, action, clip): obj = get_unity_target(context) box = layout.box() col = box.column(align=True) row = col.row(align=True) row1 = row.split() # row1.alignment = 'LEFT' row1.prop(clip, "frame_start", text="Start") row1.prop(clip, "frame_end", text="Stop") row2 = row.split() row2.separator() # row2.alignment = 'RIGHT' row2.prop(clip, "loop_time", text="Loop?")
def draw_template_list(self, context, layout): obj = get_unity_target(context) action = obj.animation_data.action rows = min(max(1, len(action.unity_clips)), 5) layout.template_list( "UNITY_UL_UnityClips", "", action, "clips", action.unity_metadata, "clip_index", rows=rows, )
def initiate_execute(self, context): c = context s = c.scene original_frame = s.frame_current s.frame_set(1) armature = get_unity_target(c) return ( c, s, armature, original_frame, )
def do_execute(self, context): action = get_unity_target(context).animation_data.action start_ends, starts, ends, minf, maxf = get_clip_frame_range_analysis( action) for fcurve in action.fcurves: for keyframe_point in fcurve.keyframe_points: f = keyframe_point.co[0] if f in ends: keyframe_point.interpolation = INTERPOLATION.CONSTANT else: keyframe_point.interpolation = INTERPOLATION.LINEAR return {"FINISHED"}
def do_execute(self, context): obj = get_unity_target(context) scene = context.scene for action in bpy.data.actions: if len(action.unity_clips) != 1: continue clip = action.unity_clips[0] if clip.source_action is None: continue clip.refresh_keys() return {"FINISHED"}
def do_execute(self, context): obj = get_unity_target(context) action = obj.animation_data.action clip = action.unity_clips[action.unity_metadata.clip_index] bpy.ops.poselib.pose_add(frame=self.frame) new_pose = obj.pose_library.pose_markers["Pose"] new_pose.name = "{0} {1}".format(clip.name, "Start" if self.start else "End") if self.start: clip.pose_start = new_pose.name else: clip.pose_end = new_pose.name return {"FINISHED"}
def do_execute(self, context): action = get_unity_target(context).animation_data.action for clip in action.unity_clips: new_action_name = "{0}_{1}".format(action.name, clip.name) new_clip_name = clip.name new_action = split_action( action, new_action_name, clip.name, new_clip_name, clip.frame_start, clip.frame_end, ) UNITY_OT_refresh_scene_all_clips.do_execute( UNITY_OT_refresh_scene_all_clips, context) return {"FINISHED"}
def do_draw(self, context, scene, layout, obj): obj = get_unity_target(context) layout.prop(scene.unity_settings, "sheet_dir_path") row = layout.row(align=True) row.operator(UNITY_OT_refresh_clip_data.bl_idname) row.operator(UNITY_OT_refresh_clip_data_all.bl_idname) row = layout.row(align=True) row.operator(UNITY_OT_clear_clip_data.bl_idname) row.operator(UNITY_OT_clear_clip_data_all.bl_idname) row = layout.row(align=True) row.operator(UNITY_OT_sort_clip_data.bl_idname) row.operator(UNITY_OT_sort_clip_data_all.bl_idname) if obj and obj.animation_data and obj.animation_data.action: row = layout.row(align=True) a = obj.animation_data.action row.prop(a.unity_metadata, "clip_template") row.operator(UNITY_OT_copy_clips_from_template.bl_idname)
def do_execute(self, context): action = get_unity_target(context).animation_data.action for fcurve in action.fcurves: for keyframe_point in reversed(fcurve.keyframe_points): f = keyframe_point.co[0] found = False for clip in action.unity_clips: if f >= clip.frame_start and f <= clip.frame_end: found = True if found: break if not found: fcurve.keyframe_points.remove(keyframe_point) for fcurve in action.fcurves: fcurve.update() return {"FINISHED"}
def do_poll(cls, context): return (DOIF.UNITY.TARGET.SET(context) and len( get_unity_target(context).animation_data.action.unity_clips) > 1)