Expose visual script custom node type hints
This commit is contained in:
parent
40b57319e2
commit
9178e24d30
3 changed files with 72 additions and 2 deletions
|
@ -30,6 +30,24 @@
|
||||||
Return the count of input value ports.
|
Return the count of input value ports.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
|
<method name="_get_input_value_port_hint" qualifiers="virtual">
|
||||||
|
<return type="int">
|
||||||
|
</return>
|
||||||
|
<argument index="0" name="idx" type="int">
|
||||||
|
</argument>
|
||||||
|
<description>
|
||||||
|
Return the specified input port's hint. See the [enum @GlobalScope.PropertyHint] hints.
|
||||||
|
</description>
|
||||||
|
</method>
|
||||||
|
<method name="_get_input_value_port_hint_string" qualifiers="virtual">
|
||||||
|
<return type="String">
|
||||||
|
</return>
|
||||||
|
<argument index="0" name="idx" type="int">
|
||||||
|
</argument>
|
||||||
|
<description>
|
||||||
|
Return the specified input port's hint string.
|
||||||
|
</description>
|
||||||
|
</method>
|
||||||
<method name="_get_input_value_port_name" qualifiers="virtual">
|
<method name="_get_input_value_port_name" qualifiers="virtual">
|
||||||
<return type="String">
|
<return type="String">
|
||||||
</return>
|
</return>
|
||||||
|
@ -71,13 +89,31 @@
|
||||||
Return the amount of output value ports.
|
Return the amount of output value ports.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
|
<method name="_get_output_value_port_hint" qualifiers="virtual">
|
||||||
|
<return type="int">
|
||||||
|
</return>
|
||||||
|
<argument index="0" name="idx" type="int">
|
||||||
|
</argument>
|
||||||
|
<description>
|
||||||
|
Return the specified output port's hint. See the [enum @GlobalScope.PropertyHint] hints.
|
||||||
|
</description>
|
||||||
|
</method>
|
||||||
|
<method name="_get_output_value_port_hint_string" qualifiers="virtual">
|
||||||
|
<return type="String">
|
||||||
|
</return>
|
||||||
|
<argument index="0" name="idx" type="int">
|
||||||
|
</argument>
|
||||||
|
<description>
|
||||||
|
Return the specified output port's hint string.
|
||||||
|
</description>
|
||||||
|
</method>
|
||||||
<method name="_get_output_value_port_name" qualifiers="virtual">
|
<method name="_get_output_value_port_name" qualifiers="virtual">
|
||||||
<return type="String">
|
<return type="String">
|
||||||
</return>
|
</return>
|
||||||
<argument index="0" name="idx" type="int">
|
<argument index="0" name="idx" type="int">
|
||||||
</argument>
|
</argument>
|
||||||
<description>
|
<description>
|
||||||
Return the specified output's name.
|
Return the specified output port's name.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="_get_output_value_port_type" qualifiers="virtual">
|
<method name="_get_output_value_port_type" qualifiers="virtual">
|
||||||
|
@ -86,7 +122,7 @@
|
||||||
<argument index="0" name="idx" type="int">
|
<argument index="0" name="idx" type="int">
|
||||||
</argument>
|
</argument>
|
||||||
<description>
|
<description>
|
||||||
Return the specified output's type. See the [enum Variant.Type] values.
|
Return the specified output port's type. See the [enum Variant.Type] values.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="_get_text" qualifiers="virtual">
|
<method name="_get_text" qualifiers="virtual">
|
||||||
|
|
|
@ -2736,6 +2736,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")) {
|
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);
|
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;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2747,9 +2753,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")) {
|
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);
|
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;
|
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 {
|
String VisualScriptCustomNode::get_caption() const {
|
||||||
if (get_script_instance() && get_script_instance()->has_method("_get_caption")) {
|
if (get_script_instance() && get_script_instance()->has_method("_get_caption")) {
|
||||||
return get_script_instance()->call("_get_caption");
|
return get_script_instance()->call("_get_caption");
|
||||||
|
@ -2871,9 +2899,13 @@ void VisualScriptCustomNode::_bind_methods() {
|
||||||
|
|
||||||
BIND_VMETHOD(MethodInfo(Variant::INT, "_get_input_value_port_type", PropertyInfo(Variant::INT, "idx")));
|
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::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::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::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_caption"));
|
||||||
BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_text"));
|
BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_text"));
|
||||||
|
|
|
@ -790,6 +790,8 @@ public:
|
||||||
|
|
||||||
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
|
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
|
||||||
|
|
||||||
|
virtual TypeGuess guess_output_type(TypeGuess *p_inputs, int p_output) const;
|
||||||
|
|
||||||
void _script_changed();
|
void _script_changed();
|
||||||
|
|
||||||
VisualScriptCustomNode();
|
VisualScriptCustomNode();
|
||||||
|
|
Loading…
Reference in a new issue