Revision: 23271
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23271
Author:   campbellbarton
Date:     2009-09-16 12:09:57 +0200 (Wed, 16 Sep 2009)

Log Message:
-----------
- rna/python api object.create_render_mesh(...) support for getting a mesh from 
metaballs and curves (bevel, surface, text etc).
- povray converts curves to meshes on export, (metaballs don't need meshing).
- use 'extend' bool rather then 'seltype' enum for object_select operators for 
consistency.

Modified Paths:
--------------
    trunk/blender/release/io/engine_render_pov.py
    trunk/blender/source/blender/editors/object/object_select.c
    trunk/blender/source/blender/editors/space_node/node_select.c
    trunk/blender/source/blender/editors/space_view3d/view3d_select.c
    trunk/blender/source/blender/makesrna/intern/rna_object_api.c

Modified: trunk/blender/release/io/engine_render_pov.py
===================================================================
--- trunk/blender/release/io/engine_render_pov.py       2009-09-16 09:55:06 UTC 
(rev 23270)
+++ trunk/blender/release/io/engine_render_pov.py       2009-09-16 10:09:57 UTC 
(rev 23271)
@@ -275,7 +275,7 @@
                for ob in sel:
                        ob_num+= 1
                        
-                       if ob.type in ('LAMP', 'CAMERA', 'EMPTY'):
+                       if ob.type in ('LAMP', 'CAMERA', 'EMPTY', 'META'):
                                continue
                        
                        me = ob.data

Modified: trunk/blender/source/blender/editors/object/object_select.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_select.c 2009-09-16 
09:55:06 UTC (rev 23270)
+++ trunk/blender/source/blender/editors/object/object_select.c 2009-09-16 
10:09:57 UTC (rev 23271)
@@ -53,6 +53,7 @@
 #include "BKE_property.h"
 #include "BKE_report.h"
 #include "BKE_scene.h"
+#include "BKE_utildefines.h"
 
 #include "WM_api.h"
 #include "WM_types.h"
@@ -117,22 +118,16 @@
 
 /********************** Selection Operators **********************/
 
-static EnumPropertyItem prop_select_types[] = {
-       {0, "EXCLUSIVE", 0, "Exclusive", ""},
-       {1, "EXTEND", 0, "Extend", ""},
-       {0, NULL, 0, NULL, NULL}
-};
-
 /************************ Select by Type *************************/
 
 static int object_select_by_type_exec(bContext *C, wmOperator *op)
 {
-       short obtype, seltype;
+       short obtype, extend;
        
        obtype = RNA_enum_get(op->ptr, "type");
-       seltype = RNA_enum_get(op->ptr, "seltype");
+       extend= RNA_boolean_get(op->ptr, "extend");
                
-       if (seltype == 0) {
+       if (extend == 0) {
                CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
                        ED_base_object_select(base, BA_DESELECT);
                }
@@ -166,9 +161,9 @@
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
        
-       RNA_def_enum(ot->srna, "seltype", prop_select_types, 0, "Selection", 
"Extend selection or clear selection then select");
+       /* properties */
+       RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection 
instead of deselecting everything first.");
        RNA_def_enum(ot->srna, "type", object_type_items, 1, "Type", "");
-
 }
 
 /*********************** Selection by Links *********************/
@@ -192,7 +187,7 @@
        Tex *tex=0;
        int a, b;
        int nr = RNA_enum_get(op->ptr, "type");
-       short changed = 0, seltype;
+       short changed = 0, extend;
        /* events (nr):
         * Object Ipo: 1
         * ObData: 2
@@ -202,9 +197,9 @@
         * PSys: 6
         */
 
-       seltype = RNA_enum_get(op->ptr, "seltype");
+       extend= RNA_boolean_get(op->ptr, "extend");
        
-       if (seltype == 0) {
+       if (extend == 0) {
                CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
                        ED_base_object_select(base, BA_DESELECT);
                }
@@ -327,9 +322,9 @@
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
        
+       /* properties */
+       RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection 
instead of deselecting everything first.");
        RNA_def_enum(ot->srna, "type", prop_select_linked_types, 0, "Type", "");
-       RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", 
"Extend selection or clear selection then select");
-
 }
 
 /*********************** Selected Grouped ********************/
@@ -575,11 +570,11 @@
        Scene *scene= CTX_data_scene(C);
        Object *ob;
        int nr = RNA_enum_get(op->ptr, "type");
-       short changed = 0, seltype;
+       short changed = 0, extend;
 
-       seltype = RNA_enum_get(op->ptr, "seltype");
+       extend= RNA_boolean_get(op->ptr, "extend");
        
-       if (seltype == 0) {
+       if (extend == 0) {
                CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
                        ED_base_object_select(base, BA_DESELECT);
                }
@@ -628,8 +623,8 @@
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
        
        /* properties */
+       RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection 
instead of deselecting everything first.");
        RNA_def_enum(ot->srna, "type", prop_select_grouped_types, 0, "Type", 
"");
-       RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", 
"Extend selection or clear selection then select");
 }
 
 /************************* Select by Layer **********************/
@@ -637,12 +632,12 @@
 static int object_select_by_layer_exec(bContext *C, wmOperator *op)
 {
        unsigned int layernum;
-       short seltype;
+       short extend;
        
-       seltype = RNA_enum_get(op->ptr, "seltype");
+       extend= RNA_boolean_get(op->ptr, "extend");
        layernum = RNA_int_get(op->ptr, "layer");
        
-       if (seltype == 0) {
+       if (extend == 0) {
                CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
                        ED_base_object_select(base, BA_DESELECT);
                }
@@ -676,8 +671,9 @@
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
        
+       /* properties */
+       RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection 
instead of deselecting everything first.");
        RNA_def_int(ot->srna, "layer", 1, 1, 20, "Layer", "", 1, 20);
-       RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", 
"Extend selection or clear selection then select");
 }
 
 /************************** Select Inverse *************************/
@@ -878,9 +874,9 @@
 static int object_select_mirror_exec(bContext *C, wmOperator *op)
 {
        char tmpname[32];
-       short seltype;
+       short extend;
        
-       seltype = RNA_enum_get(op->ptr, "seltype");
+       extend= RNA_boolean_get(op->ptr, "extend");
        
        CTX_DATA_BEGIN(C, Base*, primbase, selected_bases) {
 
@@ -894,7 +890,7 @@
                }
                CTX_DATA_END;
                
-               if (seltype == 0) ED_base_object_select(primbase, BA_DESELECT);
+               if (extend == 0) ED_base_object_select(primbase, BA_DESELECT);
                
        }
        CTX_DATA_END;
@@ -920,7 +916,7 @@
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
        
-       RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", 
"Extend selection or clear selection then select");
+       RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection 
instead of deselecting everything first.");
 }
 
 
@@ -981,11 +977,11 @@
 static int object_select_random_exec(bContext *C, wmOperator *op)
 {      
        float percent;
-       short seltype;
+       short extend;
        
-       seltype = RNA_enum_get(op->ptr, "seltype");
+       extend= RNA_boolean_get(op->ptr, "extend");
        
-       if (seltype == 0) {
+       if (extend == 0) {
                CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
                        ED_base_object_select(base, BA_DESELECT);
                }
@@ -1020,8 +1016,9 @@
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
        
+       /* properties */
+       RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection 
instead of deselecting everything first.");
        RNA_def_float_percentage(ot->srna, "percent", 0.5f, 0.0f, 1.0f, 
"Percent", "percentage of objects to randomly select", 0.0001f, 1.0f);
-       RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", 
"Extend selection or clear selection then select");
 }
 
 

Modified: trunk/blender/source/blender/editors/space_node/node_select.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_select.c       
2009-09-16 09:55:06 UTC (rev 23270)
+++ trunk/blender/source/blender/editors/space_node/node_select.c       
2009-09-16 10:09:57 UTC (rev 23271)
@@ -224,12 +224,6 @@
 
 /* ****** Border Select ****** */
 
-static EnumPropertyItem prop_select_types[] = {
-       {NODE_EXCLUSIVE, "EXCLUSIVE", 0, "Exclusive", ""}, /* right mouse */
-       {NODE_EXTEND, "EXTEND", 0, "Extend", ""}, /* left mouse */
-       {0, NULL, 0, NULL, NULL}
-};
-
 static int node_borderselect_exec(bContext *C, wmOperator *op)
 {
        SpaceNode *snode= CTX_wm_space_node(C);
@@ -288,8 +282,6 @@
        RNA_def_int(ot->srna, "xmax", 0, INT_MIN, INT_MAX, "X Max", "", 
INT_MIN, INT_MAX);
        RNA_def_int(ot->srna, "ymin", 0, INT_MIN, INT_MAX, "Y Min", "", 
INT_MIN, INT_MAX);
        RNA_def_int(ot->srna, "ymax", 0, INT_MIN, INT_MAX, "Y Max", "", 
INT_MIN, INT_MAX);
-
-       RNA_def_enum(ot->srna, "type", prop_select_types, 0, "Type", "");
 }
 
 /* ****** Select/Deselect All ****** */

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_select.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_select.c   
2009-09-16 09:55:06 UTC (rev 23270)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_select.c   
2009-09-16 10:09:57 UTC (rev 23271)
@@ -1592,7 +1592,7 @@
        RNA_def_int(ot->srna, "ymin", 0, INT_MIN, INT_MAX, "Y Min", "", 
INT_MIN, INT_MAX);
        RNA_def_int(ot->srna, "ymax", 0, INT_MIN, INT_MAX, "Y Max", "", 
INT_MIN, INT_MAX);
 
-       RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection 
instead of deselecting everyting first.");
+       RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection 
instead of deselecting everything first.");
 }
 
 /* ****** Mouse Select ****** */

Modified: trunk/blender/source/blender/makesrna/intern/rna_object_api.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_object_api.c       
2009-09-16 09:55:06 UTC (rev 23270)
+++ trunk/blender/source/blender/makesrna/intern/rna_object_api.c       
2009-09-16 10:09:57 UTC (rev 23271)
@@ -38,32 +38,94 @@
 
 #include "BKE_customdata.h"
 #include "BKE_DerivedMesh.h"
+#include "BKE_displist.h"
+#include "BKE_object.h"
+#include "BKE_main.h"
 
 #include "DNA_mesh_types.h"
+#include "DNA_curve_types.h"
 #include "DNA_scene_types.h"
 
 /* copied from init_render_mesh (render code) */
-static Mesh *rna_Object_create_render_mesh(Object *ob, Scene *scene)
+static Mesh *rna_Object_create_render_mesh(Object *ob, bContext *C, Scene 
*scene)
 {
        CustomDataMask mask = CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL;
+       Object *tmpobj = NULL;
        DerivedMesh *dm;
        Mesh *me;
        
-       /* TODO: other types */
-       if(ob->type != OB_MESH)
-               return NULL;
+       switch(ob->type) {
+       case OB_FONT:
+       case OB_CURVE:
+       case OB_SURF:
+       {
+               int cage = 0; //XXX -todo
+               Curve *tmpcu = NULL;
+
+               /* copies object and modifiers (but not the data) */
+               tmpobj= copy_object( ob );
+               tmpcu = (Curve *)tmpobj->data;
+               tmpcu->id.us--;
+
+               /* if getting the original caged mesh, delete object modifiers 
*/
+               if( cage )
+                       object_free_modifiers(tmpobj);
+
+               /* copies the data */
+               tmpobj->data = copy_curve( (Curve *) ob->data );
+
+#if 0
+               /* copy_curve() sets disp.first null, so currently not need */
+               {
+                       Curve *cu;
+                       cu = (Curve *)tmpobj->data;
+                       if( cu->disp.first )
+                               MEM_freeN( cu->disp.first );
+                       cu->disp.first = NULL;
+               }
        
-       dm= mesh_create_derived_render(scene, ob, mask);
+#endif
 
-       if(!dm)
+               /* get updated display list, and convert to a mesh */
+               makeDispListCurveTypes( scene, tmpobj, 0 );
+               nurbs_to_mesh( tmpobj );
+

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to