Revision: 21351
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21351
Author:   blendix
Date:     2009-07-03 17:23:33 +0200 (Fri, 03 Jul 2009)

Log Message:
-----------
2.5

* Lattices: properties editable, editmode operators, menus working
  again. As a bonus you can now edit u/v/w in editmode.
* Shape Keys: some code cleanup, and added more buttons. The
  value/min/max buttons don't work correct yet though.
* Fix issue with uv textures, vertex colors not being visible outside
  editmode, and a few other issue. Mesh.edit_mesh is now NULL when
  not in editmode.

Modified Paths:
--------------
    branches/blender2.5/blender/release/ui/buttons_data_lattice.py
    branches/blender2.5/blender/release/ui/buttons_data_mesh.py
    branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c
    branches/blender2.5/blender/source/blender/editors/include/ED_screen.h
    
branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c
    branches/blender2.5/blender/source/blender/editors/object/editkey.c
    branches/blender2.5/blender/source/blender/editors/object/editlattice.c
    branches/blender2.5/blender/source/blender/editors/object/object_edit.c
    branches/blender2.5/blender/source/blender/editors/object/object_intern.h
    branches/blender2.5/blender/source/blender/editors/object/object_modifier.c
    branches/blender2.5/blender/source/blender/editors/object/object_ops.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
    
branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
    
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_key.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_lattice.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_object.c

Modified: branches/blender2.5/blender/release/ui/buttons_data_lattice.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_lattice.py      
2009-07-03 14:32:27 UTC (rev 21350)
+++ branches/blender2.5/blender/release/ui/buttons_data_lattice.py      
2009-07-03 15:23:33 UTC (rev 21351)
@@ -48,7 +48,7 @@
                        row.itemR(lat, "interpolation_type_w", expand=True)
                        
                        row = layout.row()
+                       row.itemO("LATTICE_OT_make_regular")
                        row.itemR(lat, "outside")
-                       row.itemR(lat, "shape_keys")
 
 bpy.types.register(DATA_PT_lattice)

Modified: branches/blender2.5/blender/release/ui/buttons_data_mesh.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_mesh.py 2009-07-03 
14:32:27 UTC (rev 21350)
+++ branches/blender2.5/blender/release/ui/buttons_data_mesh.py 2009-07-03 
15:23:33 UTC (rev 21351)
@@ -131,17 +131,45 @@
        def draw(self, context):
                layout = self.layout
                ob = context.object
+               key = ob.data.shape_keys
+               kb = ob.active_shape_key
 
                row = layout.row()
+               row.template_list(key, "keys", ob, "active_shape_key_index")
 
-               key = ob.data.shape_keys
+               col = row.column()
 
-               row.template_list(key, "keys", ob, "active_shape_key_index")
+               subcol = col.column(align=True)
+               subcol.itemO("OBJECT_OT_shape_key_add", icon="ICON_ZOOMIN", 
text="")
+               subcol.itemO("OBJECT_OT_shape_key_remove", icon="ICON_ZOOMOUT", 
text="")
 
-               col = row.column(align=True)
-               col.itemO("OBJECT_OT_shape_key_add", icon="ICON_ZOOMIN", 
text="")
-               col.itemO("OBJECT_OT_shape_key_remove", icon="ICON_ZOOMOUT", 
text="")
+               if kb:
+                       col.itemS()
 
+                       subcol = col.column(align=True)
+                       subcol.itemR(ob, "shape_key_lock", icon="ICON_PINNED", 
text="")
+                       subcol.itemR(kb, "mute", icon="ICON_MUTE_IPO_ON", 
text="")
+
+                       if key.relative:
+                               row = layout.row()
+                               row.itemR(key, "relative")
+                               row.itemL()
+
+                               if ob.active_shape_key_index != 0:
+                                       if not ob.shape_key_lock:
+                                               row = layout.row(align=True)
+                                               row.itemR(kb, "value", text="")
+                                               row.itemR(kb, "slider_min", 
text="Min")
+                                               row.itemR(kb, "slider_max", 
text="Max")
+
+                                       row = layout.row()
+                                       row.item_pointerR(kb, "vertex_group", 
ob, "vertex_groups", text="")
+                                       row.item_pointerR(kb, "relative_key", 
key, "keys", text="")
+                       else:
+                               row = layout.row()
+                               row.itemR(key, "relative")
+                               row.itemR(key, "slurph")
+
                if context.edit_object:
                        layout.enabled = False
 

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c      
2009-07-03 14:32:27 UTC (rev 21350)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c      
2009-07-03 15:23:33 UTC (rev 21351)
@@ -232,8 +232,8 @@
        if(lt->def) MEM_freeN(lt->def);
        if(lt->dvert) free_dverts(lt->dvert, lt->pntsu*lt->pntsv*lt->pntsw);
        if(lt->editlatt) {
-               if(lt->def) MEM_freeN(lt->def);
-               if(lt->dvert) free_dverts(lt->dvert, 
lt->pntsu*lt->pntsv*lt->pntsw);
+               if(lt->editlatt->def) MEM_freeN(lt->editlatt->def);
+               if(lt->editlatt->dvert) free_dverts(lt->editlatt->dvert, 
lt->pntsu*lt->pntsv*lt->pntsw);
                MEM_freeN(lt->editlatt);
        }
 }
@@ -817,59 +817,68 @@
        int u, v, w;
        float fac1, du=0.0, dv=0.0, dw=0.0;
 
-       bp= lt->def;
+       if(lt->flag & LT_OUTSIDE) {
+               bp= lt->def;
 
-       if(lt->pntsu>1) du= 1.0f/((float)lt->pntsu-1);
-       if(lt->pntsv>1) dv= 1.0f/((float)lt->pntsv-1);
-       if(lt->pntsw>1) dw= 1.0f/((float)lt->pntsw-1);
-               
-       for(w=0; w<lt->pntsw; w++) {
-               
-               for(v=0; v<lt->pntsv; v++) {
-               
-                       for(u=0; u<lt->pntsu; u++, bp++) {
-                               if(u==0 || v==0 || w==0 || u==lt->pntsu-1 || 
v==lt->pntsv-1 || w==lt->pntsw-1);
-                               else {
-                               
-                                       bp->hide= 1;
-                                       bp->f1 &= ~SELECT;
+               if(lt->pntsu>1) du= 1.0f/((float)lt->pntsu-1);
+               if(lt->pntsv>1) dv= 1.0f/((float)lt->pntsv-1);
+               if(lt->pntsw>1) dw= 1.0f/((float)lt->pntsw-1);
+                       
+               for(w=0; w<lt->pntsw; w++) {
+                       
+                       for(v=0; v<lt->pntsv; v++) {
+                       
+                               for(u=0; u<lt->pntsu; u++, bp++) {
+                                       if(u==0 || v==0 || w==0 || 
u==lt->pntsu-1 || v==lt->pntsv-1 || w==lt->pntsw-1);
+                                       else {
                                        
-                                       /* u extrema */
-                                       bp1= latt_bp(lt, 0, v, w);
-                                       bp2= latt_bp(lt, lt->pntsu-1, v, w);
-                                       
-                                       fac1= du*u;
-                                       bp->vec[0]= (1.0f-fac1)*bp1->vec[0] + 
fac1*bp2->vec[0];
-                                       bp->vec[1]= (1.0f-fac1)*bp1->vec[1] + 
fac1*bp2->vec[1];
-                                       bp->vec[2]= (1.0f-fac1)*bp1->vec[2] + 
fac1*bp2->vec[2];
-                                       
-                                       /* v extrema */
-                                       bp1= latt_bp(lt, u, 0, w);
-                                       bp2= latt_bp(lt, u, lt->pntsv-1, w);
-                                       
-                                       fac1= dv*v;
-                                       bp->vec[0]+= (1.0f-fac1)*bp1->vec[0] + 
fac1*bp2->vec[0];
-                                       bp->vec[1]+= (1.0f-fac1)*bp1->vec[1] + 
fac1*bp2->vec[1];
-                                       bp->vec[2]+= (1.0f-fac1)*bp1->vec[2] + 
fac1*bp2->vec[2];
-                                       
-                                       /* w extrema */
-                                       bp1= latt_bp(lt, u, v, 0);
-                                       bp2= latt_bp(lt, u, v, lt->pntsw-1);
-                                       
-                                       fac1= dw*w;
-                                       bp->vec[0]+= (1.0f-fac1)*bp1->vec[0] + 
fac1*bp2->vec[0];
-                                       bp->vec[1]+= (1.0f-fac1)*bp1->vec[1] + 
fac1*bp2->vec[1];
-                                       bp->vec[2]+= (1.0f-fac1)*bp1->vec[2] + 
fac1*bp2->vec[2];
-                                       
-                                       VecMulf(bp->vec, 0.3333333f);
-                                       
+                                               bp->hide= 1;
+                                               bp->f1 &= ~SELECT;
+                                               
+                                               /* u extrema */
+                                               bp1= latt_bp(lt, 0, v, w);
+                                               bp2= latt_bp(lt, lt->pntsu-1, 
v, w);
+                                               
+                                               fac1= du*u;
+                                               bp->vec[0]= 
(1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
+                                               bp->vec[1]= 
(1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
+                                               bp->vec[2]= 
(1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
+                                               
+                                               /* v extrema */
+                                               bp1= latt_bp(lt, u, 0, w);
+                                               bp2= latt_bp(lt, u, 
lt->pntsv-1, w);
+                                               
+                                               fac1= dv*v;
+                                               bp->vec[0]+= 
(1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
+                                               bp->vec[1]+= 
(1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
+                                               bp->vec[2]+= 
(1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
+                                               
+                                               /* w extrema */
+                                               bp1= latt_bp(lt, u, v, 0);
+                                               bp2= latt_bp(lt, u, v, 
lt->pntsw-1);
+                                               
+                                               fac1= dw*w;
+                                               bp->vec[0]+= 
(1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
+                                               bp->vec[1]+= 
(1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
+                                               bp->vec[2]+= 
(1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
+                                               
+                                               VecMulf(bp->vec, 0.3333333f);
+                                               
+                                       }
                                }
+                               
                        }
                        
                }
-               
        }
-       
+       else {
+               bp= lt->def;
+
+               for(w=0; w<lt->pntsw; w++)
+                       for(v=0; v<lt->pntsv; v++)
+                               for(u=0; u<lt->pntsu; u++, bp++)
+                                       bp->hide= 0;
+       }
 }
 
 float (*lattice_getVertexCos(struct Object *ob, int *numVerts_r))[3]

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_screen.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_screen.h      
2009-07-03 14:32:27 UTC (rev 21350)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_screen.h      
2009-07-03 15:23:33 UTC (rev 21351)
@@ -127,6 +127,7 @@
 int            ED_operator_editsurf(struct bContext *C);
 int            ED_operator_editsurfcurve(struct bContext *C);
 int            ED_operator_editfont(struct bContext *C);
+int            ED_operator_editlattice(struct bContext *C);
 int            ED_operator_uvedit(struct bContext *C);
 int            ED_operator_uvmap(struct bContext *C);
 int            ED_operator_posemode(struct bContext *C);

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c 
    2009-07-03 14:32:27 UTC (rev 21350)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c 
    2009-07-03 15:23:33 UTC (rev 21351)
@@ -699,7 +699,7 @@
        subtype= RNA_property_subtype(prop);
        len= RNA_property_array_length(prop);
 
-       if(type == PROP_STRING && strcmp(name, "") == 0)
+       if(ELEM(type, PROP_STRING, PROP_POINTER) && strcmp(name, "") == 0)
                name= "non-empty";
 
        w= ui_text_icon_width(layout, name, icon);

Modified: branches/blender2.5/blender/source/blender/editors/object/editkey.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/editkey.c 
2009-07-03 14:32:27 UTC (rev 21350)
+++ branches/blender2.5/blender/source/blender/editors/object/editkey.c 
2009-07-03 15:23:33 UTC (rev 21351)
@@ -78,10 +78,6 @@
 
 #include "object_intern.h"
 
-/* XXX */
-static void BIF_undo_push() {}
-/* XXX */
-
 #if 0 // XXX old animation system
 static void default_key_ipo(Scene *scene, Key *key)
 {
@@ -117,7 +113,7 @@
 #endif // XXX old animation system
        
 
-/* **************************************** */
+/************************* Mesh ************************/
 
 void mesh_to_key(Mesh *me, KeyBlock *kb)
 {
@@ -213,7 +209,7 @@
        mesh_to_key(me, kb);
 }
 
-/* ******************** */
+/************************* Lattice ************************/
 
 void latt_to_key(Lattice *lt, KeyBlock *kb)
 {
@@ -271,7 +267,7 @@
        latt_to_key(lt, kb);
 }
 
-/* ******************************** */
+/************************* Curve ************************/
 
 void curve_to_key(Curve *cu, KeyBlock *kb, ListBase *nurb)
 {
@@ -383,7 +379,7 @@
        if(cu->key==NULL) {
                cu->key= add_key( (ID *)cu);
 
-               if (rel)
+               if(rel)
                        cu->key->type = KEY_RELATIVE;
 //             else
 //                     default_key_ipo(scene, cu->key);        // XXX old 
animation system
@@ -396,17 +392,34 @@
        else curve_to_key(cu, kb, &cu->nurb);
 }
 
+/*********************** add shape key ***********************/
 
-/* ******************** */
+void ED_object_shape_key_add(bContext *C, Scene *scene, Object *ob)
+{
+       Key *key;
 
-void delete_key(Scene *scene, Object *ob)
+       if(ob->type==OB_MESH) insert_meshkey(scene, ob->data, 1);
+       else if ELEM(ob->type, OB_CURVE, OB_SURF) insert_curvekey(scene, 
ob->data, 1);
+       else if(ob->type==OB_LATTICE) insert_lattkey(scene, ob->data, 1);
+
+       key= ob_get_key(ob);
+       ob->shapenr= BLI_countlist(&key->block);
+
+       WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+}
+
+/*********************** remove shape key ***********************/
+
+int ED_object_shape_key_remove(bContext *C, Scene *scene, Object *ob)
 {
+       Main *bmain= CTX_data_main(C);
        KeyBlock *kb, *rkb;
        Key *key;
        //IpoCurve *icu;
-       
+
        key= ob_get_key(ob);
-       if(key==NULL) return;
+       if(key==NULL)
+               return 0;
        
        kb= BLI_findlink(&key->block, ob->shapenr-1);
 
@@ -417,15 +430,15 @@
 
                BLI_remlink(&key->block, kb);
                key->totkey--;
-               if(key->refkey== kb) key->refkey= key->block.first;
+               if(key->refkey== kb)

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to