You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-14 13:41:12 +00:00
Fixes to GraphEdit:
-Working area is bigger now, solves #1148 -Using Position now works, fixes #1141 -RGB ops now work, fixes #1139 -Missing bindings to GraphEdit and GraphNode added -Shader Graph Editor Shows errors on cyclic links and missing connections
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "graph_edit.h"
|
||||
|
||||
#include "os/input.h"
|
||||
#include "os/keyboard.h"
|
||||
bool GraphEditFilter::has_point(const Point2& p_point) const {
|
||||
|
||||
return ge->_filter_input(p_point);
|
||||
@@ -53,7 +54,7 @@ void GraphEdit::disconnect_node(const StringName& p_from, int p_from_port,const
|
||||
}
|
||||
}
|
||||
|
||||
void GraphEdit::get_connection_list(List<Connection> *r_connections) {
|
||||
void GraphEdit::get_connection_list(List<Connection> *r_connections) const {
|
||||
|
||||
*r_connections=connections;
|
||||
}
|
||||
@@ -88,7 +89,6 @@ void GraphEdit::_update_scroll() {
|
||||
|
||||
updating=true;
|
||||
Rect2 screen;
|
||||
screen.size=get_size();
|
||||
for(int i=0;i<get_child_count();i++) {
|
||||
|
||||
GraphNode *gn=get_child(i)->cast_to<GraphNode>();
|
||||
@@ -101,6 +101,10 @@ void GraphEdit::_update_scroll() {
|
||||
screen = screen.merge(r);
|
||||
}
|
||||
|
||||
screen.pos-=get_size();
|
||||
screen.size+=get_size()*2.0;
|
||||
|
||||
|
||||
h_scroll->set_min(screen.pos.x);
|
||||
h_scroll->set_max(screen.pos.x+screen.size.x);
|
||||
h_scroll->set_page(get_size().x);
|
||||
@@ -492,7 +496,7 @@ void GraphEdit::_top_layer_draw() {
|
||||
|
||||
void GraphEdit::_input_event(const InputEvent& p_ev) {
|
||||
|
||||
if (p_ev.type==InputEvent::MOUSE_MOTION && p_ev.mouse_motion.button_mask&BUTTON_MASK_MIDDLE) {
|
||||
if (p_ev.type==InputEvent::MOUSE_MOTION && (p_ev.mouse_motion.button_mask&BUTTON_MASK_MIDDLE || (p_ev.mouse_motion.button_mask&BUTTON_MASK_LEFT && Input::get_singleton()->is_key_pressed(KEY_SPACE)))) {
|
||||
h_scroll->set_val( h_scroll->get_val() - p_ev.mouse_motion.relative_x );
|
||||
v_scroll->set_val( v_scroll->get_val() - p_ev.mouse_motion.relative_y );
|
||||
}
|
||||
@@ -515,12 +519,27 @@ bool GraphEdit::is_right_disconnects_enabled() const{
|
||||
return right_disconnects;
|
||||
}
|
||||
|
||||
Array GraphEdit::_get_connection_list() const {
|
||||
|
||||
List<Connection> conns;
|
||||
get_connection_list(&conns);
|
||||
Array arr;
|
||||
for(List<Connection>::Element *E=conns.front();E;E=E->next()) {
|
||||
Dictionary d;
|
||||
d["from"]=E->get().from;
|
||||
d["from_port"]=E->get().from_port;
|
||||
d["to"]=E->get().to;
|
||||
d["to_port"]=E->get().to_port;
|
||||
arr.push_back(d);
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
void GraphEdit::_bind_methods() {
|
||||
|
||||
ObjectTypeDB::bind_method(_MD("connect_node:Error","from","from_port","to","to_port"),&GraphEdit::connect_node);
|
||||
ObjectTypeDB::bind_method(_MD("is_node_connected","from","from_port","to","to_port"),&GraphEdit::is_node_connected);
|
||||
ObjectTypeDB::bind_method(_MD("disconnect_node","from","from_port","to","to_port"),&GraphEdit::disconnect_node);
|
||||
ObjectTypeDB::bind_method(_MD("get_connection_list"),&GraphEdit::_get_connection_list);
|
||||
|
||||
ObjectTypeDB::bind_method(_MD("set_right_disconnects","enable"),&GraphEdit::set_right_disconnects);
|
||||
ObjectTypeDB::bind_method(_MD("is_right_disconnects_enabled"),&GraphEdit::is_right_disconnects_enabled);
|
||||
|
||||
Reference in New Issue
Block a user