mirror of
https://github.com/DarklightGames/io_scene_psk_psa.git
synced 2025-01-31 19:55:26 +01:00
[PSA Export] Remember selections for bone groups
* Selections for bone groups are now preserved between exporter invocations. * Added typing hints to the `populate_bone_group_list` function.
This commit is contained in:
parent
19ff47cc83
commit
1ac0870b31
@ -1,8 +1,9 @@
|
||||
import datetime
|
||||
from collections import Counter
|
||||
from typing import List
|
||||
from typing import List, Iterable
|
||||
|
||||
from bpy.types import NlaStrip
|
||||
from bpy.types import NlaStrip, Object
|
||||
from .types import BoneGroupListItem
|
||||
|
||||
|
||||
class Timer:
|
||||
@ -56,7 +57,16 @@ def get_nla_strips_in_timeframe(object, frame_min, frame_max) -> List[NlaStrip]:
|
||||
return strips
|
||||
|
||||
|
||||
def populate_bone_group_list(armature_object, bone_group_list):
|
||||
def populate_bone_group_list(armature_object: Object, bone_group_list: Iterable[BoneGroupListItem]) -> None:
|
||||
# Preserve group selections before clearing the list.
|
||||
# We handle selections for the unassigned group separately to cover the edge
|
||||
# case where there might be an actual group with 'Unassigned' as its name.
|
||||
unassigned_group_idx, unassigned_group_is_selected = next(iter([
|
||||
(i, g.is_selected) for i, g in enumerate(bone_group_list) if g.index == -1]), (-1, False))
|
||||
|
||||
selected_assigned_group_names = [
|
||||
g.name for i, g in enumerate(bone_group_list) if i != unassigned_group_idx and g.is_selected]
|
||||
|
||||
bone_group_list.clear()
|
||||
|
||||
if armature_object and armature_object.pose:
|
||||
@ -66,14 +76,14 @@ def populate_bone_group_list(armature_object, bone_group_list):
|
||||
item.name = 'Unassigned'
|
||||
item.index = -1
|
||||
item.count = 0 if None not in bone_group_counts else bone_group_counts[None]
|
||||
item.is_selected = True
|
||||
item.is_selected = unassigned_group_is_selected
|
||||
|
||||
for bone_group_index, bone_group in enumerate(armature_object.pose.bone_groups):
|
||||
item = bone_group_list.add()
|
||||
item.name = bone_group.name
|
||||
item.index = bone_group_index
|
||||
item.count = 0 if bone_group not in bone_group_counts else bone_group_counts[bone_group]
|
||||
item.is_selected = True
|
||||
item.is_selected = bone_group.name in selected_assigned_group_names
|
||||
|
||||
|
||||
def get_psa_sequence_name(action, should_use_original_sequence_name):
|
||||
|
Loading…
x
Reference in New Issue
Block a user