edits to the bone copy metarig type from Cessen, pointcache warning fix
[blender.git] / release / scripts / modules / rigify / copy.py
index 70086b70907d8af555a6cc4df6cb987b4ddcdf74..5fda9bd7ba897ff07462354305e7cfc3b056edfa 100644 (file)
 # <pep8 compliant>
 
 import bpy
-from rigify_utils import copy_bone_simple, get_side_name, bone_class_instance
-from rna_prop_ui import rna_idprop_ui_prop_get
+from rigify import get_layer_dict
+from rigify_utils import bone_class_instance
 
 METARIG_NAMES = ("cpy",)
 
-# note, this example is just a bone with copy property.
+
 def metarig_template():
     # generated by rigify.write_meta_rig
     bpy.ops.object.mode_set(mode='EDIT')
@@ -40,6 +40,7 @@ def metarig_template():
     pbone = obj.pose.bones['Bone']
     pbone['type'] = 'copy'
 
+
 def metarig_definition(obj, orig_bone_name):
     return [orig_bone_name]
 
@@ -49,18 +50,38 @@ def main(obj, bone_definition, base_names, options):
     mt = bone_class_instance(obj, METARIG_NAMES)
     mt.cpy = bone_definition[0]
     mt.update()
-    cp = mt.copy(to_fmt="%s_cpy")
-    bpy.ops.object.mode_set(mode='OBJECT')
+    cp = bone_class_instance(obj, ["cpy"])
+    cp.cpy_e = copy_bone_simple(arm, mt.cpy, base_names[mt.cpy], parent=True)
+    cp.cpy = cp.cpy_e.name
     
+    bpy.ops.object.mode_set(mode='OBJECT')
+
     cp.update()
     mt.update()
-    
+
+    if not cp.cpy_b.connected:
+        con = cp.cpy_p.constraints.new('COPY_LOCATION')
+        con.target = obj
+        con.subtarget = mt.cpy
+
     con = cp.cpy_p.constraints.new('COPY_ROTATION')
     con.target = obj
-    con.subtarget = mt.cpy
-    
-    con = cp.cpy_p.constraints.new('COPY_LOCATION')
+    con.subtarget = cp.cpy
+
+    con = mt.cpy_p.constraints.new('COPY_SCALE')
     con.target = obj
-    con.subtarget = mt.cpy
+    con.subtarget = cp.cpy
+    
+    # Rotation mode and axis locks
+    cp.cpy_p.rotation_mode = mt.cpy_p.rotation_mode
+    cp.cpy_p.lock_location = tuple(mt.cpy_p.lock_location)
+    cp.cpy_p.lock_rotations_4d = mt.cpy_p.lock_rotations_4d
+    cp.cpy_p.lock_rotation = tuple(mt.cpy_p.lock_rotation)
+    cp.cpy_p.lock_rotation_w = mt.cpy_p.lock_rotation_w
+    cp.cpy_p.lock_scale = tuple(mt.cpy_p.lock_scale)
+
+    # setup layers last
+    layers = get_layer_dict(options)
+    cp.cpy_b.layer = layers["main"]
 
     return [mt.cpy]