diff options
author | Demeter Dzadik <demeter@blender.studio> | 2021-08-18 20:39:50 +0300 |
---|---|---|
committer | Demeter Dzadik <demeter@blender.studio> | 2021-08-18 20:39:50 +0300 |
commit | 5d5b7489027a5c833e47af1f185ac28b401615e4 (patch) | |
tree | a5a10e854ffcd81d6bc9b142be0e0ea8e265c797 /rigify/generate.py | |
parent | 9a7afcbcae91978db8173e205f0ec73f1d6ad440 (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.py | 59 |
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.") |