Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/makesrna/intern/rna_pose.c')
-rw-r--r--source/blender/makesrna/intern/rna_pose.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c
index 8f28fc56712..8dd3670087a 100644
--- a/source/blender/makesrna/intern/rna_pose.c
+++ b/source/blender/makesrna/intern/rna_pose.c
@@ -637,6 +637,21 @@ static void rna_PoseChannel_constraints_move(
WM_main_add_notifier(NC_OBJECT | ND_CONSTRAINT, ob);
}
+static bConstraint *rna_PoseChannel_constraints_copy(ID *id,
+ bPoseChannel *pchan,
+ Main *bmain,
+ PointerRNA *con_ptr)
+{
+ Object *ob = (Object *)id;
+ bConstraint *con = con_ptr->data;
+ bConstraint *new_con = BKE_constraint_copy_for_pose(ob, pchan, con);
+
+ ED_object_constraint_dependency_tag_update(bmain, ob, new_con);
+ WM_main_add_notifier(NC_OBJECT | ND_CONSTRAINT | NA_ADDED, id);
+
+ return new_con;
+}
+
bool rna_PoseChannel_constraints_override_apply(Main *UNUSED(bmain),
PointerRNA *ptr_dst,
PointerRNA *ptr_src,
@@ -978,6 +993,21 @@ static void rna_def_pose_channel_constraints(BlenderRNA *brna, PropertyRNA *cpro
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
parm = RNA_def_int(func, "to_index", -1, INT_MIN, INT_MAX, "To Index", "Target index", 0, 10000);
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
+
+ func = RNA_def_function(srna, "copy", "rna_PoseChannel_constraints_copy");
+ RNA_def_function_ui_description(func, "Add a new constraint that is a copy of the given one");
+ RNA_def_function_flag(func, FUNC_USE_MAIN | FUNC_USE_SELF_ID);
+ /* constraint to copy */
+ parm = RNA_def_pointer(func,
+ "constraint",
+ "Constraint",
+ "",
+ "Constraint to copy - may belong to a different object");
+ RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
+ RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
+ /* return type */
+ parm = RNA_def_pointer(func, "new_constraint", "Constraint", "", "New constraint");
+ RNA_def_function_return(func, parm);
}
static void rna_def_pose_channel(BlenderRNA *brna)