mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 16:03:29 +00:00
Clean up/refactor GraphNode and make it more flexible
Split GraphNode into GraphElement and GraphNode, add custom titlebar, and adjust theming.
This commit is contained in:
parent
08c578c54c
commit
5afe78bd9c
26 changed files with 1600 additions and 1537 deletions
|
@ -169,8 +169,8 @@ void AnimationNodeBlendTreeEditor::update_graph() {
|
|||
name->connect("focus_exited", callable_mp(this, &AnimationNodeBlendTreeEditor::_node_renamed_focus_out).bind(agnode), CONNECT_DEFERRED);
|
||||
name->connect("text_changed", callable_mp(this, &AnimationNodeBlendTreeEditor::_node_rename_lineedit_changed), CONNECT_DEFERRED);
|
||||
base = 1;
|
||||
node->set_show_close_button(true);
|
||||
node->connect("close_request", callable_mp(this, &AnimationNodeBlendTreeEditor::_delete_request).bind(E), CONNECT_DEFERRED);
|
||||
agnode->set_closable(true);
|
||||
node->connect("close_request", callable_mp(this, &AnimationNodeBlendTreeEditor::_close_request).bind(E), CONNECT_DEFERRED);
|
||||
}
|
||||
|
||||
for (int i = 0; i < agnode->get_input_count(); i++) {
|
||||
|
@ -263,7 +263,7 @@ void AnimationNodeBlendTreeEditor::update_graph() {
|
|||
mb->get_popup()->connect("index_pressed", callable_mp(this, &AnimationNodeBlendTreeEditor::_anim_selected).bind(options, E), CONNECT_DEFERRED);
|
||||
}
|
||||
|
||||
Ref<StyleBoxFlat> sb = node->get_theme_stylebox(SNAME("frame"), SNAME("GraphNode"));
|
||||
Ref<StyleBoxFlat> sb = node->get_theme_stylebox(SNAME("panel"), SNAME("GraphNode"));
|
||||
Color c = sb->get_border_color();
|
||||
Color mono_color = ((c.r + c.g + c.b) / 3) < 0.7 ? Color(1.0, 1.0, 1.0) : Color(0.0, 0.0, 0.0);
|
||||
mono_color.a = 0.85;
|
||||
|
@ -498,7 +498,7 @@ void AnimationNodeBlendTreeEditor::_anim_selected(int p_index, Array p_options,
|
|||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
void AnimationNodeBlendTreeEditor::_delete_request(const String &p_which) {
|
||||
void AnimationNodeBlendTreeEditor::_close_request(const String &p_which) {
|
||||
if (read_only) {
|
||||
return;
|
||||
}
|
||||
|
@ -522,7 +522,7 @@ void AnimationNodeBlendTreeEditor::_delete_request(const String &p_which) {
|
|||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
void AnimationNodeBlendTreeEditor::_delete_nodes_request(const TypedArray<StringName> &p_nodes) {
|
||||
void AnimationNodeBlendTreeEditor::_close_nodes_request(const TypedArray<StringName> &p_nodes) {
|
||||
if (read_only) {
|
||||
return;
|
||||
}
|
||||
|
@ -532,15 +532,19 @@ void AnimationNodeBlendTreeEditor::_delete_nodes_request(const TypedArray<String
|
|||
if (p_nodes.is_empty()) {
|
||||
for (int i = 0; i < graph->get_child_count(); i++) {
|
||||
GraphNode *gn = Object::cast_to<GraphNode>(graph->get_child(i));
|
||||
if (gn) {
|
||||
if (gn->is_selected() && gn->is_close_button_visible()) {
|
||||
if (gn && gn->is_selected()) {
|
||||
Ref<AnimationNode> anode = blend_tree->get_node(gn->get_name());
|
||||
if (anode->is_closable()) {
|
||||
to_erase.push_back(gn->get_name());
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < p_nodes.size(); i++) {
|
||||
to_erase.push_back(p_nodes[i]);
|
||||
Ref<AnimationNode> anode = blend_tree->get_node(p_nodes[i]);
|
||||
if (anode->is_closable()) {
|
||||
to_erase.push_back(p_nodes[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -552,7 +556,7 @@ void AnimationNodeBlendTreeEditor::_delete_nodes_request(const TypedArray<String
|
|||
undo_redo->create_action(TTR("Delete Node(s)"));
|
||||
|
||||
for (const StringName &F : to_erase) {
|
||||
_delete_request(F);
|
||||
_close_request(F);
|
||||
}
|
||||
|
||||
undo_redo->commit_action();
|
||||
|
@ -1083,7 +1087,7 @@ AnimationNodeBlendTreeEditor::AnimationNodeBlendTreeEditor() {
|
|||
graph->connect("disconnection_request", callable_mp(this, &AnimationNodeBlendTreeEditor::_disconnection_request), CONNECT_DEFERRED);
|
||||
graph->connect("node_selected", callable_mp(this, &AnimationNodeBlendTreeEditor::_node_selected));
|
||||
graph->connect("scroll_offset_changed", callable_mp(this, &AnimationNodeBlendTreeEditor::_scroll_changed));
|
||||
graph->connect("delete_nodes_request", callable_mp(this, &AnimationNodeBlendTreeEditor::_delete_nodes_request));
|
||||
graph->connect("close_nodes_request", callable_mp(this, &AnimationNodeBlendTreeEditor::_close_nodes_request));
|
||||
graph->connect("popup_request", callable_mp(this, &AnimationNodeBlendTreeEditor::_popup_request));
|
||||
graph->connect("connection_to_empty", callable_mp(this, &AnimationNodeBlendTreeEditor::_connection_to_empty));
|
||||
graph->connect("connection_from_empty", callable_mp(this, &AnimationNodeBlendTreeEditor::_connection_from_empty));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue