- object.add_shape_key(name="Key", from_mix=True)
[blender.git] / source / blender / makesrna / intern / rna_object_api.c
index 63b4549f7c9c15f47b29c5af6baf06a6947257da..481e92d1ac9b93b218f826fa65aa7c575b9897d4 100644 (file)
@@ -309,6 +309,21 @@ static Object *rna_Object_find_armature(Object *ob)
        return ob_arm;
 }
 
+static KeyBlock *rna_Object_add_shape_key(Object *ob, bContext *C, ReportList *reports, char *name, int from_mix)
+{
+       Scene *scene= CTX_data_scene(C);
+       KeyBlock *kb= NULL;
+
+       if((kb=object_insert_shape_key(scene, ob, name, from_mix))) {
+               WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+       }
+       else {
+               BKE_reportf(reports, RPT_ERROR, "Object \"%s\"does not support shapes.", ob->id.name+2);
+       }
+
+       return kb;
+}
+
 int rna_Object_is_visible(Object *ob, bContext *C)
 {
        return !(ob->restrictflag & OB_RESTRICT_VIEW) && ob->lay & CTX_data_scene(C)->lay;
@@ -414,6 +429,15 @@ void RNA_api_object(StructRNA *srna)
        parm= RNA_def_pointer(func, "ob_arm", "Object", "", "Armature object influencing this object or NULL.");
        RNA_def_function_return(func, parm);
 
+       /* Shape key */
+       func= RNA_def_function(srna, "add_shape_key", "rna_Object_add_shape_key");
+       RNA_def_function_ui_description(func, "Add shape key to an object.");
+       RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
+       parm= RNA_def_string(func, "name", "Key", 0, "", "Unique name for the new keylock."); /* optional */
+       parm= RNA_def_boolean(func, "from_mix", 1, "", "Create new shape from existing mix of shapes.");
+       parm= RNA_def_pointer(func, "key", "ShapeKey", "", "New shape keyblock.");
+       RNA_def_function_return(func, parm);
+
        /* DAG */
        func= RNA_def_function(srna, "make_display_list", "rna_Object_make_display_list");
        RNA_def_function_ui_description(func, "Update object's display data."); /* XXX describe better */