forked from bartvdbraak/blender
- Enable shape key switching in edit mode for curves, surfaces and latticies
- Disable changing of lattice size if there are shape keys
This commit is contained in:
parent
41531e4fb6
commit
c0e39df6ac
@ -225,8 +225,12 @@ void free_lattice(Lattice *lt)
|
|||||||
if(lt->def) MEM_freeN(lt->def);
|
if(lt->def) MEM_freeN(lt->def);
|
||||||
if(lt->dvert) free_dverts(lt->dvert, lt->pntsu*lt->pntsv*lt->pntsw);
|
if(lt->dvert) free_dverts(lt->dvert, lt->pntsu*lt->pntsv*lt->pntsw);
|
||||||
if(lt->editlatt) {
|
if(lt->editlatt) {
|
||||||
if(lt->editlatt->def) MEM_freeN(lt->editlatt->def);
|
Lattice *editlt= lt->editlatt->latt;
|
||||||
if(lt->editlatt->dvert) free_dverts(lt->editlatt->dvert, lt->pntsu*lt->pntsv*lt->pntsw);
|
|
||||||
|
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);
|
MEM_freeN(lt->editlatt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -295,7 +299,7 @@ void init_latt_deform(Object *oblatt, Object *ob)
|
|||||||
float fu, fv, fw;
|
float fu, fv, fw;
|
||||||
int u, v, w;
|
int u, v, w;
|
||||||
|
|
||||||
if(lt->editlatt) lt= lt->editlatt;
|
if(lt->editlatt) lt= lt->editlatt->latt;
|
||||||
bp = lt->def;
|
bp = lt->def;
|
||||||
|
|
||||||
fp= lt->latticedata= MEM_mallocN(sizeof(float)*3*lt->pntsu*lt->pntsv*lt->pntsw, "latticedata");
|
fp= lt->latticedata= MEM_mallocN(sizeof(float)*3*lt->pntsu*lt->pntsv*lt->pntsw, "latticedata");
|
||||||
@ -350,7 +354,7 @@ void calc_latt_deform(Object *ob, float *co, float weight)
|
|||||||
MDeformVert *dvert= lattice_get_deform_verts(ob);
|
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->latticedata==NULL) return;
|
||||||
|
|
||||||
if(lt->vgroup[0] && dvert) {
|
if(lt->vgroup[0] && dvert) {
|
||||||
@ -446,7 +450,7 @@ void end_latt_deform(Object *ob)
|
|||||||
{
|
{
|
||||||
Lattice *lt= ob->data;
|
Lattice *lt= ob->data;
|
||||||
|
|
||||||
if(lt->editlatt) lt= lt->editlatt;
|
if(lt->editlatt) lt= lt->editlatt->latt;
|
||||||
|
|
||||||
if(lt->latticedata)
|
if(lt->latticedata)
|
||||||
MEM_freeN(lt->latticedata);
|
MEM_freeN(lt->latticedata);
|
||||||
@ -1002,7 +1006,7 @@ float (*lattice_getVertexCos(struct Object *ob, int *numVerts_r))[3]
|
|||||||
int i, numVerts;
|
int i, numVerts;
|
||||||
float (*vertexCos)[3];
|
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;
|
numVerts = *numVerts_r = lt->pntsu*lt->pntsv*lt->pntsw;
|
||||||
|
|
||||||
vertexCos = MEM_mallocN(sizeof(*vertexCos)*numVerts,"lt_vcos");
|
vertexCos = MEM_mallocN(sizeof(*vertexCos)*numVerts,"lt_vcos");
|
||||||
@ -1066,7 +1070,7 @@ struct MDeformVert* lattice_get_deform_verts(struct Object *oblatt)
|
|||||||
if(oblatt->type == OB_LATTICE)
|
if(oblatt->type == OB_LATTICE)
|
||||||
{
|
{
|
||||||
Lattice *lt = (Lattice*)oblatt->data;
|
Lattice *lt = (Lattice*)oblatt->data;
|
||||||
if(lt->editlatt) lt= lt->editlatt;
|
if(lt->editlatt) lt= lt->editlatt->latt;
|
||||||
return lt->dvert;
|
return lt->dvert;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1917,7 +1917,7 @@ static void give_parvert(Object *par, int nr, float *vec)
|
|||||||
DispList *dl = find_displist(&par->disp, DL_VERTS);
|
DispList *dl = find_displist(&par->disp, DL_VERTS);
|
||||||
float *co = dl?dl->verts:NULL;
|
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;
|
a= latt->pntsu*latt->pntsv*latt->pntsw;
|
||||||
count= 0;
|
count= 0;
|
||||||
|
@ -724,7 +724,7 @@ static void calc_shapeKeys(Object *obedit)
|
|||||||
int a, i, j;
|
int a, i, j;
|
||||||
EditNurb *editnurb= cu->editnurb;
|
EditNurb *editnurb= cu->editnurb;
|
||||||
KeyBlock *currkey;
|
KeyBlock *currkey;
|
||||||
KeyBlock *actkey= ob_get_keyblock(obedit);
|
KeyBlock *actkey= BLI_findlink(&cu->key->block, editnurb->shapenr-1);
|
||||||
BezTriple *bezt, *oldbezt;
|
BezTriple *bezt, *oldbezt;
|
||||||
BPoint *bp, *oldbp;
|
BPoint *bp, *oldbp;
|
||||||
Nurb *nu;
|
Nurb *nu;
|
||||||
@ -738,7 +738,7 @@ static void calc_shapeKeys(Object *obedit)
|
|||||||
int act_is_basis = 0;
|
int act_is_basis = 0;
|
||||||
/* find if this key is a basis for any others */
|
/* find if this key is a basis for any others */
|
||||||
for(currkey = cu->key->block.first; currkey; currkey= currkey->next) {
|
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;
|
act_is_basis = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -806,7 +806,7 @@ static void calc_shapeKeys(Object *obedit)
|
|||||||
|
|
||||||
currkey = cu->key->block.first;
|
currkey = cu->key->block.first;
|
||||||
while(currkey) {
|
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");
|
fp= newkey= MEM_callocN(cu->key->elemsize * totvert, "currkey->data");
|
||||||
ofp= oldkey = currkey->data;
|
ofp= oldkey = currkey->data;
|
||||||
@ -1035,6 +1035,7 @@ void make_editNurb(Object *obedit)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(actkey) {
|
if(actkey) {
|
||||||
|
editnurb->shapenr= obedit->shapenr;
|
||||||
init_editNurb_keyIndex(editnurb, &cu->nurb);
|
init_editNurb_keyIndex(editnurb, &cu->nurb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
33
source/blender/editors/include/ED_lattice.h
Normal file
33
source/blender/editors/include/ED_lattice.h
Normal file
@ -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);
|
@ -2097,12 +2097,6 @@ static void list_item_row(bContext *C, uiLayout *layout, PointerRNA *ptr, Pointe
|
|||||||
/* list item behind label & other buttons */
|
/* list item behind label & other buttons */
|
||||||
sub= uiLayoutRow(overlap, 0);
|
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, "");
|
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);
|
uiButSetFlag(but, UI_BUT_NO_TOOLTIP);
|
||||||
|
|
||||||
|
@ -78,6 +78,7 @@
|
|||||||
#include "ED_curve.h"
|
#include "ED_curve.h"
|
||||||
#include "ED_mesh.h"
|
#include "ED_mesh.h"
|
||||||
#include "ED_mball.h"
|
#include "ED_mball.h"
|
||||||
|
#include "ED_lattice.h"
|
||||||
#include "ED_object.h"
|
#include "ED_object.h"
|
||||||
#include "ED_screen.h"
|
#include "ED_screen.h"
|
||||||
#include "ED_util.h"
|
#include "ED_util.h"
|
||||||
@ -938,14 +939,15 @@ void special_editmenu(Scene *scene, View3D *v3d)
|
|||||||
static float weight= 1.0f;
|
static float weight= 1.0f;
|
||||||
{ // XXX
|
{ // XXX
|
||||||
// XXX if(fbutton(&weight, 0.0f, 1.0f, 10, 10, "Set Weight")) {
|
// XXX if(fbutton(&weight, 0.0f, 1.0f, 10, 10, "Set Weight")) {
|
||||||
int a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
|
Lattice *editlt= lt->editlatt->latt;
|
||||||
BPoint *bp= lt->editlatt->def;
|
int a= editlt->pntsu*editlt->pntsv*editlt->pntsw;
|
||||||
|
BPoint *bp= editlt->def;
|
||||||
|
|
||||||
while(a--) {
|
while(a--) {
|
||||||
if(bp->f1 & SELECT)
|
if(bp->f1 & SELECT)
|
||||||
bp->weight= weight;
|
bp->weight= weight;
|
||||||
bp++;
|
bp++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,13 +191,14 @@ static int return_editlattice_indexar(Lattice *editlatt, int *tot, int **indexar
|
|||||||
|
|
||||||
static void select_editlattice_hook(Object *obedit, HookModifierData *hmd)
|
static void select_editlattice_hook(Object *obedit, HookModifierData *hmd)
|
||||||
{
|
{
|
||||||
Lattice *lt= obedit->data;
|
Lattice *lt= obedit->data, *editlt;
|
||||||
BPoint *bp;
|
BPoint *bp;
|
||||||
int index=0, nr=0, a;
|
int index=0, nr=0, a;
|
||||||
|
|
||||||
|
editlt= lt->editlatt->latt;
|
||||||
/* count */
|
/* count */
|
||||||
a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
|
a= editlt->pntsu*editlt->pntsv*editlt->pntsw;
|
||||||
bp= lt->editlatt->def;
|
bp= editlt->def;
|
||||||
while(a--) {
|
while(a--) {
|
||||||
if(hmd->indexar[index]==nr) {
|
if(hmd->indexar[index]==nr) {
|
||||||
bp->f1 |= SELECT;
|
bp->f1 |= SELECT;
|
||||||
@ -313,7 +314,7 @@ static int object_hook_index_array(Object *obedit, int *tot, int **indexar, char
|
|||||||
case OB_LATTICE:
|
case OB_LATTICE:
|
||||||
{
|
{
|
||||||
Lattice *lt= obedit->data;
|
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:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -131,11 +131,6 @@ void OBJECT_OT_hook_reset(struct wmOperatorType *ot);
|
|||||||
void OBJECT_OT_hook_recenter(struct wmOperatorType *ot);
|
void OBJECT_OT_hook_recenter(struct wmOperatorType *ot);
|
||||||
|
|
||||||
/* object_lattice.c */
|
/* 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_select_all(struct wmOperatorType *ot);
|
||||||
void LATTICE_OT_make_regular(struct wmOperatorType *ot);
|
void LATTICE_OT_make_regular(struct wmOperatorType *ot);
|
||||||
|
|
||||||
|
@ -46,6 +46,8 @@
|
|||||||
#include "BKE_lattice.h"
|
#include "BKE_lattice.h"
|
||||||
#include "BKE_mesh.h"
|
#include "BKE_mesh.h"
|
||||||
|
|
||||||
|
#include "BLI_listbase.h"
|
||||||
|
|
||||||
#include "ED_screen.h"
|
#include "ED_screen.h"
|
||||||
#include "ED_view3d.h"
|
#include "ED_view3d.h"
|
||||||
#include "ED_util.h"
|
#include "ED_util.h"
|
||||||
@ -62,12 +64,16 @@ void free_editLatt(Object *ob)
|
|||||||
Lattice *lt= ob->data;
|
Lattice *lt= ob->data;
|
||||||
|
|
||||||
if(lt->editlatt) {
|
if(lt->editlatt) {
|
||||||
if(lt->editlatt->def)
|
Lattice *editlt= lt->editlatt->latt;
|
||||||
MEM_freeN(lt->editlatt->def);
|
|
||||||
if(lt->editlatt->dvert)
|
if(editlt->def)
|
||||||
free_dverts(lt->editlatt->dvert, lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw);
|
MEM_freeN(editlt->def);
|
||||||
|
if(editlt->dvert)
|
||||||
|
free_dverts(editlt->dvert, editlt->pntsu*editlt->pntsv*editlt->pntsw);
|
||||||
|
|
||||||
|
MEM_freeN(editlt);
|
||||||
MEM_freeN(lt->editlatt);
|
MEM_freeN(lt->editlatt);
|
||||||
|
|
||||||
lt->editlatt= NULL;
|
lt->editlatt= NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -76,47 +82,51 @@ void make_editLatt(Object *obedit)
|
|||||||
{
|
{
|
||||||
Lattice *lt= obedit->data;
|
Lattice *lt= obedit->data;
|
||||||
KeyBlock *actkey;
|
KeyBlock *actkey;
|
||||||
|
|
||||||
free_editLatt(obedit);
|
free_editLatt(obedit);
|
||||||
|
|
||||||
lt= obedit->data;
|
lt= obedit->data;
|
||||||
|
|
||||||
actkey= ob_get_keyblock(obedit);
|
actkey= ob_get_keyblock(obedit);
|
||||||
if(actkey)
|
if(actkey)
|
||||||
key_to_latt(actkey, lt);
|
key_to_latt(actkey, lt);
|
||||||
|
|
||||||
lt->editlatt= MEM_dupallocN(lt);
|
lt->editlatt= MEM_callocN(sizeof(EditLatt), "editlatt");
|
||||||
lt->editlatt->def= MEM_dupallocN(lt->def);
|
lt->editlatt->latt= MEM_dupallocN(lt);
|
||||||
|
lt->editlatt->latt->def= MEM_dupallocN(lt->def);
|
||||||
|
|
||||||
if(lt->dvert) {
|
if(lt->dvert) {
|
||||||
int tot= lt->pntsu*lt->pntsv*lt->pntsw;
|
int tot= lt->pntsu*lt->pntsv*lt->pntsw;
|
||||||
lt->editlatt->dvert = MEM_mallocN (sizeof (MDeformVert)*tot, "Lattice MDeformVert");
|
lt->editlatt->latt->dvert = MEM_mallocN (sizeof (MDeformVert)*tot, "Lattice MDeformVert");
|
||||||
copy_dverts(lt->editlatt->dvert, lt->dvert, tot);
|
copy_dverts(lt->editlatt->latt->dvert, lt->dvert, tot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(lt->key) lt->editlatt->shapenr= obedit->shapenr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void load_editLatt(Object *obedit)
|
void load_editLatt(Object *obedit)
|
||||||
{
|
{
|
||||||
Lattice *lt;
|
Lattice *lt, *editlt;
|
||||||
KeyBlock *actkey;
|
KeyBlock *actkey;
|
||||||
BPoint *bp;
|
BPoint *bp;
|
||||||
float *fp;
|
float *fp;
|
||||||
int tot;
|
int tot;
|
||||||
|
|
||||||
lt= obedit->data;
|
|
||||||
|
|
||||||
actkey= ob_get_keyblock(obedit);
|
|
||||||
|
|
||||||
if(actkey) {
|
lt= obedit->data;
|
||||||
|
editlt= lt->editlatt->latt;
|
||||||
|
|
||||||
|
if(lt->editlatt->shapenr) {
|
||||||
|
actkey= BLI_findlink(<->key->block, lt->editlatt->shapenr-1);
|
||||||
|
|
||||||
/* active key: vertices */
|
/* active key: vertices */
|
||||||
tot= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
|
tot= editlt->pntsu*editlt->pntsv*editlt->pntsw;
|
||||||
|
|
||||||
if(actkey->data) MEM_freeN(actkey->data);
|
if(actkey->data) MEM_freeN(actkey->data);
|
||||||
|
|
||||||
fp=actkey->data= MEM_callocN(lt->key->elemsize*tot, "actkey->data");
|
fp=actkey->data= MEM_callocN(lt->key->elemsize*tot, "actkey->data");
|
||||||
actkey->totelem= tot;
|
actkey->totelem= tot;
|
||||||
|
|
||||||
bp= lt->editlatt->def;
|
bp= editlt->def;
|
||||||
while(tot--) {
|
while(tot--) {
|
||||||
VECCOPY(fp, bp->vec);
|
VECCOPY(fp, bp->vec);
|
||||||
fp+= 3;
|
fp+= 3;
|
||||||
@ -125,30 +135,30 @@ void load_editLatt(Object *obedit)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
MEM_freeN(lt->def);
|
MEM_freeN(lt->def);
|
||||||
|
|
||||||
lt->def= MEM_dupallocN(lt->editlatt->def);
|
|
||||||
|
|
||||||
lt->flag= lt->editlatt->flag;
|
lt->def= MEM_dupallocN(editlt->def);
|
||||||
|
|
||||||
lt->pntsu= lt->editlatt->pntsu;
|
lt->flag= editlt->flag;
|
||||||
lt->pntsv= lt->editlatt->pntsv;
|
|
||||||
lt->pntsw= lt->editlatt->pntsw;
|
lt->pntsu= editlt->pntsu;
|
||||||
|
lt->pntsv= editlt->pntsv;
|
||||||
|
lt->pntsw= editlt->pntsw;
|
||||||
|
|
||||||
lt->typeu= lt->editlatt->typeu;
|
lt->typeu= editlt->typeu;
|
||||||
lt->typev= lt->editlatt->typev;
|
lt->typev= editlt->typev;
|
||||||
lt->typew= lt->editlatt->typew;
|
lt->typew= editlt->typew;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(lt->dvert) {
|
if(lt->dvert) {
|
||||||
free_dverts(lt->dvert, lt->pntsu*lt->pntsv*lt->pntsw);
|
free_dverts(lt->dvert, lt->pntsu*lt->pntsv*lt->pntsw);
|
||||||
lt->dvert= NULL;
|
lt->dvert= NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(lt->editlatt->dvert) {
|
if(editlt->dvert) {
|
||||||
int tot= lt->pntsu*lt->pntsv*lt->pntsw;
|
int tot= lt->pntsu*lt->pntsv*lt->pntsw;
|
||||||
|
|
||||||
lt->dvert = MEM_mallocN (sizeof (MDeformVert)*tot, "Lattice MDeformVert");
|
lt->dvert = MEM_mallocN (sizeof (MDeformVert)*tot, "Lattice MDeformVert");
|
||||||
copy_dverts(lt->dvert, lt->editlatt->dvert, tot);
|
copy_dverts(lt->dvert, editlt->dvert, tot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,9 +170,9 @@ void ED_setflagsLatt(Object *obedit, int flag)
|
|||||||
BPoint *bp;
|
BPoint *bp;
|
||||||
int a;
|
int a;
|
||||||
|
|
||||||
bp= lt->editlatt->def;
|
bp= lt->editlatt->latt->def;
|
||||||
|
|
||||||
a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
|
a= lt->editlatt->latt->pntsu*lt->editlatt->latt->pntsv*lt->editlatt->latt->pntsw;
|
||||||
|
|
||||||
while(a--) {
|
while(a--) {
|
||||||
if(bp->hide==0) {
|
if(bp->hide==0) {
|
||||||
@ -183,8 +193,8 @@ int select_all_exec(bContext *C, wmOperator *op)
|
|||||||
if (action == SEL_TOGGLE) {
|
if (action == SEL_TOGGLE) {
|
||||||
action = SEL_SELECT;
|
action = SEL_SELECT;
|
||||||
|
|
||||||
bp= lt->editlatt->def;
|
bp= lt->editlatt->latt->def;
|
||||||
a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
|
a= lt->editlatt->latt->pntsu*lt->editlatt->latt->pntsv*lt->editlatt->latt->pntsw;
|
||||||
|
|
||||||
while(a--) {
|
while(a--) {
|
||||||
if(bp->hide==0) {
|
if(bp->hide==0) {
|
||||||
@ -205,8 +215,8 @@ int select_all_exec(bContext *C, wmOperator *op)
|
|||||||
ED_setflagsLatt(obedit, 0);
|
ED_setflagsLatt(obedit, 0);
|
||||||
break;
|
break;
|
||||||
case SEL_INVERT:
|
case SEL_INVERT:
|
||||||
bp= lt->editlatt->def;
|
bp= lt->editlatt->latt->def;
|
||||||
a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
|
a= lt->editlatt->latt->pntsu*lt->editlatt->latt->pntsv*lt->editlatt->latt->pntsw;
|
||||||
|
|
||||||
while(a--) {
|
while(a--) {
|
||||||
if(bp->hide==0) {
|
if(bp->hide==0) {
|
||||||
@ -256,7 +266,7 @@ int make_regular_exec(bContext *C, wmOperator *op)
|
|||||||
|
|
||||||
if(ob) {
|
if(ob) {
|
||||||
lt= ob->data;
|
lt= ob->data;
|
||||||
resizelattice(lt->editlatt, lt->pntsu, lt->pntsv, lt->pntsw, NULL);
|
resizelattice(lt->editlatt->latt, lt->pntsu, lt->pntsv, lt->pntsw, NULL);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ob= CTX_data_active_object(C);
|
ob= CTX_data_active_object(C);
|
||||||
@ -354,21 +364,21 @@ typedef struct UndoLattice {
|
|||||||
static void undoLatt_to_editLatt(void *data, void *edata)
|
static void undoLatt_to_editLatt(void *data, void *edata)
|
||||||
{
|
{
|
||||||
UndoLattice *ult= (UndoLattice*)data;
|
UndoLattice *ult= (UndoLattice*)data;
|
||||||
Lattice *editlatt= (Lattice *)edata;
|
EditLatt *editlatt= (EditLatt *)edata;
|
||||||
int a= editlatt->pntsu*editlatt->pntsv*editlatt->pntsw;
|
int a= editlatt->latt->pntsu*editlatt->latt->pntsv*editlatt->latt->pntsw;
|
||||||
|
|
||||||
memcpy(editlatt->def, ult->def, a*sizeof(BPoint));
|
memcpy(editlatt->latt->def, ult->def, a*sizeof(BPoint));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *editLatt_to_undoLatt(void *edata)
|
static void *editLatt_to_undoLatt(void *edata)
|
||||||
{
|
{
|
||||||
UndoLattice *ult= MEM_callocN(sizeof(UndoLattice), "UndoLattice");
|
UndoLattice *ult= MEM_callocN(sizeof(UndoLattice), "UndoLattice");
|
||||||
Lattice *editlatt= (Lattice *)edata;
|
EditLatt *editlatt= (EditLatt *)edata;
|
||||||
|
|
||||||
ult->def= MEM_dupallocN(editlatt->def);
|
ult->def= MEM_dupallocN(editlatt->latt->def);
|
||||||
ult->pntsu= editlatt->pntsu;
|
ult->pntsu= editlatt->latt->pntsu;
|
||||||
ult->pntsv= editlatt->pntsv;
|
ult->pntsv= editlatt->latt->pntsv;
|
||||||
ult->pntsw= editlatt->pntsw;
|
ult->pntsw= editlatt->latt->pntsw;
|
||||||
|
|
||||||
return ult;
|
return ult;
|
||||||
}
|
}
|
||||||
@ -384,11 +394,11 @@ static void free_undoLatt(void *data)
|
|||||||
static int validate_undoLatt(void *data, void *edata)
|
static int validate_undoLatt(void *data, void *edata)
|
||||||
{
|
{
|
||||||
UndoLattice *ult= (UndoLattice*)data;
|
UndoLattice *ult= (UndoLattice*)data;
|
||||||
Lattice *editlatt= (Lattice *)edata;
|
EditLatt *editlatt= (EditLatt *)edata;
|
||||||
|
|
||||||
return (ult->pntsu == editlatt->pntsu &&
|
return (ult->pntsu == editlatt->latt->pntsu &&
|
||||||
ult->pntsv == editlatt->pntsv &&
|
ult->pntsv == editlatt->latt->pntsv &&
|
||||||
ult->pntsw == editlatt->pntsw);
|
ult->pntsw == editlatt->latt->pntsw);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *get_editlatt(bContext *C)
|
static void *get_editlatt(bContext *C)
|
||||||
|
@ -172,8 +172,8 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op)
|
|||||||
else if(obedit->type==OB_LATTICE) {
|
else if(obedit->type==OB_LATTICE) {
|
||||||
Lattice *lt= obedit->data;
|
Lattice *lt= obedit->data;
|
||||||
|
|
||||||
a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
|
a= lt->editlatt->latt->pntsu*lt->editlatt->latt->pntsv*lt->editlatt->latt->pntsw;
|
||||||
bp= lt->editlatt->def;
|
bp= lt->editlatt->latt->def;
|
||||||
while(a--) {
|
while(a--) {
|
||||||
if(bp->f1 & SELECT) {
|
if(bp->f1 & SELECT) {
|
||||||
if(v1==0) v1= nr;
|
if(v1==0) v1= nr;
|
||||||
|
@ -73,7 +73,7 @@ static Lattice *vgroup_edit_lattice(Object *ob)
|
|||||||
{
|
{
|
||||||
if(ob->type==OB_LATTICE) {
|
if(ob->type==OB_LATTICE) {
|
||||||
Lattice *lt= ob->data;
|
Lattice *lt= ob->data;
|
||||||
return (lt->editlatt)? lt->editlatt: lt;
|
return (lt->editlatt)? lt->editlatt->latt: lt;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -169,7 +169,7 @@ int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_tot)
|
|||||||
int i=0;
|
int i=0;
|
||||||
|
|
||||||
Lattice *lt= (Lattice *)id;
|
Lattice *lt= (Lattice *)id;
|
||||||
lt= (lt->editlatt)? lt->editlatt: lt;
|
lt= (lt->editlatt)? lt->editlatt->latt: lt;
|
||||||
|
|
||||||
*dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw;
|
*dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw;
|
||||||
*dvert_arr= MEM_mallocN(sizeof(void*)*(*dvert_tot), "vgroup parray from me");
|
*dvert_arr= MEM_mallocN(sizeof(void*)*(*dvert_tot), "vgroup parray from me");
|
||||||
@ -203,7 +203,7 @@ int ED_vgroup_give_array(ID *id, MDeformVert **dvert_arr, int *dvert_tot)
|
|||||||
case ID_LT:
|
case ID_LT:
|
||||||
{
|
{
|
||||||
Lattice *lt= (Lattice *)id;
|
Lattice *lt= (Lattice *)id;
|
||||||
lt= (lt->editlatt)? lt->editlatt: lt;
|
lt= (lt->editlatt)? lt->editlatt->latt: lt;
|
||||||
*dvert_arr= lt->dvert;
|
*dvert_arr= lt->dvert;
|
||||||
*dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw;
|
*dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -225,7 +225,7 @@ static void stats_object_edit(Object *obedit, SceneStats *stats)
|
|||||||
else if(obedit->type==OB_LATTICE) {
|
else if(obedit->type==OB_LATTICE) {
|
||||||
/* Lattice Edit */
|
/* Lattice Edit */
|
||||||
Lattice *lt= obedit->data;
|
Lattice *lt= obedit->data;
|
||||||
Lattice *editlatt= lt->editlatt;
|
Lattice *editlatt= lt->editlatt->latt;
|
||||||
BPoint *bp;
|
BPoint *bp;
|
||||||
int a;
|
int a;
|
||||||
|
|
||||||
|
@ -1357,10 +1357,10 @@ void lattice_foreachScreenVert(ViewContext *vc, void (*func)(void *userData, BPo
|
|||||||
{
|
{
|
||||||
Object *obedit= vc->obedit;
|
Object *obedit= vc->obedit;
|
||||||
Lattice *lt= obedit->data;
|
Lattice *lt= obedit->data;
|
||||||
BPoint *bp = lt->editlatt->def;
|
BPoint *bp = lt->editlatt->latt->def;
|
||||||
DispList *dl = find_displist(&obedit->disp, DL_VERTS);
|
DispList *dl = find_displist(&obedit->disp, DL_VERTS);
|
||||||
float *co = dl?dl->verts:NULL;
|
float *co = dl?dl->verts:NULL;
|
||||||
int i, N = lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
|
int i, N = lt->editlatt->latt->pntsu*lt->editlatt->latt->pntsv*lt->editlatt->latt->pntsw;
|
||||||
short s[2] = {IS_CLIPPED, 0};
|
short s[2] = {IS_CLIPPED, 0};
|
||||||
|
|
||||||
ED_view3d_local_clipping(vc->rv3d, obedit->obmat); /* for local clipping lookups */
|
ED_view3d_local_clipping(vc->rv3d, obedit->obmat); /* for local clipping lookups */
|
||||||
@ -1408,7 +1408,7 @@ static void drawlattice(Scene *scene, View3D *v3d, Object *ob)
|
|||||||
dl= find_displist(&ob->disp, DL_VERTS);
|
dl= find_displist(&ob->disp, DL_VERTS);
|
||||||
|
|
||||||
if(is_edit) {
|
if(is_edit) {
|
||||||
lt= lt->editlatt;
|
lt= lt->editlatt->latt;
|
||||||
|
|
||||||
cpack(0x004000);
|
cpack(0x004000);
|
||||||
|
|
||||||
|
@ -255,8 +255,8 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d
|
|||||||
BPoint *bp;
|
BPoint *bp;
|
||||||
int a;
|
int a;
|
||||||
|
|
||||||
a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
|
a= lt->editlatt->latt->pntsu*lt->editlatt->latt->pntsv*lt->editlatt->latt->pntsw;
|
||||||
bp= lt->editlatt->def;
|
bp= lt->editlatt->latt->def;
|
||||||
while(a--) {
|
while(a--) {
|
||||||
if(bp->f1 & SELECT) {
|
if(bp->f1 & SELECT) {
|
||||||
add_v3_v3(median, bp->vec);
|
add_v3_v3(median, bp->vec);
|
||||||
@ -457,8 +457,8 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d
|
|||||||
BPoint *bp;
|
BPoint *bp;
|
||||||
int a;
|
int a;
|
||||||
|
|
||||||
a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
|
a= lt->editlatt->latt->pntsu*lt->editlatt->latt->pntsv*lt->editlatt->latt->pntsw;
|
||||||
bp= lt->editlatt->def;
|
bp= lt->editlatt->latt->def;
|
||||||
while(a--) {
|
while(a--) {
|
||||||
if(bp->f1 & SELECT) {
|
if(bp->f1 & SELECT) {
|
||||||
add_v3_v3(bp->vec, median);
|
add_v3_v3(bp->vec, median);
|
||||||
|
@ -145,8 +145,8 @@ static void special_transvert_update(Scene *scene, Object *obedit)
|
|||||||
else if(obedit->type==OB_LATTICE) {
|
else if(obedit->type==OB_LATTICE) {
|
||||||
Lattice *lt= obedit->data;
|
Lattice *lt= obedit->data;
|
||||||
|
|
||||||
if(lt->editlatt->flag & LT_OUTSIDE)
|
if(lt->editlatt->latt->flag & LT_OUTSIDE)
|
||||||
outside_lattice(lt->editlatt);
|
outside_lattice(lt->editlatt->latt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -372,9 +372,9 @@ static void make_trans_verts(Object *obedit, float *min, float *max, int mode)
|
|||||||
else if(obedit->type==OB_LATTICE) {
|
else if(obedit->type==OB_LATTICE) {
|
||||||
Lattice *lt= obedit->data;
|
Lattice *lt= obedit->data;
|
||||||
|
|
||||||
bp= lt->editlatt->def;
|
bp= lt->editlatt->latt->def;
|
||||||
|
|
||||||
a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
|
a= lt->editlatt->latt->pntsu*lt->editlatt->latt->pntsv*lt->editlatt->latt->pntsw;
|
||||||
|
|
||||||
tv=transvmain= MEM_callocN(a*sizeof(TransVert), "maketransverts curve");
|
tv=transvmain= MEM_callocN(a*sizeof(TransVert), "maketransverts curve");
|
||||||
|
|
||||||
|
@ -1532,7 +1532,7 @@ static void createTransCurveVerts(bContext *C, TransInfo *t)
|
|||||||
|
|
||||||
static void createTransLatticeVerts(bContext *C, TransInfo *t)
|
static void createTransLatticeVerts(bContext *C, TransInfo *t)
|
||||||
{
|
{
|
||||||
Lattice *latt = ((Lattice*)t->obedit->data)->editlatt;
|
Lattice *latt = ((Lattice*)t->obedit->data)->editlatt->latt;
|
||||||
TransData *td = NULL;
|
TransData *td = NULL;
|
||||||
BPoint *bp;
|
BPoint *bp;
|
||||||
float mtx[3][3], smtx[3][3];
|
float mtx[3][3], smtx[3][3];
|
||||||
|
@ -659,7 +659,7 @@ void recalcData(TransInfo *t)
|
|||||||
Lattice *la= t->obedit->data;
|
Lattice *la= t->obedit->data;
|
||||||
DAG_id_flush_update(t->obedit->data, OB_RECALC_DATA); /* sets recalc flags */
|
DAG_id_flush_update(t->obedit->data, OB_RECALC_DATA); /* sets recalc flags */
|
||||||
|
|
||||||
if(la->editlatt->flag & LT_OUTSIDE) outside_lattice(la->editlatt);
|
if(la->editlatt->latt->flag & LT_OUTSIDE) outside_lattice(la->editlatt->latt);
|
||||||
}
|
}
|
||||||
else if (t->obedit->type == OB_MESH) {
|
else if (t->obedit->type == OB_MESH) {
|
||||||
EditMesh *em = ((Mesh*)t->obedit->data)->edit_mesh;
|
EditMesh *em = ((Mesh*)t->obedit->data)->edit_mesh;
|
||||||
|
@ -379,9 +379,9 @@ int calc_manipulator_stats(const bContext *C)
|
|||||||
BPoint *bp;
|
BPoint *bp;
|
||||||
Lattice *lt= obedit->data;
|
Lattice *lt= obedit->data;
|
||||||
|
|
||||||
bp= lt->editlatt->def;
|
bp= lt->editlatt->latt->def;
|
||||||
|
|
||||||
a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
|
a= lt->editlatt->latt->pntsu*lt->editlatt->latt->pntsv*lt->editlatt->latt->pntsw;
|
||||||
while(a--) {
|
while(a--) {
|
||||||
if(bp->f1 & SELECT) {
|
if(bp->f1 & SELECT) {
|
||||||
calc_tw_center(scene, bp->vec);
|
calc_tw_center(scene, bp->vec);
|
||||||
|
@ -157,6 +157,11 @@ typedef struct EditNurb {
|
|||||||
|
|
||||||
/* index data for shape keys */
|
/* index data for shape keys */
|
||||||
struct GHash *keyindex;
|
struct GHash *keyindex;
|
||||||
|
|
||||||
|
/* shape key being edited */
|
||||||
|
int shapenr;
|
||||||
|
|
||||||
|
char pad[4];
|
||||||
} EditNurb;
|
} EditNurb;
|
||||||
|
|
||||||
typedef struct Curve {
|
typedef struct Curve {
|
||||||
|
@ -36,6 +36,14 @@ struct Ipo;
|
|||||||
struct Key;
|
struct Key;
|
||||||
struct MDeformVert;
|
struct MDeformVert;
|
||||||
|
|
||||||
|
typedef struct EditLatt {
|
||||||
|
struct Lattice *latt;
|
||||||
|
|
||||||
|
int shapenr;
|
||||||
|
|
||||||
|
char pad[4];
|
||||||
|
} EditLatt;
|
||||||
|
|
||||||
typedef struct Lattice {
|
typedef struct Lattice {
|
||||||
ID id;
|
ID id;
|
||||||
|
|
||||||
@ -58,7 +66,7 @@ typedef struct Lattice {
|
|||||||
float *latticedata;
|
float *latticedata;
|
||||||
float latmat[4][4];
|
float latmat[4][4];
|
||||||
|
|
||||||
struct Lattice *editlatt;
|
struct EditLatt *editlatt;
|
||||||
} Lattice;
|
} Lattice;
|
||||||
|
|
||||||
/* ***************** LATTICE ********************* */
|
/* ***************** LATTICE ********************* */
|
||||||
|
@ -79,8 +79,8 @@ static void rna_Lattice_points_begin(CollectionPropertyIterator *iter, PointerRN
|
|||||||
Lattice *lt= (Lattice*)ptr->data;
|
Lattice *lt= (Lattice*)ptr->data;
|
||||||
int tot= lt->pntsu*lt->pntsv*lt->pntsw;
|
int tot= lt->pntsu*lt->pntsv*lt->pntsw;
|
||||||
|
|
||||||
if(lt->editlatt && lt->editlatt->def)
|
if(lt->editlatt && lt->editlatt->latt->def)
|
||||||
rna_iterator_array_begin(iter, (void*)lt->editlatt->def, sizeof(BPoint), tot, 0, NULL);
|
rna_iterator_array_begin(iter, (void*)lt->editlatt->latt->def, sizeof(BPoint), tot, 0, NULL);
|
||||||
else if(lt->def)
|
else if(lt->def)
|
||||||
rna_iterator_array_begin(iter, (void*)lt->def, sizeof(BPoint), tot, 0, NULL);
|
rna_iterator_array_begin(iter, (void*)lt->def, sizeof(BPoint), tot, 0, NULL);
|
||||||
else
|
else
|
||||||
@ -111,7 +111,7 @@ static void rna_Lattice_update_size(Main *bmain, Scene *scene, PointerRNA *ptr)
|
|||||||
if(ob->data == lt) {
|
if(ob->data == lt) {
|
||||||
resizelattice(lt, newu, newv, neww, ob);
|
resizelattice(lt, newu, newv, neww, ob);
|
||||||
if(lt->editlatt)
|
if(lt->editlatt)
|
||||||
resizelattice(lt->editlatt, newu, newv, neww, ob);
|
resizelattice(lt->editlatt->latt, newu, newv, neww, ob);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -120,7 +120,7 @@ static void rna_Lattice_update_size(Main *bmain, Scene *scene, PointerRNA *ptr)
|
|||||||
if(!ob) {
|
if(!ob) {
|
||||||
resizelattice(lt, newu, newv, neww, NULL);
|
resizelattice(lt, newu, newv, neww, NULL);
|
||||||
if(lt->editlatt)
|
if(lt->editlatt)
|
||||||
resizelattice(lt->editlatt, newu, newv, neww, NULL);
|
resizelattice(lt->editlatt->latt, newu, newv, neww, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
rna_Lattice_update_data(bmain, scene, ptr);
|
rna_Lattice_update_data(bmain, scene, ptr);
|
||||||
@ -136,26 +136,39 @@ static void rna_Lattice_outside_set(PointerRNA *ptr, int value)
|
|||||||
outside_lattice(lt);
|
outside_lattice(lt);
|
||||||
|
|
||||||
if(lt->editlatt) {
|
if(lt->editlatt) {
|
||||||
if(value) lt->editlatt->flag |= LT_OUTSIDE;
|
if(value) lt->editlatt->latt->flag |= LT_OUTSIDE;
|
||||||
else lt->editlatt->flag &= ~LT_OUTSIDE;
|
else lt->editlatt->latt->flag &= ~LT_OUTSIDE;
|
||||||
|
|
||||||
outside_lattice(lt->editlatt);
|
outside_lattice(lt->editlatt->latt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int rna_Lattice_size_editable(PointerRNA *ptr)
|
||||||
|
{
|
||||||
|
Lattice *lt= (Lattice*)ptr->data;
|
||||||
|
|
||||||
|
return lt->key == NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static void rna_Lattice_points_u_set(PointerRNA *ptr, int value)
|
static void rna_Lattice_points_u_set(PointerRNA *ptr, int value)
|
||||||
{
|
{
|
||||||
((Lattice*)ptr->data)->opntsu= CLAMPIS(value, 1, 64);
|
Lattice *lt= (Lattice*)ptr->data;
|
||||||
|
|
||||||
|
lt->opntsu= CLAMPIS(value, 1, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rna_Lattice_points_v_set(PointerRNA *ptr, int value)
|
static void rna_Lattice_points_v_set(PointerRNA *ptr, int value)
|
||||||
{
|
{
|
||||||
((Lattice*)ptr->data)->opntsv= CLAMPIS(value, 1, 64);
|
Lattice *lt= (Lattice*)ptr->data;
|
||||||
|
|
||||||
|
lt->opntsv= CLAMPIS(value, 1, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rna_Lattice_points_w_set(PointerRNA *ptr, int value)
|
static void rna_Lattice_points_w_set(PointerRNA *ptr, int value)
|
||||||
{
|
{
|
||||||
((Lattice*)ptr->data)->opntsw= CLAMPIS(value, 1, 64);
|
Lattice *lt= (Lattice*)ptr->data;
|
||||||
|
|
||||||
|
lt->opntsw= CLAMPIS(value, 1, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rna_Lattice_vg_name_set(PointerRNA *ptr, const char *value)
|
static void rna_Lattice_vg_name_set(PointerRNA *ptr, const char *value)
|
||||||
@ -164,7 +177,7 @@ static void rna_Lattice_vg_name_set(PointerRNA *ptr, const char *value)
|
|||||||
strcpy(lt->vgroup, value);
|
strcpy(lt->vgroup, value);
|
||||||
|
|
||||||
if(lt->editlatt)
|
if(lt->editlatt)
|
||||||
strcpy(lt->editlatt->vgroup, value);
|
strcpy(lt->editlatt->latt->vgroup, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -216,22 +229,25 @@ static void rna_def_lattice(BlenderRNA *brna)
|
|||||||
RNA_def_property_int_sdna(prop, NULL, "pntsu");
|
RNA_def_property_int_sdna(prop, NULL, "pntsu");
|
||||||
RNA_def_property_int_funcs(prop, NULL, "rna_Lattice_points_u_set", NULL);
|
RNA_def_property_int_funcs(prop, NULL, "rna_Lattice_points_u_set", NULL);
|
||||||
RNA_def_property_range(prop, 1, 64);
|
RNA_def_property_range(prop, 1, 64);
|
||||||
RNA_def_property_ui_text(prop, "U", "Points in U direction");
|
RNA_def_property_ui_text(prop, "U", "Points in U direction (can't be changed when there are shape keys)");
|
||||||
RNA_def_property_update(prop, 0, "rna_Lattice_update_size");
|
RNA_def_property_update(prop, 0, "rna_Lattice_update_size");
|
||||||
|
RNA_def_property_editable_func(prop, "rna_Lattice_size_editable");
|
||||||
|
|
||||||
prop= RNA_def_property(srna, "points_v", PROP_INT, PROP_NONE);
|
prop= RNA_def_property(srna, "points_v", PROP_INT, PROP_NONE);
|
||||||
RNA_def_property_int_sdna(prop, NULL, "pntsv");
|
RNA_def_property_int_sdna(prop, NULL, "pntsv");
|
||||||
RNA_def_property_int_funcs(prop, NULL, "rna_Lattice_points_v_set", NULL);
|
RNA_def_property_int_funcs(prop, NULL, "rna_Lattice_points_v_set", NULL);
|
||||||
RNA_def_property_range(prop, 1, 64);
|
RNA_def_property_range(prop, 1, 64);
|
||||||
RNA_def_property_ui_text(prop, "V", "Points in V direction");
|
RNA_def_property_ui_text(prop, "V", "Points in V direction (can't be changed when there are shape keys)");
|
||||||
RNA_def_property_update(prop, 0, "rna_Lattice_update_size");
|
RNA_def_property_update(prop, 0, "rna_Lattice_update_size");
|
||||||
|
RNA_def_property_editable_func(prop, "rna_Lattice_size_editable");
|
||||||
|
|
||||||
prop= RNA_def_property(srna, "points_w", PROP_INT, PROP_NONE);
|
prop= RNA_def_property(srna, "points_w", PROP_INT, PROP_NONE);
|
||||||
RNA_def_property_int_sdna(prop, NULL, "pntsw");
|
RNA_def_property_int_sdna(prop, NULL, "pntsw");
|
||||||
RNA_def_property_int_funcs(prop, NULL, "rna_Lattice_points_w_set", NULL);
|
RNA_def_property_int_funcs(prop, NULL, "rna_Lattice_points_w_set", NULL);
|
||||||
RNA_def_property_range(prop, 1, 64);
|
RNA_def_property_range(prop, 1, 64);
|
||||||
RNA_def_property_ui_text(prop, "W", "Points in W direction");
|
RNA_def_property_ui_text(prop, "W", "Points in W direction (can't be changed when there are shape keys)");
|
||||||
RNA_def_property_update(prop, 0, "rna_Lattice_update_size");
|
RNA_def_property_update(prop, 0, "rna_Lattice_update_size");
|
||||||
|
RNA_def_property_editable_func(prop, "rna_Lattice_size_editable");
|
||||||
|
|
||||||
prop= RNA_def_property(srna, "interpolation_type_u", PROP_ENUM, PROP_NONE);
|
prop= RNA_def_property(srna, "interpolation_type_u", PROP_ENUM, PROP_NONE);
|
||||||
RNA_def_property_enum_sdna(prop, NULL, "typeu");
|
RNA_def_property_enum_sdna(prop, NULL, "typeu");
|
||||||
|
@ -128,6 +128,8 @@ EnumPropertyItem object_type_curve_items[] = {
|
|||||||
#include "ED_mesh.h"
|
#include "ED_mesh.h"
|
||||||
#include "ED_object.h"
|
#include "ED_object.h"
|
||||||
#include "ED_particle.h"
|
#include "ED_particle.h"
|
||||||
|
#include "ED_curve.h"
|
||||||
|
#include "ED_lattice.h"
|
||||||
|
|
||||||
static void rna_Object_internal_update(Main *bmain, Scene *scene, PointerRNA *ptr)
|
static void rna_Object_internal_update(Main *bmain, Scene *scene, PointerRNA *ptr)
|
||||||
{
|
{
|
||||||
@ -182,12 +184,24 @@ void rna_Object_internal_update_data(Main *bmain, Scene *scene, PointerRNA *ptr)
|
|||||||
void rna_Object_active_shape_update(Main *bmain, Scene *scene, PointerRNA *ptr)
|
void rna_Object_active_shape_update(Main *bmain, Scene *scene, PointerRNA *ptr)
|
||||||
{
|
{
|
||||||
Object *ob= ptr->id.data;
|
Object *ob= ptr->id.data;
|
||||||
int editmode= (scene->obedit == ob && ob->type == OB_MESH);
|
|
||||||
|
|
||||||
if(editmode) {
|
if(scene->obedit == ob) {
|
||||||
/* exit/enter editmode to get new shape */
|
/* exit/enter editmode to get new shape */
|
||||||
load_editMesh(scene, ob);
|
switch(ob->type) {
|
||||||
make_editMesh(scene, ob);
|
case OB_MESH:
|
||||||
|
load_editMesh(scene, ob);
|
||||||
|
make_editMesh(scene, ob);
|
||||||
|
break;
|
||||||
|
case OB_CURVE:
|
||||||
|
case OB_SURF:
|
||||||
|
load_editNurb(ob);
|
||||||
|
make_editNurb(ob);
|
||||||
|
break;
|
||||||
|
case OB_LATTICE:
|
||||||
|
load_editLatt(ob);
|
||||||
|
make_editLatt(ob);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rna_Object_internal_update_data(bmain, scene, ptr);
|
rna_Object_internal_update_data(bmain, scene, ptr);
|
||||||
|
Loading…
Reference in New Issue
Block a user