Added sequence reversing functionality for timeline markers

This commit is contained in:
Colin Basnett
2023-08-16 12:00:26 -07:00
parent c4c00ca49e
commit 07ccc8c650

View File

@@ -80,8 +80,11 @@ def update_actions_and_timeline_markers(context: Context, armature: Armature):
continue continue
if marker_name.startswith('#'): if marker_name.startswith('#'):
continue continue
frame_start, frame_end = sequence_frame_ranges[marker_name]
sequences = get_sequences_from_name_and_frame_range(marker_name, frame_start, frame_end)
for (sequence_name, frame_start, frame_end) in sequences:
item = pg.marker_list.add() item = pg.marker_list.add()
item.name = marker_name item.name = sequence_name
item.is_selected = False item.is_selected = False
frame_start, frame_end = sequence_frame_ranges[marker_name] frame_start, frame_end = sequence_frame_ranges[marker_name]
item.frame_start = frame_start item.frame_start = frame_start
@@ -174,11 +177,9 @@ def get_timeline_marker_sequence_frame_ranges(animation_data: AnimData, context:
return sequence_frame_ranges return sequence_frame_ranges
def get_sequences_from_action(action: Action) -> List[Tuple[str, int, int]]: def get_sequences_from_name_and_frame_range(name: str, frame_start: int, frame_end: int) -> List[Tuple[str, int, int]]:
frame_start = int(action.frame_range[0])
frame_end = int(action.frame_range[1])
reversed_pattern = r'(.+)/(.+)' reversed_pattern = r'(.+)/(.+)'
reversed_match = re.match(reversed_pattern, action.name) reversed_match = re.match(reversed_pattern, name)
if reversed_match: if reversed_match:
forward_name = reversed_match.group(1) forward_name = reversed_match.group(1)
backwards_name = reversed_match.group(2) backwards_name = reversed_match.group(2)
@@ -187,7 +188,13 @@ def get_sequences_from_action(action: Action) -> List[Tuple[str, int, int]]:
(backwards_name, frame_end, frame_start) (backwards_name, frame_end, frame_start)
] ]
else: else:
return [(action.name, frame_start, frame_end)] return [(name, frame_start, frame_end)]
def get_sequences_from_action(action: Action) -> List[Tuple[str, int, int]]:
frame_start = int(action.frame_range[0])
frame_end = int(action.frame_range[1])
return get_sequences_from_name_and_frame_range(action.name, frame_start, frame_end)
def get_sequences_from_action_pose_marker(action: Action, pose_markers: List[TimelineMarker], pose_marker: TimelineMarker, pose_marker_index: int) -> List[Tuple[str, int, int]]: def get_sequences_from_action_pose_marker(action: Action, pose_markers: List[TimelineMarker], pose_marker: TimelineMarker, pose_marker_index: int) -> List[Tuple[str, int, int]]:
@@ -196,17 +203,7 @@ def get_sequences_from_action_pose_marker(action: Action, pose_markers: List[Tim
frame_end = pose_markers[pose_marker_index + 1].frame frame_end = pose_markers[pose_marker_index + 1].frame
else: else:
frame_end = int(action.frame_range[1]) frame_end = int(action.frame_range[1])
reversed_pattern = r'(.+)/(.+)' return get_sequences_from_name_and_frame_range(pose_marker.name, frame_start, frame_end)
reversed_match = re.match(reversed_pattern, pose_marker.name)
if reversed_match:
forward_name = reversed_match.group(1)
backwards_name = reversed_match.group(2)
return [
(forward_name, frame_start, frame_end),
(backwards_name, frame_end, frame_start)
]
else:
return [(pose_marker.name, frame_start, frame_end)]
def get_visible_sequences(pg: PSA_PG_export, sequences) -> List[PSA_PG_export_action_list_item]: def get_visible_sequences(pg: PSA_PG_export, sequences) -> List[PSA_PG_export_action_list_item]: