Made deleting a UV layer work correctly with multires enabled. Still need to do adding and renaming layers.

This commit is contained in:
Nicholas Bishop
2007-01-10 08:16:27 +00:00
parent 97fb2973c8
commit 8cfc675b5a
3 changed files with 28 additions and 6 deletions

View File

@@ -71,5 +71,6 @@ void multires_update_customdata(struct MultiresLevel *lvl1, struct CustomData *s
void multires_customdata_to_mesh(struct Mesh *me, struct EditMesh *em, struct MultiresLevel *lvl,
struct CustomData *src, struct CustomData *dst, const FirstLevelType type);
void multires_del_lower_customdata(struct Multires *mr, struct MultiresLevel *cr_lvl);
void multires_delete_layer(struct Mesh *me, struct CustomData *cd, const int type, int n);
#endif

View File

@@ -702,12 +702,18 @@ static void delete_customdata_layer(void *data1, void *data2)
CustomData_set_layer_active(data, type, layer - &data->layers[index]);
if(G.obedit) {
EM_free_data_layer(data, type);
}
else if(me) {
CustomData_free_layer_active(data, type, me->totface);
mesh_update_customdata_pointers(me);
/* Multires is handled seperately because the display data is separate
from the data stored in multires */
if(me && me->mr) {
multires_delete_layer(me, &me->mr->fdata, CD_MTFACE, layer - &data->layers[index]);
} else {
if(G.obedit) {
EM_free_data_layer(data, type);
}
else if(me) {
CustomData_free_layer_active(data, type, me->totface);
mesh_update_customdata_pointers(me);
}
}
if(!CustomData_has_layer(data, type)) {

View File

@@ -1,6 +1,8 @@
#include "DNA_customdata_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "BIF_editmesh.h"
@@ -12,6 +14,7 @@
#include "MEM_guardedalloc.h"
#include "blendef.h"
#include "multires.h"
#include <string.h>
@@ -328,3 +331,15 @@ MTFace *subdivide_mtfaces(MTFace *src, MultiresLevel *lvl)
return NULL;
}
void multires_delete_layer(Mesh *me, CustomData *cd, const int type, int n)
{
if(me && me->mr && cd) {
MultiresLevel *lvl1= me->mr->levels.first;
CustomData_set_layer_active(cd, type, n);
CustomData_free_layer_active(cd, type, lvl1->totface);
multires_level_to_mesh(OBACT, me);
}
}