:=
fails on some nodes fix: #37357
This commit is contained in:
parent
307b1b3a58
commit
bdd7048cb5
@ -7365,6 +7365,8 @@ bool GDScriptParser::_get_member_type(const DataType &p_base_type, const StringN
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define IS_USAGE_MEMBER(m_usage) (!(m_usage & (PROPERTY_USAGE_GROUP | PROPERTY_USAGE_CATEGORY)))
|
||||||
|
|
||||||
// Check other script types
|
// Check other script types
|
||||||
while (scr.is_valid()) {
|
while (scr.is_valid()) {
|
||||||
Map<StringName, Variant> constants;
|
Map<StringName, Variant> constants;
|
||||||
@ -7377,7 +7379,7 @@ bool GDScriptParser::_get_member_type(const DataType &p_base_type, const StringN
|
|||||||
List<PropertyInfo> properties;
|
List<PropertyInfo> properties;
|
||||||
scr->get_script_property_list(&properties);
|
scr->get_script_property_list(&properties);
|
||||||
for (List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
|
for (List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
|
||||||
if (E->get().name == p_member) {
|
if (E->get().name == p_member && IS_USAGE_MEMBER(E->get().usage)) {
|
||||||
r_member_type = _type_from_property(E->get());
|
r_member_type = _type_from_property(E->get());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -7419,7 +7421,7 @@ bool GDScriptParser::_get_member_type(const DataType &p_base_type, const StringN
|
|||||||
List<PropertyInfo> properties;
|
List<PropertyInfo> properties;
|
||||||
ClassDB::get_property_list(native, &properties);
|
ClassDB::get_property_list(native, &properties);
|
||||||
for (List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
|
for (List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
|
||||||
if (E->get().name == p_member) {
|
if (E->get().name == p_member && IS_USAGE_MEMBER(E->get().usage)) {
|
||||||
// Check if a getter exists
|
// Check if a getter exists
|
||||||
StringName getter_name = ClassDB::get_property_getter(native, p_member);
|
StringName getter_name = ClassDB::get_property_getter(native, p_member);
|
||||||
if (getter_name != StringName()) {
|
if (getter_name != StringName()) {
|
||||||
@ -7459,7 +7461,7 @@ bool GDScriptParser::_get_member_type(const DataType &p_base_type, const StringN
|
|||||||
List<PropertyInfo> properties;
|
List<PropertyInfo> properties;
|
||||||
ClassDB::get_property_list(native, &properties);
|
ClassDB::get_property_list(native, &properties);
|
||||||
for (List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
|
for (List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
|
||||||
if (E->get().name == p_member) {
|
if (E->get().name == p_member && IS_USAGE_MEMBER(E->get().usage)) {
|
||||||
// Check if a getter exists
|
// Check if a getter exists
|
||||||
StringName getter_name = ClassDB::get_property_getter(native, p_member);
|
StringName getter_name = ClassDB::get_property_getter(native, p_member);
|
||||||
if (getter_name != StringName()) {
|
if (getter_name != StringName()) {
|
||||||
@ -7481,6 +7483,7 @@ bool GDScriptParser::_get_member_type(const DataType &p_base_type, const StringN
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#undef IS_USAGE_MEMBER
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user