[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31209] trunk/blender/source/blender: - Enable shape key switching in edit mode for curves, surfaces and latticies

Sergey Sharybin g.ulairi at gmail.com
Tue Aug 10 08:36:43 CEST 2010


Revision: 31209
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31209
Author:   nazgul
Date:     2010-08-10 08:36:42 +0200 (Tue, 10 Aug 2010)

Log Message:
-----------
- Enable shape key switching in edit mode for curves, surfaces and latticies
- Disable changing of lattice size if there are shape keys

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/lattice.c
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/editors/curve/editcurve.c
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/editors/object/object_edit.c
    trunk/blender/source/blender/editors/object/object_hook.c
    trunk/blender/source/blender/editors/object/object_intern.h
    trunk/blender/source/blender/editors/object/object_lattice.c
    trunk/blender/source/blender/editors/object/object_relations.c
    trunk/blender/source/blender/editors/object/object_vgroup.c
    trunk/blender/source/blender/editors/space_info/info_stats.c
    trunk/blender/source/blender/editors/space_view3d/drawobject.c
    trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c
    trunk/blender/source/blender/editors/space_view3d/view3d_snap.c
    trunk/blender/source/blender/editors/transform/transform_conversions.c
    trunk/blender/source/blender/editors/transform/transform_generics.c
    trunk/blender/source/blender/editors/transform/transform_manipulator.c
    trunk/blender/source/blender/makesdna/DNA_curve_types.h
    trunk/blender/source/blender/makesdna/DNA_lattice_types.h
    trunk/blender/source/blender/makesrna/intern/rna_lattice.c
    trunk/blender/source/blender/makesrna/intern/rna_object.c

Added Paths:
-----------
    trunk/blender/source/blender/editors/include/ED_lattice.h

Modified: trunk/blender/source/blender/blenkernel/intern/lattice.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/lattice.c	2010-08-10 06:27:29 UTC (rev 31208)
+++ trunk/blender/source/blender/blenkernel/intern/lattice.c	2010-08-10 06:36:42 UTC (rev 31209)
@@ -225,8 +225,12 @@
 	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->editlatt->def) MEM_freeN(lt->editlatt->def);
-		if(lt->editlatt->dvert) free_dverts(lt->editlatt->dvert, lt->pntsu*lt->pntsv*lt->pntsw);
+		Lattice *editlt= lt->editlatt->latt;
+
+		if(editlt->def) MEM_freeN(editlt->def);
+		if(editlt->dvert) free_dverts(editlt->dvert, lt->pntsu*lt->pntsv*lt->pntsw);
+
+		MEM_freeN(editlt);
 		MEM_freeN(lt->editlatt);
 	}
 }
@@ -295,7 +299,7 @@
 	float fu, fv, fw;
 	int u, v, w;
 
-	if(lt->editlatt) lt= lt->editlatt;
+	if(lt->editlatt) lt= lt->editlatt->latt;
 	bp = lt->def;
 	
 	fp= lt->latticedata= MEM_mallocN(sizeof(float)*3*lt->pntsu*lt->pntsv*lt->pntsw, "latticedata");
@@ -350,7 +354,7 @@
 	MDeformVert *dvert= lattice_get_deform_verts(ob);
 
 
-	if(lt->editlatt) lt= lt->editlatt;
+	if(lt->editlatt) lt= lt->editlatt->latt;
 	if(lt->latticedata==NULL) return;
 
 	if(lt->vgroup[0] && dvert) {
@@ -446,7 +450,7 @@
 {
 	Lattice *lt= ob->data;
 	
-	if(lt->editlatt) lt= lt->editlatt;
+	if(lt->editlatt) lt= lt->editlatt->latt;
 	
 	if(lt->latticedata)
 		MEM_freeN(lt->latticedata);
@@ -1002,7 +1006,7 @@
 	int i, numVerts;
 	float (*vertexCos)[3];
 
-	if(lt->editlatt) lt= lt->editlatt;
+	if(lt->editlatt) lt= lt->editlatt->latt;
 	numVerts = *numVerts_r = lt->pntsu*lt->pntsv*lt->pntsw;
 	
 	vertexCos = MEM_mallocN(sizeof(*vertexCos)*numVerts,"lt_vcos");
@@ -1066,7 +1070,7 @@
 	if(oblatt->type == OB_LATTICE)
 	{
 		Lattice *lt = (Lattice*)oblatt->data;
-		if(lt->editlatt) lt= lt->editlatt;
+		if(lt->editlatt) lt= lt->editlatt->latt;
 		return lt->dvert;
 	}
 

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2010-08-10 06:27:29 UTC (rev 31208)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2010-08-10 06:36:42 UTC (rev 31209)
@@ -1917,7 +1917,7 @@
 		DispList *dl = find_displist(&par->disp, DL_VERTS);
 		float *co = dl?dl->verts:NULL;
 		
-		if(latt->editlatt) latt= latt->editlatt;
+		if(latt->editlatt) latt= latt->editlatt->latt;
 		
 		a= latt->pntsu*latt->pntsv*latt->pntsw;
 		count= 0;

Modified: trunk/blender/source/blender/editors/curve/editcurve.c
===================================================================
--- trunk/blender/source/blender/editors/curve/editcurve.c	2010-08-10 06:27:29 UTC (rev 31208)
+++ trunk/blender/source/blender/editors/curve/editcurve.c	2010-08-10 06:36:42 UTC (rev 31209)
@@ -724,7 +724,7 @@
 		int a, i, j;
 		EditNurb *editnurb= cu->editnurb;
 		KeyBlock *currkey;
-		KeyBlock *actkey= ob_get_keyblock(obedit);
+		KeyBlock *actkey= BLI_findlink(&cu->key->block, editnurb->shapenr-1);
 		BezTriple *bezt, *oldbezt;
 		BPoint *bp, *oldbp;
 		Nurb *nu;
@@ -738,7 +738,7 @@
 			int act_is_basis = 0;
 			/* find if this key is a basis for any others */
 			for(currkey = cu->key->block.first; currkey; currkey= currkey->next) {
-				if(obedit->shapenr-1 == currkey->relative) {
+				if(editnurb->shapenr-1 == currkey->relative) {
 					act_is_basis = 1;
 					break;
 				}
@@ -806,7 +806,7 @@
 
 		currkey = cu->key->block.first;
 		while(currkey) {
-			int apply_offset = (ofs && (currkey != actkey) && (obedit->shapenr-1 == currkey->relative));
+			int apply_offset = (ofs && (currkey != actkey) && (editnurb->shapenr-1 == currkey->relative));
 
 			fp= newkey= MEM_callocN(cu->key->elemsize * totvert,  "currkey->data");
 			ofp= oldkey = currkey->data;
@@ -1035,6 +1035,7 @@
 		}
 
 		if(actkey) {
+			editnurb->shapenr= obedit->shapenr;
 			init_editNurb_keyIndex(editnurb, &cu->nurb);
 		}
 	}

Added: trunk/blender/source/blender/editors/include/ED_lattice.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_lattice.h	                        (rev 0)
+++ trunk/blender/source/blender/editors/include/ED_lattice.h	2010-08-10 06:36:42 UTC (rev 31209)
@@ -0,0 +1,33 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version. 
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2008 Blender Foundation.
+ * All rights reserved.
+ *
+ * 
+ * Contributor(s): Blender Foundation
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+struct Object;
+
+void free_editLatt(struct Object *ob);
+void make_editLatt(struct Object *obedit);
+void load_editLatt(struct Object *obedit);

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c	2010-08-10 06:27:29 UTC (rev 31208)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c	2010-08-10 06:36:42 UTC (rev 31209)
@@ -2097,12 +2097,6 @@
 	/* list item behind label & other buttons */
 	sub= uiLayoutRow(overlap, 0);
 
-	if(itemptr->type == &RNA_ShapeKey) {
-		ob= (Object*)activeptr->data;
-		if(ob->mode == OB_MODE_EDIT && !(ob->type == OB_MESH))
-			uiLayoutSetEnabled(sub, 0);
-	}
-
 	but= uiDefButR(block, LISTROW, 0, "", 0,0, UI_UNIT_X*10,UI_UNIT_Y, activeptr, activepropname, 0, 0, i, 0, 0, "");
 	uiButSetFlag(but, UI_BUT_NO_TOOLTIP);
 

Modified: trunk/blender/source/blender/editors/object/object_edit.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_edit.c	2010-08-10 06:27:29 UTC (rev 31208)
+++ trunk/blender/source/blender/editors/object/object_edit.c	2010-08-10 06:36:42 UTC (rev 31209)
@@ -78,6 +78,7 @@
 #include "ED_curve.h"
 #include "ED_mesh.h"
 #include "ED_mball.h"
+#include "ED_lattice.h"
 #include "ED_object.h"
 #include "ED_screen.h"
 #include "ED_util.h"
@@ -938,14 +939,15 @@
 		static float weight= 1.0f;
 		{ // XXX
 // XXX		if(fbutton(&weight, 0.0f, 1.0f, 10, 10, "Set Weight")) {
-			int a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
-			BPoint *bp= lt->editlatt->def;
+			Lattice *editlt= lt->editlatt->latt;
+			int a= editlt->pntsu*editlt->pntsv*editlt->pntsw;
+			BPoint *bp= editlt->def;
 			
 			while(a--) {
 				if(bp->f1 & SELECT)
 					bp->weight= weight;
 				bp++;
-			}	
+			}
 		}
 	}
 

Modified: trunk/blender/source/blender/editors/object/object_hook.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_hook.c	2010-08-10 06:27:29 UTC (rev 31208)
+++ trunk/blender/source/blender/editors/object/object_hook.c	2010-08-10 06:36:42 UTC (rev 31209)
@@ -191,13 +191,14 @@
 
 static void select_editlattice_hook(Object *obedit, HookModifierData *hmd)
 {
-	Lattice *lt= obedit->data;
+	Lattice *lt= obedit->data, *editlt;
 	BPoint *bp;
 	int index=0, nr=0, a;
-	
+
+	editlt= lt->editlatt->latt;
 	/* count */
-	a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
-	bp= lt->editlatt->def;
+	a= editlt->pntsu*editlt->pntsv*editlt->pntsw;
+	bp= editlt->def;
 	while(a--) {
 		if(hmd->indexar[index]==nr) {
 			bp->f1 |= SELECT;
@@ -313,7 +314,7 @@
 		case OB_LATTICE:
 		{
 			Lattice *lt= obedit->data;
-			return return_editlattice_indexar(lt->editlatt, tot, indexar, cent_r);
+			return return_editlattice_indexar(lt->editlatt->latt, tot, indexar, cent_r);
 		}
 		default:
 			return 0;

Modified: trunk/blender/source/blender/editors/object/object_intern.h
===================================================================
--- trunk/blender/source/blender/editors/object/object_intern.h	2010-08-10 06:27:29 UTC (rev 31208)
+++ trunk/blender/source/blender/editors/object/object_intern.h	2010-08-10 06:36:42 UTC (rev 31209)
@@ -131,11 +131,6 @@
 void OBJECT_OT_hook_recenter(struct wmOperatorType *ot);
 
 /* object_lattice.c */
-void free_editLatt(struct Object *ob);
-void make_editLatt(struct Object *obedit);
-void load_editLatt(struct Object *obedit);
-void remake_editLatt(struct Object *obedit);
-
 void LATTICE_OT_select_all(struct wmOperatorType *ot);
 void LATTICE_OT_make_regular(struct wmOperatorType *ot);
 

Modified: trunk/blender/source/blender/editors/object/object_lattice.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_lattice.c	2010-08-10 06:27:29 UTC (rev 31208)
+++ trunk/blender/source/blender/editors/object/object_lattice.c	2010-08-10 06:36:42 UTC (rev 31209)
@@ -46,6 +46,8 @@
 #include "BKE_lattice.h"
 #include "BKE_mesh.h"
 
+#include "BLI_listbase.h"
+
 #include "ED_screen.h"
 #include "ED_view3d.h"
 #include "ED_util.h"
@@ -62,12 +64,16 @@
 	Lattice *lt= ob->data;
 	
 	if(lt->editlatt) {
-		if(lt->editlatt->def)
-			MEM_freeN(lt->editlatt->def);
-		if(lt->editlatt->dvert) 
-			free_dverts(lt->editlatt->dvert, lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw);
-		
+		Lattice *editlt= lt->editlatt->latt;
+
+		if(editlt->def)
+			MEM_freeN(editlt->def);
+		if(editlt->dvert)
+			free_dverts(editlt->dvert, editlt->pntsu*editlt->pntsv*editlt->pntsw);
+
+		MEM_freeN(editlt);
 		MEM_freeN(lt->editlatt);
+
 		lt->editlatt= NULL;
 	}
 }
@@ -76,47 +82,51 @@
 {
 	Lattice *lt= obedit->data;
 	KeyBlock *actkey;
-	
+
 	free_editLatt(obedit);
-	
+
 	lt= obedit->data;
 
 	actkey= ob_get_keyblock(obedit);
 	if(actkey)
 		key_to_latt(actkey, lt);
 
-	lt->editlatt= MEM_dupallocN(lt);
-	lt->editlatt->def= MEM_dupallocN(lt->def);
-	
+	lt->editlatt= MEM_callocN(sizeof(EditLatt), "editlatt");
+	lt->editlatt->latt= MEM_dupallocN(lt);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list