forked from bartvdbraak/blender
- decided it made more sense to make a key_get_active function, switched
to that in editmesh as well as for edit{curve,lattice} - added a G.editModeTitleExtra string that gets displayed in header info string in editmode. currently used to display "(Key)" when editing a key (before there was not UI level display of this info).
This commit is contained in:
parent
5263d588c1
commit
0be013010f
@ -80,6 +80,7 @@ typedef struct Global {
|
||||
struct Scene *scene; /* denk aan file.c */
|
||||
struct bScreen *curscreen;
|
||||
struct Object *obedit;
|
||||
char editModeTitleExtra[64];
|
||||
|
||||
/* fonts, allocated global data */
|
||||
struct BMF_Font *font, *fonts, *fontss;
|
||||
|
@ -60,5 +60,7 @@ void do_spec_key(struct Key *key);
|
||||
|
||||
void unlock_all_keys(void);
|
||||
|
||||
struct KeyBlock *key_get_active(struct Key *keyData);
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -80,7 +80,6 @@ void mesh_set_smooth_flag(struct Object *meshOb, int enableSmooth);
|
||||
|
||||
struct BoundBox *mesh_get_bb(struct Mesh *me);
|
||||
void mesh_get_texspace(struct Mesh *me, float *loc_r, float *rot_r, float *size_r);
|
||||
struct KeyBlock *mesh_get_active_key(struct Mesh *me);
|
||||
|
||||
void make_edges(struct Mesh *me);
|
||||
|
||||
|
@ -1206,3 +1206,16 @@ void do_spec_key(Key *key)
|
||||
else if(idcode==ID_LT) do_latt_key( (Lattice *)key->from);
|
||||
|
||||
}
|
||||
|
||||
KeyBlock *key_get_active(Key *keyData)
|
||||
{
|
||||
if (keyData) {
|
||||
KeyBlock *key;
|
||||
|
||||
for (key=keyData->block.first; key; key= key->next)
|
||||
if (key->flag&SELECT)
|
||||
return key;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1287,14 +1287,3 @@ void mesh_set_smooth_flag(Object *meshOb, int enableSmooth) {
|
||||
|
||||
DAG_object_flush_update(G.scene, meshOb, OB_RECALC_DATA);
|
||||
}
|
||||
|
||||
KeyBlock *mesh_get_active_key(Mesh *me)
|
||||
{
|
||||
KeyBlock *key;
|
||||
|
||||
for (key=me->key->block.first; key; key= key->next)
|
||||
if (key->flag&SELECT)
|
||||
break;
|
||||
|
||||
return key;
|
||||
}
|
||||
|
@ -69,6 +69,7 @@
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_object.h"
|
||||
#include "BKE_main.h"
|
||||
#include "BKE_key.h"
|
||||
|
||||
#include "BIF_editmode_undo.h"
|
||||
#include "BIF_gl.h"
|
||||
@ -238,7 +239,7 @@ void load_editNurb()
|
||||
/* load editNurb in object */
|
||||
Curve *cu= 0;
|
||||
Nurb *nu, *newnu;
|
||||
KeyBlock *actkey=0;
|
||||
KeyBlock *actkey;
|
||||
|
||||
if(G.obedit==0) return;
|
||||
|
||||
@ -249,24 +250,17 @@ void load_editNurb()
|
||||
cu= G.obedit->data;
|
||||
|
||||
/* are there keys? */
|
||||
if(cu->key) {
|
||||
actkey= cu->key->block.first;
|
||||
while(actkey) {
|
||||
if(actkey->flag & SELECT) break;
|
||||
actkey= actkey->next;
|
||||
}
|
||||
|
||||
if(actkey) {
|
||||
/* active key: the vertices */
|
||||
|
||||
if(G.totvert) {
|
||||
if(actkey->data) MEM_freeN(actkey->data);
|
||||
|
||||
actkey->data= MEM_callocN(cu->key->elemsize*G.totvert, "actkey->data");
|
||||
actkey->totelem= G.totvert;
|
||||
actkey = key_get_active(cu->key);
|
||||
if(actkey) {
|
||||
/* active key: the vertices */
|
||||
|
||||
curve_to_key(cu, actkey, &editNurb);
|
||||
}
|
||||
if(G.totvert) {
|
||||
if(actkey->data) MEM_freeN(actkey->data);
|
||||
|
||||
actkey->data= MEM_callocN(cu->key->elemsize*G.totvert, "actkey->data");
|
||||
actkey->totelem= G.totvert;
|
||||
|
||||
curve_to_key(cu, actkey, &editNurb);
|
||||
}
|
||||
}
|
||||
|
||||
@ -296,7 +290,6 @@ void load_editNurb()
|
||||
}
|
||||
|
||||
lastnu= NULL; /* for selected */
|
||||
|
||||
}
|
||||
|
||||
void make_editNurb()
|
||||
@ -304,7 +297,7 @@ void make_editNurb()
|
||||
/* make copy of baseNurb in editNurb */
|
||||
Curve *cu=0;
|
||||
Nurb *nu, *newnu;
|
||||
KeyBlock *actkey=0;
|
||||
KeyBlock *actkey;
|
||||
|
||||
if(G.obedit==NULL) return;
|
||||
|
||||
@ -323,16 +316,10 @@ void make_editNurb()
|
||||
nu= nu->next;
|
||||
}
|
||||
|
||||
if(cu->key) {
|
||||
actkey= cu->key->block.first;
|
||||
while(actkey) {
|
||||
if(actkey->flag & SELECT) break;
|
||||
actkey= actkey->next;
|
||||
}
|
||||
|
||||
if(actkey) {
|
||||
key_to_curve(actkey, cu, &editNurb);
|
||||
}
|
||||
actkey = key_get_active(cu->key);
|
||||
if(actkey) {
|
||||
strcpy(G.editModeTitleExtra, "(Key) ");
|
||||
key_to_curve(actkey, cu, &editNurb);
|
||||
}
|
||||
}
|
||||
else G.obedit= NULL;
|
||||
|
@ -108,22 +108,15 @@ static void setflagsLatt(int flag)
|
||||
void make_editLatt(void)
|
||||
{
|
||||
Lattice *lt;
|
||||
KeyBlock *actkey=0;
|
||||
KeyBlock *actkey;
|
||||
|
||||
free_editLatt();
|
||||
|
||||
lt= G.obedit->data;
|
||||
|
||||
/* keys? */
|
||||
if(lt->key) {
|
||||
actkey= lt->key->block.first;
|
||||
while(actkey) {
|
||||
if(actkey->flag & SELECT) break;
|
||||
actkey= actkey->next;
|
||||
}
|
||||
}
|
||||
|
||||
actkey = key_get_active(lt->key);
|
||||
if(actkey) {
|
||||
strcpy(G.editModeTitleExtra, "(Key) ");
|
||||
key_to_latt(actkey, lt);
|
||||
}
|
||||
|
||||
@ -138,22 +131,14 @@ void make_editLatt(void)
|
||||
void load_editLatt(void)
|
||||
{
|
||||
Lattice *lt;
|
||||
KeyBlock *actkey=0;
|
||||
KeyBlock *actkey;
|
||||
BPoint *bp;
|
||||
float *fp;
|
||||
int tot;
|
||||
|
||||
lt= G.obedit->data;
|
||||
|
||||
/* are there keys? */
|
||||
if(lt->key) {
|
||||
actkey= lt->key->block.first;
|
||||
while(actkey) {
|
||||
if(actkey->flag & SELECT) break;
|
||||
actkey= actkey->next;
|
||||
}
|
||||
}
|
||||
|
||||
actkey = key_get_active(lt->key);
|
||||
if(actkey) {
|
||||
/* active key: vertices */
|
||||
tot= editLatt->pntsu*editLatt->pntsv*editLatt->pntsw;
|
||||
@ -170,7 +155,7 @@ void load_editLatt(void)
|
||||
bp++;
|
||||
}
|
||||
|
||||
if(actkey) showkeypos(lt->key, actkey);
|
||||
showkeypos(lt->key, actkey);
|
||||
}
|
||||
else {
|
||||
|
||||
|
@ -660,9 +660,9 @@ void make_editMesh()
|
||||
/* initialize fastmalloc for editmesh */
|
||||
init_editmesh_fastmalloc(G.editMesh, me->totvert, me->totedge, me->totface);
|
||||
|
||||
actkey = mesh_get_active_key(me);
|
||||
|
||||
actkey = key_get_active(me->key);
|
||||
if(actkey) {
|
||||
strcpy(G.editModeTitleExtra, "(Key) ");
|
||||
key_to_mesh(actkey, me);
|
||||
tot= actkey->totelem;
|
||||
}
|
||||
@ -1168,7 +1168,7 @@ void load_editMesh(void)
|
||||
|
||||
/* are there keys? */
|
||||
if(me->key) {
|
||||
KeyBlock *currkey, *actkey = mesh_get_active_key(me);
|
||||
KeyBlock *currkey, *actkey = key_get_active(me->key);
|
||||
|
||||
/* Lets reorder the key data so that things line up roughly
|
||||
* with the way things were before editmode */
|
||||
|
@ -1366,6 +1366,8 @@ void enter_editmode(void)
|
||||
if(base==0) return;
|
||||
if((G.vd==NULL || (base->lay & G.vd->lay))==0) return;
|
||||
|
||||
strcpy(G.editModeTitleExtra, "");
|
||||
|
||||
ob= base->object;
|
||||
if(ob->data==0) return;
|
||||
|
||||
|
@ -1775,25 +1775,27 @@ static void info_text(int x, int y)
|
||||
int hsize;
|
||||
|
||||
if(G.obedit) {
|
||||
char *s = infostr;
|
||||
|
||||
s+= sprintf(s, "%s", G.editModeTitleExtra);
|
||||
if(G.obedit->type==OB_MESH) {
|
||||
if(G.scene->selectmode & SCE_SELECT_VERTEX)
|
||||
sprintf(infostr,"Ve:%d-%d | Ed:%d-%d | Fa:%d-%d | Mem:%.2fM ",
|
||||
G.totvertsel, G.totvert, G.totedgesel, G.totedge, G.totfacesel, G.totface, (mem_in_use>>10)/1024.0);
|
||||
s+= sprintf(s,"Ve:%d-%d | Ed:%d-%d | Fa:%d-%d",
|
||||
G.totvertsel, G.totvert, G.totedgesel, G.totedge, G.totfacesel, G.totface);
|
||||
else if(G.scene->selectmode & SCE_SELECT_EDGE)
|
||||
sprintf(infostr,"Ed:%d-%d | Fa:%d-%d | Mem:%.2fM ",
|
||||
G.totedgesel, G.totedge, G.totfacesel, G.totface, (mem_in_use>>10)/1024.0);
|
||||
s+= sprintf(s,"Ed:%d-%d | Fa:%d-%d",
|
||||
G.totedgesel, G.totedge, G.totfacesel, G.totface);
|
||||
else
|
||||
sprintf(infostr,"Fa:%d-%d | Mem:%.2fM ",
|
||||
G.totfacesel, G.totface, (mem_in_use>>10)/1024.0);
|
||||
s+= sprintf(s,"Fa:%d-%d", G.totfacesel, G.totface);
|
||||
}
|
||||
else if(G.obedit->type==OB_ARMATURE) {
|
||||
sprintf(infostr,"Ve:%d-%d | Bo:%d-%d | Mem:%.2fM ",
|
||||
G.totvertsel, G.totvert, G.totbonesel, G.totbone, (mem_in_use>>10)/1024.0);
|
||||
s+= sprintf(s,"Ve:%d-%d | Bo:%d-%d", G.totvertsel, G.totvert, G.totbonesel, G.totbone);
|
||||
}
|
||||
else {
|
||||
sprintf(infostr,"Ve:%d-%d | Mem:%.2fM ",
|
||||
G.totvertsel, G.totvert, (mem_in_use>>10)/1024.0);
|
||||
s+= sprintf(s,"Ve:%d-%d", G.totvertsel, G.totvert);
|
||||
}
|
||||
|
||||
sprintf(s," | Mem:%.2fM", (mem_in_use>>10)/1024.0);
|
||||
}
|
||||
else if(G.obpose) {
|
||||
sprintf(infostr,"Bo:%d-%d | Mem:%.2fM ",
|
||||
|
Loading…
Reference in New Issue
Block a user