Compositor: Remove scene.use_nodes from Python API

Use Nodes were removed in d88d4cc8 from the UI, but marked deprecated
in Python API. Since we decided to remove `world.use_nodes` and
`material.use_nodes` for the shader editor (instead of deprecating
them), we also remove `scene.use_nodes`.

This PR only replaces the deprecated `scene.node_tree` with
`scene.compositing_node_group` where necessary. #143619 will fully
remove `node_tree`

Pull Request: https://projects.blender.org/blender/blender/pulls/143578
This commit is contained in:
Habib Gahbiche
2025-07-31 12:28:00 +02:00
parent 481c524734
commit c499adf3b8
3 changed files with 6 additions and 35 deletions

View File

@@ -2074,29 +2074,6 @@ static std::optional<std::string> rna_SceneRenderView_path(const PointerRNA *ptr
return fmt::format("render.views[\"{}\"]", srv_name_esc);
}
static bool rna_Scene_use_nodes_get(PointerRNA *ptr)
{
Scene *scene = reinterpret_cast<Scene *>(ptr->data);
return scene->r.scemode & R_DOCOMP;
}
static void rna_Scene_use_nodes_set(PointerRNA *ptr, const bool use_nodes)
{
Scene *scene = reinterpret_cast<Scene *>(ptr->data);
SET_FLAG_FROM_TEST(scene->r.scemode, use_nodes, R_DOCOMP);
}
/* Todo(#140111): Remove in 6.0. In Python API, this function is used to create a compositing node
* tree if none exists. scene.use_nodes will be replaced by the existing scene.use_compositing. */
static void rna_Scene_use_nodes_update(bContext *C, PointerRNA *ptr)
{
Scene *scene = (Scene *)ptr->data;
if (scene->r.scemode & R_DOCOMP && scene->compositing_node_group == nullptr) {
ED_node_composit_default(C, scene);
}
DEG_relations_tag_update(CTX_data_main(C));
}
static void rna_Physics_relations_update(Main *bmain, Scene * /*scene*/, PointerRNA * /*ptr*/)
{
DEG_relations_tag_update(bmain);
@@ -8941,14 +8918,6 @@ void RNA_def_scene(BlenderRNA *brna)
nullptr,
"rna_Scene_compositing_node_group_poll");
prop = RNA_def_property(srna, "use_nodes", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, nullptr, "use_nodes", 1);
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
RNA_def_property_ui_text(
prop, "Use Nodes", "Enable the compositing node group. (Deprecated: use use_compositing)");
RNA_def_property_boolean_funcs(prop, "rna_Scene_use_nodes_get", "rna_Scene_use_nodes_set");
RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, "rna_Scene_use_nodes_update");
/* Sequencer */
prop = RNA_def_property(srna, "sequence_editor", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, nullptr, "ed");

View File

@@ -430,8 +430,8 @@ class CompositorNodeGroupInterfaceTest(AbstractNodeGroupInterfaceTest, NodeGroup
def setUp(self):
super().setUp()
self.scene = bpy.data.scenes.new("test")
self.scene.use_nodes = True
self.main_tree = self.scene.node_tree
self.main_tree = bpy.data.node_groups.new("test node tree", "CompositorNodeTree")
self.scene.compositing_node_group = self.main_tree
def test_invalid_socket_type(self):
self.do_test_invalid_socket_type("INVALID_SOCKET_TYPE_11!1")

View File

@@ -131,8 +131,10 @@ def make_lib():
bpy.context.collection.objects.link(ob)
# nodes
bpy.data.scenes["Scene"].use_nodes = True
sys_idprops = bpy.data.scenes["Scene"].node_tree.nodes['Render Layers'].bl_system_properties_get(do_create=True)
tree = bpy.data.node_groups.new("Compositor Nodes", "CompositorNodeTree")
bpy.data.scenes["Scene"].compositing_node_group = tree
rlayers = tree.nodes.new(type="CompositorNodeRLayers")
sys_idprops = rlayers.bl_system_properties_get(do_create=True)
sys_idprops["prop"] = bpy.data.objects['Camera']
# rename scene and save