Jelajahi Sumber

GDScript: read constants from parent scripts

This is needed to create export variables from enums defined in a parent
class.
George Marques 6 tahun lalu
induk
melakukan
f439397126
1 mengubah file dengan 15 tambahan dan 0 penghapusan
  1. 15 0
      modules/gdscript/gdscript_parser.cpp

+ 15 - 0
modules/gdscript/gdscript_parser.cpp

@@ -811,6 +811,21 @@ GDScriptParser::Node *GDScriptParser::_parse_expression(Node *p_parent, bool p_s
 					expr = constant;
 					bfn = true;
 				}
+
+				// Check parents for the constant
+				if (!bfn && cln->extends_file != StringName()) {
+					Ref<GDScript> parent = ResourceLoader::load(cln->extends_file);
+					if (parent.is_valid() && parent->is_valid()) {
+						Map<StringName, Variant> parent_constants;
+						parent->get_constants(&parent_constants);
+						if (parent_constants.has(identifier)) {
+							ConstantNode *constant = alloc_node<ConstantNode>();
+							constant->value = parent_constants[identifier];
+							expr = constant;
+							bfn = true;
+						}
+					}
+				}
 			}
 
 			if (!bfn) {