diff options
author | Daniel Dunbar <daniel@zuster.org> | 2004-03-21 02:59:57 +0300 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2004-03-21 02:59:57 +0300 |
commit | 44a74dbf29cb17544efbcfd425d3427bd3dfc61a (patch) | |
tree | 6e1620cfee8414c4d2d56dc8b5f3dcbd94b9f99c /source | |
parent | aedf456938bf5611d8e1668599884ff3d957c643 (diff) |
- added editmesh_[de]select_by_material function
- added mesh_set_smooth_flag, mesh_delete_material_index function
- isolated some globals
- got rid of reliance on meshdata in buttons_editing.c and material.c
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/BKE_mesh.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/material.c | 12 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mesh.c | 24 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 3 | ||||
-rw-r--r-- | source/blender/include/BIF_editmesh.h | 3 | ||||
-rw-r--r-- | source/blender/src/buttons_editing.c | 12 | ||||
-rw-r--r-- | source/blender/src/buttons_object.c | 33 | ||||
-rw-r--r-- | source/blender/src/editface.c | 2 | ||||
-rw-r--r-- | source/blender/src/editmesh.c | 26 | ||||
-rw-r--r-- | source/blender/src/editobject.c | 2 |
10 files changed, 73 insertions, 46 deletions
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index f7d3f4863bc..e9edf8a770a 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -75,6 +75,8 @@ void copy_dverts(struct MDeformVert *dst, struct MDeformVert *src, int totvert); int mesh_uses_displist(struct Mesh *me); float get_mvert_weight (struct Object *ob, int vert, int defgroup); int update_realtime_texture(struct TFace *tface, double time); +void mesh_delete_material_index(struct Mesh *me, int index); +void mesh_set_smooth_flag(struct Mesh *me, int enableSmooth); /** Generate the mesh vertex normals by averaging over connected faces. * diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index 9a61c9a2eaa..5d52e4750a1 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -39,7 +39,6 @@ #include "DNA_material_types.h" #include "DNA_texture_types.h" #include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" #include "DNA_object_types.h" #include "DNA_curve_types.h" #include "DNA_meta_types.h" @@ -679,10 +678,8 @@ void delete_material_index() { Material *mao, ***matarar; Object *ob, *obt; - Mesh *me; Curve *cu; Nurb *nu; - MFace *mface; short *totcolp; int a, actcol; @@ -745,13 +742,8 @@ void delete_material_index() /* check indices from mesh */ if(ob->type==OB_MESH) { - me= get_mesh(ob); - mface= me->mface; - a= me->totface; - while(a--) { - if(mface->mat_nr && mface->mat_nr>=actcol-1) mface->mat_nr--; - mface++; - } + Mesh *me= get_mesh(ob); + mesh_delete_material_index(me, actcol-1); makeDispList(ob); } else if ELEM(ob->type, OB_CURVE, OB_SURF) { diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 9b9ae77531f..30221bc21dd 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -1148,3 +1148,27 @@ void mesh_calculate_vertex_normals(Mesh *me) MEM_freeN(tempNorms); } + +void mesh_delete_material_index(Mesh *me, int index) { + int i; + + for (i=0; i<me->totface; i++) { + MFace *mf = &((MFace*) me->mface)[i]; + if (mf->mat_nr && mf->mat_nr>=index) + mf->mat_nr--; + } +} + +void mesh_set_smooth_flag(Mesh *me, int enableSmooth) { + int i; + + for (i=0; i<me->totface; i++) { + MFace *mf = &((MFace*) me->mface)[i]; + + if (enableSmooth) { + mf->flag |= ME_SMOOTH; + } else { + mf->flag &= ~ME_SMOOTH; + } + } +} diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 85082c71c81..9f3f63ba478 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1025,7 +1025,6 @@ void ob_parlimb(Object *ob, Object *par, float mat[][4]) void give_parvert(Object *par, int nr, float *vec) { Mesh *me; - MVert *mvert; EditVert *eve; /* extern ListBase editNurb; already in bad lev calls */ Nurb *nu; @@ -1065,7 +1064,7 @@ void give_parvert(Object *par, int nr, float *vec) VECCOPY(vec, fp); } else { - mvert= me->mvert + nr; + MVert *mvert= me->mvert + nr; VECCOPY(vec, mvert->co); } } diff --git a/source/blender/include/BIF_editmesh.h b/source/blender/include/BIF_editmesh.h index b89da31103f..ce80eb9ca85 100644 --- a/source/blender/include/BIF_editmesh.h +++ b/source/blender/include/BIF_editmesh.h @@ -164,5 +164,8 @@ void select_more(void); void select_less(void); void selectrandom_mesh(void); +void editmesh_select_by_material(int index); +void editmesh_deselect_by_material(int index); + #endif diff --git a/source/blender/src/buttons_editing.c b/source/blender/src/buttons_editing.c index 503ebf3e510..19cfb5d291c 100644 --- a/source/blender/src/buttons_editing.c +++ b/source/blender/src/buttons_editing.c @@ -152,12 +152,12 @@ #include "butspace.h" // own module -int decim_faces=0; -short degr= 90, step= 9, turn= 1, editbutflag= 1; -float doublimit= 0.001; -float editbutvweight=1; -float extr_offs= 1.0, editbutweight=1.0, editbutsize=0.1, cumapsize= 1.0; - +static int decim_faces=0; +static short degr= 90, step= 9, turn= 1; +static float extr_offs= 1.0; +static float editbutweight=1.0; +short editbutflag= 1; +float doublimit= 0.001, editbutvweight=1, editbutsize=0.1; diff --git a/source/blender/src/buttons_object.c b/source/blender/src/buttons_object.c index 4e499ef3cb2..0155371c44c 100644 --- a/source/blender/src/buttons_object.c +++ b/source/blender/src/buttons_object.c @@ -95,7 +95,6 @@ #include "DNA_material_types.h" #include "DNA_meta_types.h" #include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" #include "DNA_object_types.h" #include "DNA_radio_types.h" #include "DNA_screen_types.h" @@ -131,7 +130,8 @@ #include "butspace.h" // own module -float hspeed=0.1, prspeed=0.0, prlen=0.0; +static float hspeed=0.1, prspeed=0.0; +float prlen=0.0; @@ -938,7 +938,6 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an Mesh *me; Nurb *nu; Curve *cu; - MFace *mface; BezTriple *bezt; BPoint *bp; unsigned int local; @@ -1017,23 +1016,10 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an case B_MATDESEL: if(G.obedit) { if(G.obedit->type == OB_MESH) { - evl= G.edvl.first; - while(evl) { - if(evl->mat_nr== G.obedit->actcol-1) { - if(event==B_MATSEL) { - if(evl->v1->h==0) evl->v1->f |= 1; - if(evl->v2->h==0) evl->v2->f |= 1; - if(evl->v3->h==0) evl->v3->f |= 1; - if(evl->v4 && evl->v4->h==0) evl->v4->f |= 1; - } - else { - if(evl->v1->h==0) evl->v1->f &= ~1; - if(evl->v2->h==0) evl->v2->f &= ~1; - if(evl->v3->h==0) evl->v3->f &= ~1; - if(evl->v4 && evl->v4->h==0) evl->v4->f &= ~1; - } - } - evl= evl->next; + if (event==B_MATSEL) { + editmesh_select_by_material(G.obedit->actcol-1); + } else { + editmesh_deselect_by_material(G.obedit->actcol-1); } allqueue(REDRAWVIEW3D, 0); } @@ -1151,12 +1137,7 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an if(TESTBASELIB(base)) { if(base->object->type==OB_MESH) { me= base->object->data; - mface= me->mface; - for(a=0; a<me->totface; a++, mface++) { - if(event==B_SETSMOOTH) mface->flag |= ME_SMOOTH; - else mface->flag &= ~ME_SMOOTH; - } - + mesh_set_smooth_flag(me, (event==B_SETSMOOTH)); makeDispList(base->object); } else if ELEM(base->object->type, OB_SURF, OB_CURVE) { diff --git a/source/blender/src/editface.c b/source/blender/src/editface.c index 9a6f4f04ffe..6d2bcb29ab6 100644 --- a/source/blender/src/editface.c +++ b/source/blender/src/editface.c @@ -95,6 +95,7 @@ #include "BSE_trans_types.h" #endif /* NAN_TPT */ +static cumapsize= 1.0; TFace *lasttface=0; void set_lasttface() @@ -633,7 +634,6 @@ void uv_autocalc_tface() MFace *mface; MVert *mv; Object *ob; - extern float cumapsize; /* buttons.c */ float dx, dy, min[3], cent[3], max[3], no[3], *loc, mat[4][4]; float fac = 1.0; diff --git a/source/blender/src/editmesh.c b/source/blender/src/editmesh.c index d88b990e19a..f82eaeeab28 100644 --- a/source/blender/src/editmesh.c +++ b/source/blender/src/editmesh.c @@ -9638,3 +9638,29 @@ void vertex_loop_select() SetBlenderCursor(SYSCURSOR); return; } + +void editmesh_select_by_material(int index) { + EditVlak *evl; + + for (evl=G.edvl.first; evl; evl= evl->next) { + if (evl->mat_nr==index) { + if(evl->v1->h==0) evl->v1->f |= 1; + if(evl->v2->h==0) evl->v2->f |= 1; + if(evl->v3->h==0) evl->v3->f |= 1; + if(evl->v4 && evl->v4->h==0) evl->v4->f |= 1; + } + } +} + +void editmesh_deselect_by_material(int index) { + EditVlak *evl; + + for (evl=G.edvl.first; evl; evl= evl->next) { + if (evl->mat_nr==index) { + if(evl->v1->h==0) evl->v1->f &= ~1; + if(evl->v2->h==0) evl->v2->f &= ~1; + if(evl->v3->h==0) evl->v3->f &= ~1; + if(evl->v4 && evl->v4->h==0) evl->v4->f &= ~1; + } + } +} diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c index 63a0d409a77..1e476134c37 100644 --- a/source/blender/src/editobject.c +++ b/source/blender/src/editobject.c @@ -1162,13 +1162,13 @@ void docentre(void) Object *ob; Mesh *me, *tme; Curve *cu; - MVert *mvert; // BezTriple *bezt; // BPoint *bp; Nurb *nu, *nu1; EditVert *eve; float cent[3], centn[3], min[3], max[3], omat[3][3]; int a; + MVert *mvert; if(G.scene->id.lib) return; |