Skip to content

Commit 8f331eb

Browse files
committed
Merge pull request godotengine#103099 from YeldhamDev/build_res_loader_disable
Disable `ResourceFormatLoader/Saver`s of disabled classes
2 parents 325c698 + 090358a commit 8f331eb

File tree

8 files changed

+148
-80
lines changed

8 files changed

+148
-80
lines changed

core/object/class_db.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -563,4 +563,6 @@ _FORCE_INLINE_ Vector<Error> errarray(P... p_args) {
563563

564564
#define GDREGISTER_NATIVE_STRUCT(m_class, m_code) ClassDB::register_native_struct(#m_class, m_code, sizeof(m_class))
565565

566+
#define GD_IS_CLASS_ENABLED(m_class) m_class::_class_is_enabled
567+
566568
#include "core/disabled_classes.gen.h"

core/register_core_types.cpp

Lines changed: 50 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,10 @@ void register_core_types() {
137137

138138
CoreStringNames::create();
139139

140-
resource_format_po.instantiate();
141-
ResourceLoader::add_resource_format_loader(resource_format_po);
140+
if (GD_IS_CLASS_ENABLED(Translation)) {
141+
resource_format_po.instantiate();
142+
ResourceLoader::add_resource_format_loader(resource_format_po);
143+
}
142144

143145
resource_saver_binary.instantiate();
144146
ResourceSaver::add_resource_format_saver(resource_saver_binary);
@@ -151,8 +153,10 @@ void register_core_types() {
151153
resource_format_importer_saver.instantiate();
152154
ResourceSaver::add_resource_format_saver(resource_format_importer_saver);
153155

154-
resource_format_image.instantiate();
155-
ResourceLoader::add_resource_format_loader(resource_format_image);
156+
if (GD_IS_CLASS_ENABLED(Image)) {
157+
resource_format_image.instantiate();
158+
ResourceLoader::add_resource_format_loader(resource_format_image);
159+
}
156160

157161
GDREGISTER_CLASS(Object);
158162

@@ -219,16 +223,21 @@ void register_core_types() {
219223
ClassDB::register_custom_instance_class<PacketPeerDTLS>();
220224
ClassDB::register_custom_instance_class<DTLSServer>();
221225

222-
resource_format_saver_crypto.instantiate();
223-
ResourceSaver::add_resource_format_saver(resource_format_saver_crypto);
224-
resource_format_loader_crypto.instantiate();
225-
ResourceLoader::add_resource_format_loader(resource_format_loader_crypto);
226+
if (GD_IS_CLASS_ENABLED(Crypto)) {
227+
resource_format_saver_crypto.instantiate();
228+
ResourceSaver::add_resource_format_saver(resource_format_saver_crypto);
229+
230+
resource_format_loader_crypto.instantiate();
231+
ResourceLoader::add_resource_format_loader(resource_format_loader_crypto);
232+
}
226233

227-
resource_loader_json.instantiate();
228-
ResourceLoader::add_resource_format_loader(resource_loader_json);
234+
if (GD_IS_CLASS_ENABLED(JSON)) {
235+
resource_saver_json.instantiate();
236+
ResourceSaver::add_resource_format_saver(resource_saver_json);
229237

230-
resource_saver_json.instantiate();
231-
ResourceSaver::add_resource_format_saver(resource_saver_json);
238+
resource_loader_json.instantiate();
239+
ResourceLoader::add_resource_format_loader(resource_loader_json);
240+
}
232241

233242
GDREGISTER_CLASS(MainLoop);
234243
GDREGISTER_CLASS(Translation);
@@ -277,8 +286,10 @@ void register_core_types() {
277286

278287
gdextension_manager = memnew(GDExtensionManager);
279288

280-
resource_loader_gdextension.instantiate();
281-
ResourceLoader::add_resource_format_loader(resource_loader_gdextension);
289+
if (GD_IS_CLASS_ENABLED(GDExtension)) {
290+
resource_loader_gdextension.instantiate();
291+
ResourceLoader::add_resource_format_loader(resource_loader_gdextension);
292+
}
282293

283294
ip = IP::create();
284295

@@ -409,8 +420,10 @@ void unregister_core_types() {
409420
memdelete(ip);
410421
}
411422

412-
ResourceLoader::remove_resource_format_loader(resource_format_image);
413-
resource_format_image.unref();
423+
if (GD_IS_CLASS_ENABLED(Image)) {
424+
ResourceLoader::remove_resource_format_loader(resource_format_image);
425+
resource_format_image.unref();
426+
}
414427

415428
ResourceSaver::remove_resource_format_saver(resource_saver_binary);
416429
resource_saver_binary.unref();
@@ -424,22 +437,31 @@ void unregister_core_types() {
424437
ResourceSaver::remove_resource_format_saver(resource_format_importer_saver);
425438
resource_format_importer_saver.unref();
426439

427-
ResourceLoader::remove_resource_format_loader(resource_format_po);
428-
resource_format_po.unref();
440+
if (GD_IS_CLASS_ENABLED(Translation)) {
441+
ResourceLoader::remove_resource_format_loader(resource_format_po);
442+
resource_format_po.unref();
443+
}
444+
445+
if (GD_IS_CLASS_ENABLED(Crypto)) {
446+
ResourceSaver::remove_resource_format_saver(resource_format_saver_crypto);
447+
resource_format_saver_crypto.unref();
429448

430-
ResourceSaver::remove_resource_format_saver(resource_format_saver_crypto);
431-
resource_format_saver_crypto.unref();
432-
ResourceLoader::remove_resource_format_loader(resource_format_loader_crypto);
433-
resource_format_loader_crypto.unref();
449+
ResourceLoader::remove_resource_format_loader(resource_format_loader_crypto);
450+
resource_format_loader_crypto.unref();
451+
}
434452

435-
ResourceSaver::remove_resource_format_saver(resource_saver_json);
436-
resource_saver_json.unref();
453+
if (GD_IS_CLASS_ENABLED(JSON)) {
454+
ResourceSaver::remove_resource_format_saver(resource_saver_json);
455+
resource_saver_json.unref();
437456

438-
ResourceLoader::remove_resource_format_loader(resource_loader_json);
439-
resource_loader_json.unref();
457+
ResourceLoader::remove_resource_format_loader(resource_loader_json);
458+
resource_loader_json.unref();
459+
}
440460

441-
ResourceLoader::remove_resource_format_loader(resource_loader_gdextension);
442-
resource_loader_gdextension.unref();
461+
if (GD_IS_CLASS_ENABLED(GDExtension)) {
462+
ResourceLoader::remove_resource_format_loader(resource_loader_gdextension);
463+
resource_loader_gdextension.unref();
464+
}
443465

444466
ResourceLoader::finalize();
445467

modules/dds/register_types.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
#include "image_saver_dds.h"
3434
#include "texture_loader_dds.h"
3535

36+
#include "scene/resources/texture.h"
37+
3638
static Ref<ResourceFormatDDS> resource_loader_dds;
3739

3840
void initialize_dds_module(ModuleInitializationLevel p_level) {
@@ -43,17 +45,22 @@ void initialize_dds_module(ModuleInitializationLevel p_level) {
4345
Image::save_dds_func = save_dds;
4446
Image::save_dds_buffer_func = save_dds_buffer;
4547

46-
resource_loader_dds.instantiate();
47-
ResourceLoader::add_resource_format_loader(resource_loader_dds);
48+
if (GD_IS_CLASS_ENABLED(Texture)) {
49+
resource_loader_dds.instantiate();
50+
ResourceLoader::add_resource_format_loader(resource_loader_dds);
51+
}
4852
}
4953

5054
void uninitialize_dds_module(ModuleInitializationLevel p_level) {
5155
if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) {
5256
return;
5357
}
5458

55-
ResourceLoader::remove_resource_format_loader(resource_loader_dds);
56-
resource_loader_dds.unref();
59+
if (GD_IS_CLASS_ENABLED(Texture)) {
60+
ResourceLoader::remove_resource_format_loader(resource_loader_dds);
61+
resource_loader_dds.unref();
62+
}
63+
5764
Image::save_dds_func = nullptr;
5865
Image::save_dds_buffer_func = nullptr;
5966
}

modules/gltf/tests/test_gltf.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,10 @@ static Node *gltf_import(const String &p_file) {
7070

7171
// Once editor import convert pngs to ctex, we will need to load it as ctex resource.
7272
Ref<ResourceFormatLoaderCompressedTexture2D> resource_loader_stream_texture;
73-
resource_loader_stream_texture.instantiate();
74-
ResourceLoader::add_resource_format_loader(resource_loader_stream_texture);
73+
if (GD_IS_CLASS_ENABLED(CompressedTexture2D)) {
74+
resource_loader_stream_texture.instantiate();
75+
ResourceLoader::add_resource_format_loader(resource_loader_stream_texture);
76+
}
7577

7678
HashMap<StringName, Variant> options(21);
7779
options["nodes/root_type"] = "";
@@ -105,7 +107,10 @@ static Node *gltf_import(const String &p_file) {
105107

106108
ResourceImporterScene::remove_scene_importer(import_gltf);
107109
ResourceFormatImporter::get_singleton()->remove_importer(import_texture);
108-
ResourceLoader::remove_resource_format_loader(resource_loader_stream_texture);
110+
if (GD_IS_CLASS_ENABLED(CompressedTexture2D)) {
111+
ResourceLoader::remove_resource_format_loader(resource_loader_stream_texture);
112+
resource_loader_stream_texture.unref();
113+
}
109114
return p_scene;
110115
}
111116

modules/ktx/register_types.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,22 +32,28 @@
3232

3333
#include "texture_loader_ktx.h"
3434

35+
#include "scene/resources/image_texture.h"
36+
3537
static Ref<ResourceFormatKTX> resource_loader_ktx;
3638

3739
void initialize_ktx_module(ModuleInitializationLevel p_level) {
3840
if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) {
3941
return;
4042
}
4143

42-
resource_loader_ktx.instantiate();
43-
ResourceLoader::add_resource_format_loader(resource_loader_ktx);
44+
if (GD_IS_CLASS_ENABLED(ImageTexture)) {
45+
resource_loader_ktx.instantiate();
46+
ResourceLoader::add_resource_format_loader(resource_loader_ktx);
47+
}
4448
}
4549

4650
void uninitialize_ktx_module(ModuleInitializationLevel p_level) {
4751
if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) {
4852
return;
4953
}
5054

51-
ResourceLoader::remove_resource_format_loader(resource_loader_ktx);
52-
resource_loader_ktx.unref();
55+
if (GD_IS_CLASS_ENABLED(ImageTexture)) {
56+
ResourceLoader::remove_resource_format_loader(resource_loader_ktx);
57+
resource_loader_ktx.unref();
58+
}
5359
}

modules/mono/register_types.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,12 @@ void initialize_mono_module(ModuleInitializationLevel p_level) {
5353
script_language_cs->set_language_index(ScriptServer::get_language_count());
5454
ScriptServer::register_language(script_language_cs);
5555

56-
resource_loader_cs.instantiate();
57-
ResourceLoader::add_resource_format_loader(resource_loader_cs);
58-
59-
resource_saver_cs.instantiate();
60-
ResourceSaver::add_resource_format_saver(resource_saver_cs);
56+
if (GD_IS_CLASS_ENABLED(CSharpScript)) {
57+
resource_loader_cs.instantiate();
58+
ResourceLoader::add_resource_format_loader(resource_loader_cs);
59+
resource_saver_cs.instantiate();
60+
ResourceSaver::add_resource_format_saver(resource_saver_cs);
61+
}
6162
}
6263

6364
void uninitialize_mono_module(ModuleInitializationLevel p_level) {
@@ -71,11 +72,12 @@ void uninitialize_mono_module(ModuleInitializationLevel p_level) {
7172
memdelete(script_language_cs);
7273
}
7374

74-
ResourceLoader::remove_resource_format_loader(resource_loader_cs);
75-
resource_loader_cs.unref();
76-
77-
ResourceSaver::remove_resource_format_saver(resource_saver_cs);
78-
resource_saver_cs.unref();
75+
if (GD_IS_CLASS_ENABLED(CSharpScript)) {
76+
ResourceLoader::remove_resource_format_loader(resource_loader_cs);
77+
resource_loader_cs.unref();
78+
ResourceSaver::remove_resource_format_saver(resource_saver_cs);
79+
resource_saver_cs.unref();
80+
}
7981

8082
if (_godotsharp) {
8183
memdelete(_godotsharp);

modules/multiplayer/register_types.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,10 @@ void initialize_multiplayer_module(ModuleInitializationLevel p_level) {
4848
GDREGISTER_CLASS(MultiplayerSynchronizer);
4949
GDREGISTER_CLASS(OfflineMultiplayerPeer);
5050
GDREGISTER_CLASS(SceneMultiplayer);
51-
MultiplayerAPI::set_default_interface("SceneMultiplayer");
52-
MultiplayerDebugger::initialize();
51+
if (GD_IS_CLASS_ENABLED(MultiplayerAPI)) {
52+
MultiplayerAPI::set_default_interface("SceneMultiplayer");
53+
MultiplayerDebugger::initialize();
54+
}
5355
}
5456
#ifdef TOOLS_ENABLED
5557
if (p_level == MODULE_INITIALIZATION_LEVEL_EDITOR) {
@@ -59,5 +61,7 @@ void initialize_multiplayer_module(ModuleInitializationLevel p_level) {
5961
}
6062

6163
void uninitialize_multiplayer_module(ModuleInitializationLevel p_level) {
62-
MultiplayerDebugger::deinitialize();
64+
if (GD_IS_CLASS_ENABLED(MultiplayerAPI)) {
65+
MultiplayerDebugger::deinitialize();
66+
}
6367
}

scene/register_scene_types.cpp

Lines changed: 48 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -340,32 +340,42 @@ void register_scene_types() {
340340

341341
Node::init_node_hrcr();
342342

343-
resource_loader_stream_texture.instantiate();
344-
ResourceLoader::add_resource_format_loader(resource_loader_stream_texture);
343+
if (GD_IS_CLASS_ENABLED(CompressedTexture2D)) {
344+
resource_loader_stream_texture.instantiate();
345+
ResourceLoader::add_resource_format_loader(resource_loader_stream_texture);
346+
}
345347

346-
resource_loader_texture_layered.instantiate();
347-
ResourceLoader::add_resource_format_loader(resource_loader_texture_layered);
348+
if (GD_IS_CLASS_ENABLED(TextureLayered)) {
349+
resource_loader_texture_layered.instantiate();
350+
ResourceLoader::add_resource_format_loader(resource_loader_texture_layered);
351+
}
348352

349-
resource_loader_texture_3d.instantiate();
350-
ResourceLoader::add_resource_format_loader(resource_loader_texture_3d);
353+
if (GD_IS_CLASS_ENABLED(Texture3D)) {
354+
resource_loader_texture_3d.instantiate();
355+
ResourceLoader::add_resource_format_loader(resource_loader_texture_3d);
356+
}
351357

352358
resource_saver_text.instantiate();
353359
ResourceSaver::add_resource_format_saver(resource_saver_text, true);
354360

355361
resource_loader_text.instantiate();
356362
ResourceLoader::add_resource_format_loader(resource_loader_text, true);
357363

358-
resource_saver_shader.instantiate();
359-
ResourceSaver::add_resource_format_saver(resource_saver_shader, true);
364+
if (GD_IS_CLASS_ENABLED(Shader)) {
365+
resource_saver_shader.instantiate();
366+
ResourceSaver::add_resource_format_saver(resource_saver_shader, true);
360367

361-
resource_loader_shader.instantiate();
362-
ResourceLoader::add_resource_format_loader(resource_loader_shader, true);
368+
resource_loader_shader.instantiate();
369+
ResourceLoader::add_resource_format_loader(resource_loader_shader, true);
370+
}
363371

364-
resource_saver_shader_include.instantiate();
365-
ResourceSaver::add_resource_format_saver(resource_saver_shader_include, true);
372+
if (GD_IS_CLASS_ENABLED(ShaderInclude)) {
373+
resource_saver_shader_include.instantiate();
374+
ResourceSaver::add_resource_format_saver(resource_saver_shader_include, true);
366375

367-
resource_loader_shader_include.instantiate();
368-
ResourceLoader::add_resource_format_loader(resource_loader_shader_include, true);
376+
resource_loader_shader_include.instantiate();
377+
ResourceLoader::add_resource_format_loader(resource_loader_shader_include, true);
378+
}
369379

370380
OS::get_singleton()->yield(); // may take time to init
371381

@@ -1284,32 +1294,42 @@ void unregister_scene_types() {
12841294

12851295
SceneDebugger::deinitialize();
12861296

1287-
ResourceLoader::remove_resource_format_loader(resource_loader_texture_layered);
1288-
resource_loader_texture_layered.unref();
1297+
if (GD_IS_CLASS_ENABLED(TextureLayered)) {
1298+
ResourceLoader::remove_resource_format_loader(resource_loader_texture_layered);
1299+
resource_loader_texture_layered.unref();
1300+
}
12891301

1290-
ResourceLoader::remove_resource_format_loader(resource_loader_texture_3d);
1291-
resource_loader_texture_3d.unref();
1302+
if (GD_IS_CLASS_ENABLED(Texture3D)) {
1303+
ResourceLoader::remove_resource_format_loader(resource_loader_texture_3d);
1304+
resource_loader_texture_3d.unref();
1305+
}
12921306

1293-
ResourceLoader::remove_resource_format_loader(resource_loader_stream_texture);
1294-
resource_loader_stream_texture.unref();
1307+
if (GD_IS_CLASS_ENABLED(CompressedTexture2D)) {
1308+
ResourceLoader::remove_resource_format_loader(resource_loader_stream_texture);
1309+
resource_loader_stream_texture.unref();
1310+
}
12951311

12961312
ResourceSaver::remove_resource_format_saver(resource_saver_text);
12971313
resource_saver_text.unref();
12981314

12991315
ResourceLoader::remove_resource_format_loader(resource_loader_text);
13001316
resource_loader_text.unref();
13011317

1302-
ResourceSaver::remove_resource_format_saver(resource_saver_shader);
1303-
resource_saver_shader.unref();
1318+
if (GD_IS_CLASS_ENABLED(Shader)) {
1319+
ResourceSaver::remove_resource_format_saver(resource_saver_shader);
1320+
resource_saver_shader.unref();
13041321

1305-
ResourceLoader::remove_resource_format_loader(resource_loader_shader);
1306-
resource_loader_shader.unref();
1322+
ResourceLoader::remove_resource_format_loader(resource_loader_shader);
1323+
resource_loader_shader.unref();
1324+
}
13071325

1308-
ResourceSaver::remove_resource_format_saver(resource_saver_shader_include);
1309-
resource_saver_shader_include.unref();
1326+
if (GD_IS_CLASS_ENABLED(ShaderInclude)) {
1327+
ResourceSaver::remove_resource_format_saver(resource_saver_shader_include);
1328+
resource_saver_shader_include.unref();
13101329

1311-
ResourceLoader::remove_resource_format_loader(resource_loader_shader_include);
1312-
resource_loader_shader_include.unref();
1330+
ResourceLoader::remove_resource_format_loader(resource_loader_shader_include);
1331+
resource_loader_shader_include.unref();
1332+
}
13131333

13141334
// StandardMaterial3D is not initialized when 3D is disabled, so it shouldn't be cleaned up either
13151335
#ifndef _3D_DISABLED

0 commit comments

Comments
 (0)