You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-23 15:16:17 +00:00
Keep property values when extending script
(cherry picked from commit 44cf3c22ac)
This commit is contained in:
committed by
Haoyu Qiu
parent
daa4be06b0
commit
4951f50b0f
@@ -2050,16 +2050,24 @@ void SceneTreeDock::_script_created(Ref<Script> p_script) {
|
||||
return;
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo().create_action(TTR("Attach Script"));
|
||||
InspectorDock *inspector_dock = EditorNode::get_singleton()->get_inspector_dock();
|
||||
UndoRedo &undo_redo = editor_data->get_undo_redo();
|
||||
|
||||
undo_redo.create_action(TTR("Attach Script"));
|
||||
for (List<Node *>::Element *E = selected.front(); E; E = E->next()) {
|
||||
Ref<Script> existing = E->get()->get_script();
|
||||
editor_data->get_undo_redo().add_do_method(E->get(), "set_script", p_script.get_ref_ptr());
|
||||
editor_data->get_undo_redo().add_undo_method(E->get(), "set_script", existing);
|
||||
editor_data->get_undo_redo().add_do_method(this, "_update_script_button");
|
||||
editor_data->get_undo_redo().add_undo_method(this, "_update_script_button");
|
||||
Node *node = E->get();
|
||||
Ref<Script> existing = node->get_script();
|
||||
undo_redo.add_do_method(inspector_dock, "store_script_properties", node);
|
||||
undo_redo.add_undo_method(inspector_dock, "store_script_properties", node);
|
||||
undo_redo.add_do_method(node, "set_script", p_script.get_ref_ptr());
|
||||
undo_redo.add_undo_method(node, "set_script", existing);
|
||||
undo_redo.add_do_method(inspector_dock, "apply_script_properties", node);
|
||||
undo_redo.add_undo_method(inspector_dock, "apply_script_properties", node);
|
||||
undo_redo.add_do_method(this, "_update_script_button");
|
||||
undo_redo.add_undo_method(this, "_update_script_button");
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo().commit_action();
|
||||
undo_redo.commit_action();
|
||||
|
||||
_push_item(p_script.operator->());
|
||||
_update_script_button();
|
||||
@@ -2706,12 +2714,19 @@ void SceneTreeDock::_script_dropped(String p_file, NodePath p_to) {
|
||||
ERR_FAIL_COND(!scr.is_valid());
|
||||
Node *n = get_node(p_to);
|
||||
if (n) {
|
||||
editor_data->get_undo_redo().create_action(TTR("Attach Script"));
|
||||
editor_data->get_undo_redo().add_do_method(n, "set_script", scr);
|
||||
editor_data->get_undo_redo().add_undo_method(n, "set_script", n->get_script());
|
||||
editor_data->get_undo_redo().add_do_method(this, "_update_script_button");
|
||||
editor_data->get_undo_redo().add_undo_method(this, "_update_script_button");
|
||||
editor_data->get_undo_redo().commit_action();
|
||||
InspectorDock *inspector_dock = EditorNode::get_singleton()->get_inspector_dock();
|
||||
UndoRedo &undo_redo = editor_data->get_undo_redo();
|
||||
|
||||
undo_redo.create_action(TTR("Attach Script"));
|
||||
undo_redo.add_do_method(inspector_dock, "store_script_properties", n);
|
||||
undo_redo.add_undo_method(inspector_dock, "store_script_properties", n);
|
||||
undo_redo.add_do_method(n, "set_script", scr);
|
||||
undo_redo.add_undo_method(n, "set_script", n->get_script());
|
||||
undo_redo.add_do_method(inspector_dock, "apply_script_properties", n);
|
||||
undo_redo.add_undo_method(inspector_dock, "apply_script_properties", n);
|
||||
undo_redo.add_do_method(this, "_update_script_button");
|
||||
undo_redo.add_undo_method(this, "_update_script_button");
|
||||
undo_redo.commit_action();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user