paint: layer filter fixes
This commit is contained in:
@@ -202,6 +202,9 @@ void export_texture_run_layers(char *path, slot_layer_t_array_t *layers, char *o
|
||||
if (!slot_layer_is_layer(l1)) {
|
||||
continue;
|
||||
}
|
||||
if (slot_layer_get_filters(l1, false) != NULL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!string_equals(object_name, "") && slot_layer_get_object_mask(l1) > 0) {
|
||||
if (is_udim && !ends_with(project_paint_objects->buffer[slot_layer_get_object_mask(l1) - 1]->base->name, object_name)) {
|
||||
|
||||
@@ -261,12 +261,13 @@ node_shader_context_t *make_mesh_run(material_t *data, i32 layer_pass) {
|
||||
if (is_material_tool && l != g_context->layer) {
|
||||
continue;
|
||||
}
|
||||
if (!slot_layer_is_layer(l) || !slot_layer_is_visible(l)) {
|
||||
if (!slot_layer_is_visible(l)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
slot_layer_t_array_t *filters = slot_layer_get_filters(l, true);
|
||||
if (filters != NULL) {
|
||||
if (!slot_layer_is_layer(l)) {
|
||||
continue;
|
||||
}
|
||||
if (slot_layer_get_filters(l, false) != NULL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -1694,6 +1694,9 @@ slot_layer_t *layers_flatten(bool height_to_normal, slot_layer_t_array_t *layers
|
||||
if (!slot_layer_is_layer(l1)) {
|
||||
continue;
|
||||
}
|
||||
if (slot_layer_get_filters(l1, false) != NULL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
gpu_texture_t *mask = empty;
|
||||
slot_layer_t_array_t *l1masks = slot_layer_get_masks(l1, true);
|
||||
|
||||
@@ -512,6 +512,14 @@ void tab_layers_draw_layer_context_menu_delete(void *_) {
|
||||
|
||||
void tab_layers_draw_layer_context_menu_to_paint_layer(void *_) {
|
||||
slot_layer_t *l = tab_layers_l;
|
||||
|
||||
if (slot_layer_is_filter(l)) {
|
||||
i32 pi = array_index_of(project_layers, l->parent);
|
||||
array_remove(project_layers, l);
|
||||
array_insert(project_layers, pi, l);
|
||||
l->parent = NULL;
|
||||
}
|
||||
|
||||
slot_layer_is_layer(l) ? history_to_paint_layer() : history_to_paint_mask();
|
||||
slot_layer_to_paint_layer(l);
|
||||
}
|
||||
@@ -1017,7 +1025,12 @@ void tab_layers_button_new_menu() {
|
||||
}
|
||||
l = g_context->layer;
|
||||
|
||||
slot_layer_t *m = layers_new_mask(false, l, -1);
|
||||
i32_map_t *pointers = tab_layers_init_layer_map();
|
||||
slot_layer_t *m = layers_new_mask(false, l, -1);
|
||||
for (i32 i = 0; i < project_materials->length; ++i) {
|
||||
slot_material_t *mat = project_materials->buffer[i];
|
||||
tab_layers_remap_layer_pointers(mat->canvas->nodes, tab_layers_fill_layer_map(pointers));
|
||||
}
|
||||
sys_notify_on_next_frame(&tab_layers_button_new_black_mask, m);
|
||||
g_context->layer_preview_dirty = true;
|
||||
history_new_black_mask();
|
||||
@@ -1029,7 +1042,12 @@ void tab_layers_button_new_menu() {
|
||||
}
|
||||
l = g_context->layer;
|
||||
|
||||
slot_layer_t *m = layers_new_mask(false, l, -1);
|
||||
i32_map_t *pointers = tab_layers_init_layer_map();
|
||||
slot_layer_t *m = layers_new_mask(false, l, -1);
|
||||
for (i32 i = 0; i < project_materials->length; ++i) {
|
||||
slot_material_t *mat = project_materials->buffer[i];
|
||||
tab_layers_remap_layer_pointers(mat->canvas->nodes, tab_layers_fill_layer_map(pointers));
|
||||
}
|
||||
sys_notify_on_next_frame(&tab_layers_button_new_layer_clear, m);
|
||||
g_context->layer_preview_dirty = true;
|
||||
history_new_white_mask();
|
||||
@@ -1041,7 +1059,12 @@ void tab_layers_button_new_menu() {
|
||||
}
|
||||
l = g_context->layer;
|
||||
|
||||
slot_layer_t *m = layers_new_mask(false, l, -1);
|
||||
i32_map_t *pointers = tab_layers_init_layer_map();
|
||||
slot_layer_t *m = layers_new_mask(false, l, -1);
|
||||
for (i32 i = 0; i < project_materials->length; ++i) {
|
||||
slot_material_t *mat = project_materials->buffer[i];
|
||||
tab_layers_remap_layer_pointers(mat->canvas->nodes, tab_layers_fill_layer_map(pointers));
|
||||
}
|
||||
sys_notify_on_next_frame(&tab_layers_button_new_to_fill_layer, m);
|
||||
g_context->layer_preview_dirty = true;
|
||||
history_new_fill_mask();
|
||||
|
||||
Reference in New Issue
Block a user