Enforce that custom nodes keep their original type
Enforce that custom nodes and resources created via the "Create New Node" dialog, should permanently retain their original type (script). This means: - Type continuity: It should be impossible for the user to (accidentally) clear the original script of a custom node that was created via the "Create New Node" dialog. - Extensibility: The user should be able to extend custom types as usual (create a script that inherits the original type and replace the original script of that node with his own). However, if he then clears his extension-script from that node later on, the custom type should revert to its original script instead of becoming a non-scripted type.
This commit is contained in:
@ -4672,6 +4672,11 @@ void EditorNode::stop_child_process(OS::ProcessID p_pid) {
|
||||
Ref<Script> EditorNode::get_object_custom_type_base(const Object *p_object) const {
|
||||
ERR_FAIL_NULL_V(p_object, nullptr);
|
||||
|
||||
const Node *node = Object::cast_to<const Node>(p_object);
|
||||
if (node && node->has_meta(SceneStringName(_custom_type_script))) {
|
||||
return node->get_meta(SceneStringName(_custom_type_script));
|
||||
}
|
||||
|
||||
Ref<Script> scr = p_object->get_script();
|
||||
|
||||
if (scr.is_valid()) {
|
||||
|
||||
Reference in New Issue
Block a user