Merge pull request #60723 from reduz/refactor-module-initialization

This commit is contained in:
Rémi Verschelde
2022-05-04 19:08:43 +02:00
committed by GitHub
2 changed files with 86 additions and 75 deletions

View File

@@ -47,95 +47,104 @@ VisualScriptLanguage *visual_script_language = nullptr;
static VisualScriptCustomNodes *vs_custom_nodes_singleton = nullptr; static VisualScriptCustomNodes *vs_custom_nodes_singleton = nullptr;
#endif #endif
void register_visual_script_types() { void initialize_visual_script_module(ModuleInitializationLevel p_level) {
visual_script_language = memnew(VisualScriptLanguage); if (p_level == MODULE_INITIALIZATION_LEVEL_SERVERS) {
//script_language_gd->init(); visual_script_language = memnew(VisualScriptLanguage);
ScriptServer::register_language(visual_script_language); //script_language_gd->init();
ScriptServer::register_language(visual_script_language);
GDREGISTER_CLASS(VisualScript); GDREGISTER_CLASS(VisualScript);
GDREGISTER_ABSTRACT_CLASS(VisualScriptNode); GDREGISTER_ABSTRACT_CLASS(VisualScriptNode);
GDREGISTER_CLASS(VisualScriptFunctionState); GDREGISTER_CLASS(VisualScriptFunctionState);
GDREGISTER_CLASS(VisualScriptFunction); GDREGISTER_CLASS(VisualScriptFunction);
GDREGISTER_ABSTRACT_CLASS(VisualScriptLists); GDREGISTER_ABSTRACT_CLASS(VisualScriptLists);
GDREGISTER_CLASS(VisualScriptComposeArray); GDREGISTER_CLASS(VisualScriptComposeArray);
GDREGISTER_CLASS(VisualScriptOperator); GDREGISTER_CLASS(VisualScriptOperator);
GDREGISTER_CLASS(VisualScriptVariableSet); GDREGISTER_CLASS(VisualScriptVariableSet);
GDREGISTER_CLASS(VisualScriptVariableGet); GDREGISTER_CLASS(VisualScriptVariableGet);
GDREGISTER_CLASS(VisualScriptConstant); GDREGISTER_CLASS(VisualScriptConstant);
GDREGISTER_CLASS(VisualScriptIndexGet); GDREGISTER_CLASS(VisualScriptIndexGet);
GDREGISTER_CLASS(VisualScriptIndexSet); GDREGISTER_CLASS(VisualScriptIndexSet);
GDREGISTER_CLASS(VisualScriptGlobalConstant); GDREGISTER_CLASS(VisualScriptGlobalConstant);
GDREGISTER_CLASS(VisualScriptClassConstant); GDREGISTER_CLASS(VisualScriptClassConstant);
GDREGISTER_CLASS(VisualScriptMathConstant); GDREGISTER_CLASS(VisualScriptMathConstant);
GDREGISTER_CLASS(VisualScriptBasicTypeConstant); GDREGISTER_CLASS(VisualScriptBasicTypeConstant);
GDREGISTER_CLASS(VisualScriptEngineSingleton); GDREGISTER_CLASS(VisualScriptEngineSingleton);
GDREGISTER_CLASS(VisualScriptSceneNode); GDREGISTER_CLASS(VisualScriptSceneNode);
GDREGISTER_CLASS(VisualScriptSceneTree); GDREGISTER_CLASS(VisualScriptSceneTree);
GDREGISTER_CLASS(VisualScriptResourcePath); GDREGISTER_CLASS(VisualScriptResourcePath);
GDREGISTER_CLASS(VisualScriptSelf); GDREGISTER_CLASS(VisualScriptSelf);
GDREGISTER_CLASS(VisualScriptCustomNode); GDREGISTER_CLASS(VisualScriptCustomNode);
GDREGISTER_CLASS(VisualScriptSubCall); GDREGISTER_CLASS(VisualScriptSubCall);
GDREGISTER_CLASS(VisualScriptComment); GDREGISTER_CLASS(VisualScriptComment);
GDREGISTER_CLASS(VisualScriptConstructor); GDREGISTER_CLASS(VisualScriptConstructor);
GDREGISTER_CLASS(VisualScriptLocalVar); GDREGISTER_CLASS(VisualScriptLocalVar);
GDREGISTER_CLASS(VisualScriptLocalVarSet); GDREGISTER_CLASS(VisualScriptLocalVarSet);
GDREGISTER_CLASS(VisualScriptInputAction); GDREGISTER_CLASS(VisualScriptInputAction);
GDREGISTER_CLASS(VisualScriptDeconstruct); GDREGISTER_CLASS(VisualScriptDeconstruct);
GDREGISTER_CLASS(VisualScriptPreload); GDREGISTER_CLASS(VisualScriptPreload);
GDREGISTER_CLASS(VisualScriptTypeCast); GDREGISTER_CLASS(VisualScriptTypeCast);
GDREGISTER_CLASS(VisualScriptFunctionCall); GDREGISTER_CLASS(VisualScriptFunctionCall);
GDREGISTER_CLASS(VisualScriptPropertySet); GDREGISTER_CLASS(VisualScriptPropertySet);
GDREGISTER_CLASS(VisualScriptPropertyGet); GDREGISTER_CLASS(VisualScriptPropertyGet);
//ClassDB::register_type<VisualScriptScriptCall>(); //ClassDB::register_type<VisualScriptScriptCall>();
GDREGISTER_CLASS(VisualScriptEmitSignal); GDREGISTER_CLASS(VisualScriptEmitSignal);
GDREGISTER_CLASS(VisualScriptReturn); GDREGISTER_CLASS(VisualScriptReturn);
GDREGISTER_CLASS(VisualScriptCondition); GDREGISTER_CLASS(VisualScriptCondition);
GDREGISTER_CLASS(VisualScriptWhile); GDREGISTER_CLASS(VisualScriptWhile);
GDREGISTER_CLASS(VisualScriptIterator); GDREGISTER_CLASS(VisualScriptIterator);
GDREGISTER_CLASS(VisualScriptSequence); GDREGISTER_CLASS(VisualScriptSequence);
//GDREGISTER_CLASS(VisualScriptInputFilter); //GDREGISTER_CLASS(VisualScriptInputFilter);
GDREGISTER_CLASS(VisualScriptSwitch); GDREGISTER_CLASS(VisualScriptSwitch);
GDREGISTER_CLASS(VisualScriptSelect); GDREGISTER_CLASS(VisualScriptSelect);
GDREGISTER_CLASS(VisualScriptYield); GDREGISTER_CLASS(VisualScriptYield);
GDREGISTER_CLASS(VisualScriptYieldSignal); GDREGISTER_CLASS(VisualScriptYieldSignal);
GDREGISTER_CLASS(VisualScriptBuiltinFunc); GDREGISTER_CLASS(VisualScriptBuiltinFunc);
GDREGISTER_CLASS(VisualScriptExpression); GDREGISTER_CLASS(VisualScriptExpression);
register_visual_script_nodes(); register_visual_script_nodes();
register_visual_script_func_nodes(); register_visual_script_func_nodes();
register_visual_script_builtin_func_node(); register_visual_script_builtin_func_node();
register_visual_script_flow_control_nodes(); register_visual_script_flow_control_nodes();
register_visual_script_yield_nodes(); register_visual_script_yield_nodes();
register_visual_script_expression_node(); register_visual_script_expression_node();
}
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
ClassDB::set_current_api(ClassDB::API_EDITOR); if (p_level == MODULE_INITIALIZATION_LEVEL_EDITOR) {
GDREGISTER_CLASS(VisualScriptCustomNodes); ClassDB::set_current_api(ClassDB::API_EDITOR);
ClassDB::set_current_api(ClassDB::API_CORE); GDREGISTER_CLASS(VisualScriptCustomNodes);
vs_custom_nodes_singleton = memnew(VisualScriptCustomNodes); ClassDB::set_current_api(ClassDB::API_CORE);
Engine::get_singleton()->add_singleton(Engine::Singleton("VisualScriptCustomNodes", VisualScriptCustomNodes::get_singleton())); vs_custom_nodes_singleton = memnew(VisualScriptCustomNodes);
Engine::get_singleton()->add_singleton(Engine::Singleton("VisualScriptCustomNodes", VisualScriptCustomNodes::get_singleton()));
VisualScriptEditor::register_editor(); VisualScriptEditor::register_editor();
}
#endif #endif
} }
void unregister_visual_script_types() { void uninitialize_visual_script_module(ModuleInitializationLevel p_level) {
unregister_visual_script_nodes(); if (p_level == MODULE_INITIALIZATION_LEVEL_SERVERS) {
unregister_visual_script_nodes();
ScriptServer::unregister_language(visual_script_language); ScriptServer::unregister_language(visual_script_language);
if (visual_script_language) {
memdelete(visual_script_language);
}
}
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
VisualScriptEditor::free_clipboard(); if (p_level == MODULE_INITIALIZATION_LEVEL_EDITOR) {
if (vs_custom_nodes_singleton) { VisualScriptEditor::free_clipboard();
memdelete(vs_custom_nodes_singleton); if (vs_custom_nodes_singleton) {
memdelete(vs_custom_nodes_singleton);
}
} }
#endif #endif
if (visual_script_language) {
memdelete(visual_script_language);
}
} }

View File

@@ -31,7 +31,9 @@
#ifndef VISUAL_SCRIPT_REGISTER_TYPES_H #ifndef VISUAL_SCRIPT_REGISTER_TYPES_H
#define VISUAL_SCRIPT_REGISTER_TYPES_H #define VISUAL_SCRIPT_REGISTER_TYPES_H
void register_visual_script_types(); #include "modules/register_module_types.h"
void unregister_visual_script_types();
void initialize_visual_script_module(ModuleInitializationLevel p_level);
void uninitialize_visual_script_module(ModuleInitializationLevel p_level);
#endif // VISUAL_SCRIPT_REGISTER_TYPES_H #endif // VISUAL_SCRIPT_REGISTER_TYPES_H