diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2022-01-03 20:40:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-03 20:40:33 +0100 |
commit | 98b3ba1842a47a34097499a9eee6aa31083a99df (patch) | |
tree | 33efc4bb525ed4452c4924efc459bacbf4c5d68b /core | |
parent | 20563b081bcbfe853622a139422751dba6a75714 (diff) | |
parent | 9d5b80705912d85c3c7301ac0ea0afbf9372a660 (diff) | |
download | redot-engine-98b3ba1842a47a34097499a9eee6aa31083a99df.tar.gz |
Merge pull request #53957 from fabriceci/new-template-workflow
Diffstat (limited to 'core')
-rw-r--r-- | core/object/script_language.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/core/object/script_language.h b/core/object/script_language.h index 8d76cbf479..4754b01a07 100644 --- a/core/object/script_language.h +++ b/core/object/script_language.h @@ -274,13 +274,32 @@ public: String message; }; + enum TemplateLocation { + TEMPLATE_BUILT_IN, + TEMPLATE_EDITOR, + TEMPLATE_PROJECT + }; + + struct ScriptTemplate { + String inherit = "Object"; + String name; + String description; + String content; + int id = 0; + TemplateLocation origin = TemplateLocation::TEMPLATE_BUILT_IN; + + String get_hash() const { + return itos(origin) + inherit + name; + } + }; + void get_core_type_words(List<String> *p_core_type_words) const; virtual void get_reserved_words(List<String> *p_words) const = 0; virtual bool is_control_flow_keyword(String p_string) const = 0; virtual void get_comment_delimiters(List<String> *p_delimiters) const = 0; virtual void get_string_delimiters(List<String> *p_delimiters) const = 0; - virtual Ref<Script> get_template(const String &p_class_name, const String &p_base_class_name) const = 0; - virtual void make_template(const String &p_class_name, const String &p_base_class_name, Ref<Script> &p_script) {} + virtual Ref<Script> make_template(const String &p_template, const String &p_class_name, const String &p_base_class_name) const { return Ref<Script>(); } + virtual Vector<ScriptTemplate> get_built_in_templates(StringName p_object) { return Vector<ScriptTemplate>(); } virtual bool is_using_templates() { return false; } virtual bool validate(const String &p_script, const String &p_path = "", List<String> *r_functions = nullptr, List<ScriptError> *r_errors = nullptr, List<Warning> *r_warnings = nullptr, Set<int> *r_safe_lines = nullptr) const = 0; virtual String validate_path(const String &p_path) const { return ""; } |