diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2006-11-11 19:38:37 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2006-11-11 19:38:37 +0300 |
commit | 97f892b86b9b31e8165c27c698da7996dfd2d0a2 (patch) | |
tree | 41a2de3709265c3e871c29aa02d1aacf36e21dac /source/blender/blenkernel/intern/DerivedMesh.c | |
parent | 9e717b59cb4feb16314f0b2c026ebfd9278862a5 (diff) |
Added custom face data support in edit mode. The code used to do this is
the CustomData module from the modifier stack rewrite, but with additions
to make it also usable in edit mode. Some of the datatypes from that
module were move to a DNA header file, they are not saved to file now, but
will be soon.
The only code that wasn't abstracted is the uv collapse / merging code. It
is rather complicated, will look into that in the future.
There should be no user level changes.
Diffstat (limited to 'source/blender/blenkernel/intern/DerivedMesh.c')
-rw-r--r-- | source/blender/blenkernel/intern/DerivedMesh.c | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 308a32439d4..04cb371226b 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -59,6 +59,7 @@ #include "BKE_utildefines.h" #include "BKE_cdderivedmesh.h" +#include "BKE_customdata.h" #include "BKE_DerivedMesh.h" #include "BKE_displist.h" #include "BKE_effect.h" @@ -154,9 +155,9 @@ void DM_init(DerivedMesh *dm, void DM_from_template(DerivedMesh *dm, DerivedMesh *source, int numVerts, int numEdges, int numFaces) { - CustomData_from_template(&source->vertData, &dm->vertData, numVerts); - CustomData_from_template(&source->edgeData, &dm->edgeData, numEdges); - CustomData_from_template(&source->faceData, &dm->faceData, numFaces); + CustomData_from_template(&source->vertData, &dm->vertData, 0, numVerts); + CustomData_from_template(&source->edgeData, &dm->edgeData, 0, numEdges); + CustomData_from_template(&source->faceData, &dm->faceData, 0, numFaces); DM_init_funcs(dm); } @@ -335,7 +336,7 @@ void DM_interp_edge_data(DerivedMesh *source, DerivedMesh *dest, int count, int dest_index) { CustomData_interp(&source->edgeData, &dest->edgeData, src_indices, - weights, (float *)vert_weights, count, dest_index); + weights, (float*)vert_weights, count, dest_index); } void DM_interp_face_data(DerivedMesh *source, DerivedMesh *dest, @@ -344,7 +345,7 @@ void DM_interp_face_data(DerivedMesh *source, DerivedMesh *dest, int count, int dest_index) { CustomData_interp(&source->faceData, &dest->faceData, src_indices, - weights, (float *)vert_weights, count, dest_index); + weights, (float*)vert_weights, count, dest_index); } typedef struct { @@ -1087,24 +1088,27 @@ static void emDM_drawUVEdges(DerivedMesh *dm) { EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm; EditFace *efa; + TFace *tf; glBegin(GL_LINES); for(efa= emdm->em->faces.first; efa; efa= efa->next) { - if(!(efa->tf.flag&TF_HIDE)) { - glVertex2fv(efa->tf.uv[0]); - glVertex2fv(efa->tf.uv[1]); + tf = CustomData_em_get(&emdm->em->fdata, efa->data, LAYERTYPE_TFACE); - glVertex2fv(efa->tf.uv[1]); - glVertex2fv(efa->tf.uv[2]); + if(tf && !(tf->flag&TF_HIDE)) { + glVertex2fv(tf->uv[0]); + glVertex2fv(tf->uv[1]); + + glVertex2fv(tf->uv[1]); + glVertex2fv(tf->uv[2]); if (!efa->v4) { - glVertex2fv(efa->tf.uv[2]); - glVertex2fv(efa->tf.uv[0]); + glVertex2fv(tf->uv[2]); + glVertex2fv(tf->uv[0]); } else { - glVertex2fv(efa->tf.uv[2]); - glVertex2fv(efa->tf.uv[3]); - glVertex2fv(efa->tf.uv[3]); - glVertex2fv(efa->tf.uv[0]); + glVertex2fv(tf->uv[2]); + glVertex2fv(tf->uv[3]); + glVertex2fv(tf->uv[3]); + glVertex2fv(tf->uv[0]); } } } |