diff options
author | reduz <reduzio@gmail.com> | 2022-07-14 14:18:18 +0200 |
---|---|---|
committer | reduz <reduzio@gmail.com> | 2022-07-22 10:53:23 +0200 |
commit | 6236a688b77b11de3570c94f77069049d65d25fd (patch) | |
tree | 4e881b35d2806ad6d0069c9c348019aea977d5c0 /core/io/resource_importer.cpp | |
parent | 5fec0d232a41a6e99bf4e00222a88bce719637cc (diff) |
Implement Feature Build Profiles
This PR is a continuation of #50381 (which was implemented exactly a year ago!)
* Add a visual interface to select which classes should not be built into Godot (well, they are built if something else uses them, but if not used the optimizer will remove them out).
* Add a detection system to scan the project and figure out the actual classes used.
* Added the ability for SCons to load build profiles.
Obligatory Screen:
A simple test with a couple of nodes in the scene resulted in a 25% reduction for the final binary size
TODO:
* Script languages need to implement used class detection (left for another PR).
* Options to disable servers or server functionalities (like 2D or 3D physics, navigation, etc). Are missing, that should also greatly aid in reducing binary size.
* Options to disable some modules would be desired.
* More options to disable drivers (OpenGL, Vulkan, etc) would be desired.
In general this PR is a starting point for more contributors to improve and enhance this functionality.
Diffstat (limited to 'core/io/resource_importer.cpp')
-rw-r--r-- | core/io/resource_importer.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/core/io/resource_importer.cpp b/core/io/resource_importer.cpp index 934cb780e6..e059fc842b 100644 --- a/core/io/resource_importer.cpp +++ b/core/io/resource_importer.cpp @@ -352,6 +352,16 @@ Variant ResourceFormatImporter::get_resource_metadata(const String &p_path) cons return pat.metadata; } +void ResourceFormatImporter::get_classes_used(const String &p_path, HashSet<StringName> *r_classes) { + PathAndType pat; + Error err = _get_path_and_type(p_path, pat); + + if (err != OK) { + return; + } + + ResourceLoader::get_classes_used(pat.path, r_classes); +} void ResourceFormatImporter::get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types) { PathAndType pat; |