edits to the bone copy metarig type from Cessen, pointcache warning fix
[blender.git] / release / scripts / modules / rigify / copy.py
index 2be5669e5a62ed95e85a7340f208e738ef99f1ae..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",)
 
+
 def metarig_template():
-    pass
+    # generated by rigify.write_meta_rig
+    bpy.ops.object.mode_set(mode='EDIT')
+    obj = bpy.context.active_object
+    arm = obj.data
+    bone = arm.edit_bones.new('Bone')
+    bone.head[:] = 0.0000, 0.0000, 0.0000
+    bone.tail[:] = 0.0000, 0.0000, 1.0000
+    bone.roll = 0.0000
+    bone.connected = False
+
+    bpy.ops.object.mode_set(mode='OBJECT')
+    pbone = obj.pose.bones['Bone']
+    pbone['type'] = 'copy'
+
 
 def metarig_definition(obj, orig_bone_name):
     return [orig_bone_name]
 
 
-def main(obj, bone_definition, base_names):
+def main(obj, bone_definition, base_names, options):
     arm = obj.data
     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]