1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-05 12:10:55 +00:00

Merge pull request #48972 from DavidCambre/Expose_VisualScriptCustomNode_TypeHints_m

This commit is contained in:
Rémi Verschelde
2021-07-21 12:02:17 +02:00
committed by GitHub
3 changed files with 72 additions and 2 deletions

View File

@@ -2868,6 +2868,12 @@ PropertyInfo VisualScriptCustomNode::get_input_value_port_info(int p_idx) const
if (get_script_instance() && get_script_instance()->has_method("_get_input_value_port_name")) {
info.name = get_script_instance()->call("_get_input_value_port_name", p_idx);
}
if (get_script_instance() && get_script_instance()->has_method("_get_input_value_port_hint")) {
info.hint = PropertyHint(int(get_script_instance()->call("_get_input_value_port_hint", p_idx)));
}
if (get_script_instance() && get_script_instance()->has_method("_get_input_value_port_hint_string")) {
info.hint_string = get_script_instance()->call("_get_input_value_port_hint_string", p_idx);
}
return info;
}
@@ -2879,9 +2885,31 @@ PropertyInfo VisualScriptCustomNode::get_output_value_port_info(int p_idx) const
if (get_script_instance() && get_script_instance()->has_method("_get_output_value_port_name")) {
info.name = get_script_instance()->call("_get_output_value_port_name", p_idx);
}
if (get_script_instance() && get_script_instance()->has_method("_get_output_value_port_hint")) {
info.hint = PropertyHint(int(get_script_instance()->call("_get_output_value_port_hint", p_idx)));
}
if (get_script_instance() && get_script_instance()->has_method("_get_output_value_port_hint_string")) {
info.hint_string = get_script_instance()->call("_get_output_value_port_hint_string", p_idx);
}
return info;
}
VisualScriptCustomNode::TypeGuess VisualScriptCustomNode::guess_output_type(TypeGuess *p_inputs, int p_output) const {
TypeGuess tg;
PropertyInfo pi = VisualScriptCustomNode::get_output_value_port_info(p_output);
tg.type = pi.type;
if (pi.type == Variant::OBJECT) {
if (pi.hint == PROPERTY_HINT_RESOURCE_TYPE) {
if (pi.hint_string.is_resource_file()) {
tg.script = ResourceLoader::load(pi.hint_string);
} else if (ClassDB::class_exists(pi.hint_string)) {
tg.gdclass = pi.hint_string;
}
}
}
return tg;
}
String VisualScriptCustomNode::get_caption() const {
if (get_script_instance() && get_script_instance()->has_method("_get_caption")) {
return get_script_instance()->call("_get_caption");
@@ -3003,9 +3031,13 @@ void VisualScriptCustomNode::_bind_methods() {
BIND_VMETHOD(MethodInfo(Variant::INT, "_get_input_value_port_type", PropertyInfo(Variant::INT, "idx")));
BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_input_value_port_name", PropertyInfo(Variant::INT, "idx")));
BIND_VMETHOD(MethodInfo(Variant::INT, "_get_input_value_port_hint", PropertyInfo(Variant::INT, "idx")));
BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_input_value_port_hint_string", PropertyInfo(Variant::INT, "idx")));
BIND_VMETHOD(MethodInfo(Variant::INT, "_get_output_value_port_type", PropertyInfo(Variant::INT, "idx")));
BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_output_value_port_name", PropertyInfo(Variant::INT, "idx")));
BIND_VMETHOD(MethodInfo(Variant::INT, "_get_output_value_port_hint", PropertyInfo(Variant::INT, "idx")));
BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_output_value_port_hint_string", PropertyInfo(Variant::INT, "idx")));
BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_caption"));
BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_text"));