Compositor / Render Layer Node: Fix wrong layer after deleting view layers
I was calling the ntree syncing function too late. So the index of the layer was -1 since it was no longer in the ListBase, making all RenderLayer nodes to decrease their respective `custom1` (even going to negative sometimes).
This commit is contained in:
parent
7b675e0dc4
commit
133afc07b2
|
@ -3819,6 +3819,7 @@ bool BKE_node_tree_iter_step(struct NodeTreeIterStore *ntreeiter,
|
|||
|
||||
void BKE_nodetree_remove_layer_n(bNodeTree *ntree, Scene *scene, const int layer_index)
|
||||
{
|
||||
BLI_assert(layer_index != -1);
|
||||
for (bNode *node = ntree->nodes.first; node; node = node->next) {
|
||||
if (node->type == CMP_NODE_R_LAYERS && (Scene *)node->id == scene) {
|
||||
if (node->custom1 == layer_index) {
|
||||
|
|
|
@ -186,13 +186,15 @@ bool ED_scene_view_layer_delete(
|
|||
return false;
|
||||
}
|
||||
|
||||
/* We need to unset nodetrees before removing the layer, otherwise its index will be -1. */
|
||||
view_layer_remove_unset_nodetrees(bmain, scene, layer);
|
||||
|
||||
BLI_remlink(&scene->view_layers, layer);
|
||||
BLI_assert(BLI_listbase_is_empty(&scene->view_layers) == false);
|
||||
scene->active_view_layer = 0;
|
||||
|
||||
ED_workspace_view_layer_unset(bmain, scene, layer, scene->view_layers.first);
|
||||
BKE_workspace_view_layer_remove_references(bmain, layer);
|
||||
view_layer_remove_unset_nodetrees(bmain, scene, layer);
|
||||
|
||||
BKE_view_layer_free(layer);
|
||||
|
||||
|
|
Loading…
Reference in New Issue