Merge from 2.5 r21160 through r21285
[blender.git] / source / blender / makesrna / intern / rna_object.c
index 9b3100c733bde43fa68514fcd5d7de3f681c71a0..4166eb9bc2c3df5a98537dec433fd2604023b1a2 100644 (file)
@@ -384,6 +384,14 @@ static void rna_GameObjectSettings_state_set(PointerRNA *ptr, const int *values)
        }
 }
 
+static PointerRNA rna_DupliObject_object_get(PointerRNA *ptr)
+{
+       DupliObject *dob= (DupliObject*)ptr->data;
+       PointerRNA newptr;
+       RNA_pointer_create(&dob->ob->id, &RNA_Object, dob->ob, &newptr);
+       return newptr;
+}
+
 #else
 
 static void rna_def_vertex_group(BlenderRNA *brna)
@@ -1046,6 +1054,12 @@ static void rna_def_object(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Dupli Frames Off", "Recurring frames to exclude from the Dupliframes.");
        RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update");
 
+       prop= RNA_def_property(srna, "dupli_list", PROP_COLLECTION, PROP_NONE);
+       RNA_def_property_collection_sdna(prop, NULL, "duplilist", NULL);
+       RNA_def_property_struct_type(prop, "DupliObject");
+       RNA_def_property_ui_text(prop, "Dupli list", "Object duplis.");
+
+
        /* time offset */
 
        prop= RNA_def_property(srna, "time_offset", PROP_FLOAT, PROP_NONE);
@@ -1182,12 +1196,43 @@ static void rna_def_object(BlenderRNA *brna)
        RNA_api_object(srna);
 }
 
+static void rna_def_dupli_object(BlenderRNA *brna)
+{
+       StructRNA *srna;
+       PropertyRNA *prop;
+
+       srna= RNA_def_struct(brna, "DupliObject", NULL);
+       RNA_def_struct_sdna(srna, "DupliObject");
+       RNA_def_struct_ui_text(srna, "Dupli Object", "Dupli Object data."); 
+       /* RNA_def_struct_ui_icon(srna, ICON_OBJECT_DATA); */
+
+       prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
+       RNA_def_property_struct_type(prop, "Object");
+       RNA_def_property_pointer_sdna(prop, NULL, "ob");
+       RNA_def_property_pointer_funcs(prop, "rna_DupliObject_object_get", NULL, NULL);
+       RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+       RNA_def_property_ui_text(prop, "Object", "Object this DupliObject represents.");
+
+       prop= RNA_def_property(srna, "ob_matrix", PROP_FLOAT, PROP_MATRIX);
+       RNA_def_property_float_sdna(prop, NULL, "omat");
+       RNA_def_property_array(prop, 16);
+       RNA_def_property_ui_text(prop, "Object Matrix", "Object transformation matrix.");
+
+       prop= RNA_def_property(srna, "matrix", PROP_FLOAT, PROP_MATRIX);
+       RNA_def_property_float_sdna(prop, NULL, "mat");
+       RNA_def_property_array(prop, 16);
+       RNA_def_property_ui_text(prop, "DupliObject Matrix", "DupliObject transformation matrix.");
+
+       /* TODO: DupliObject has more properties that can be wrapped */
+}
+
 void RNA_def_object(BlenderRNA *brna)
 {
        rna_def_object(brna);
        rna_def_object_game_settings(brna);
        rna_def_vertex_group(brna);
        rna_def_material_slot(brna);
+       rna_def_dupli_object(brna);
 }
 
 #endif