From 30b4a570b4e9894054fc129434ad2b272aedca5c Mon Sep 17 00:00:00 2001 From: Chris Cranford Date: Sat, 13 Jul 2024 16:16:36 -0400 Subject: [PATCH] GH-510 Pass class type initialization to New Object nodes --- src/editor/graph/actions/default_action_registrar.cpp | 10 ++++++++-- src/script/nodes/memory/memory.cpp | 4 ++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/editor/graph/actions/default_action_registrar.cpp b/src/editor/graph/actions/default_action_registrar.cpp index 7abe2942..08eae96b 100644 --- a/src/editor/graph/actions/default_action_registrar.cpp +++ b/src/editor/graph/actions/default_action_registrar.cpp @@ -211,8 +211,14 @@ void OrchestratorDefaultGraphActionRegistrar::_register_script_nodes(const Orche _register_node(p_context, "Input/input_action"); // Memory - _register_node(p_context, "Memory/new_object"); - _register_node(p_context, "Memory/free_object"); + { + Dictionary new_object; + if (!p_context.filter->target_classes.is_empty()) + new_object["class_name"] = p_context.filter->target_classes[0]; + _register_node(p_context, "Memory/new_object", new_object); + + _register_node(p_context, "Memory/free_object"); + } // Resource _register_node(p_context, "Resource/preload_resource"); diff --git a/src/script/nodes/memory/memory.cpp b/src/script/nodes/memory/memory.cpp index be71b818..831a6f5f 100644 --- a/src/script/nodes/memory/memory.cpp +++ b/src/script/nodes/memory/memory.cpp @@ -203,6 +203,10 @@ OScriptNodeInstance* OScriptNodeNew::instantiate() void OScriptNodeNew::initialize(const OScriptNodeInitContext& p_context) { _class_name = "Object"; + + if (p_context.user_data && p_context.user_data.value().has("class_name")) + _class_name = p_context.user_data.value()["class_name"]; + super::initialize(p_context); }