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
path: root/rigify
diff options
context:
space:
mode:
authorDemeter Dzadik <demeterdzadik@gmail.com>2020-11-04 14:48:27 +0300
committerDemeter Dzadik <demeterdzadik@gmail.com>2020-11-04 15:02:07 +0300
commit8e02b43628efe466a5cbffc724ecab7a0750a44b (patch)
tree8d0ff2aeef918ecedfffaa426e76861321031ab4 /rigify
parent5a1e3d5023c0605885d7de52856ad97114dbd35f (diff)
Rigify: Remove pass_index driver hack in favor of Custom Property to attach rig script
In days of old, Custom Properties couldn't store datablock pointers, so a driver variable was used to reference the script datablock, thereby keeping it attached to the rig when the rig is linked or appended. This can now be achieved much more elegantly with one short line of code. Reviewed By: angavrilov Differential Revision: https://developer.blender.org/D9082
Diffstat (limited to 'rigify')
-rw-r--r--rigify/rig_ui_template.py3
-rw-r--r--rigify/utils/rig.py28
2 files changed, 1 insertions, 30 deletions
diff --git a/rigify/rig_ui_template.py b/rigify/rig_ui_template.py
index 4f0ba936..642b5110 100644
--- a/rigify/rig_ui_template.py
+++ b/rigify/rig_ui_template.py
@@ -23,7 +23,6 @@ import bpy
from collections import OrderedDict
from .utils.animation import SCRIPT_REGISTER_BAKE, SCRIPT_UTILITIES_BAKE
-from .utils.rig import attach_persistent_script
from . import base_generate
@@ -1242,4 +1241,4 @@ class ScriptGenerator(base_generate.GeneratorPlugin):
exec(script.as_string(), {})
# Attach the script to the rig
- attach_persistent_script(self.obj, script)
+ self.obj['rig_ui'] = script
diff --git a/rigify/utils/rig.py b/rigify/utils/rig.py
index 0c07cfe6..e1957a21 100644
--- a/rigify/utils/rig.py
+++ b/rigify/utils/rig.py
@@ -95,34 +95,6 @@ def get_resource(resource_name):
return module
-def attach_persistent_script(obj, script):
- """Make sure the ui script always follows the rig around"""
- skip = False
- driver = None
-
- if not obj.animation_data:
- obj.animation_data_create()
-
- for fcurve in obj.animation_data.drivers:
- if fcurve.data_path == 'pass_index':
- driver = fcurve.driver
- for variable in driver.variables:
- if variable.name == script.name:
- skip = True
- break
- break
-
- if not skip:
- if not driver:
- fcurve = obj.driver_add("pass_index")
- driver = fcurve.driver
-
- variable = driver.variables.new()
- variable.name = script.name
- variable.targets[0].id_type = 'TEXT'
- variable.targets[0].id = script
-
-
def connected_children_names(obj, bone_name):
""" Returns a list of bone names (in order) of the bones that form a single
connected chain starting with the given bone as a parent.