Made deleting a UV layer work correctly with multires enabled. Still need to do adding and renaming layers.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user