Added support for custom RNA properties on Bones, only worked for
[blender.git] / source / blender / makesrna / intern / rna_armature.c
index 5dbfdd3e6f1a2d73752792126cc2c2ba0f7c94ea..889f23e0d391eaf5250cf363f2370c84c00f54ab 100644 (file)
@@ -42,6 +42,7 @@
 
 #include "BKE_context.h"
 #include "BKE_depsgraph.h"
+#include "BKE_idprop.h"
 #include "BKE_main.h"
 
 #include "ED_armature.h"
@@ -67,6 +68,30 @@ static char *rna_Bone_path(PointerRNA *ptr)
        return BLI_sprintfN("bones[\"%s\"]", ((Bone*)ptr->data)->name);
 }
 
+static IDProperty *rna_Bone_idproperties(PointerRNA *ptr, int create)
+{
+       Bone *bone= ptr->data;
+
+       if(create && !bone->prop) {
+               IDPropertyTemplate val = {0};
+               bone->prop= IDP_New(IDP_GROUP, val, "RNA_Bone ID properties");
+       }
+
+       return bone->prop;
+}
+
+static IDProperty *rna_EditBone_idproperties(PointerRNA *ptr, int create)
+{
+       EditBone *ebone= ptr->data;
+
+       if(create && !ebone->prop) {
+               IDPropertyTemplate val = {0};
+               ebone->prop= IDP_New(IDP_GROUP, val, "RNA_EditBone ID properties");
+       }
+
+       return ebone->prop;
+}
+
 static void rna_bone_layer_set(short *layer, const int *values)
 {
        int i, tot= 0;
@@ -380,6 +405,11 @@ static void rna_def_bone_common(StructRNA *srna, int editbone)
        RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_NO_CYCLICOFFSET);
        RNA_def_property_ui_text(prop, "Cyclic Offset", "When bone doesn't have a parent, it receives cyclic offset effects.");
        RNA_def_property_update(prop, 0, "rna_Armature_update_data");
+       
+       prop= RNA_def_property(srna, "selectable", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_UNSELECTABLE);
+       RNA_def_property_ui_text(prop, "Selectable", "Bone is able to be selected");
+       RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
 
        /* Number values */
                /* envelope deform settings */
@@ -437,6 +467,7 @@ static void rna_def_bone(BlenderRNA *brna)
        RNA_def_struct_ui_text(srna, "Bone", "Bone in an Armature datablock.");
        RNA_def_struct_ui_icon(srna, ICON_BONE_DATA);
        RNA_def_struct_path_func(srna, "rna_Bone_path");
+       RNA_def_struct_idproperties_func(srna, "rna_Bone_idproperties");
        
        /* pointers/collections */
                /* parent (pointer) */
@@ -504,6 +535,7 @@ static void rna_def_edit_bone(BlenderRNA *brna)
        
        srna= RNA_def_struct(brna, "EditBone", NULL);
        RNA_def_struct_sdna(srna, "EditBone");
+       RNA_def_struct_idproperties_func(srna, "rna_Bone_idproperties");
        RNA_def_struct_ui_text(srna, "Edit Bone", "Editmode bone in an Armature datablock.");
        RNA_def_struct_ui_icon(srna, ICON_BONE_DATA);