| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | /*************************************************************************/ | 
					
						
							|  |  |  | /*  editor_internal_calls.cpp                                            */ | 
					
						
							|  |  |  | /*************************************************************************/ | 
					
						
							|  |  |  | /*                       This file is part of:                           */ | 
					
						
							|  |  |  | /*                           GODOT ENGINE                                */ | 
					
						
							|  |  |  | /*                      https://godotengine.org                          */ | 
					
						
							|  |  |  | /*************************************************************************/ | 
					
						
							| 
									
										
										
										
											2021-01-01 20:13:46 +01:00
										 |  |  | /* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.                 */ | 
					
						
							|  |  |  | /* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).   */ | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* Permission is hereby granted, free of charge, to any person obtaining */ | 
					
						
							|  |  |  | /* a copy of this software and associated documentation files (the       */ | 
					
						
							|  |  |  | /* "Software"), to deal in the Software without restriction, including   */ | 
					
						
							|  |  |  | /* without limitation the rights to use, copy, modify, merge, publish,   */ | 
					
						
							|  |  |  | /* distribute, sublicense, and/or sell copies of the Software, and to    */ | 
					
						
							|  |  |  | /* permit persons to whom the Software is furnished to do so, subject to */ | 
					
						
							|  |  |  | /* the following conditions:                                             */ | 
					
						
							|  |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* The above copyright notice and this permission notice shall be        */ | 
					
						
							|  |  |  | /* included in all copies or substantial portions of the Software.       */ | 
					
						
							|  |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */ | 
					
						
							|  |  |  | /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */ | 
					
						
							|  |  |  | /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ | 
					
						
							|  |  |  | /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */ | 
					
						
							|  |  |  | /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */ | 
					
						
							|  |  |  | /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */ | 
					
						
							|  |  |  | /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */ | 
					
						
							|  |  |  | /*************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "editor_internal_calls.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-17 13:10:01 +01:00
										 |  |  | #ifdef UNIX_ENABLED
 | 
					
						
							|  |  |  | #include <unistd.h> // access
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | #include "core/os/os.h"
 | 
					
						
							|  |  |  | #include "core/version.h"
 | 
					
						
							| 
									
										
										
										
											2020-02-07 02:52:05 +01:00
										 |  |  | #include "editor/debugger/editor_debugger_node.h"
 | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | #include "editor/editor_node.h"
 | 
					
						
							| 
									
										
										
										
											2019-12-24 15:17:23 +08:00
										 |  |  | #include "editor/editor_scale.h"
 | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | #include "editor/plugins/script_editor_plugin.h"
 | 
					
						
							|  |  |  | #include "main/main.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "../csharp_script.h"
 | 
					
						
							|  |  |  | #include "../glue/cs_glue_version.gen.h"
 | 
					
						
							|  |  |  | #include "../godotsharp_dirs.h"
 | 
					
						
							|  |  |  | #include "../mono_gd/gd_mono_marshal.h"
 | 
					
						
							|  |  |  | #include "../utils/osx_utils.h"
 | 
					
						
							| 
									
										
										
										
											2020-05-09 20:45:43 +02:00
										 |  |  | #include "code_completion.h"
 | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | #include "godotsharp_export.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_ResDataDir() { | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_res_data_dir()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_ResMetadataDir() { | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_res_metadata_dir()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_ResAssembliesBaseDir() { | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_res_assemblies_base_dir()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_ResAssembliesDir() { | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_res_assemblies_dir()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_ResConfigDir() { | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_res_config_dir()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_ResTempDir() { | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_res_temp_dir()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_ResTempAssembliesBaseDir() { | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_res_temp_assemblies_base_dir()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_ResTempAssembliesDir() { | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_res_temp_assemblies_dir()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_MonoUserDir() { | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_mono_user_dir()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_MonoLogsDir() { | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_mono_logs_dir()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_MonoSolutionsDir() { | 
					
						
							|  |  |  | #ifdef TOOLS_ENABLED
 | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_mono_solutions_dir()); | 
					
						
							|  |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2020-04-02 01:20:12 +02:00
										 |  |  | 	return nullptr; | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_BuildLogsDirs() { | 
					
						
							|  |  |  | #ifdef TOOLS_ENABLED
 | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_build_logs_dir()); | 
					
						
							|  |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2020-04-02 01:20:12 +02:00
										 |  |  | 	return nullptr; | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_ProjectSlnPath() { | 
					
						
							|  |  |  | #ifdef TOOLS_ENABLED
 | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_project_sln_path()); | 
					
						
							|  |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2020-04-02 01:20:12 +02:00
										 |  |  | 	return nullptr; | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_ProjectCsProjPath() { | 
					
						
							|  |  |  | #ifdef TOOLS_ENABLED
 | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_project_csproj_path()); | 
					
						
							|  |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2020-04-02 01:20:12 +02:00
										 |  |  | 	return nullptr; | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_DataEditorToolsDir() { | 
					
						
							|  |  |  | #ifdef TOOLS_ENABLED
 | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_data_editor_tools_dir()); | 
					
						
							|  |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2020-04-02 01:20:12 +02:00
										 |  |  | 	return nullptr; | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_DataEditorPrebuiltApiDir() { | 
					
						
							|  |  |  | #ifdef TOOLS_ENABLED
 | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_data_editor_prebuilt_api_dir()); | 
					
						
							|  |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2020-04-02 01:20:12 +02:00
										 |  |  | 	return nullptr; | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_DataMonoEtcDir() { | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_data_mono_etc_dir()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_DataMonoLibDir() { | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_data_mono_lib_dir()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_GodotSharpDirs_DataMonoBinDir() { | 
					
						
							|  |  |  | #ifdef WINDOWS_ENABLED
 | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(GodotSharpDirs::get_data_mono_bin_dir()); | 
					
						
							|  |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2020-04-02 01:20:12 +02:00
										 |  |  | 	return nullptr; | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void godot_icall_EditorProgress_Create(MonoString *p_task, MonoString *p_label, int32_t p_amount, MonoBoolean p_can_cancel) { | 
					
						
							|  |  |  | 	String task = GDMonoMarshal::mono_string_to_godot(p_task); | 
					
						
							|  |  |  | 	String label = GDMonoMarshal::mono_string_to_godot(p_label); | 
					
						
							|  |  |  | 	EditorNode::progress_add_task(task, label, p_amount, (bool)p_can_cancel); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void godot_icall_EditorProgress_Dispose(MonoString *p_task) { | 
					
						
							|  |  |  | 	String task = GDMonoMarshal::mono_string_to_godot(p_task); | 
					
						
							|  |  |  | 	EditorNode::progress_end_task(task); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoBoolean godot_icall_EditorProgress_Step(MonoString *p_task, MonoString *p_state, int32_t p_step, MonoBoolean p_force_refresh) { | 
					
						
							|  |  |  | 	String task = GDMonoMarshal::mono_string_to_godot(p_task); | 
					
						
							|  |  |  | 	String state = GDMonoMarshal::mono_string_to_godot(p_state); | 
					
						
							|  |  |  | 	return EditorNode::progress_task_step(task, state, p_step, (bool)p_force_refresh); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-22 16:44:03 +02:00
										 |  |  | uint32_t godot_icall_ExportPlugin_GetExportedAssemblyDependencies(MonoObject *p_initial_assemblies, | 
					
						
							|  |  |  | 		MonoString *p_build_config, MonoString *p_custom_bcl_dir, MonoObject *r_assembly_dependencies) { | 
					
						
							|  |  |  | 	Dictionary initial_dependencies = GDMonoMarshal::mono_object_to_variant(p_initial_assemblies); | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | 	String build_config = GDMonoMarshal::mono_string_to_godot(p_build_config); | 
					
						
							| 
									
										
										
										
											2019-11-10 17:10:38 +01:00
										 |  |  | 	String custom_bcl_dir = GDMonoMarshal::mono_string_to_godot(p_custom_bcl_dir); | 
					
						
							| 
									
										
										
										
											2020-04-22 16:44:03 +02:00
										 |  |  | 	Dictionary assembly_dependencies = GDMonoMarshal::mono_object_to_variant(r_assembly_dependencies); | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-22 16:44:03 +02:00
										 |  |  | 	return GodotSharpExport::get_exported_assembly_dependencies(initial_dependencies, build_config, custom_bcl_dir, assembly_dependencies); | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-11 01:23:35 +02:00
										 |  |  | MonoString *godot_icall_Internal_UpdateApiAssembliesFromPrebuilt(MonoString *p_config) { | 
					
						
							|  |  |  | 	String config = GDMonoMarshal::mono_string_to_godot(p_config); | 
					
						
							|  |  |  | 	String error_str = GDMono::get_singleton()->update_api_assemblies_from_prebuilt(config); | 
					
						
							| 
									
										
										
										
											2019-07-11 14:01:25 +02:00
										 |  |  | 	return GDMonoMarshal::mono_string_from_godot(error_str); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | MonoString *godot_icall_Internal_FullTemplatesDir() { | 
					
						
							|  |  |  | 	String full_templates_dir = EditorSettings::get_singleton()->get_templates_dir().plus_file(VERSION_FULL_CONFIG); | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(full_templates_dir); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_Internal_SimplifyGodotPath(MonoString *p_path) { | 
					
						
							|  |  |  | 	String path = GDMonoMarshal::mono_string_to_godot(p_path); | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(path.simplify_path()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoBoolean godot_icall_Internal_IsOsxAppBundleInstalled(MonoString *p_bundle_id) { | 
					
						
							|  |  |  | #ifdef OSX_ENABLED
 | 
					
						
							|  |  |  | 	String bundle_id = GDMonoMarshal::mono_string_to_godot(p_bundle_id); | 
					
						
							| 
									
										
										
										
											2019-08-27 09:48:54 +02:00
										 |  |  | 	return (MonoBoolean)osx_is_app_bundle_installed(bundle_id); | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | #else
 | 
					
						
							|  |  |  | 	(void)p_bundle_id; // UNUSED
 | 
					
						
							|  |  |  | 	return (MonoBoolean) false; | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoBoolean godot_icall_Internal_GodotIs32Bits() { | 
					
						
							|  |  |  | 	return sizeof(void *) == 4; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoBoolean godot_icall_Internal_GodotIsRealTDouble() { | 
					
						
							|  |  |  | #ifdef REAL_T_IS_DOUBLE
 | 
					
						
							|  |  |  | 	return (MonoBoolean) true; | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | 	return (MonoBoolean) false; | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void godot_icall_Internal_GodotMainIteration() { | 
					
						
							|  |  |  | 	Main::iteration(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | uint64_t godot_icall_Internal_GetCoreApiHash() { | 
					
						
							|  |  |  | 	return ClassDB::get_api_hash(ClassDB::API_CORE); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | uint64_t godot_icall_Internal_GetEditorApiHash() { | 
					
						
							|  |  |  | 	return ClassDB::get_api_hash(ClassDB::API_EDITOR); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoBoolean godot_icall_Internal_IsAssembliesReloadingNeeded() { | 
					
						
							|  |  |  | #ifdef GD_MONO_HOT_RELOAD
 | 
					
						
							|  |  |  | 	return (MonoBoolean)CSharpLanguage::get_singleton()->is_assembly_reloading_needed(); | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | 	return (MonoBoolean) false; | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void godot_icall_Internal_ReloadAssemblies(MonoBoolean p_soft_reload) { | 
					
						
							|  |  |  | #ifdef GD_MONO_HOT_RELOAD
 | 
					
						
							| 
									
										
										
										
											2021-08-13 16:46:14 +02:00
										 |  |  | 	mono_bind::GodotSharp::get_singleton()->call_deferred(SNAME("_reload_assemblies"), (bool)p_soft_reload); | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-07 02:52:05 +01:00
										 |  |  | void godot_icall_Internal_EditorDebuggerNodeReloadScripts() { | 
					
						
							|  |  |  | 	EditorDebuggerNode::get_singleton()->reload_scripts(); | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoBoolean godot_icall_Internal_ScriptEditorEdit(MonoObject *p_resource, int32_t p_line, int32_t p_col, MonoBoolean p_grab_focus) { | 
					
						
							|  |  |  | 	Ref<Resource> resource = GDMonoMarshal::mono_object_to_variant(p_resource); | 
					
						
							|  |  |  | 	return (MonoBoolean)ScriptEditor::get_singleton()->edit(resource, p_line, p_col, (bool)p_grab_focus); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void godot_icall_Internal_EditorNodeShowScriptScreen() { | 
					
						
							|  |  |  | 	EditorNode::get_singleton()->call("_editor_select", EditorNode::EDITOR_SCRIPT); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_Internal_MonoWindowsInstallRoot() { | 
					
						
							|  |  |  | #ifdef WINDOWS_ENABLED
 | 
					
						
							|  |  |  | 	String install_root_dir = GDMono::get_singleton()->get_mono_reg_info().install_root_dir; | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(install_root_dir); | 
					
						
							|  |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2020-04-02 01:20:12 +02:00
										 |  |  | 	return nullptr; | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-18 04:08:24 +02:00
										 |  |  | void godot_icall_Internal_EditorRunPlay() { | 
					
						
							|  |  |  | 	EditorNode::get_singleton()->run_play(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void godot_icall_Internal_EditorRunStop() { | 
					
						
							|  |  |  | 	EditorNode::get_singleton()->run_stop(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void godot_icall_Internal_ScriptEditorDebugger_ReloadScripts() { | 
					
						
							| 
									
										
										
										
											2020-02-07 02:52:05 +01:00
										 |  |  | 	EditorDebuggerNode *ed = EditorDebuggerNode::get_singleton(); | 
					
						
							|  |  |  | 	if (ed) { | 
					
						
							|  |  |  | 		ed->reload_scripts(); | 
					
						
							| 
									
										
										
										
											2019-07-18 04:08:24 +02:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-09 20:45:43 +02:00
										 |  |  | MonoArray *godot_icall_Internal_CodeCompletionRequest(int32_t p_kind, MonoString *p_script_file) { | 
					
						
							|  |  |  | 	String script_file = GDMonoMarshal::mono_string_to_godot(p_script_file); | 
					
						
							|  |  |  | 	PackedStringArray suggestions = gdmono::get_code_completion((gdmono::CompletionKind)p_kind, script_file); | 
					
						
							|  |  |  | 	return GDMonoMarshal::PackedStringArray_to_mono_array(suggestions); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-11 01:23:35 +02:00
										 |  |  | float godot_icall_Globals_EditorScale() { | 
					
						
							|  |  |  | 	return EDSCALE; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoObject *godot_icall_Globals_GlobalDef(MonoString *p_setting, MonoObject *p_default_value, MonoBoolean p_restart_if_changed) { | 
					
						
							|  |  |  | 	String setting = GDMonoMarshal::mono_string_to_godot(p_setting); | 
					
						
							|  |  |  | 	Variant default_value = GDMonoMarshal::mono_object_to_variant(p_default_value); | 
					
						
							|  |  |  | 	Variant result = _GLOBAL_DEF(setting, default_value, (bool)p_restart_if_changed); | 
					
						
							|  |  |  | 	return GDMonoMarshal::variant_to_mono_object(result); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoObject *godot_icall_Globals_EditorDef(MonoString *p_setting, MonoObject *p_default_value, MonoBoolean p_restart_if_changed) { | 
					
						
							|  |  |  | 	String setting = GDMonoMarshal::mono_string_to_godot(p_setting); | 
					
						
							|  |  |  | 	Variant default_value = GDMonoMarshal::mono_object_to_variant(p_default_value); | 
					
						
							|  |  |  | 	Variant result = _EDITOR_DEF(setting, default_value, (bool)p_restart_if_changed); | 
					
						
							|  |  |  | 	return GDMonoMarshal::variant_to_mono_object(result); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MonoString *godot_icall_Globals_TTR(MonoString *p_text) { | 
					
						
							|  |  |  | 	String text = GDMonoMarshal::mono_string_to_godot(p_text); | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(TTR(text)); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | MonoString *godot_icall_Utils_OS_GetPlatformName() { | 
					
						
							|  |  |  | 	String os_name = OS::get_singleton()->get_name(); | 
					
						
							|  |  |  | 	return GDMonoMarshal::mono_string_from_godot(os_name); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-17 13:10:01 +01:00
										 |  |  | MonoBoolean godot_icall_Utils_OS_UnixFileHasExecutableAccess(MonoString *p_file_path) { | 
					
						
							|  |  |  | #ifdef UNIX_ENABLED
 | 
					
						
							|  |  |  | 	String file_path = GDMonoMarshal::mono_string_to_godot(p_file_path); | 
					
						
							|  |  |  | 	return access(file_path.utf8().get_data(), X_OK) == 0; | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | 	ERR_FAIL_V(false); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | void register_editor_internal_calls() { | 
					
						
							|  |  |  | 	// GodotSharpDirs
 | 
					
						
							| 
									
										
										
										
											2020-12-05 00:05:01 +01:00
										 |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_ResDataDir", godot_icall_GodotSharpDirs_ResDataDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_ResMetadataDir", godot_icall_GodotSharpDirs_ResMetadataDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_ResAssembliesBaseDir", godot_icall_GodotSharpDirs_ResAssembliesBaseDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_ResAssembliesDir", godot_icall_GodotSharpDirs_ResAssembliesDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_ResConfigDir", godot_icall_GodotSharpDirs_ResConfigDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_ResTempDir", godot_icall_GodotSharpDirs_ResTempDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_ResTempAssembliesBaseDir", godot_icall_GodotSharpDirs_ResTempAssembliesBaseDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_ResTempAssembliesDir", godot_icall_GodotSharpDirs_ResTempAssembliesDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_MonoUserDir", godot_icall_GodotSharpDirs_MonoUserDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_MonoLogsDir", godot_icall_GodotSharpDirs_MonoLogsDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_MonoSolutionsDir", godot_icall_GodotSharpDirs_MonoSolutionsDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_BuildLogsDirs", godot_icall_GodotSharpDirs_BuildLogsDirs); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_ProjectSlnPath", godot_icall_GodotSharpDirs_ProjectSlnPath); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_ProjectCsProjPath", godot_icall_GodotSharpDirs_ProjectCsProjPath); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_DataEditorToolsDir", godot_icall_GodotSharpDirs_DataEditorToolsDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_DataEditorPrebuiltApiDir", godot_icall_GodotSharpDirs_DataEditorPrebuiltApiDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_DataMonoEtcDir", godot_icall_GodotSharpDirs_DataMonoEtcDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_DataMonoLibDir", godot_icall_GodotSharpDirs_DataMonoLibDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.GodotSharpDirs::internal_DataMonoBinDir", godot_icall_GodotSharpDirs_DataMonoBinDir); | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// EditorProgress
 | 
					
						
							| 
									
										
										
										
											2020-12-05 00:05:01 +01:00
										 |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.EditorProgress::internal_Create", godot_icall_EditorProgress_Create); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.EditorProgress::internal_Dispose", godot_icall_EditorProgress_Dispose); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.EditorProgress::internal_Step", godot_icall_EditorProgress_Step); | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-10 17:10:38 +01:00
										 |  |  | 	// ExportPlugin
 | 
					
						
							| 
									
										
										
										
											2020-12-05 00:05:01 +01:00
										 |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Export.ExportPlugin::internal_GetExportedAssemblyDependencies", godot_icall_ExportPlugin_GetExportedAssemblyDependencies); | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// Internals
 | 
					
						
							| 
									
										
										
										
											2020-12-05 00:05:01 +01:00
										 |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_UpdateApiAssembliesFromPrebuilt", godot_icall_Internal_UpdateApiAssembliesFromPrebuilt); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_FullTemplatesDir", godot_icall_Internal_FullTemplatesDir); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_SimplifyGodotPath", godot_icall_Internal_SimplifyGodotPath); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_IsOsxAppBundleInstalled", godot_icall_Internal_IsOsxAppBundleInstalled); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_GodotIs32Bits", godot_icall_Internal_GodotIs32Bits); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_GodotIsRealTDouble", godot_icall_Internal_GodotIsRealTDouble); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_GodotMainIteration", godot_icall_Internal_GodotMainIteration); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_GetCoreApiHash", godot_icall_Internal_GetCoreApiHash); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_GetEditorApiHash", godot_icall_Internal_GetEditorApiHash); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_IsAssembliesReloadingNeeded", godot_icall_Internal_IsAssembliesReloadingNeeded); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_ReloadAssemblies", godot_icall_Internal_ReloadAssemblies); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_EditorDebuggerNodeReloadScripts", godot_icall_Internal_EditorDebuggerNodeReloadScripts); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_ScriptEditorEdit", godot_icall_Internal_ScriptEditorEdit); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_EditorNodeShowScriptScreen", godot_icall_Internal_EditorNodeShowScriptScreen); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_MonoWindowsInstallRoot", godot_icall_Internal_MonoWindowsInstallRoot); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_EditorRunPlay", godot_icall_Internal_EditorRunPlay); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_EditorRunStop", godot_icall_Internal_EditorRunStop); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_ScriptEditorDebugger_ReloadScripts", godot_icall_Internal_ScriptEditorDebugger_ReloadScripts); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Internal::internal_CodeCompletionRequest", godot_icall_Internal_CodeCompletionRequest); | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-11 13:59:06 +02:00
										 |  |  | 	// Globals
 | 
					
						
							| 
									
										
										
										
											2020-12-05 00:05:01 +01:00
										 |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Globals::internal_EditorScale", godot_icall_Globals_EditorScale); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Globals::internal_GlobalDef", godot_icall_Globals_GlobalDef); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Globals::internal_EditorDef", godot_icall_Globals_EditorDef); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Internals.Globals::internal_TTR", godot_icall_Globals_TTR); | 
					
						
							| 
									
										
										
										
											2019-07-11 13:59:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | 	// Utils.OS
 | 
					
						
							| 
									
										
										
										
											2020-12-05 00:05:01 +01:00
										 |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Utils.OS::GetPlatformName", godot_icall_Utils_OS_GetPlatformName); | 
					
						
							|  |  |  | 	GDMonoUtils::add_internal_call("GodotTools.Utils.OS::UnixFileHasExecutableAccess", godot_icall_Utils_OS_UnixFileHasExecutableAccess); | 
					
						
							| 
									
										
										
										
											2019-07-03 09:44:53 +02:00
										 |  |  | } |