From 284db61572125c8b2a916a20e5a4333ea72440dc Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 2 Feb 2009 19:57:57 +0000 Subject: RNA: C API * RNA_blender.h is now generated along with the other files. It is not used anywhere yet, and still located quite hidden next to the other rna_*_gen.c files. Read only access for now. * Inherited properties are not copied from the base anymore but iterated over. Patch by Vekoon, thanks! * Array get/set callbacks now do the whole array instead of getting an index. This is needed for some layers for example so python can set the array as a whole, otherwise the check that one layer has to be enabled at all times gets in the way. Also nicer for the C API. * Also some changes to returning pointers to make the API cleaner, got rid of the type() callback and instead let get() return PointerRNA with the type included. The C API looks like this currently: http://users.pandora.be/blendix/RNA_blender.h --- source/blender/makesrna/intern/rna_lattice.c | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) (limited to 'source/blender/makesrna/intern/rna_lattice.c') diff --git a/source/blender/makesrna/intern/rna_lattice.c b/source/blender/makesrna/intern/rna_lattice.c index 37414abef88..d18142b3fcd 100644 --- a/source/blender/makesrna/intern/rna_lattice.c +++ b/source/blender/makesrna/intern/rna_lattice.c @@ -36,24 +36,18 @@ #ifdef RNA_RUNTIME -static float rna_LatticePoint_co_get(PointerRNA *ptr, int index) +static void rna_LatticePoint_co_get(PointerRNA *ptr, float *values) { Lattice *lt= (Lattice*)ptr->id.data; BPoint *bp= (BPoint*)ptr->data; int a= bp - lt->def; + int x= a % lt->pntsu; + int y= (a/lt->pntsu) % lt->pntsv; + int z= (a/(lt->pntsu*lt->pntsv)); - if(index == 0) { - int x= a % lt->pntsu; - return lt->fu + x*lt->du; - } - else if(index == 1) { - int y= (a/lt->pntsu) % lt->pntsv; - return lt->fv + y*lt->dv; - } - else { - int z= (a/(lt->pntsu*lt->pntsv)); - return lt->fw + z*lt->dw; - } + values[0]= lt->fu + x*lt->du; + values[1]= lt->fv + y*lt->dv; + values[2]= lt->fw + z*lt->dw; } static void rna_LatticePoint_groups_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) @@ -105,7 +99,7 @@ static void rna_def_latticepoint(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Deformed Location", ""); prop= RNA_def_property(srna, "groups", PROP_COLLECTION, PROP_NONE); - RNA_def_property_collection_funcs(prop, "rna_LatticePoint_groups_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0, 0); + RNA_def_property_collection_funcs(prop, "rna_LatticePoint_groups_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0); RNA_def_property_struct_type(prop, "VertexGroupElement"); RNA_def_property_ui_text(prop, "Groups", "Weights for the vertex groups this point is member of."); } @@ -164,7 +158,7 @@ static void rna_def_lattice(BlenderRNA *brna) prop= RNA_def_property(srna, "points", PROP_COLLECTION, PROP_NONE); RNA_def_property_struct_type(prop, "LatticePoint"); - RNA_def_property_collection_funcs(prop, "rna_Lattice_points_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0, 0); + RNA_def_property_collection_funcs(prop, "rna_Lattice_points_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0); RNA_def_property_ui_text(prop, "Points", "Points of the lattice."); } -- cgit v1.2.3