feat: updated engine
This commit is contained in:
parent
cbe99774ff
commit
f4cf6b3999
6607 changed files with 910135 additions and 430025 deletions
|
|
@ -31,9 +31,12 @@
|
|||
#include "graph_edit.h"
|
||||
#include "graph_edit.compat.inc"
|
||||
|
||||
#include "core/config/engine.h"
|
||||
#include "core/input/input.h"
|
||||
#include "core/math/geometry_2d.h"
|
||||
#include "core/math/math_funcs.h"
|
||||
#include "core/object/callable_mp.h"
|
||||
#include "core/object/class_db.h"
|
||||
#include "core/os/keyboard.h"
|
||||
#include "scene/2d/line_2d.h"
|
||||
#include "scene/gui/box_container.h"
|
||||
|
|
@ -511,8 +514,8 @@ void GraphEdit::_update_scrollbars() {
|
|||
v_scrollbar->show();
|
||||
}
|
||||
|
||||
Size2 hmin = h_scrollbar->get_combined_minimum_size();
|
||||
Size2 vmin = v_scrollbar->get_combined_minimum_size();
|
||||
Size2 hmin = h_scrollbar->get_bound_minimum_size();
|
||||
Size2 vmin = v_scrollbar->get_bound_minimum_size();
|
||||
|
||||
// Avoid scrollbar overlapping.
|
||||
h_scrollbar->set_anchor_and_offset(SIDE_RIGHT, ANCHOR_END, v_scrollbar->is_visible() ? -vmin.width : 0);
|
||||
|
|
@ -837,8 +840,8 @@ void GraphEdit::_notification(int p_what) {
|
|||
menu_panel->add_theme_style_override(SceneStringName(panel), theme_cache.menu_panel);
|
||||
} break;
|
||||
case NOTIFICATION_READY: {
|
||||
Size2 hmin = h_scrollbar->get_combined_minimum_size();
|
||||
Size2 vmin = v_scrollbar->get_combined_minimum_size();
|
||||
Size2 hmin = h_scrollbar->get_bound_minimum_size();
|
||||
Size2 vmin = v_scrollbar->get_bound_minimum_size();
|
||||
|
||||
h_scrollbar->set_anchor_and_offset(SIDE_LEFT, ANCHOR_BEGIN, 0);
|
||||
h_scrollbar->set_anchor_and_offset(SIDE_RIGHT, ANCHOR_END, 0);
|
||||
|
|
@ -1829,7 +1832,7 @@ void GraphEdit::_minimap_draw() {
|
|||
Vector2 node_size = minimap->_convert_from_graph_position(graph_frame->get_size() * zoom);
|
||||
Rect2 node_rect = Rect2(node_position, node_size);
|
||||
|
||||
Ref<StyleBoxFlat> sb_minimap = minimap->theme_cache.node_style->duplicate();
|
||||
Ref<StyleBoxFlat> sb_minimap = minimap->theme_cache.node_style;
|
||||
|
||||
// Override default values with colors provided by the GraphNode's stylebox, if possible.
|
||||
Ref<StyleBoxFlat> sb_frame = graph_frame->get_theme_stylebox(graph_frame->is_selected() ? SNAME("panel_selected") : SceneStringName(panel));
|
||||
|
|
@ -1838,6 +1841,7 @@ void GraphEdit::_minimap_draw() {
|
|||
if (graph_frame->is_tint_color_enabled()) {
|
||||
node_color = graph_frame->get_tint_color();
|
||||
}
|
||||
sb_minimap = sb_minimap->duplicate();
|
||||
sb_minimap->set_bg_color(node_color);
|
||||
}
|
||||
|
||||
|
|
@ -1855,12 +1859,13 @@ void GraphEdit::_minimap_draw() {
|
|||
Vector2 node_size = minimap->_convert_from_graph_position(graph_node->get_size() * zoom);
|
||||
Rect2 node_rect = Rect2(node_position, node_size);
|
||||
|
||||
Ref<StyleBoxFlat> sb_minimap = minimap->theme_cache.node_style->duplicate();
|
||||
Ref<StyleBoxFlat> sb_minimap = minimap->theme_cache.node_style;
|
||||
|
||||
// Override default values with colors provided by the GraphNode's stylebox, if possible.
|
||||
Ref<StyleBoxFlat> sb_frame = graph_node->is_selected() ? graph_node->theme_cache.panel_selected : graph_node->theme_cache.panel;
|
||||
if (sb_frame.is_valid()) {
|
||||
Color node_color = sb_frame->get_bg_color();
|
||||
sb_minimap = sb_minimap->duplicate();
|
||||
sb_minimap->set_bg_color(node_color);
|
||||
}
|
||||
|
||||
|
|
@ -2590,7 +2595,7 @@ TypedArray<Dictionary> GraphEdit::_get_connections_intersecting_with_rect(const
|
|||
TypedArray<Dictionary> GraphEdit::_get_connection_list_from_node(const StringName &p_node) const {
|
||||
ERR_FAIL_COND_V(!connection_map.has(p_node), TypedArray<Dictionary>());
|
||||
|
||||
List<Ref<GraphEdit::Connection>> connections_from_node = connection_map.get(p_node);
|
||||
List<Ref<GraphEdit::Connection>> connections_from_node(connection_map.get(p_node));
|
||||
TypedArray<Dictionary> connections_from_node_dict;
|
||||
|
||||
for (const Ref<Connection> &conn : connections_from_node) {
|
||||
|
|
@ -2949,7 +2954,7 @@ void GraphEdit::set_warped_panning(bool p_warped) {
|
|||
}
|
||||
|
||||
void GraphEdit::update_warped_panning() {
|
||||
panner->setup_warped_panning(get_viewport(), warped_panning);
|
||||
panner->setup_warped_panning(this, warped_panning);
|
||||
}
|
||||
|
||||
void GraphEdit::arrange_nodes() {
|
||||
|
|
@ -3114,9 +3119,9 @@ void GraphEdit::_bind_methods() {
|
|||
ADD_SIGNAL(MethodInfo("duplicate_nodes_request"));
|
||||
ADD_SIGNAL(MethodInfo("delete_nodes_request", PropertyInfo(Variant::ARRAY, "nodes", PROPERTY_HINT_ARRAY_TYPE, "StringName")));
|
||||
|
||||
ADD_SIGNAL(MethodInfo("node_selected", PropertyInfo(Variant::OBJECT, "node", PROPERTY_HINT_RESOURCE_TYPE, "Node")));
|
||||
ADD_SIGNAL(MethodInfo("node_deselected", PropertyInfo(Variant::OBJECT, "node", PROPERTY_HINT_RESOURCE_TYPE, "Node")));
|
||||
ADD_SIGNAL(MethodInfo("frame_rect_changed", PropertyInfo(Variant::OBJECT, "frame", PROPERTY_HINT_RESOURCE_TYPE, "GraphFrame"), PropertyInfo(Variant::RECT2, "new_rect")));
|
||||
ADD_SIGNAL(MethodInfo("node_selected", PropertyInfo(Variant::OBJECT, "node", PROPERTY_HINT_RESOURCE_TYPE, Node::get_class_static())));
|
||||
ADD_SIGNAL(MethodInfo("node_deselected", PropertyInfo(Variant::OBJECT, "node", PROPERTY_HINT_RESOURCE_TYPE, Node::get_class_static())));
|
||||
ADD_SIGNAL(MethodInfo("frame_rect_changed", PropertyInfo(Variant::OBJECT, "frame", PROPERTY_HINT_RESOURCE_TYPE, GraphFrame::get_class_static()), PropertyInfo(Variant::RECT2, "new_rect")));
|
||||
|
||||
ADD_SIGNAL(MethodInfo("popup_request", PropertyInfo(Variant::VECTOR2, "at_position")));
|
||||
|
||||
|
|
@ -3180,16 +3185,18 @@ GraphEdit::GraphEdit() {
|
|||
panner->set_callbacks(callable_mp(this, &GraphEdit::_pan_callback), callable_mp(this, &GraphEdit::_zoom_callback));
|
||||
|
||||
top_layer = memnew(Control);
|
||||
top_layer->set_name(StringName("_top_layer"));
|
||||
add_child(top_layer, false, INTERNAL_MODE_BACK);
|
||||
top_layer->set_mouse_filter(MOUSE_FILTER_IGNORE);
|
||||
top_layer->set_anchors_and_offsets_preset(Control::PRESET_FULL_RECT);
|
||||
top_layer->set_use_parent_material(true);
|
||||
top_layer->connect(SceneStringName(draw), callable_mp(this, &GraphEdit::_top_layer_draw));
|
||||
top_layer->connect(SceneStringName(focus_exited), callable_mp(panner.ptr(), &ViewPanner::release_pan_key));
|
||||
|
||||
connections_layer = memnew(Control);
|
||||
add_child(connections_layer, false);
|
||||
connections_layer->connect(SceneStringName(draw), callable_mp(this, &GraphEdit::_update_connections));
|
||||
connections_layer->set_name("_connection_layer");
|
||||
connections_layer->set_name(StringName("_connection_layer"));
|
||||
connections_layer->set_disable_visibility_clip(true); // Necessary, so it can draw freely and be offset.
|
||||
connections_layer->set_mouse_filter(MOUSE_FILTER_IGNORE);
|
||||
|
||||
|
|
@ -3207,11 +3214,13 @@ GraphEdit::GraphEdit() {
|
|||
top_connection_layer->add_child(dragged_connection_line);
|
||||
|
||||
h_scrollbar = memnew(HScrollBar);
|
||||
h_scrollbar->set_name("_h_scroll");
|
||||
h_scrollbar->set_name(StringName("_h_scroll"));
|
||||
h_scrollbar->set_use_parent_material(true);
|
||||
top_layer->add_child(h_scrollbar);
|
||||
|
||||
v_scrollbar = memnew(VScrollBar);
|
||||
v_scrollbar->set_name("_v_scroll");
|
||||
v_scrollbar->set_name(StringName("_v_scroll"));
|
||||
v_scrollbar->set_use_parent_material(true);
|
||||
top_layer->add_child(v_scrollbar);
|
||||
|
||||
// Set large minmax so it can scroll even if not resized yet.
|
||||
|
|
@ -3228,59 +3237,72 @@ GraphEdit::GraphEdit() {
|
|||
|
||||
menu_panel = memnew(PanelContainer);
|
||||
menu_panel->set_visible(show_menu);
|
||||
menu_panel->set_use_parent_material(true);
|
||||
top_layer->add_child(menu_panel);
|
||||
menu_panel->set_position(Vector2(10, 10));
|
||||
|
||||
menu_hbox = memnew(HBoxContainer);
|
||||
menu_hbox->set_name(StringName("_menu_hbox"));
|
||||
menu_panel->add_child(menu_hbox);
|
||||
|
||||
// Zoom label and controls.
|
||||
|
||||
zoom_label = memnew(Label);
|
||||
zoom_label->set_name(StringName("_zoom_label"));
|
||||
zoom_label->set_visible(show_zoom_label);
|
||||
zoom_label->set_v_size_flags(Control::SIZE_SHRINK_CENTER);
|
||||
zoom_label->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
|
||||
zoom_label->set_custom_minimum_size(Size2(48, 0));
|
||||
zoom_label->set_use_parent_material(true);
|
||||
menu_hbox->add_child(zoom_label);
|
||||
_update_zoom_label();
|
||||
|
||||
zoom_minus_button = memnew(Button);
|
||||
zoom_minus_button->set_name(StringName("_zoom_minus_button"));
|
||||
zoom_minus_button->set_theme_type_variation(SceneStringName(FlatButton));
|
||||
zoom_minus_button->set_visible(show_zoom_buttons);
|
||||
zoom_minus_button->set_tooltip_text(ETR("Zoom Out"));
|
||||
zoom_minus_button->set_focus_mode(FOCUS_ACCESSIBILITY);
|
||||
zoom_minus_button->set_use_parent_material(true);
|
||||
menu_hbox->add_child(zoom_minus_button);
|
||||
zoom_minus_button->connect(SceneStringName(pressed), callable_mp(this, &GraphEdit::_zoom_minus));
|
||||
|
||||
zoom_reset_button = memnew(Button);
|
||||
zoom_reset_button->set_name(StringName("_zoom_reset_button"));
|
||||
zoom_reset_button->set_theme_type_variation(SceneStringName(FlatButton));
|
||||
zoom_reset_button->set_visible(show_zoom_buttons);
|
||||
zoom_reset_button->set_tooltip_text(ETR("Zoom Reset"));
|
||||
zoom_reset_button->set_focus_mode(FOCUS_ACCESSIBILITY);
|
||||
zoom_reset_button->set_use_parent_material(true);
|
||||
menu_hbox->add_child(zoom_reset_button);
|
||||
zoom_reset_button->connect(SceneStringName(pressed), callable_mp(this, &GraphEdit::_zoom_reset));
|
||||
|
||||
zoom_plus_button = memnew(Button);
|
||||
zoom_plus_button->set_name(StringName("_zoom_plus_button"));
|
||||
zoom_plus_button->set_theme_type_variation(SceneStringName(FlatButton));
|
||||
zoom_plus_button->set_visible(show_zoom_buttons);
|
||||
zoom_plus_button->set_tooltip_text(ETR("Zoom In"));
|
||||
zoom_plus_button->set_focus_mode(FOCUS_ACCESSIBILITY);
|
||||
zoom_plus_button->set_use_parent_material(true);
|
||||
menu_hbox->add_child(zoom_plus_button);
|
||||
zoom_plus_button->connect(SceneStringName(pressed), callable_mp(this, &GraphEdit::_zoom_plus));
|
||||
|
||||
// Grid controls.
|
||||
|
||||
toggle_grid_button = memnew(Button);
|
||||
toggle_grid_button->set_name(StringName("_toggle_grid_button"));
|
||||
toggle_grid_button->set_theme_type_variation(SceneStringName(FlatButton));
|
||||
toggle_grid_button->set_visible(show_grid_buttons);
|
||||
toggle_grid_button->set_toggle_mode(true);
|
||||
toggle_grid_button->set_pressed(true);
|
||||
toggle_grid_button->set_tooltip_text(ETR("Toggle the visual grid."));
|
||||
toggle_grid_button->set_focus_mode(FOCUS_ACCESSIBILITY);
|
||||
toggle_grid_button->set_use_parent_material(true);
|
||||
menu_hbox->add_child(toggle_grid_button);
|
||||
toggle_grid_button->connect(SceneStringName(pressed), callable_mp(this, &GraphEdit::_show_grid_toggled));
|
||||
|
||||
toggle_snapping_button = memnew(Button);
|
||||
toggle_snapping_button->set_name(StringName("_toggle_snapping_button"));
|
||||
toggle_snapping_button->set_theme_type_variation(SceneStringName(FlatButton));
|
||||
toggle_snapping_button->set_visible(show_grid_buttons);
|
||||
toggle_snapping_button->set_toggle_mode(true);
|
||||
|
|
@ -3291,33 +3313,39 @@ GraphEdit::GraphEdit() {
|
|||
toggle_snapping_button->connect(SceneStringName(pressed), callable_mp(this, &GraphEdit::_snapping_toggled));
|
||||
|
||||
snapping_distance_spinbox = memnew(SpinBox);
|
||||
snapping_distance_spinbox->set_name(StringName("_snapping_distance_spinbox"));
|
||||
snapping_distance_spinbox->set_visible(show_grid_buttons);
|
||||
snapping_distance_spinbox->set_min(GRID_MIN_SNAPPING_DISTANCE);
|
||||
snapping_distance_spinbox->set_max(GRID_MAX_SNAPPING_DISTANCE);
|
||||
snapping_distance_spinbox->set_step(1);
|
||||
snapping_distance_spinbox->set_value(snapping_distance);
|
||||
snapping_distance_spinbox->set_tooltip_text(ETR("Change the snapping distance."));
|
||||
snapping_distance_spinbox->set_use_parent_material(true);
|
||||
menu_hbox->add_child(snapping_distance_spinbox);
|
||||
snapping_distance_spinbox->connect(SceneStringName(value_changed), callable_mp(this, &GraphEdit::_snapping_distance_changed));
|
||||
|
||||
// Extra controls.
|
||||
|
||||
minimap_button = memnew(Button);
|
||||
minimap_button->set_name(StringName("_minimap_button"));
|
||||
minimap_button->set_theme_type_variation(SceneStringName(FlatButton));
|
||||
minimap_button->set_visible(show_minimap_button);
|
||||
minimap_button->set_toggle_mode(true);
|
||||
minimap_button->set_tooltip_text(ETR("Toggle the graph minimap."));
|
||||
minimap_button->set_pressed(show_grid);
|
||||
minimap_button->set_focus_mode(FOCUS_ACCESSIBILITY);
|
||||
minimap_button->set_use_parent_material(true);
|
||||
menu_hbox->add_child(minimap_button);
|
||||
minimap_button->connect(SceneStringName(pressed), callable_mp(this, &GraphEdit::_minimap_toggled));
|
||||
|
||||
arrange_button = memnew(Button);
|
||||
arrange_button->set_name(StringName("_arrange_button"));
|
||||
arrange_button->set_theme_type_variation(SceneStringName(FlatButton));
|
||||
arrange_button->set_visible(show_arrange_button);
|
||||
arrange_button->set_tooltip_text(ETR("Automatically arrange selected nodes."));
|
||||
arrange_button->connect(SceneStringName(pressed), callable_mp(this, &GraphEdit::arrange_nodes));
|
||||
arrange_button->set_focus_mode(FOCUS_ACCESSIBILITY);
|
||||
arrange_button->set_use_parent_material(true);
|
||||
menu_hbox->add_child(arrange_button);
|
||||
|
||||
// Minimap.
|
||||
|
|
@ -3326,8 +3354,8 @@ GraphEdit::GraphEdit() {
|
|||
const float minimap_opacity = 0.65;
|
||||
|
||||
minimap = memnew(GraphEditMinimap(this));
|
||||
minimap->set_name(StringName("_minimap"));
|
||||
top_layer->add_child(minimap);
|
||||
minimap->set_name("_minimap");
|
||||
minimap->set_modulate(Color(1, 1, 1, minimap_opacity));
|
||||
minimap->set_mouse_filter(MOUSE_FILTER_PASS);
|
||||
minimap->set_custom_minimum_size(Vector2(50, 50));
|
||||
|
|
@ -3337,6 +3365,7 @@ GraphEdit::GraphEdit() {
|
|||
minimap->set_offset(Side::SIDE_TOP, -minimap_size.height - MINIMAP_OFFSET);
|
||||
minimap->set_offset(Side::SIDE_RIGHT, -MINIMAP_OFFSET);
|
||||
minimap->set_offset(Side::SIDE_BOTTOM, -MINIMAP_OFFSET);
|
||||
minimap->set_use_parent_material(true);
|
||||
minimap->connect(SceneStringName(draw), callable_mp(this, &GraphEdit::_minimap_draw));
|
||||
|
||||
set_clip_contents(true);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue