more changes from bmesh into trunk (mesh mpoly strict member)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user