Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/scene/scene_edit.c
| Show First 20 Lines • Show All 110 Lines • ▼ Show 20 Lines | if (scene->id.us == 0) { | ||||
| BKE_libblock_free(bmain, scene); | BKE_libblock_free(bmain, scene); | ||||
| } | } | ||||
| return true; | return true; | ||||
| } | } | ||||
| static ViewLayer *scene_change_get_new_view_layer(const WorkSpace *workspace, const Scene *scene_new) | static ViewLayer *scene_change_get_new_view_layer(const WorkSpace *workspace, const Scene *scene_new) | ||||
| { | { | ||||
| ViewLayer *layer_new = BKE_workspace_view_layer_get(workspace, scene_new); | ViewLayer *layer_new = BKE_workspace_view_layer_exists(workspace, scene_new); | ||||
| return layer_new ? layer_new : BKE_view_layer_default_view(scene_new); | return layer_new ? layer_new : BKE_view_layer_default_view(scene_new); | ||||
| } | } | ||||
| void ED_scene_change_update( | void ED_scene_change_update( | ||||
| Main *bmain, bContext *C, | Main *bmain, bContext *C, | ||||
| wmWindow *win, const bScreen *screen, Scene *UNUSED(scene_old), Scene *scene_new) | wmWindow *win, const bScreen *screen, Scene *UNUSED(scene_old), Scene *scene_new) | ||||
| { | { | ||||
| WorkSpace *workspace = CTX_wm_workspace(C); | WorkSpace *workspace = CTX_wm_workspace(C); | ||||
| ▲ Show 20 Lines • Show All 69 Lines • ▼ Show 20 Lines | bool ED_scene_view_layer_delete( | ||||
| /* We need to unset nodetrees before removing the layer, otherwise its index will be -1. */ | /* We need to unset nodetrees before removing the layer, otherwise its index will be -1. */ | ||||
| view_layer_remove_unset_nodetrees(bmain, scene, layer); | view_layer_remove_unset_nodetrees(bmain, scene, layer); | ||||
| BLI_remlink(&scene->view_layers, layer); | BLI_remlink(&scene->view_layers, layer); | ||||
| BLI_assert(BLI_listbase_is_empty(&scene->view_layers) == false); | BLI_assert(BLI_listbase_is_empty(&scene->view_layers) == false); | ||||
| ED_workspace_view_layer_unset(bmain, scene, layer, scene->view_layers.first); | ED_workspace_view_layer_unset(bmain, scene, layer, scene->view_layers.first); | ||||
| BKE_workspace_view_layer_remove_references(bmain, layer); | |||||
| BKE_view_layer_free(layer); | BKE_view_layer_free(layer); | ||||
| BKE_workspace_view_layer_remove(bmain, layer); | |||||
| DEG_id_tag_update(&scene->id, 0); | DEG_id_tag_update(&scene->id, 0); | ||||
| DEG_relations_tag_update(bmain); | DEG_relations_tag_update(bmain); | ||||
| WM_main_add_notifier(NC_SCENE | ND_LAYER | NA_REMOVED, scene); | WM_main_add_notifier(NC_SCENE | ND_LAYER | NA_REMOVED, scene); | ||||
| return true; | return true; | ||||
| } | } | ||||
| static int scene_new_exec(bContext *C, wmOperator *op) | static int scene_new_exec(bContext *C, wmOperator *op) | ||||
| ▲ Show 20 Lines • Show All 72 Lines • Show Last 20 Lines | |||||