mirror of
https://github.com/godotengine/godot.git
synced 2025-01-22 18:01:09 +00:00
Update GraphEdit when GraphNode's slot is updated
This commit is contained in:
parent
b1c60c757f
commit
fe6c8d48e6
@ -260,6 +260,13 @@
|
||||
Emitted when the GraphNode is moved.
|
||||
</description>
|
||||
</signal>
|
||||
<signal name="slot_updated">
|
||||
<argument index="0" name="idx" type="int">
|
||||
</argument>
|
||||
<description>
|
||||
Emitted when any GraphNode's slot is updated.
|
||||
</description>
|
||||
</signal>
|
||||
<signal name="raise_request">
|
||||
<description>
|
||||
Emitted when the GraphNode is requested to be displayed over other ones. Happens on focusing (clicking into) the GraphNode.
|
||||
|
@ -385,6 +385,15 @@ void GraphEdit::_graph_node_moved(Node *p_gn) {
|
||||
connections_layer->update();
|
||||
}
|
||||
|
||||
void GraphEdit::_graph_node_slot_updated(int p_index, Node *p_gn) {
|
||||
GraphNode *gn = Object::cast_to<GraphNode>(p_gn);
|
||||
ERR_FAIL_COND(!gn);
|
||||
top_layer->update();
|
||||
minimap->update();
|
||||
update();
|
||||
connections_layer->update();
|
||||
}
|
||||
|
||||
void GraphEdit::add_child_notify(Node *p_child) {
|
||||
Control::add_child_notify(p_child);
|
||||
|
||||
@ -394,6 +403,7 @@ void GraphEdit::add_child_notify(Node *p_child) {
|
||||
if (gn) {
|
||||
gn->set_scale(Vector2(zoom, zoom));
|
||||
gn->connect("position_offset_changed", callable_mp(this, &GraphEdit::_graph_node_moved), varray(gn));
|
||||
gn->connect("slot_updated", callable_mp(this, &GraphEdit::_graph_node_slot_updated), varray(gn));
|
||||
gn->connect("raise_request", callable_mp(this, &GraphEdit::_graph_node_raised), varray(gn));
|
||||
gn->connect("item_rect_changed", callable_mp((CanvasItem *)connections_layer, &CanvasItem::update));
|
||||
gn->connect("item_rect_changed", callable_mp((CanvasItem *)minimap, &GraphEditMinimap::update));
|
||||
@ -419,6 +429,7 @@ void GraphEdit::remove_child_notify(Node *p_child) {
|
||||
GraphNode *gn = Object::cast_to<GraphNode>(p_child);
|
||||
if (gn) {
|
||||
gn->disconnect("position_offset_changed", callable_mp(this, &GraphEdit::_graph_node_moved));
|
||||
gn->disconnect("slot_updated", callable_mp(this, &GraphEdit::_graph_node_slot_updated));
|
||||
gn->disconnect("raise_request", callable_mp(this, &GraphEdit::_graph_node_raised));
|
||||
|
||||
// In case of the whole GraphEdit being destroyed these references can already be freed.
|
||||
|
@ -167,6 +167,7 @@ private:
|
||||
|
||||
void _graph_node_raised(Node *p_gn);
|
||||
void _graph_node_moved(Node *p_gn);
|
||||
void _graph_node_slot_updated(int p_index, Node *p_gn);
|
||||
|
||||
void _update_scroll();
|
||||
void _scroll_moved(double);
|
||||
|
@ -384,6 +384,8 @@ void GraphNode::set_slot(int p_idx, bool p_enable_left, int p_type_left, const C
|
||||
slot_info[p_idx] = s;
|
||||
update();
|
||||
connpos_dirty = true;
|
||||
|
||||
emit_signal("slot_updated", p_idx);
|
||||
}
|
||||
|
||||
void GraphNode::clear_slot(int p_idx) {
|
||||
@ -838,6 +840,7 @@ void GraphNode::_bind_methods() {
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "overlay", PROPERTY_HINT_ENUM, "Disabled,Breakpoint,Position"), "set_overlay", "get_overlay");
|
||||
|
||||
ADD_SIGNAL(MethodInfo("position_offset_changed"));
|
||||
ADD_SIGNAL(MethodInfo("slot_updated", PropertyInfo(Variant::INT, "idx")));
|
||||
ADD_SIGNAL(MethodInfo("dragged", PropertyInfo(Variant::VECTOR2, "from"), PropertyInfo(Variant::VECTOR2, "to")));
|
||||
ADD_SIGNAL(MethodInfo("raise_request"));
|
||||
ADD_SIGNAL(MethodInfo("close_request"));
|
||||
|
Loading…
Reference in New Issue
Block a user