[finally! the commit went through]

=bmesh=

First pass at post-merge stabilization.  Seems to work well enough now, but
I need to do more testing.  Also need to go through bmesh_class.h and make
sure the design/headers there make sense.
This commit is contained in:
Joseph Eagar
2010-07-22 00:18:35 +00:00
parent c11c196efa
commit 8bcb71aebd
10 changed files with 25 additions and 137 deletions

View File

@@ -3064,6 +3064,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
ccgdm->dm.getMinMax = cgdm_getMinMax;
ccgdm->dm.getNumVerts = cgdm_getNumVerts;
ccgdm->dm.getNumEdges = cgdm_getNumEdges;
ccgdm->dm.getNumTessFaces = cgdm_getNumTessFaces;
ccgdm->dm.getNumFaces = cgdm_getNumTessFaces;

View File

@@ -100,7 +100,7 @@ EPath *edge_path_new(PathBase *pb, BMVert *start)
float edge_weight_path(EPath *path, EdgeData *edata)
{
EPathNode *node;
float w;
float w = 0.0;
for (node=path->nodes.first; node; node=node->next) {
if (node->e) {

View File

@@ -312,6 +312,8 @@ void bmesh_to_mesh_exec(BMesh *bm, BMOperator *op) {
numTex = CustomData_number_of_layers(&bm->pdata, CD_MTEXPOLY);
numCol = CustomData_number_of_layers(&bm->ldata, CD_MLOOPCOL);
ototvert = me->totvert;
/* new Vertex block */
if(bm->totvert==0) mvert= NULL;

View File

@@ -934,10 +934,8 @@ void esubdivide_exec(BMesh *bmesh, BMOperator *op)
}
}
i++;
continue;
} else if (!pat) {
i++;
continue;
}
@@ -974,7 +972,7 @@ void esubdivide_exec(BMesh *bmesh, BMOperator *op)
BLI_array_free(loops);
BMO_Flag_To_Slot(bmesh, op, "outinner",
ELE_INNER, BM_ALL);
ELE_INNER, BM_ALL);
BMO_Flag_To_Slot(bmesh, op, "outsplit",
ELE_SPLIT, BM_ALL);

View File

@@ -668,31 +668,6 @@ static int mesh_extrude_region_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
static int mesh_extrude_region_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
Object *obedit= CTX_data_edit_object(C);
BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
float nor[3];
int constraint_axis[3] = {0, 0, 1};
int tmode;
tmode = EDBM_Extrude_edge(obedit, em, BM_SELECT, nor);
DAG_id_flush_update(obedit->data, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data);
RNA_enum_set(op->ptr, "proportional", 0);
RNA_boolean_set(op->ptr, "mirror", 0);
if (tmode == 'n') {
RNA_enum_set(op->ptr, "constraint_orientation", V3D_MANIP_NORMAL);
RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
}
WM_operator_name_call(C, "TRANSFORM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
return OPERATOR_FINISHED;
}
void MESH_OT_extrude_region(wmOperatorType *ot)
{
/* identifiers */
@@ -700,15 +675,13 @@ void MESH_OT_extrude_region(wmOperatorType *ot)
ot->idname= "MESH_OT_extrude_region";
/* api callbacks */
ot->invoke= mesh_extrude_region_invoke;
//ot->invoke= mesh_extrude_region_invoke;
ot->exec= mesh_extrude_region_exec;
ot->poll= ED_operator_editmesh;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* to give to transform */
Transform_Properties(ot, P_PROPORTIONAL|P_CONSTRAINT|P_AXIS);
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
}
@@ -725,31 +698,6 @@ static int mesh_extrude_verts_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
static int mesh_extrude_verts_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
Object *obedit= CTX_data_edit_object(C);
BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
float nor[3];
int constraint_axis[3] = {0, 0, 1};
int tmode;
tmode = EDBM_Extrude_verts_indiv(em, op, BM_SELECT, nor);
DAG_id_flush_update(obedit->data, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data);
RNA_enum_set(op->ptr, "proportional", 0);
RNA_boolean_set(op->ptr, "mirror", 0);
if (tmode == 'n') {
RNA_enum_set(op->ptr, "constraint_orientation", V3D_MANIP_NORMAL);
RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
}
WM_operator_name_call(C, "TRANSFORM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
return OPERATOR_FINISHED;
}
void MESH_OT_extrude_verts_indiv(wmOperatorType *ot)
{
/* identifiers */
@@ -757,7 +705,6 @@ void MESH_OT_extrude_verts_indiv(wmOperatorType *ot)
ot->idname= "MESH_OT_extrude_verts_indiv";
/* api callbacks */
ot->invoke= mesh_extrude_verts_invoke;
ot->exec= mesh_extrude_verts_exec;
ot->poll= ED_operator_editmesh;
@@ -765,7 +712,6 @@ void MESH_OT_extrude_verts_indiv(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* to give to transform */
Transform_Properties(ot, P_PROPORTIONAL|P_CONSTRAINT|P_AXIS);
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
}
@@ -782,30 +728,6 @@ static int mesh_extrude_edges_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
static int mesh_extrude_edges_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
Object *obedit= CTX_data_edit_object(C);
BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
float nor[3];
int tmode;
tmode = EDBM_Extrude_edges_indiv(em, op, BM_SELECT, nor);
DAG_id_flush_update(obedit->data, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data);
RNA_enum_set(op->ptr, "proportional", 0);
RNA_boolean_set(op->ptr, "mirror", 0);
/*if (tmode == 'n') {
RNA_enum_set(op->ptr, "constraint_orientation", V3D_MANIP_NORMAL);
RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
}*/
WM_operator_name_call(C, "TRANSFORM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
return OPERATOR_FINISHED;
}
void MESH_OT_extrude_edges_indiv(wmOperatorType *ot)
{
/* identifiers */
@@ -813,7 +735,6 @@ void MESH_OT_extrude_edges_indiv(wmOperatorType *ot)
ot->idname= "MESH_OT_extrude_edges_indiv";
/* api callbacks */
ot->invoke= mesh_extrude_edges_invoke;
ot->exec= mesh_extrude_edges_exec;
ot->poll= ED_operator_editmesh;
@@ -821,7 +742,6 @@ void MESH_OT_extrude_edges_indiv(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* to give to transform */
Transform_Properties(ot, P_PROPORTIONAL|P_CONSTRAINT|P_AXIS);
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
}
@@ -838,34 +758,6 @@ static int mesh_extrude_faces_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
static int mesh_extrude_faces_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
Object *obedit= CTX_data_edit_object(C);
BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
float nor[3];
int constraint_axis[3] = {0, 0, 1};
int tmode;
tmode = EDBM_Extrude_face_indiv(em, op, BM_SELECT, nor);
DAG_id_flush_update(obedit->data, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data);
RNA_enum_set(op->ptr, "proportional", 0);
RNA_boolean_set(op->ptr, "mirror", 0);
if (tmode == 's') {
WM_operator_name_call(C, "TRANSFORM_OT_shrink_fatten", WM_OP_INVOKE_REGION_WIN, op->ptr);
} else {
if (tmode == 'n') {
RNA_enum_set(op->ptr, "constraint_orientation", V3D_MANIP_NORMAL);
RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
}
WM_operator_name_call(C, "TRANSFORM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr);
}
return OPERATOR_FINISHED;
}
void MESH_OT_extrude_faces_indiv(wmOperatorType *ot)
{
/* identifiers */
@@ -873,15 +765,12 @@ void MESH_OT_extrude_faces_indiv(wmOperatorType *ot)
ot->idname= "MESH_OT_extrude_faces_indiv";
/* api callbacks */
ot->invoke= mesh_extrude_faces_invoke;
ot->exec= mesh_extrude_faces_exec;
ot->poll= ED_operator_editmesh;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* to give to transform */
Transform_Properties(ot, P_PROPORTIONAL|P_CONSTRAINT|P_AXIS);
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
}

View File

@@ -2226,6 +2226,8 @@ static void do_fill_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int t
static void do_scrape_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode)
{
Brush *brush = paint_brush(&sd->paint);
rctf mr;
float xrad, yrad;
float bstrength = ss->cache->bstrength;
const float radius = ss->cache->radius;

View File

@@ -289,9 +289,9 @@ GPUDrawObject *GPU_drawobject_new( DerivedMesh *dm )
memset(numverts,0,sizeof(int)*32768);
mvert = dm->getVertArray(dm);
mface = dm->getFaceArray(dm);
mface = dm->getTessFaceArray(dm);
numfaces= dm->getNumFaces(dm);
numfaces= dm->getNumTessFaces(dm);
for( i=0; i < numfaces; i++ ) {
if( mface[i].v4 )
numverts[mface[i].mat_nr+16383] += 6; /* split every quad into two triangles */
@@ -861,9 +861,9 @@ void GPU_buffer_copy_vertex( DerivedMesh *dm, float *varray, int *index, int *re
DEBUG_VBO("GPU_buffer_copy_vertex\n");
mvert = dm->getVertArray(dm);
mface = dm->getFaceArray(dm);
mface = dm->getTessFaceArray(dm);
numfaces= dm->getNumFaces(dm);
numfaces= dm->getNumTessFaces(dm);
for( i=0; i < numfaces; i++ ) {
start = index[redir[mface[i].mat_nr+16383]];
if( mface[i].v4 )
@@ -905,13 +905,13 @@ void GPU_buffer_copy_normal( DerivedMesh *dm, float *varray, int *index, int *re
int start;
float norm[3];
float *nors= dm->getFaceDataArray(dm, CD_NORMAL);
float *nors= dm->getTessFaceDataArray(dm, CD_NORMAL);
MVert *mvert = dm->getVertArray(dm);
MFace *mface = dm->getFaceArray(dm);
MFace *mface = dm->getTessFaceArray(dm);
DEBUG_VBO("GPU_buffer_copy_normal\n");
numfaces= dm->getNumFaces(dm);
numfaces= dm->getNumTessFaces(dm);
for( i=0; i < numfaces; i++ ) {
start = index[redir[mface[i].mat_nr+16383]];
if( mface[i].v4 )
@@ -973,7 +973,7 @@ void GPU_buffer_copy_uv( DerivedMesh *dm, float *varray, int *index, int *redir,
DEBUG_VBO("GPU_buffer_copy_uv\n");
mface = dm->getFaceArray(dm);
mface = dm->getTessFaceArray(dm);
mtface = DM_get_face_data_layer(dm, CD_MTFACE);
if( mtface == 0 ) {
@@ -981,7 +981,7 @@ void GPU_buffer_copy_uv( DerivedMesh *dm, float *varray, int *index, int *redir,
return;
}
numfaces= dm->getNumFaces(dm);
numfaces= dm->getNumTessFaces(dm);
for( i=0; i < numfaces; i++ ) {
start = index[redir[mface[i].mat_nr+16383]];
if( mface[i].v4 )
@@ -1017,11 +1017,11 @@ void GPU_buffer_copy_color3( DerivedMesh *dm, float *varray_, int *index, int *r
int i, numfaces;
unsigned char *varray = (unsigned char *)varray_;
unsigned char *mcol = (unsigned char *)user;
MFace *mface = dm->getFaceArray(dm);
MFace *mface = dm->getTessFaceArray(dm);
DEBUG_VBO("GPU_buffer_copy_color3\n");
numfaces= dm->getNumFaces(dm);
numfaces= dm->getNumTessFaces(dm);
for( i=0; i < numfaces; i++ ) {
int start = index[redir[mface[i].mat_nr+16383]];
if( mface[i].v4 )
@@ -1047,11 +1047,11 @@ void GPU_buffer_copy_color4( DerivedMesh *dm, float *varray_, int *index, int *r
int i, numfaces;
unsigned char *varray = (unsigned char *)varray_;
unsigned char *mcol = (unsigned char *)user;
MFace *mface = dm->getFaceArray(dm);
MFace *mface = dm->getTessFaceArray(dm);
DEBUG_VBO("GPU_buffer_copy_color4\n");
numfaces= dm->getNumFaces(dm);
numfaces= dm->getNumTessFaces(dm);
for( i=0; i < numfaces; i++ ) {
int start = index[redir[mface[i].mat_nr+16383]];
if( mface[i].v4 )
@@ -1091,7 +1091,7 @@ GPUBuffer *GPU_buffer_color( DerivedMesh *dm )
dm->drawObject->colType = CD_MCOL;
}
numfaces= dm->getNumFaces(dm);
numfaces= dm->getNumTessFaces(dm);
colors = MEM_mallocN(numfaces*12*sizeof(unsigned char), "GPU_buffer_color");
for( i=0; i < numfaces*4; i++ ) {
colors[i*3] = mcol[i].b;
@@ -1143,7 +1143,7 @@ void GPU_buffer_copy_uvedge( DerivedMesh *dm, float *varray, int *index, int *re
if(tf) {
for(i = 0; i < dm->numFaceData; i++, tf++) {
MFace mf;
dm->getFace(dm,i,&mf);
dm->getTessFace(dm,i,&mf);
VECCOPY2D(&varray[j],tf->uv[0]);
VECCOPY2D(&varray[j+2],tf->uv[1]);

View File

@@ -1287,7 +1287,7 @@ int GPU_scene_object_lights(Scene *scene, Object *ob, int lay, float viewmat[][4
glLightf(GL_LIGHT0+count, GL_SPOT_CUTOFF, 180.0);
}
power= (ELEM(la->type, LA_SUN, LA_HEMI))? la->energy*M_PI: la->power;
power= (ELEM(la->type, LA_SUN, LA_HEMI))? la->energy*M_PI: la->energy*M_PI; //XXX la->power
/* setup energy */
energy[0]= power*la->r;

View File

@@ -1325,7 +1325,7 @@ static void gpu_lamp_from_blender(Scene *scene, Object *ob, Object *par, Lamp *l
lamp->mode = la->mode;
lamp->type = la->type;
lamp->power= (ELEM(la->type, LA_SUN, LA_HEMI))? la->energy*M_PI: la->power;
lamp->power= (ELEM(la->type, LA_SUN, LA_HEMI))? la->energy*M_PI: la->energy*M_PI; //XXX la->power;
if(lamp->mode & LA_NEG) lamp->power= -lamp->power;
lamp->col[0]= la->r*lamp->power;

View File

@@ -411,13 +411,9 @@ ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
bf_python
bf_gen_python
bf_ikplugin
<<<<<<< .working
bf_bmesh
bf_blenkernel
=======
bf_modifiers
bf_blenkernel
>>>>>>> .merge-right.r30358
bf_nodes
bf_gpu
bf_blenloader