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:
parent
db66bd35af
commit
06998a3927
10 changed files with 147 additions and 25 deletions
|
|
@ -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()) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue