mirror of
https://github.com/godotengine/godot.git
synced 2024-11-27 09:16:35 +08:00
Fix expressions nodes in visual shaders
This commit is contained in:
parent
94529d0e1e
commit
81a44a4145
@ -589,7 +589,7 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
|
||||
VisualShaderEditor::get_singleton()->graph->add_child(node);
|
||||
VisualShaderEditor::get_singleton()->_update_created_node(node);
|
||||
if (is_group) {
|
||||
call_deferred("_set_node_size", (int)p_type, p_id, size);
|
||||
VisualShaderEditor::get_singleton()->call_deferred("_set_node_size", (int)p_type, p_id, size);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1142,10 +1142,8 @@ void VisualShaderEditor::_add_input_port(int p_node, int p_port, int p_port_type
|
||||
undo_redo->create_action(TTR("Add input port"));
|
||||
undo_redo->add_do_method(node.ptr(), "add_input_port", p_port, p_port_type, p_name);
|
||||
undo_redo->add_undo_method(node.ptr(), "remove_input_port", p_port);
|
||||
undo_redo->add_do_method(this, "_update_graph");
|
||||
undo_redo->add_undo_method(this, "_update_graph");
|
||||
undo_redo->add_do_method(this, "_rebuild");
|
||||
undo_redo->add_undo_method(this, "_rebuild");
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "update_node", type, p_node);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "update_node", type, p_node);
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
@ -1159,10 +1157,8 @@ void VisualShaderEditor::_add_output_port(int p_node, int p_port, int p_port_typ
|
||||
undo_redo->create_action(TTR("Add output port"));
|
||||
undo_redo->add_do_method(node.ptr(), "add_output_port", p_port, p_port_type, p_name);
|
||||
undo_redo->add_undo_method(node.ptr(), "remove_output_port", p_port);
|
||||
undo_redo->add_do_method(this, "_update_graph");
|
||||
undo_redo->add_undo_method(this, "_update_graph");
|
||||
undo_redo->add_do_method(this, "_rebuild");
|
||||
undo_redo->add_undo_method(this, "_rebuild");
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "update_node", type, p_node);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "update_node", type, p_node);
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
@ -1176,10 +1172,8 @@ void VisualShaderEditor::_change_input_port_type(int p_type, int p_node, int p_p
|
||||
undo_redo->create_action(TTR("Change input port type"));
|
||||
undo_redo->add_do_method(node.ptr(), "set_input_port_type", p_port, p_type);
|
||||
undo_redo->add_undo_method(node.ptr(), "set_input_port_type", p_port, node->get_input_port_type(p_port));
|
||||
undo_redo->add_do_method(this, "_update_graph");
|
||||
undo_redo->add_undo_method(this, "_update_graph");
|
||||
undo_redo->add_do_method(this, "_rebuild");
|
||||
undo_redo->add_undo_method(this, "_rebuild");
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "update_node", type, p_node);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "update_node", type, p_node);
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
@ -1193,10 +1187,8 @@ void VisualShaderEditor::_change_output_port_type(int p_type, int p_node, int p_
|
||||
undo_redo->create_action(TTR("Change output port type"));
|
||||
undo_redo->add_do_method(node.ptr(), "set_output_port_type", p_port, p_type);
|
||||
undo_redo->add_undo_method(node.ptr(), "set_output_port_type", p_port, node->get_output_port_type(p_port));
|
||||
undo_redo->add_do_method(this, "_update_graph");
|
||||
undo_redo->add_undo_method(this, "_update_graph");
|
||||
undo_redo->add_do_method(this, "_rebuild");
|
||||
undo_redo->add_undo_method(this, "_rebuild");
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "update_node", type, p_node);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "update_node", type, p_node);
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
@ -1209,8 +1201,8 @@ void VisualShaderEditor::_change_input_port_name(const String &p_text, Object *l
|
||||
undo_redo->create_action(TTR("Change input port name"));
|
||||
undo_redo->add_do_method(node.ptr(), "set_input_port_name", p_port_id, p_text);
|
||||
undo_redo->add_undo_method(node.ptr(), "set_input_port_name", p_port_id, node->get_input_port_name(p_port_id));
|
||||
undo_redo->add_do_method(this, "_rebuild");
|
||||
undo_redo->add_undo_method(this, "_rebuild");
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "update_node", type, p_node_id);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "update_node", type, p_node_id);
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
@ -1223,8 +1215,8 @@ void VisualShaderEditor::_change_output_port_name(const String &p_text, Object *
|
||||
undo_redo->create_action(TTR("Change output port name"));
|
||||
undo_redo->add_do_method(node.ptr(), "set_output_port_name", p_port_id, p_text);
|
||||
undo_redo->add_undo_method(node.ptr(), "set_output_port_name", p_port_id, node->get_output_port_name(p_port_id));
|
||||
undo_redo->add_do_method(this, "_rebuild");
|
||||
undo_redo->add_undo_method(this, "_rebuild");
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "update_node", type, p_node_id);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "update_node", type, p_node_id);
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
@ -1249,12 +1241,21 @@ void VisualShaderEditor::_remove_input_port(int p_node, int p_port) {
|
||||
if (to_port == p_port) {
|
||||
undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, from_node, from_port, to_node, to_port);
|
||||
undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes_forced", type, from_node, from_port, to_node, to_port);
|
||||
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, from_node, from_port, to_node, to_port);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "connect_nodes", type, from_node, from_port, to_node, to_port);
|
||||
} else if (to_port > p_port) {
|
||||
undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, from_node, from_port, to_node, to_port);
|
||||
undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes_forced", type, from_node, from_port, to_node, to_port);
|
||||
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, from_node, from_port, to_node, to_port);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "connect_nodes", type, from_node, from_port, to_node, to_port);
|
||||
|
||||
undo_redo->add_do_method(visual_shader.ptr(), "connect_nodes_forced", type, from_node, from_port, to_node, to_port - 1);
|
||||
undo_redo->add_undo_method(visual_shader.ptr(), "disconnect_nodes", type, from_node, from_port, to_node, to_port - 1);
|
||||
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "connect_nodes", type, from_node, from_port, to_node, to_port - 1);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "disconnect_nodes", type, from_node, from_port, to_node, to_port - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1262,11 +1263,8 @@ void VisualShaderEditor::_remove_input_port(int p_node, int p_port) {
|
||||
undo_redo->add_do_method(node.ptr(), "remove_input_port", p_port);
|
||||
undo_redo->add_undo_method(node.ptr(), "add_input_port", p_port, (int)node->get_input_port_type(p_port), node->get_input_port_name(p_port));
|
||||
|
||||
undo_redo->add_do_method(this, "_update_graph");
|
||||
undo_redo->add_undo_method(this, "_update_graph");
|
||||
|
||||
undo_redo->add_do_method(this, "_rebuild");
|
||||
undo_redo->add_undo_method(this, "_rebuild");
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "update_node", type, p_node);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "update_node", type, p_node);
|
||||
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
@ -1292,12 +1290,21 @@ void VisualShaderEditor::_remove_output_port(int p_node, int p_port) {
|
||||
if (from_port == p_port) {
|
||||
undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, from_node, from_port, to_node, to_port);
|
||||
undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes_forced", type, from_node, from_port, to_node, to_port);
|
||||
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, from_node, from_port, to_node, to_port);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "connect_nodes", type, from_node, from_port, to_node, to_port);
|
||||
} else if (from_port > p_port) {
|
||||
undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, from_node, from_port, to_node, to_port);
|
||||
undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes_forced", type, from_node, from_port, to_node, to_port);
|
||||
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, from_node, from_port, to_node, to_port);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "connect_nodes", type, from_node, from_port, to_node, to_port);
|
||||
|
||||
undo_redo->add_do_method(visual_shader.ptr(), "connect_nodes_forced", type, from_node, from_port - 1, to_node, to_port);
|
||||
undo_redo->add_undo_method(visual_shader.ptr(), "disconnect_nodes", type, from_node, from_port - 1, to_node, to_port);
|
||||
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "connect_nodes", type, from_node, from_port - 1, to_node, to_port);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "disconnect_nodes", type, from_node, from_port - 1, to_node, to_port);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1305,11 +1312,8 @@ void VisualShaderEditor::_remove_output_port(int p_node, int p_port) {
|
||||
undo_redo->add_do_method(node.ptr(), "remove_output_port", p_port);
|
||||
undo_redo->add_undo_method(node.ptr(), "add_output_port", p_port, (int)node->get_output_port_type(p_port), node->get_output_port_name(p_port));
|
||||
|
||||
undo_redo->add_do_method(this, "_update_graph");
|
||||
undo_redo->add_undo_method(this, "_update_graph");
|
||||
|
||||
undo_redo->add_do_method(this, "_rebuild");
|
||||
undo_redo->add_undo_method(this, "_rebuild");
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "update_node", type, p_node);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "update_node", type, p_node);
|
||||
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
@ -1330,18 +1334,9 @@ void VisualShaderEditor::_expression_focus_out(Object *code_edit, int p_node) {
|
||||
undo_redo->create_action(TTR("Set expression"));
|
||||
undo_redo->add_do_method(node.ptr(), "set_expression", expression_box->get_text());
|
||||
undo_redo->add_undo_method(node.ptr(), "set_expression", node->get_expression());
|
||||
undo_redo->add_do_method(this, "_rebuild");
|
||||
undo_redo->add_undo_method(this, "_rebuild");
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
void VisualShaderEditor::_rebuild() {
|
||||
if (visual_shader != nullptr) {
|
||||
EditorNode::get_singleton()->get_log()->clear();
|
||||
visual_shader->rebuild();
|
||||
}
|
||||
}
|
||||
|
||||
void VisualShaderEditor::_set_node_size(int p_type, int p_node, const Vector2 &p_size) {
|
||||
VisualShader::Type type = get_current_shader_type();
|
||||
Ref<VisualShaderNode> node = visual_shader->get_node(type, p_node);
|
||||
@ -1788,14 +1783,12 @@ void VisualShaderEditor::_disconnection_request(const String &p_from, int p_from
|
||||
int from = p_from.to_int();
|
||||
int to = p_to.to_int();
|
||||
|
||||
//updating = true; seems graph edit can handle this, no need to protect
|
||||
undo_redo->create_action(TTR("Nodes Disconnected"));
|
||||
undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, from, p_from_index, to, p_to_index);
|
||||
undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, from, p_from_index, to, p_to_index);
|
||||
undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, from, p_from_index, to, p_to_index);
|
||||
undo_redo->add_undo_method(graph_plugin.ptr(), "connect_nodes", type, from, p_from_index, to, p_to_index);
|
||||
undo_redo->commit_action();
|
||||
//updating = false;
|
||||
}
|
||||
|
||||
void VisualShaderEditor::_connection_to_empty(const String &p_from, int p_from_slot, const Vector2 &p_release_position) {
|
||||
@ -2647,7 +2640,6 @@ void VisualShaderEditor::_update_preview() {
|
||||
}
|
||||
|
||||
void VisualShaderEditor::_bind_methods() {
|
||||
ClassDB::bind_method("_rebuild", &VisualShaderEditor::_rebuild);
|
||||
ClassDB::bind_method("_update_graph", &VisualShaderEditor::_update_graph);
|
||||
ClassDB::bind_method("_update_options_menu", &VisualShaderEditor::_update_options_menu);
|
||||
ClassDB::bind_method("_add_node", &VisualShaderEditor::_add_node);
|
||||
|
@ -312,7 +312,6 @@ class VisualShaderEditor : public VBoxContainer {
|
||||
Ref<VisualShaderGraphPlugin> graph_plugin;
|
||||
|
||||
void _mode_selected(int p_id);
|
||||
void _rebuild();
|
||||
|
||||
void _input_select_item(Ref<VisualShaderNodeInput> input, String name);
|
||||
void _uniform_select_item(Ref<VisualShaderNodeUniformRef> p_uniform, String p_name);
|
||||
|
@ -2729,6 +2729,7 @@ void VisualShaderNodeGroupBase::add_input_port(int p_id, int p_type, const Strin
|
||||
}
|
||||
|
||||
_apply_port_changes();
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
void VisualShaderNodeGroupBase::remove_input_port(int p_id) {
|
||||
@ -2753,6 +2754,7 @@ void VisualShaderNodeGroupBase::remove_input_port(int p_id) {
|
||||
}
|
||||
|
||||
_apply_port_changes();
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
int VisualShaderNodeGroupBase::get_input_port_count() const {
|
||||
@ -2797,6 +2799,7 @@ void VisualShaderNodeGroupBase::add_output_port(int p_id, int p_type, const Stri
|
||||
}
|
||||
|
||||
_apply_port_changes();
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
void VisualShaderNodeGroupBase::remove_output_port(int p_id) {
|
||||
@ -2821,6 +2824,7 @@ void VisualShaderNodeGroupBase::remove_output_port(int p_id) {
|
||||
}
|
||||
|
||||
_apply_port_changes();
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
int VisualShaderNodeGroupBase::get_output_port_count() const {
|
||||
@ -2867,6 +2871,7 @@ void VisualShaderNodeGroupBase::set_input_port_type(int p_id, int p_type) {
|
||||
inputs = inputs.insert(index, itos(p_type));
|
||||
|
||||
_apply_port_changes();
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
VisualShaderNodeGroupBase::PortType VisualShaderNodeGroupBase::get_input_port_type(int p_id) const {
|
||||
@ -2902,6 +2907,7 @@ void VisualShaderNodeGroupBase::set_input_port_name(int p_id, const String &p_na
|
||||
inputs = inputs.insert(index, p_name);
|
||||
|
||||
_apply_port_changes();
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
String VisualShaderNodeGroupBase::get_input_port_name(int p_id) const {
|
||||
@ -2937,6 +2943,7 @@ void VisualShaderNodeGroupBase::set_output_port_type(int p_id, int p_type) {
|
||||
outputs = outputs.insert(index, itos(p_type));
|
||||
|
||||
_apply_port_changes();
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
VisualShaderNodeGroupBase::PortType VisualShaderNodeGroupBase::get_output_port_type(int p_id) const {
|
||||
@ -2972,6 +2979,7 @@ void VisualShaderNodeGroupBase::set_output_port_name(int p_id, const String &p_n
|
||||
outputs = outputs.insert(index, p_name);
|
||||
|
||||
_apply_port_changes();
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
String VisualShaderNodeGroupBase::get_output_port_name(int p_id) const {
|
||||
@ -3082,6 +3090,7 @@ String VisualShaderNodeExpression::get_caption() const {
|
||||
|
||||
void VisualShaderNodeExpression::set_expression(const String &p_expression) {
|
||||
expression = p_expression;
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
String VisualShaderNodeExpression::get_expression() const {
|
||||
|
Loading…
Reference in New Issue
Block a user