[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