|
@@ -46,19 +46,68 @@ const char *EditorBuildProfile::build_option_identifiers[BUILD_OPTION_MAX] = {
|
|
"disable_3d_physics",
|
|
"disable_3d_physics",
|
|
"disable_navigation",
|
|
"disable_navigation",
|
|
"openxr",
|
|
"openxr",
|
|
|
|
+ "rendering_device", // FIXME: there's no scons option to disable rendering device
|
|
"opengl3",
|
|
"opengl3",
|
|
"vulkan",
|
|
"vulkan",
|
|
|
|
+ "module_text_server_fb_enabled",
|
|
|
|
+ "module_text_server_adv_enabled",
|
|
|
|
+ "module_freetype_enabled",
|
|
|
|
+ "brotli",
|
|
|
|
+ "graphite",
|
|
|
|
+ "module_msdfgen_enabled"
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+const bool EditorBuildProfile::build_option_disabled_by_default[BUILD_OPTION_MAX] = {
|
|
|
|
+ // This maps to SCons build options.
|
|
|
|
+ false, // 3D
|
|
|
|
+ false, // PHYSICS_2D
|
|
|
|
+ false, // PHYSICS_3D
|
|
|
|
+ false, // NAVIGATION
|
|
|
|
+ false, // XR
|
|
|
|
+ false, // RENDERING_DEVICE
|
|
|
|
+ false, // OPENGL
|
|
|
|
+ false, // VULKAN
|
|
|
|
+ true, // TEXT_SERVER_FALLBACK
|
|
|
|
+ false, // TEXT_SERVER_COMPLEX
|
|
|
|
+ false, // DYNAMIC_FONTS
|
|
|
|
+ false, // WOFF2_FONTS
|
|
|
|
+ false, // GRPAHITE_FONTS
|
|
|
|
+ false, // MSDFGEN
|
|
};
|
|
};
|
|
|
|
|
|
const bool EditorBuildProfile::build_option_disable_values[BUILD_OPTION_MAX] = {
|
|
const bool EditorBuildProfile::build_option_disable_values[BUILD_OPTION_MAX] = {
|
|
// This maps to SCons build options.
|
|
// This maps to SCons build options.
|
|
- true,
|
|
|
|
- true,
|
|
|
|
- true,
|
|
|
|
- true,
|
|
|
|
- false,
|
|
|
|
- false,
|
|
|
|
- false
|
|
|
|
|
|
+ true, // 3D
|
|
|
|
+ true, // PHYSICS_2D
|
|
|
|
+ true, // PHYSICS_3D
|
|
|
|
+ true, // NAVIGATION
|
|
|
|
+ false, // XR
|
|
|
|
+ false, // RENDERING_DEVICE
|
|
|
|
+ false, // OPENGL
|
|
|
|
+ false, // VULKAN
|
|
|
|
+ false, // TEXT_SERVER_FALLBACK
|
|
|
|
+ false, // TEXT_SERVER_COMPLEX
|
|
|
|
+ false, // DYNAMIC_FONTS
|
|
|
|
+ false, // WOFF2_FONTS
|
|
|
|
+ false, // GRPAHITE_FONTS
|
|
|
|
+ false, // MSDFGEN
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+const EditorBuildProfile::BuildOptionCategory EditorBuildProfile::build_option_category[BUILD_OPTION_MAX] = {
|
|
|
|
+ BUILD_OPTION_CATEGORY_GENERAL, // 3D
|
|
|
|
+ BUILD_OPTION_CATEGORY_GENERAL, // PHYSICS_2D
|
|
|
|
+ BUILD_OPTION_CATEGORY_GENERAL, // PHYSICS_3D
|
|
|
|
+ BUILD_OPTION_CATEGORY_GENERAL, // NAVIGATION
|
|
|
|
+ BUILD_OPTION_CATEGORY_GENERAL, // XR
|
|
|
|
+ BUILD_OPTION_CATEGORY_GENERAL, // RENDERING_DEVICE
|
|
|
|
+ BUILD_OPTION_CATEGORY_GENERAL, // OPENGL
|
|
|
|
+ BUILD_OPTION_CATEGORY_GENERAL, // VULKAN
|
|
|
|
+ BUILD_OPTION_CATEGORY_TEXT_SERVER, // TEXT_SERVER_FALLBACK
|
|
|
|
+ BUILD_OPTION_CATEGORY_TEXT_SERVER, // TEXT_SERVER_COMPLEX
|
|
|
|
+ BUILD_OPTION_CATEGORY_TEXT_SERVER, // DYNAMIC_FONTS
|
|
|
|
+ BUILD_OPTION_CATEGORY_TEXT_SERVER, // WOFF2_FONTS
|
|
|
|
+ BUILD_OPTION_CATEGORY_TEXT_SERVER, // GRPAHITE_FONTS
|
|
|
|
+ BUILD_OPTION_CATEGORY_TEXT_SERVER, // MSDFGEN
|
|
};
|
|
};
|
|
|
|
|
|
void EditorBuildProfile::set_disable_class(const StringName &p_class, bool p_disabled) {
|
|
void EditorBuildProfile::set_disable_class(const StringName &p_class, bool p_disabled) {
|
|
@@ -127,6 +176,12 @@ String EditorBuildProfile::get_build_option_name(BuildOption p_build_option) {
|
|
TTRC("RenderingDevice"),
|
|
TTRC("RenderingDevice"),
|
|
TTRC("OpenGL"),
|
|
TTRC("OpenGL"),
|
|
TTRC("Vulkan"),
|
|
TTRC("Vulkan"),
|
|
|
|
+ TTRC("Text Server: Fallback"),
|
|
|
|
+ TTRC("Text Server: Advanced"),
|
|
|
|
+ TTRC("TTF, OTF, Type 1, WOFF1 Fonts"),
|
|
|
|
+ TTRC("WOFF2 Fonts"),
|
|
|
|
+ TTRC("SIL Graphite Fonts"),
|
|
|
|
+ TTRC("Multi-channel Signed Distance Field Font Rendering"),
|
|
};
|
|
};
|
|
return TTRGET(build_option_names[p_build_option]);
|
|
return TTRGET(build_option_names[p_build_option]);
|
|
}
|
|
}
|
|
@@ -143,11 +198,33 @@ String EditorBuildProfile::get_build_option_description(BuildOption p_build_opti
|
|
TTRC("RenderingDevice based rendering (if disabled, the OpenGL back-end is required)."),
|
|
TTRC("RenderingDevice based rendering (if disabled, the OpenGL back-end is required)."),
|
|
TTRC("OpenGL back-end (if disabled, the RenderingDevice back-end is required)."),
|
|
TTRC("OpenGL back-end (if disabled, the RenderingDevice back-end is required)."),
|
|
TTRC("Vulkan back-end of RenderingDevice."),
|
|
TTRC("Vulkan back-end of RenderingDevice."),
|
|
|
|
+ TTRC("Fallback implementation of Text Server\nSupports basic text layouts."),
|
|
|
|
+ TTRC("Text Server implementation powered by ICU and HarfBuzz libraries.\nSupports complex text layouts, BiDi, and contextual OpenType font features."),
|
|
|
|
+ TTRC("TrueType, OpenType, Type 1, and WOFF1 font format support using FreeType library (if disabled, WOFF2 support is also disabled)."),
|
|
|
|
+ TTRC("WOFF2 font format support using FreeType and Brotli libraries."),
|
|
|
|
+ TTRC("SIL Graphite smart font technology support (supported by Advanced Text Server only)."),
|
|
|
|
+ TTRC("Multi-channel signed distance field font rendering support using msdfgen library (pre-rendered MSDF fonts can be used even if this option disabled)."),
|
|
};
|
|
};
|
|
|
|
|
|
return TTRGET(build_option_descriptions[p_build_option]);
|
|
return TTRGET(build_option_descriptions[p_build_option]);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+EditorBuildProfile::BuildOptionCategory EditorBuildProfile::get_build_option_category(BuildOption p_build_option) {
|
|
|
|
+ ERR_FAIL_INDEX_V(p_build_option, BUILD_OPTION_MAX, BUILD_OPTION_CATEGORY_GENERAL);
|
|
|
|
+ return build_option_category[p_build_option];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+String EditorBuildProfile::get_build_option_category_name(BuildOptionCategory p_build_option_category) {
|
|
|
|
+ ERR_FAIL_INDEX_V(p_build_option_category, BUILD_OPTION_CATEGORY_MAX, String());
|
|
|
|
+
|
|
|
|
+ const char *build_option_subcategories[BUILD_OPTION_CATEGORY_MAX]{
|
|
|
|
+ TTRC("General Features:"),
|
|
|
|
+ TTRC("Text Rendering and Font Options:"),
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ return TTRGET(build_option_subcategories[p_build_option_category]);
|
|
|
|
+}
|
|
|
|
+
|
|
Error EditorBuildProfile::save_to_file(const String &p_path) {
|
|
Error EditorBuildProfile::save_to_file(const String &p_path) {
|
|
Dictionary data;
|
|
Dictionary data;
|
|
data["type"] = "build_profile";
|
|
data["type"] = "build_profile";
|
|
@@ -160,8 +237,12 @@ Error EditorBuildProfile::save_to_file(const String &p_path) {
|
|
|
|
|
|
Dictionary dis_build_options;
|
|
Dictionary dis_build_options;
|
|
for (int i = 0; i < BUILD_OPTION_MAX; i++) {
|
|
for (int i = 0; i < BUILD_OPTION_MAX; i++) {
|
|
- if (build_options_disabled[i]) {
|
|
|
|
- dis_build_options[build_option_identifiers[i]] = build_option_disable_values[i];
|
|
|
|
|
|
+ if (build_options_disabled[i] != build_option_disabled_by_default[i]) {
|
|
|
|
+ if (build_options_disabled[i]) {
|
|
|
|
+ dis_build_options[build_option_identifiers[i]] = build_option_disable_values[i];
|
|
|
|
+ } else {
|
|
|
|
+ dis_build_options[build_option_identifiers[i]] = !build_option_disable_values[i];
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -211,7 +292,7 @@ Error EditorBuildProfile::load_from_file(const String &p_path) {
|
|
}
|
|
}
|
|
|
|
|
|
for (int i = 0; i < BUILD_OPTION_MAX; i++) {
|
|
for (int i = 0; i < BUILD_OPTION_MAX; i++) {
|
|
- build_options_disabled[i] = false;
|
|
|
|
|
|
+ build_options_disabled[i] = build_option_disabled_by_default[i];
|
|
}
|
|
}
|
|
|
|
|
|
if (data.has("disabled_build_options")) {
|
|
if (data.has("disabled_build_options")) {
|
|
@@ -259,10 +340,24 @@ void EditorBuildProfile::_bind_methods() {
|
|
BIND_ENUM_CONSTANT(BUILD_OPTION_RENDERING_DEVICE);
|
|
BIND_ENUM_CONSTANT(BUILD_OPTION_RENDERING_DEVICE);
|
|
BIND_ENUM_CONSTANT(BUILD_OPTION_OPENGL);
|
|
BIND_ENUM_CONSTANT(BUILD_OPTION_OPENGL);
|
|
BIND_ENUM_CONSTANT(BUILD_OPTION_VULKAN);
|
|
BIND_ENUM_CONSTANT(BUILD_OPTION_VULKAN);
|
|
|
|
+ BIND_ENUM_CONSTANT(BUILD_OPTION_TEXT_SERVER_FALLBACK);
|
|
|
|
+ BIND_ENUM_CONSTANT(BUILD_OPTION_TEXT_SERVER_ADVANCED);
|
|
|
|
+ BIND_ENUM_CONSTANT(BUILD_OPTION_DYNAMIC_FONTS);
|
|
|
|
+ BIND_ENUM_CONSTANT(BUILD_OPTION_WOFF2_FONTS);
|
|
|
|
+ BIND_ENUM_CONSTANT(BUILD_OPTION_GRPAHITE_FONTS);
|
|
|
|
+ BIND_ENUM_CONSTANT(BUILD_OPTION_MSDFGEN);
|
|
BIND_ENUM_CONSTANT(BUILD_OPTION_MAX);
|
|
BIND_ENUM_CONSTANT(BUILD_OPTION_MAX);
|
|
|
|
+
|
|
|
|
+ BIND_ENUM_CONSTANT(BUILD_OPTION_CATEGORY_GENERAL);
|
|
|
|
+ BIND_ENUM_CONSTANT(BUILD_OPTION_CATEGORY_TEXT_SERVER);
|
|
|
|
+ BIND_ENUM_CONSTANT(BUILD_OPTION_CATEGORY_MAX);
|
|
}
|
|
}
|
|
|
|
|
|
-EditorBuildProfile::EditorBuildProfile() {}
|
|
|
|
|
|
+EditorBuildProfile::EditorBuildProfile() {
|
|
|
|
+ for (int i = 0; i < EditorBuildProfile::BUILD_OPTION_MAX; i++) {
|
|
|
|
+ build_options_disabled[i] = build_option_disabled_by_default[i];
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
|
|
//////////////////////////
|
|
//////////////////////////
|
|
|
|
|
|
@@ -633,11 +728,18 @@ void EditorBuildProfileManager::_update_edited_profile() {
|
|
|
|
|
|
TreeItem *root = class_list->create_item();
|
|
TreeItem *root = class_list->create_item();
|
|
|
|
|
|
- TreeItem *build_options = class_list->create_item(root);
|
|
|
|
- build_options->set_text(0, TTR("General Features:"));
|
|
|
|
|
|
+ HashMap<EditorBuildProfile::BuildOptionCategory, TreeItem *> subcats;
|
|
|
|
+ for (int i = 0; i < EditorBuildProfile::BUILD_OPTION_CATEGORY_MAX; i++) {
|
|
|
|
+ TreeItem *build_cat;
|
|
|
|
+ build_cat = class_list->create_item(root);
|
|
|
|
+
|
|
|
|
+ build_cat->set_text(0, EditorBuildProfile::get_build_option_category_name(EditorBuildProfile::BuildOptionCategory(i)));
|
|
|
|
+ subcats[EditorBuildProfile::BuildOptionCategory(i)] = build_cat;
|
|
|
|
+ }
|
|
|
|
+
|
|
for (int i = 0; i < EditorBuildProfile::BUILD_OPTION_MAX; i++) {
|
|
for (int i = 0; i < EditorBuildProfile::BUILD_OPTION_MAX; i++) {
|
|
TreeItem *build_option;
|
|
TreeItem *build_option;
|
|
- build_option = class_list->create_item(build_options);
|
|
|
|
|
|
+ build_option = class_list->create_item(subcats[EditorBuildProfile::get_build_option_category(EditorBuildProfile::BuildOption(i))]);
|
|
|
|
|
|
build_option->set_cell_mode(0, TreeItem::CELL_MODE_CHECK);
|
|
build_option->set_cell_mode(0, TreeItem::CELL_MODE_CHECK);
|
|
build_option->set_text(0, EditorBuildProfile::get_build_option_name(EditorBuildProfile::BuildOption(i)));
|
|
build_option->set_text(0, EditorBuildProfile::get_build_option_name(EditorBuildProfile::BuildOption(i)));
|