more changes from bmesh into trunk (mesh mpoly strict member)

This commit is contained in:
Campbell Barton
2011-12-28 14:21:51 +00:00
parent 5b88e16306
commit 8ccf5026e0
3 changed files with 41 additions and 9 deletions

View File

@@ -701,8 +701,8 @@ static void GPU_buffer_copy_uv(DerivedMesh *dm, float *varray, int *index, int *
static void GPU_buffer_copy_color3(DerivedMesh *dm, float *varray_, int *index, int *mat_orig_to_new, void *user)
{
int i, totface;
unsigned char *varray = (unsigned char *)varray_;
unsigned char *mcol = (unsigned char *)user;
char *varray = (char *)varray_;
char *mcol = (char *)user;
MFace *f = dm->getFaceArray(dm);
totface= dm->getNumFaces(dm);
@@ -710,16 +710,16 @@ static void GPU_buffer_copy_color3(DerivedMesh *dm, float *varray_, int *index,
int start = index[mat_orig_to_new[f->mat_nr]];
/* v1 v2 v3 */
VECCOPY(&varray[start], &mcol[i*12]);
VECCOPY(&varray[start+3], &mcol[i*12+3]);
VECCOPY(&varray[start+6], &mcol[i*12+6]);
copy_v3_v3_char(&varray[start], &mcol[i*12]);
copy_v3_v3_char(&varray[start+3], &mcol[i*12+3]);
copy_v3_v3_char(&varray[start+6], &mcol[i*12+6]);
index[mat_orig_to_new[f->mat_nr]] += 9;
if(f->v4) {
/* v3 v4 v1 */
VECCOPY(&varray[start+9], &mcol[i*12+6]);
VECCOPY(&varray[start+12], &mcol[i*12+9]);
VECCOPY(&varray[start+15], &mcol[i*12]);
copy_v3_v3_char(&varray[start+9], &mcol[i*12+6]);
copy_v3_v3_char(&varray[start+12], &mcol[i*12+9]);
copy_v3_v3_char(&varray[start+15], &mcol[i*12]);
index[mat_orig_to_new[f->mat_nr]] += 9;
}
}

View File

@@ -49,6 +49,11 @@ struct MCol;
struct MSticky;
struct Mesh;
struct OcInfo;
struct MPoly;
struct MTexPoly;
struct MLoop;
struct MLoopUV;
struct MLoopCol;
struct Multires;
struct EditMesh;
struct AnimData;
@@ -63,6 +68,17 @@ typedef struct Mesh {
struct Key *key;
struct Material **mat;
#ifdef USE_BMESH_FORWARD_COMPAT
/* BMESH ONLY */
/*new face structures*/
struct MPoly *mpoly;
struct MTexPoly *mtpoly;
struct MLoop *mloop;
struct MLoopUV *mloopuv;
struct MLoopCol *mloopcol;
/* END BMESH ONLY */
#endif
struct MFace *mface; /* array of mesh object mode faces */
struct MTFace *mtface; /* store face UV's and texture here */
struct TFace *tface; /* depecrated, use mtface */
@@ -78,8 +94,20 @@ typedef struct Mesh {
struct CustomData vdata, edata, fdata;
#ifdef USE_BMESH_FORWARD_COMPAT
/* BMESH ONLY */
struct CustomData pdata, ldata;
/* END BMESH ONLY */
#endif
int totvert, totedge, totface, totselect;
#ifdef USE_BMESH_FORWARD_COMPAT
/* BMESH ONLY */
int totpoly, totloop;
/* END BMESH ONLY */
#endif
/* the last selected vertex/edge/face are used for the active face however
* this means the active face must always be selected, this is to keep track
* of the last selected face and is similar to the old active face flag where

View File

@@ -1973,6 +1973,10 @@ static int wm_save_as_mainfile_exec(bContext *C, wmOperator *op)
else fileflags &= ~G_FILE_COMPRESS;
if(RNA_boolean_get(op->ptr, "relative_remap")) fileflags |= G_FILE_RELATIVE_REMAP;
else fileflags &= ~G_FILE_RELATIVE_REMAP;
#ifdef USE_BMESH_SAVE_AS_COMPAT
if(RNA_boolean_get(op->ptr, "use_mesh_compat")) fileflags |= G_FILE_MESH_COMPAT;
else fileflags &= ~G_FILE_MESH_COMPAT;
#endif
if ( WM_write_file(C, path, fileflags, op->reports, copy) != 0)
return OPERATOR_CANCELLED;