mirror of
https://github.com/godotengine/godot.git
synced 2025-10-20 00:13:30 +00:00
Visualscript editor graph unification & refactoring
Removes the need to have separate graphs per function for the VisualScript Nodes, and refactoring UI and other improvements such as fuzzy search, right click search boxes and in-graph editable nodes
This commit is contained in:
parent
edf9055b7f
commit
59738e3fa3
13 changed files with 2705 additions and 725 deletions
|
@ -200,13 +200,10 @@ void VisualScriptPropertySelector::_update_search() {
|
|||
|
||||
Object *obj = ObjectDB::get_instance(script);
|
||||
if (Object::cast_to<Script>(obj)) {
|
||||
methods.push_back(MethodInfo("*Script Methods"));
|
||||
Object::cast_to<Script>(obj)->get_script_method_list(&methods);
|
||||
|
||||
} else {
|
||||
methods.push_back(MethodInfo("*" + String(E->get())));
|
||||
ClassDB::get_method_list(E->get(), &methods, true, true);
|
||||
}
|
||||
|
||||
ClassDB::get_method_list(E->get(), &methods, true, true);
|
||||
}
|
||||
}
|
||||
for (List<MethodInfo>::Element *M = methods.front(); M; M = M->next()) {
|
||||
|
@ -349,26 +346,37 @@ void VisualScriptPropertySelector::get_visual_node_names(const String &root_filt
|
|||
continue;
|
||||
}
|
||||
|
||||
if (search_box->get_text() != String() && E->get().findn(search_box->get_text()) == -1) {
|
||||
Vector<String> tx_filters = search_box->get_text().split(" ");
|
||||
for (int i = 0; i < tx_filters.size(); i++) {
|
||||
if (tx_filters[i] != String() && E->get().findn(tx_filters[i]) == -1) {
|
||||
is_filter = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (is_filter) {
|
||||
continue;
|
||||
}
|
||||
TreeItem *item = search_options->create_item(root);
|
||||
VisualScriptOperator *vnode_operator = Object::cast_to<VisualScriptOperator>(*VisualScriptLanguage::singleton->create_node_from_name(E->get()));
|
||||
Ref<VisualScriptNode> vnode = VisualScriptLanguage::singleton->create_node_from_name(E->get());
|
||||
Ref<VisualScriptOperator> vnode_operator = vnode;
|
||||
String type_name;
|
||||
if (vnode_operator != NULL) {
|
||||
if (vnode_operator.is_valid()) {
|
||||
String type;
|
||||
if (path.size() >= 2) {
|
||||
type = path[1];
|
||||
}
|
||||
type_name = type.capitalize() + " ";
|
||||
}
|
||||
VisualScriptFunctionCall *vnode_function_call = Object::cast_to<VisualScriptFunctionCall>(*VisualScriptLanguage::singleton->create_node_from_name(E->get()));
|
||||
if (vnode_function_call != NULL) {
|
||||
Ref<VisualScriptFunctionCall> vnode_function_call = vnode;
|
||||
if (vnode_function_call.is_valid()) {
|
||||
String basic_type = Variant::get_type_name(vnode_function_call->get_basic_type());
|
||||
type_name = basic_type.capitalize() + " ";
|
||||
}
|
||||
|
||||
Vector<String> desc = path[path.size() - 1].replace("(", "( ").replace(")", " )").replace(",", ", ").split(" ");
|
||||
Ref<VisualScriptConstructor> vnode_constructor = vnode;
|
||||
if (vnode_constructor.is_valid()) {
|
||||
type_name = "Construct ";
|
||||
}
|
||||
Vector<String> desc = path[path.size() - 1].replace("(", " ").replace(")", " ").replace(",", " ").split(" ");
|
||||
for (int i = 0; i < desc.size(); i++) {
|
||||
desc.write[i] = desc[i].capitalize();
|
||||
if (desc[i].ends_with(",")) {
|
||||
|
@ -504,7 +512,7 @@ void VisualScriptPropertySelector::_notification(int p_what) {
|
|||
}
|
||||
}
|
||||
|
||||
void VisualScriptPropertySelector::select_method_from_base_type(const String &p_base, const String &p_current, const bool p_virtuals_only, const bool p_connecting) {
|
||||
void VisualScriptPropertySelector::select_method_from_base_type(const String &p_base, const String &p_current, const bool p_virtuals_only, const bool p_connecting, bool clear_text) {
|
||||
|
||||
base_type = p_base;
|
||||
selected = p_current;
|
||||
|
@ -515,7 +523,10 @@ void VisualScriptPropertySelector::select_method_from_base_type(const String &p_
|
|||
virtuals_only = p_virtuals_only;
|
||||
|
||||
show_window(.5f);
|
||||
search_box->set_text("");
|
||||
if (clear_text)
|
||||
search_box->set_text("");
|
||||
else
|
||||
search_box->select_all();
|
||||
search_box->grab_focus();
|
||||
connecting = p_connecting;
|
||||
|
||||
|
@ -526,7 +537,7 @@ void VisualScriptPropertySelector::set_type_filter(const Vector<Variant::Type> &
|
|||
type_filter = p_type_filter;
|
||||
}
|
||||
|
||||
void VisualScriptPropertySelector::select_from_base_type(const String &p_base, const String &p_current, bool p_virtuals_only, bool p_seq_connect, const bool p_connecting) {
|
||||
void VisualScriptPropertySelector::select_from_base_type(const String &p_base, const String &p_current, bool p_virtuals_only, bool p_seq_connect, const bool p_connecting, bool clear_text) {
|
||||
|
||||
base_type = p_base;
|
||||
selected = p_current;
|
||||
|
@ -538,7 +549,10 @@ void VisualScriptPropertySelector::select_from_base_type(const String &p_base, c
|
|||
virtuals_only = p_virtuals_only;
|
||||
|
||||
show_window(.5f);
|
||||
search_box->set_text("");
|
||||
if (clear_text)
|
||||
search_box->set_text("");
|
||||
else
|
||||
search_box->select_all();
|
||||
search_box->grab_focus();
|
||||
seq_connect = p_seq_connect;
|
||||
connecting = p_connecting;
|
||||
|
@ -546,7 +560,7 @@ void VisualScriptPropertySelector::select_from_base_type(const String &p_base, c
|
|||
_update_search();
|
||||
}
|
||||
|
||||
void VisualScriptPropertySelector::select_from_script(const Ref<Script> &p_script, const String &p_current, const bool p_connecting) {
|
||||
void VisualScriptPropertySelector::select_from_script(const Ref<Script> &p_script, const String &p_current, const bool p_connecting, bool clear_text) {
|
||||
ERR_FAIL_COND(p_script.is_null());
|
||||
|
||||
base_type = p_script->get_instance_base_type();
|
||||
|
@ -559,7 +573,10 @@ void VisualScriptPropertySelector::select_from_script(const Ref<Script> &p_scrip
|
|||
virtuals_only = false;
|
||||
|
||||
show_window(.5f);
|
||||
search_box->set_text("");
|
||||
if (clear_text)
|
||||
search_box->set_text("");
|
||||
else
|
||||
search_box->select_all();
|
||||
search_box->grab_focus();
|
||||
seq_connect = false;
|
||||
connecting = p_connecting;
|
||||
|
@ -567,7 +584,7 @@ void VisualScriptPropertySelector::select_from_script(const Ref<Script> &p_scrip
|
|||
_update_search();
|
||||
}
|
||||
|
||||
void VisualScriptPropertySelector::select_from_basic_type(Variant::Type p_type, const String &p_current, const bool p_connecting) {
|
||||
void VisualScriptPropertySelector::select_from_basic_type(Variant::Type p_type, const String &p_current, const bool p_connecting, bool clear_text) {
|
||||
ERR_FAIL_COND(p_type == Variant::NIL);
|
||||
base_type = "";
|
||||
selected = p_current;
|
||||
|
@ -579,7 +596,10 @@ void VisualScriptPropertySelector::select_from_basic_type(Variant::Type p_type,
|
|||
virtuals_only = false;
|
||||
|
||||
show_window(.5f);
|
||||
search_box->set_text("");
|
||||
if (clear_text)
|
||||
search_box->set_text("");
|
||||
else
|
||||
search_box->select_all();
|
||||
search_box->grab_focus();
|
||||
seq_connect = false;
|
||||
connecting = p_connecting;
|
||||
|
@ -587,7 +607,7 @@ void VisualScriptPropertySelector::select_from_basic_type(Variant::Type p_type,
|
|||
_update_search();
|
||||
}
|
||||
|
||||
void VisualScriptPropertySelector::select_from_action(const String &p_type, const String &p_current, const bool p_connecting) {
|
||||
void VisualScriptPropertySelector::select_from_action(const String &p_type, const String &p_current, const bool p_connecting, bool clear_text) {
|
||||
base_type = p_type;
|
||||
selected = p_current;
|
||||
type = Variant::NIL;
|
||||
|
@ -598,7 +618,10 @@ void VisualScriptPropertySelector::select_from_action(const String &p_type, cons
|
|||
virtuals_only = false;
|
||||
|
||||
show_window(.5f);
|
||||
search_box->set_text("");
|
||||
if (clear_text)
|
||||
search_box->set_text("");
|
||||
else
|
||||
search_box->select_all();
|
||||
search_box->grab_focus();
|
||||
seq_connect = true;
|
||||
connecting = p_connecting;
|
||||
|
@ -606,8 +629,8 @@ void VisualScriptPropertySelector::select_from_action(const String &p_type, cons
|
|||
_update_search();
|
||||
}
|
||||
|
||||
void VisualScriptPropertySelector::select_from_instance(Object *p_instance, const String &p_current, const bool p_connecting) {
|
||||
base_type = "";
|
||||
void VisualScriptPropertySelector::select_from_instance(Object *p_instance, const String &p_current, const bool p_connecting, const String &p_basetype, bool clear_text) {
|
||||
base_type = p_basetype;
|
||||
selected = p_current;
|
||||
type = Variant::NIL;
|
||||
script = 0;
|
||||
|
@ -617,7 +640,10 @@ void VisualScriptPropertySelector::select_from_instance(Object *p_instance, cons
|
|||
virtuals_only = false;
|
||||
|
||||
show_window(.5f);
|
||||
search_box->set_text("");
|
||||
if (clear_text)
|
||||
search_box->set_text("");
|
||||
else
|
||||
search_box->select_all();
|
||||
search_box->grab_focus();
|
||||
seq_connect = false;
|
||||
connecting = p_connecting;
|
||||
|
@ -625,7 +651,7 @@ void VisualScriptPropertySelector::select_from_instance(Object *p_instance, cons
|
|||
_update_search();
|
||||
}
|
||||
|
||||
void VisualScriptPropertySelector::select_from_visual_script(const String &p_base, const bool p_connecting) {
|
||||
void VisualScriptPropertySelector::select_from_visual_script(const String &p_base, const bool p_connecting, bool clear_text) {
|
||||
base_type = p_base;
|
||||
selected = "";
|
||||
type = Variant::NIL;
|
||||
|
@ -635,7 +661,10 @@ void VisualScriptPropertySelector::select_from_visual_script(const String &p_bas
|
|||
instance = NULL;
|
||||
virtuals_only = false;
|
||||
show_window(.5f);
|
||||
search_box->set_text("");
|
||||
if (clear_text)
|
||||
search_box->set_text("");
|
||||
else
|
||||
search_box->select_all();
|
||||
search_box->grab_focus();
|
||||
connecting = p_connecting;
|
||||
|
||||
|
@ -646,7 +675,7 @@ void VisualScriptPropertySelector::show_window(float p_screen_ratio) {
|
|||
Rect2 rect;
|
||||
Point2 window_size = get_viewport_rect().size;
|
||||
rect.size = (window_size * p_screen_ratio).floor();
|
||||
rect.size.x = rect.size.x / 1.25f;
|
||||
rect.size.x = rect.size.x / 2.2f;
|
||||
rect.position = ((window_size - rect.size) / 2.0f).floor();
|
||||
popup(rect);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue