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
This commit is contained in:
parent
5a1e3d5023
commit
8e02b43628
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue