diff options
Diffstat (limited to 'modules/gdscript/gdscript.h')
-rw-r--r-- | modules/gdscript/gdscript.h | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/modules/gdscript/gdscript.h b/modules/gdscript/gdscript.h index 0117ed40ab..60bd9eef53 100644 --- a/modules/gdscript/gdscript.h +++ b/modules/gdscript/gdscript.h @@ -83,6 +83,7 @@ class GDScript : public Script { friend class GDScriptFunction; friend class GDScriptAnalyzer; friend class GDScriptCompiler; + friend class GDScriptDocGen; friend class GDScriptLanguage; friend struct GDScriptUtilityFunctionsDefinitions; @@ -93,6 +94,8 @@ class GDScript : public Script { HashSet<StringName> members; //members are just indices to the instantiated script. HashMap<StringName, Variant> constants; + HashMap<StringName, MemberInfo> static_variables_indices; + Vector<Variant> static_variables; HashMap<StringName, GDScriptFunction *> member_functions; HashMap<StringName, MemberInfo> member_indices; //members are just indices to the instantiated script. HashMap<StringName, Ref<GDScript>> subclasses; @@ -101,6 +104,12 @@ class GDScript : public Script { #ifdef TOOLS_ENABLED + // For static data storage during hot-reloading. + HashMap<StringName, MemberInfo> old_static_variables_indices; + Vector<Variant> old_static_variables; + void _save_old_static_data(); + void _restore_old_static_data(); + HashMap<StringName, int> member_lines; HashMap<StringName, Variant> member_default_values; List<PropertyInfo> members_cache; @@ -113,16 +122,7 @@ class GDScript : public Script { DocData::ClassDoc doc; Vector<DocData::ClassDoc> docs; - String doc_brief_description; - String doc_description; - Vector<DocData::TutorialDoc> doc_tutorials; - HashMap<String, String> doc_functions; - HashMap<String, String> doc_variables; - HashMap<String, String> doc_constants; - HashMap<String, String> doc_signals; - HashMap<String, DocData::EnumDoc> doc_enums; void _clear_doc(); - void _update_doc(); void _add_doc(const DocData::ClassDoc &p_inner_class); #endif @@ -131,6 +131,9 @@ class GDScript : public Script { GDScriptFunction *implicit_initializer = nullptr; GDScriptFunction *initializer = nullptr; //direct pointer to new , faster to locate GDScriptFunction *implicit_ready = nullptr; + GDScriptFunction *static_initializer = nullptr; + + Error _static_init(); int subclass_count = 0; RBSet<Object *> instances; @@ -276,6 +279,8 @@ public: virtual const Variant get_rpc_config() const override; + void unload_static() const; + #ifdef TOOLS_ENABLED virtual bool is_placeholder_fallback_enabled() const override { return placeholder_fallback_enabled; } #endif @@ -447,6 +452,7 @@ public: struct { StringName _init; + StringName _static_init; StringName _notification; StringName _set; StringName _get; |