== Multires ==
Fixed bug #5815, Multires mesh UVs get lost (or crashes!) when adding additional UV layers * Switching to Face Select mode adds a UV layer automatically, was missing code there to add the layer to multires as well * Adding/Deleting a customdata layer on a multires mesh should update the multires data first
This commit is contained in:
@@ -90,6 +90,7 @@
|
|||||||
#include "mydevice.h"
|
#include "mydevice.h"
|
||||||
#include "blendef.h"
|
#include "blendef.h"
|
||||||
#include "butspace.h"
|
#include "butspace.h"
|
||||||
|
#include "multires.h"
|
||||||
|
|
||||||
#include "BSE_trans_types.h"
|
#include "BSE_trans_types.h"
|
||||||
|
|
||||||
@@ -610,9 +611,16 @@ void default_uv(float uv[][2], float size)
|
|||||||
|
|
||||||
void make_tfaces(Mesh *me)
|
void make_tfaces(Mesh *me)
|
||||||
{
|
{
|
||||||
if(!me->mtface)
|
if(!me->mtface) {
|
||||||
me->mtface= CustomData_add_layer(&me->fdata, CD_MTFACE, CD_DEFAULT,
|
if(me->mr) {
|
||||||
NULL, me->totface);
|
multires_add_layer(me, &me->mr->fdata, CD_MTFACE,
|
||||||
|
CustomData_number_of_layers(&me->fdata, CD_MTFACE));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
me->mtface= CustomData_add_layer(&me->fdata, CD_MTFACE, CD_DEFAULT,
|
||||||
|
NULL, me->totface);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void reveal_tface()
|
void reveal_tface()
|
||||||
|
|||||||
@@ -346,6 +346,8 @@ void multires_delete_layer(Mesh *me, CustomData *cd, const int type, int n)
|
|||||||
if(me && me->mr && cd) {
|
if(me && me->mr && cd) {
|
||||||
MultiresLevel *lvl1= me->mr->levels.first;
|
MultiresLevel *lvl1= me->mr->levels.first;
|
||||||
|
|
||||||
|
multires_update_levels(me);
|
||||||
|
|
||||||
CustomData_set_layer_active(cd, type, n);
|
CustomData_set_layer_active(cd, type, n);
|
||||||
CustomData_free_layer_active(cd, type, lvl1->totface);
|
CustomData_free_layer_active(cd, type, lvl1->totface);
|
||||||
|
|
||||||
@@ -357,6 +359,8 @@ MultiresLevel *current_level(Multires *mr);
|
|||||||
void multires_add_layer(Mesh *me, CustomData *cd, const int type, const int n)
|
void multires_add_layer(Mesh *me, CustomData *cd, const int type, const int n)
|
||||||
{
|
{
|
||||||
if(me && me->mr && cd) {
|
if(me && me->mr && cd) {
|
||||||
|
multires_update_levels(me);
|
||||||
|
|
||||||
if(CustomData_has_layer(cd, type))
|
if(CustomData_has_layer(cd, type))
|
||||||
CustomData_add_layer(cd, type, CD_DUPLICATE, CustomData_get_layer(cd, type),
|
CustomData_add_layer(cd, type, CD_DUPLICATE, CustomData_get_layer(cd, type),
|
||||||
current_level(me->mr)->totface);
|
current_level(me->mr)->totface);
|
||||||
|
|||||||
Reference in New Issue
Block a user