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
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-12-28 18:21:51 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-12-28 18:21:51 +0400
commit8ccf5026e03e3bd8fd9ccdd161e651818e33a3f3 (patch)
treef9131e5c19756884dda44d0665a3750f8c648cd5 /source/blender
parent5b88e16306711408825d9291bfeb7023bd7fd69c (diff)
more changes from bmesh into trunk (mesh mpoly strict member)
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/gpu/intern/gpu_buffers.c16
-rw-r--r--source/blender/makesdna/DNA_mesh_types.h30
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c4
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;