Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Gavrilov <angavrilov@gmail.com>2022-07-11 20:32:12 +0300
committerAlexander Gavrilov <angavrilov@gmail.com>2022-07-11 20:32:12 +0300
commitd2325587d73bc825986af3a1baba51cb4a9ce355 (patch)
treee6fbdffa8e24c17648ab19e84a736b6428db78e4
parent6af061bc26e95caf534ee60d6848967d14b97d7b (diff)
Rigify: fix T99352 - generation issues when same named rig is linked.
Only consider local datablocks when searching for the rig object, widget collection and widget objects themselves during generation.
-rw-r--r--rigify/generate.py7
-rw-r--r--rigify/utils/collections.py2
-rw-r--r--rigify/utils/widgets.py3
3 files changed, 9 insertions, 3 deletions
diff --git a/rigify/generate.py b/rigify/generate.py
index 3acc2e40..53b47b00 100644
--- a/rigify/generate.py
+++ b/rigify/generate.py
@@ -76,7 +76,7 @@ class Generator(base_generate.BaseGenerator):
target_rig.display_type = 'WIRE'
# If the object is already added to the scene, switch to its collection
- if target_rig.name in self.context.scene.collection.all_objects:
+ if target_rig in list(self.context.scene.collection.all_objects):
self.__switch_to_usable_collection(target_rig)
else:
# Otherwise, add to the selected collection or the metarig collection if unusable
@@ -117,11 +117,14 @@ class Generator(base_generate.BaseGenerator):
wgts_group_name = "WGTS_" + self.obj.name
old_collection = bpy.data.collections.get(wgts_group_name)
+ if old_collection.library:
+ old_collection = None
+
if not old_collection:
# Update the old 'Widgets' collection
legacy_collection = bpy.data.collections.get('Widgets')
- if legacy_collection and wgts_group_name in legacy_collection.objects:
+ if legacy_collection and wgts_group_name in legacy_collection.objects and not legacy_collection.library:
legacy_collection.name = wgts_group_name
old_collection = legacy_collection
diff --git a/rigify/utils/collections.py b/rigify/utils/collections.py
index 8a299a9b..9eeaac51 100644
--- a/rigify/utils/collections.py
+++ b/rigify/utils/collections.py
@@ -53,7 +53,7 @@ def ensure_collection(context, collection_name, hidden=False) -> bpy.types.Colle
active_collection = active_layer_coll.collection
collection = bpy.data.collections.get(collection_name)
- if not collection:
+ if not collection or collection.library:
# Create the collection
collection = bpy.data.collections.new(collection_name)
collection.hide_viewport = hidden
diff --git a/rigify/utils/widgets.py b/rigify/utils/widgets.py
index e02f3387..ca207ddc 100644
--- a/rigify/utils/widgets.py
+++ b/rigify/utils/widgets.py
@@ -86,6 +86,9 @@ def create_widget(rig, bone_name, bone_transform_name=None, *, widget_name=None,
if not obj:
# Search the scene by name
obj = scene.objects.get(obj_name)
+ if obj.library:
+ local_objs = [obj for obj in scene.objects if obj.name == obj_name and not obj.library]
+ obj = local_objs[0] if local_objs else None
if obj:
# Record the generated widget