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:
authorDemeter Dzadik <demeter@blender.studio>2021-08-18 20:39:50 +0300
committerDemeter Dzadik <demeter@blender.studio>2021-08-18 20:39:50 +0300
commit5d5b7489027a5c833e47af1f185ac28b401615e4 (patch)
treea5a10e854ffcd81d6bc9b142be0e0ea8e265c797 /rigify/generate.py
parent9a7afcbcae91978db8173e205f0ec73f1d6ad440 (diff)
Revert "Rigify: Clean up "Rigify Buttons" panel UX"
Accidental commit by misclicking in VSC, yikes! This reverts commit 9a7afcbcae91978db8173e205f0ec73f1d6ad440.
Diffstat (limited to 'rigify/generate.py')
-rw-r--r--rigify/generate.py59
1 files changed, 42 insertions, 17 deletions
diff --git a/rigify/generate.py b/rigify/generate.py
index bb3f1ac0..aa9a9a84 100644
--- a/rigify/generate.py
+++ b/rigify/generate.py
@@ -65,28 +65,53 @@ class Generator(base_generate.BaseGenerator):
return rig_module.Rig
-
- def __create_rig_object(self) -> bpy.types.Object:
- """ Check if the generated rig already exists, so we can
- regenerate in the same object. If not, create a new
- object to generate the rig in.
- """
+
+ def __create_rig_object(self):
+ scene = self.scene
+ id_store = self.id_store
meta_data = self.metarig.data
- target_rig = meta_data.rigify_target_rig
- if target_rig:
- return target_rig
+ # Check if the generated rig already exists, so we can
+ # regenerate in the same object. If not, create a new
+ # object to generate the rig in.
+ print("Fetch rig.")
+
+ self.rig_new_name = name = meta_data.rigify_rig_basename or "rig"
+
+ obj = None
+
+ if meta_data.rigify_generate_mode == 'overwrite':
+ obj = meta_data.rigify_target_rig
- rig_new_name = meta_data.rigify_rig_basename or "rig"
+ if not obj and name in scene.objects:
+ obj = scene.objects[name]
- target_rig = bpy.data.objects.new(rig_new_name, bpy.data.armatures.new(rig_new_name))
- target_rig.display_type = 'WIRE'
- self.collection.objects.link(target_rig)
+ if obj:
+ self.rig_old_name = obj.name
- meta_data.rigify_target_rig = target_rig
- target_rig.data.pose_position = 'POSE'
+ obj.name = name
+ obj.data.name = obj.name
+
+ rig_collections = filter_layer_collections_by_object(self.usable_collections, obj)
+ self.layer_collection = (rig_collections + [self.layer_collection])[0]
+ self.collection = self.layer_collection.collection
+
+ elif name in bpy.data.objects:
+ obj = bpy.data.objects[name]
+
+ if not obj:
+ obj = bpy.data.objects.new(name, bpy.data.armatures.new(name))
+ obj.display_type = 'WIRE'
+ self.collection.objects.link(obj)
+
+ elif obj.name not in self.collection.objects: # rig exists but was deleted
+ self.collection.objects.link(obj)
+
+ meta_data.rigify_target_rig = obj
+ obj.data.pose_position = 'POSE'
- return target_rig
+ self.obj = obj
+ return obj
def __create_widget_group(self):
@@ -358,7 +383,7 @@ class Generator(base_generate.BaseGenerator):
#------------------------------------------
# Create/find the rig object and set it up
- self.obj = obj = self.__create_rig_object()
+ obj = self.__create_rig_object()
# Get rid of anim data in case the rig already existed
print("Clear rig animation data.")