diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-12-28 18:21:51 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-12-28 18:21:51 +0400 |
commit | 8ccf5026e03e3bd8fd9ccdd161e651818e33a3f3 (patch) | |
tree | f9131e5c19756884dda44d0665a3750f8c648cd5 | |
parent | 5b88e16306711408825d9291bfeb7023bd7fd69c (diff) |
more changes from bmesh into trunk (mesh mpoly strict member)
-rw-r--r-- | source/blender/gpu/intern/gpu_buffers.c | 16 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_mesh_types.h | 30 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 4 |
3 files changed, 41 insertions, 9 deletions
diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index bba8786b092..919dc3f6403 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -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; } } diff --git a/source/blender/makesdna/DNA_mesh_types.h b/source/blender/makesdna/DNA_mesh_types.h index ca471bbabcd..f39095886da 100644 --- a/source/blender/makesdna/DNA_mesh_types.h +++ b/source/blender/makesdna/DNA_mesh_types.h @@ -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 diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 29d2f9392b2..2ab876b2165 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -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; |