Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2004-03-21 02:59:57 +0300
committerDaniel Dunbar <daniel@zuster.org>2004-03-21 02:59:57 +0300
commit44a74dbf29cb17544efbcfd425d3427bd3dfc61a (patch)
tree6e1620cfee8414c4d2d56dc8b5f3dcbd94b9f99c /source
parentaedf456938bf5611d8e1668599884ff3d957c643 (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.h2
-rw-r--r--source/blender/blenkernel/intern/material.c12
-rw-r--r--source/blender/blenkernel/intern/mesh.c24
-rw-r--r--source/blender/blenkernel/intern/object.c3
-rw-r--r--source/blender/include/BIF_editmesh.h3
-rw-r--r--source/blender/src/buttons_editing.c12
-rw-r--r--source/blender/src/buttons_object.c33
-rw-r--r--source/blender/src/editface.c2
-rw-r--r--source/blender/src/editmesh.c26
-rw-r--r--source/blender/src/editobject.c2
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;