diff --git a/core/core_bind.h b/core/core_bind.h index 9848393e1d..3accebb7bc 100644 --- a/core/core_bind.h +++ b/core/core_bind.h @@ -33,6 +33,7 @@ #include "core/debugger/engine_profiler.h" #include "core/io/resource_loader.h" #include "core/io/resource_saver.h" +#include "core/object/class_db.h" #include "core/object/script_backtrace.h" #include "core/os/semaphore.h" #include "core/os/thread.h" diff --git a/core/io/http_client_tcp.cpp b/core/io/http_client_tcp.cpp index f6495585a7..a9ee5a0157 100644 --- a/core/io/http_client_tcp.cpp +++ b/core/io/http_client_tcp.cpp @@ -33,6 +33,7 @@ #include "http_client_tcp.h" #include "core/io/stream_peer_tls.h" +#include "core/object/class_db.h" #include "core/version.h" HTTPClient *HTTPClientTCP::_create_func(bool p_notify_postinitialize) { diff --git a/core/io/image_loader.h b/core/io/image_loader.h index 5a638747f6..81ab00ffae 100644 --- a/core/io/image_loader.h +++ b/core/io/image_loader.h @@ -30,7 +30,6 @@ #pragma once -#include "core/core_bind.h" #include "core/io/file_access.h" #include "core/io/image.h" #include "core/io/resource_loader.h" diff --git a/core/io/resource.cpp b/core/io/resource.cpp index c1926aebc2..a19f0d816f 100644 --- a/core/io/resource.cpp +++ b/core/io/resource.cpp @@ -38,6 +38,14 @@ #include "core/variant/container_type_validate.h" #include "scene/main/node.h" //only so casting works +void Resource::register_custom_data_to_otdb() { + ClassDB::add_resource_base_extension("res", get_class_static()); +} + +void Resource::_add_resource_base_extension_to_classdb(const String &p_extension, const String &p_class) { + ClassDB::add_resource_base_extension(p_extension, p_class); +} + void Resource::emit_changed() { if (emit_changed_state != EMIT_CHANGED_UNBLOCKED) { emit_changed_state = EMIT_CHANGED_BLOCKED_PENDING_EMIT; diff --git a/core/io/resource.h b/core/io/resource.h index 5a071b1377..6528a87166 100644 --- a/core/io/resource.h +++ b/core/io/resource.h @@ -31,18 +31,18 @@ #pragma once #include "core/io/resource_uid.h" -#include "core/object/class_db.h" #include "core/object/gdvirtual.gen.h" #include "core/object/ref_counted.h" #include "core/templates/safe_refcount.h" #include "core/templates/self_list.h" class Node; +class RWLock; #define RES_BASE_EXTENSION(m_ext) \ public: \ static void register_custom_data_to_otdb() { \ - ClassDB::add_resource_base_extension(m_ext, get_class_static()); \ + Resource::_add_resource_base_extension_to_classdb(m_ext, get_class_static()); \ } \ virtual String get_base_extension() const override { \ return m_ext; \ @@ -56,10 +56,11 @@ class Resource : public RefCounted { public: static constexpr AncestralClass static_ancestral_class = AncestralClass::RESOURCE; - static void register_custom_data_to_otdb() { ClassDB::add_resource_base_extension("res", get_class_static()); } + static void register_custom_data_to_otdb(); virtual String get_base_extension() const { return "res"; } protected: + static void _add_resource_base_extension_to_classdb(const String &p_extension, const String &p_class); struct DuplicateParams { bool deep = false; ResourceDeepDuplicateMode subres_mode = RESOURCE_DEEP_DUPLICATE_MAX; diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp index 8446e10413..0889810c3c 100644 --- a/core/io/resource_format_binary.cpp +++ b/core/io/resource_format_binary.cpp @@ -34,6 +34,7 @@ #include "core/io/dir_access.h" #include "core/io/file_access_compressed.h" #include "core/io/missing_resource.h" +#include "core/object/class_db.h" #include "core/object/script_language.h" #include "core/version.h" #include "scene/property_utils.h" diff --git a/core/io/stream_peer_gzip.h b/core/io/stream_peer_gzip.h index e712253c20..9641f778b9 100644 --- a/core/io/stream_peer_gzip.h +++ b/core/io/stream_peer_gzip.h @@ -32,7 +32,6 @@ #include "core/io/stream_peer.h" -#include "core/core_bind.h" #include "core/io/compression.h" #include "core/templates/ring_buffer.h" diff --git a/core/variant/container_type_validate.h b/core/variant/container_type_validate.h index 369205ddb6..e76d172476 100644 --- a/core/variant/container_type_validate.h +++ b/core/variant/container_type_validate.h @@ -30,6 +30,7 @@ #pragma once +#include "core/object/class_db.h" #include "core/object/script_language.h" #include "core/variant/variant.h" diff --git a/core/variant/variant_parser.cpp b/core/variant/variant_parser.cpp index ccb73872fe..b4cc58b81d 100644 --- a/core/variant/variant_parser.cpp +++ b/core/variant/variant_parser.cpp @@ -33,6 +33,7 @@ #include "core/crypto/crypto_core.h" #include "core/io/resource_loader.h" #include "core/io/resource_uid.h" +#include "core/object/class_db.h" #include "core/object/script_language.h" #include "core/string/string_buffer.h" diff --git a/drivers/metal/metal_objects_shared.cpp b/drivers/metal/metal_objects_shared.cpp index 5cd831c03a..d66c6aae53 100644 --- a/drivers/metal/metal_objects_shared.cpp +++ b/drivers/metal/metal_objects_shared.cpp @@ -34,6 +34,7 @@ #include #include +#include #include #pragma mark - Resource Factory diff --git a/editor/asset_library/editor_asset_installer.cpp b/editor/asset_library/editor_asset_installer.cpp index 523e9d66e8..6d7cb1c408 100644 --- a/editor/asset_library/editor_asset_installer.cpp +++ b/editor/asset_library/editor_asset_installer.cpp @@ -33,6 +33,7 @@ #include "core/io/dir_access.h" #include "core/io/file_access.h" #include "core/io/zip_io.h" +#include "core/object/class_db.h" #include "editor/editor_node.h" #include "editor/editor_string_names.h" #include "editor/file_system/editor_file_system.h" diff --git a/editor/doc/doc_tools.cpp b/editor/doc/doc_tools.cpp index e8fcced165..63fe9bd57c 100644 --- a/editor/doc/doc_tools.cpp +++ b/editor/doc/doc_tools.cpp @@ -37,6 +37,7 @@ #include "core/io/compression.h" #include "core/io/dir_access.h" #include "core/io/resource_importer.h" +#include "core/object/class_db.h" #include "core/object/script_language.h" #include "core/string/translation_server.h" #include "editor/export/editor_export_platform.h" diff --git a/editor/docks/dock_tab_container.cpp b/editor/docks/dock_tab_container.cpp index faf65d0632..dc9e7eec87 100644 --- a/editor/docks/dock_tab_container.cpp +++ b/editor/docks/dock_tab_container.cpp @@ -30,6 +30,7 @@ #include "dock_tab_container.h" +#include "core/object/callable_method_pointer.h" #include "editor/docks/editor_dock.h" #include "editor/docks/editor_dock_manager.h" #include "editor/editor_node.h" diff --git a/editor/editor_main_screen.cpp b/editor/editor_main_screen.cpp index 7f582a7d95..a68b90d4d1 100644 --- a/editor/editor_main_screen.cpp +++ b/editor/editor_main_screen.cpp @@ -31,6 +31,7 @@ #include "editor_main_screen.h" #include "core/io/config_file.h" +#include "core/object/callable_method_pointer.h" #include "editor/editor_node.h" #include "editor/editor_string_names.h" #include "editor/plugins/editor_plugin.h" diff --git a/editor/file_system/editor_file_system.cpp b/editor/file_system/editor_file_system.cpp index 7c8505dda3..e21557062c 100644 --- a/editor/file_system/editor_file_system.cpp +++ b/editor/file_system/editor_file_system.cpp @@ -240,6 +240,12 @@ EditorFileSystemDirectory::~EditorFileSystemDirectory() { } } +void EditorFileSystemImportFormatSupportQuery::_bind_methods() { + GDVIRTUAL_BIND(_is_active); + GDVIRTUAL_BIND(_get_file_extensions); + GDVIRTUAL_BIND(_query); +} + EditorFileSystem::ScannedDirectory::~ScannedDirectory() { for (ScannedDirectory *dir : subdirs) { memdelete(dir); diff --git a/editor/file_system/editor_file_system.h b/editor/file_system/editor_file_system.h index 843b3757f5..6201834e75 100644 --- a/editor/file_system/editor_file_system.h +++ b/editor/file_system/editor_file_system.h @@ -121,11 +121,7 @@ protected: GDVIRTUAL0RC_REQUIRED(bool, _is_active) GDVIRTUAL0RC_REQUIRED(Vector, _get_file_extensions) GDVIRTUAL0RC_REQUIRED(bool, _query) - static void _bind_methods() { - GDVIRTUAL_BIND(_is_active); - GDVIRTUAL_BIND(_get_file_extensions); - GDVIRTUAL_BIND(_query); - } + static void _bind_methods(); public: virtual bool is_active() const { diff --git a/editor/gui/credits_roll.cpp b/editor/gui/credits_roll.cpp index 22c67bbe48..8a7ca74538 100644 --- a/editor/gui/credits_roll.cpp +++ b/editor/gui/credits_roll.cpp @@ -34,6 +34,7 @@ #include "core/donors.gen.h" #include "core/input/input.h" #include "core/license.gen.h" +#include "core/object/callable_method_pointer.h" #include "core/string/string_builder.h" #include "editor/editor_node.h" #include "editor/editor_string_names.h" diff --git a/editor/gui/editor_bottom_panel.cpp b/editor/gui/editor_bottom_panel.cpp index 32720f012a..9b59700cd9 100644 --- a/editor/gui/editor_bottom_panel.cpp +++ b/editor/gui/editor_bottom_panel.cpp @@ -30,6 +30,7 @@ #include "editor_bottom_panel.h" +#include "core/object/callable_method_pointer.h" #include "editor/debugger/editor_debugger_node.h" #include "editor/docks/editor_dock.h" #include "editor/docks/editor_dock_manager.h" diff --git a/editor/gui/editor_title_bar.cpp b/editor/gui/editor_title_bar.cpp index 145d85b3c8..8544b4d5bd 100644 --- a/editor/gui/editor_title_bar.cpp +++ b/editor/gui/editor_title_bar.cpp @@ -30,6 +30,8 @@ #include "editor_title_bar.h" +#include "core/object/callable_method_pointer.h" + void EditorTitleBar::gui_input(const Ref &p_event) { if (!can_move) { return; diff --git a/editor/gui/editor_validation_panel.cpp b/editor/gui/editor_validation_panel.cpp index df273425de..3a8b7bed48 100644 --- a/editor/gui/editor_validation_panel.cpp +++ b/editor/gui/editor_validation_panel.cpp @@ -30,6 +30,7 @@ #include "editor_validation_panel.h" +#include "core/object/callable_method_pointer.h" #include "editor/editor_string_names.h" #include "editor/themes/editor_scale.h" #include "scene/gui/box_container.h" diff --git a/editor/gui/progress_dialog.cpp b/editor/gui/progress_dialog.cpp index 9c9d93837a..c7f02f035c 100644 --- a/editor/gui/progress_dialog.cpp +++ b/editor/gui/progress_dialog.cpp @@ -30,6 +30,7 @@ #include "progress_dialog.h" +#include "core/object/callable_method_pointer.h" #include "core/os/os.h" #include "editor/editor_node.h" #include "editor/themes/editor_scale.h" diff --git a/editor/gui/touch_actions_panel.cpp b/editor/gui/touch_actions_panel.cpp index 854a9f6ab9..073691f942 100644 --- a/editor/gui/touch_actions_panel.cpp +++ b/editor/gui/touch_actions_panel.cpp @@ -31,6 +31,7 @@ #include "touch_actions_panel.h" #include "core/input/input.h" +#include "core/object/callable_method_pointer.h" #include "editor/editor_string_names.h" #include "editor/settings/editor_settings.h" #include "scene/gui/box_container.h" diff --git a/editor/import/editor_atlas_packer.cpp b/editor/import/editor_atlas_packer.cpp index fb6f2a0da8..d7fc6580dc 100644 --- a/editor/import/editor_atlas_packer.cpp +++ b/editor/import/editor_atlas_packer.cpp @@ -31,6 +31,7 @@ #include "editor_atlas_packer.h" #include "core/math/geometry_2d.h" +#include "core/math/math_funcs_binary.h" #include "core/math/vector2.h" #include "core/math/vector2i.h" #include "scene/resources/bit_map.h" diff --git a/editor/inspector/sub_viewport_preview_editor_plugin.cpp b/editor/inspector/sub_viewport_preview_editor_plugin.cpp index 479d58cf47..5904dc82fb 100644 --- a/editor/inspector/sub_viewport_preview_editor_plugin.cpp +++ b/editor/inspector/sub_viewport_preview_editor_plugin.cpp @@ -32,6 +32,8 @@ #include "scene/main/viewport.h" +#include "core/object/callable_method_pointer.h" + bool EditorInspectorPluginSubViewportPreview::can_handle(Object *p_object) { return Object::cast_to(p_object) != nullptr; } diff --git a/editor/inspector/tool_button_editor_plugin.cpp b/editor/inspector/tool_button_editor_plugin.cpp index ab2936dd3f..1fd66c5413 100644 --- a/editor/inspector/tool_button_editor_plugin.cpp +++ b/editor/inspector/tool_button_editor_plugin.cpp @@ -30,6 +30,7 @@ #include "tool_button_editor_plugin.h" +#include "core/object/callable_method_pointer.h" #include "editor/editor_node.h" #include "editor/inspector/multi_node_edit.h" diff --git a/editor/scene/3d/gizmos/physics/joint_3d_gizmo_plugin.cpp b/editor/scene/3d/gizmos/physics/joint_3d_gizmo_plugin.cpp index 79ee6b488a..c9906b73d8 100644 --- a/editor/scene/3d/gizmos/physics/joint_3d_gizmo_plugin.cpp +++ b/editor/scene/3d/gizmos/physics/joint_3d_gizmo_plugin.cpp @@ -30,6 +30,7 @@ #include "joint_3d_gizmo_plugin.h" +#include "core/object/callable_method_pointer.h" #include "editor/editor_node.h" #include "editor/settings/editor_settings.h" #include "scene/3d/physics/joints/cone_twist_joint_3d.h" diff --git a/editor/scene/3d/mesh_editor_plugin.cpp b/editor/scene/3d/mesh_editor_plugin.cpp index 0963f2e56e..53f2686667 100644 --- a/editor/scene/3d/mesh_editor_plugin.cpp +++ b/editor/scene/3d/mesh_editor_plugin.cpp @@ -31,6 +31,7 @@ #include "mesh_editor_plugin.h" #include "core/config/project_settings.h" +#include "core/object/callable_method_pointer.h" #include "editor/editor_node.h" #include "editor/themes/editor_scale.h" #include "scene/gui/button.h" diff --git a/editor/scene/3d/skeleton_ik_3d_editor_plugin.cpp b/editor/scene/3d/skeleton_ik_3d_editor_plugin.cpp index f09ab022d7..fca19af074 100644 --- a/editor/scene/3d/skeleton_ik_3d_editor_plugin.cpp +++ b/editor/scene/3d/skeleton_ik_3d_editor_plugin.cpp @@ -30,6 +30,7 @@ #include "skeleton_ik_3d_editor_plugin.h" +#include "core/object/callable_method_pointer.h" #include "editor/editor_node.h" #include "editor/editor_string_names.h" #include "scene/3d/skeleton_ik_3d.h" diff --git a/editor/scene/gui/margin_container_editor_plugin.cpp b/editor/scene/gui/margin_container_editor_plugin.cpp index 138b1ff36f..bc86b026c1 100644 --- a/editor/scene/gui/margin_container_editor_plugin.cpp +++ b/editor/scene/gui/margin_container_editor_plugin.cpp @@ -30,6 +30,7 @@ #include "margin_container_editor_plugin.h" +#include "core/object/callable_method_pointer.h" #include "editor/scene/canvas_item_editor_plugin.h" #include "editor/themes/editor_scale.h" diff --git a/editor/scene/gui/style_box_editor_plugin.cpp b/editor/scene/gui/style_box_editor_plugin.cpp index 8098b9be70..209316c9ae 100644 --- a/editor/scene/gui/style_box_editor_plugin.cpp +++ b/editor/scene/gui/style_box_editor_plugin.cpp @@ -30,6 +30,7 @@ #include "style_box_editor_plugin.h" +#include "core/object/callable_method_pointer.h" #include "editor/themes/editor_scale.h" #include "scene/gui/button.h" #include "scene/resources/style_box_texture.h" diff --git a/editor/scene/gui/virtual_joystick_editor_plugin.cpp b/editor/scene/gui/virtual_joystick_editor_plugin.cpp index 05ecb9b1a1..1f1f21bc62 100644 --- a/editor/scene/gui/virtual_joystick_editor_plugin.cpp +++ b/editor/scene/gui/virtual_joystick_editor_plugin.cpp @@ -30,6 +30,7 @@ #include "virtual_joystick_editor_plugin.h" +#include "core/object/callable_method_pointer.h" #include "editor/scene/canvas_item_editor_plugin.h" #include "editor/themes/editor_scale.h" #include "scene/gui/virtual_joystick.h" diff --git a/editor/scene/packed_scene_editor_plugin.cpp b/editor/scene/packed_scene_editor_plugin.cpp index 339331d632..497a168588 100644 --- a/editor/scene/packed_scene_editor_plugin.cpp +++ b/editor/scene/packed_scene_editor_plugin.cpp @@ -30,6 +30,7 @@ #include "packed_scene_editor_plugin.h" +#include "core/object/callable_method_pointer.h" #include "editor/editor_node.h" #include "scene/resources/packed_scene.h" diff --git a/editor/scene/texture/bit_map_editor_plugin.cpp b/editor/scene/texture/bit_map_editor_plugin.cpp index 22805d3d9a..19fa26b024 100644 --- a/editor/scene/texture/bit_map_editor_plugin.cpp +++ b/editor/scene/texture/bit_map_editor_plugin.cpp @@ -30,6 +30,7 @@ #include "bit_map_editor_plugin.h" +#include "core/object/callable_method_pointer.h" #include "editor/editor_string_names.h" #include "editor/themes/editor_scale.h" #include "scene/gui/aspect_ratio_container.h" diff --git a/editor/shader/shader_file_editor_plugin.cpp b/editor/shader/shader_file_editor_plugin.cpp index 50982c12a0..4275731e73 100644 --- a/editor/shader/shader_file_editor_plugin.cpp +++ b/editor/shader/shader_file_editor_plugin.cpp @@ -39,6 +39,7 @@ #include "scene/gui/item_list.h" #include "scene/gui/split_container.h" #include "servers/display/display_server.h" +#include "servers/rendering/rendering_device_binds.h" /*** SHADER SCRIPT EDITOR ****/ diff --git a/editor/shader/shader_file_editor_plugin.h b/editor/shader/shader_file_editor_plugin.h index 031b13b4c3..426918ad47 100644 --- a/editor/shader/shader_file_editor_plugin.h +++ b/editor/shader/shader_file_editor_plugin.h @@ -33,10 +33,11 @@ #include "editor/docks/editor_dock.h" #include "editor/plugins/editor_plugin.h" #include "scene/gui/rich_text_label.h" -#include "servers/rendering/rendering_device_binds.h" +#include "servers/rendering/rendering_device.h" class HFlowContainer; class ItemList; +class RDShaderFile; class ShaderFileEditor : public EditorDock { GDCLASS(ShaderFileEditor, EditorDock); diff --git a/editor/translations/editor_translation_preview_button.cpp b/editor/translations/editor_translation_preview_button.cpp index 4ab6217451..6a385a6701 100644 --- a/editor/translations/editor_translation_preview_button.cpp +++ b/editor/translations/editor_translation_preview_button.cpp @@ -30,6 +30,7 @@ #include "editor_translation_preview_button.h" +#include "core/object/callable_method_pointer.h" #include "core/string/translation_server.h" #include "editor/editor_node.h" diff --git a/editor/translations/packed_scene_translation_parser_plugin.cpp b/editor/translations/packed_scene_translation_parser_plugin.cpp index 2bb4e1da78..237b8fb1d3 100644 --- a/editor/translations/packed_scene_translation_parser_plugin.cpp +++ b/editor/translations/packed_scene_translation_parser_plugin.cpp @@ -31,6 +31,7 @@ #include "packed_scene_translation_parser_plugin.h" #include "core/io/resource_loader.h" +#include "core/object/class_db.h" #include "core/object/script_language.h" #include "scene/resources/packed_scene.h" diff --git a/modules/betsy/image_compress_betsy.cpp b/modules/betsy/image_compress_betsy.cpp index 39f9fc3fbb..1412691c0c 100644 --- a/modules/betsy/image_compress_betsy.cpp +++ b/modules/betsy/image_compress_betsy.cpp @@ -42,6 +42,7 @@ #include "servers/display/display_server.h" #include "servers/rendering/rendering_context_driver.h" #include "servers/rendering/rendering_device.h" +#include "servers/rendering/rendering_device_binds.h" #include "servers/rendering/rendering_server.h" #if defined(VULKAN_ENABLED) diff --git a/modules/betsy/image_compress_betsy.h b/modules/betsy/image_compress_betsy.h index 393910d02f..1eae808643 100644 --- a/modules/betsy/image_compress_betsy.h +++ b/modules/betsy/image_compress_betsy.h @@ -33,8 +33,8 @@ #include "core/io/image.h" #include "core/object/worker_thread_pool.h" #include "core/templates/command_queue_mt.h" -#include "servers/rendering/rendering_device_binds.h" // RDShaderFile +class RDShaderFile; class RenderingDevice; class RenderingContextDriver; diff --git a/modules/csg/register_types.cpp b/modules/csg/register_types.cpp index b157e32952..57347ef946 100644 --- a/modules/csg/register_types.cpp +++ b/modules/csg/register_types.cpp @@ -32,6 +32,8 @@ #include "csg_shape.h" +#include "core/object/class_db.h" + #ifdef TOOLS_ENABLED #include "editor/csg_gizmos.h" #endif diff --git a/modules/dds/register_types.cpp b/modules/dds/register_types.cpp index fc831b9f59..e0681c4c40 100644 --- a/modules/dds/register_types.cpp +++ b/modules/dds/register_types.cpp @@ -33,6 +33,7 @@ #include "image_saver_dds.h" #include "texture_loader_dds.h" +#include "core/object/class_db.h" #include "scene/resources/texture.h" static Ref resource_loader_dds; diff --git a/modules/dds/texture_loader_dds.cpp b/modules/dds/texture_loader_dds.cpp index 037adaf798..8db4f6a9fe 100644 --- a/modules/dds/texture_loader_dds.cpp +++ b/modules/dds/texture_loader_dds.cpp @@ -34,6 +34,7 @@ #include "core/io/file_access.h" #include "core/io/file_access_memory.h" +#include "core/object/class_db.h" #include "scene/resources/image_texture.h" DDSFormat _dxgi_to_dds_format(uint32_t p_dxgi_format) { diff --git a/modules/gdscript/gdscript_byte_codegen.cpp b/modules/gdscript/gdscript_byte_codegen.cpp index 2961a67e05..1407628038 100644 --- a/modules/gdscript/gdscript_byte_codegen.cpp +++ b/modules/gdscript/gdscript_byte_codegen.cpp @@ -31,6 +31,7 @@ #include "gdscript_byte_codegen.h" #include "core/debugger/engine_debugger.h" +#include "core/object/class_db.h" uint32_t GDScriptByteCodeGenerator::add_parameter(const StringName &p_name, bool p_is_optional, const GDScriptDataType &p_type) { function->_argument_count++; diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp index 3138a9c80c..2bf42ee503 100644 --- a/modules/gdscript/gdscript_compiler.cpp +++ b/modules/gdscript/gdscript_compiler.cpp @@ -38,6 +38,7 @@ #include "core/config/engine.h" #include "core/config/project_settings.h" +#include "core/object/class_db.h" #include "scene/scene_string_names.h" diff --git a/modules/gdscript/gdscript_disassembler.cpp b/modules/gdscript/gdscript_disassembler.cpp index 1f8ee55691..d8cb1e89ab 100644 --- a/modules/gdscript/gdscript_disassembler.cpp +++ b/modules/gdscript/gdscript_disassembler.cpp @@ -33,6 +33,7 @@ #include "gdscript.h" #include "gdscript_function.h" +#include "core/object/class_db.h" #include "core/string/string_builder.h" static String _get_variant_string(const Variant &p_variant) { diff --git a/modules/gdscript/gdscript_editor.cpp b/modules/gdscript/gdscript_editor.cpp index afd896f61d..809b801a1a 100644 --- a/modules/gdscript/gdscript_editor.cpp +++ b/modules/gdscript/gdscript_editor.cpp @@ -44,6 +44,7 @@ #include "core/core_constants.h" #include "core/io/file_access.h" #include "core/math/expression.h" +#include "core/object/class_db.h" #include "core/variant/container_type_validate.h" #ifdef TOOLS_ENABLED diff --git a/modules/gdscript/gdscript_function.cpp b/modules/gdscript/gdscript_function.cpp index dfcc428da6..e81d4ca8a7 100644 --- a/modules/gdscript/gdscript_function.cpp +++ b/modules/gdscript/gdscript_function.cpp @@ -34,6 +34,123 @@ #include "core/object/class_db.h" +bool GDScriptDataType::is_type(const Variant &p_variant, bool p_allow_implicit_conversion) const { + switch (kind) { + case VARIANT: { + return true; + } break; + case BUILTIN: { + Variant::Type var_type = p_variant.get_type(); + bool valid = builtin_type == var_type; + if (valid && builtin_type == Variant::ARRAY && has_container_element_type(0)) { + Array array = p_variant; + if (array.is_typed()) { + const GDScriptDataType &elem_type = container_element_types[0]; + Variant::Type array_builtin_type = (Variant::Type)array.get_typed_builtin(); + StringName array_native_type = array.get_typed_class_name(); + Ref