feat: modules moved and engine moved to submodule
This commit is contained in:
parent
dfb5e645cd
commit
c33d2130cc
5136 changed files with 225275 additions and 64485 deletions
|
|
@ -125,17 +125,17 @@ double Engine::get_unfrozen_time_scale() const {
|
|||
|
||||
Dictionary Engine::get_version_info() const {
|
||||
Dictionary dict;
|
||||
dict["major"] = VERSION_MAJOR;
|
||||
dict["minor"] = VERSION_MINOR;
|
||||
dict["patch"] = VERSION_PATCH;
|
||||
dict["hex"] = VERSION_HEX;
|
||||
dict["status"] = VERSION_STATUS;
|
||||
dict["build"] = VERSION_BUILD;
|
||||
dict["major"] = GODOT_VERSION_MAJOR;
|
||||
dict["minor"] = GODOT_VERSION_MINOR;
|
||||
dict["patch"] = GODOT_VERSION_PATCH;
|
||||
dict["hex"] = GODOT_VERSION_HEX;
|
||||
dict["status"] = GODOT_VERSION_STATUS;
|
||||
dict["build"] = GODOT_VERSION_BUILD;
|
||||
|
||||
String hash = String(VERSION_HASH);
|
||||
String hash = String(GODOT_VERSION_HASH);
|
||||
dict["hash"] = hash.is_empty() ? String("unknown") : hash;
|
||||
|
||||
dict["timestamp"] = VERSION_TIMESTAMP;
|
||||
dict["timestamp"] = GODOT_VERSION_TIMESTAMP;
|
||||
|
||||
String stringver = String(dict["major"]) + "." + String(dict["minor"]);
|
||||
if ((int)dict["patch"] != 0) {
|
||||
|
|
|
|||
|
|
@ -28,8 +28,7 @@
|
|||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/**************************************************************************/
|
||||
|
||||
#ifndef ENGINE_H
|
||||
#define ENGINE_H
|
||||
#pragma once
|
||||
|
||||
#include "core/os/main_loop.h"
|
||||
#include "core/string/ustring.h"
|
||||
|
|
@ -214,5 +213,3 @@ public:
|
|||
Engine();
|
||||
virtual ~Engine();
|
||||
};
|
||||
|
||||
#endif // ENGINE_H
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ String ProjectSettings::get_imported_files_path() const {
|
|||
// This is used by the project manager to provide the initial_settings for config/features.
|
||||
const PackedStringArray ProjectSettings::get_required_features() {
|
||||
PackedStringArray features;
|
||||
features.append(VERSION_BRANCH);
|
||||
features.append(GODOT_VERSION_BRANCH);
|
||||
#ifdef REAL_T_IS_DOUBLE
|
||||
features.append("Double Precision");
|
||||
#endif
|
||||
|
|
@ -92,9 +92,9 @@ const PackedStringArray ProjectSettings::_get_supported_features() {
|
|||
#endif
|
||||
// Allow pinning to a specific patch number or build type by marking
|
||||
// them as supported. They're only used if the user adds them manually.
|
||||
features.append(VERSION_BRANCH "." _MKSTR(VERSION_PATCH));
|
||||
features.append(VERSION_FULL_CONFIG);
|
||||
features.append(VERSION_FULL_BUILD);
|
||||
features.append(GODOT_VERSION_BRANCH "." _MKSTR(GODOT_VERSION_PATCH));
|
||||
features.append(GODOT_VERSION_FULL_CONFIG);
|
||||
features.append(GODOT_VERSION_FULL_BUILD);
|
||||
|
||||
#ifdef RD_ENABLED
|
||||
features.append("Forward Plus");
|
||||
|
|
@ -173,7 +173,7 @@ String ProjectSettings::localize_path(const String &p_path) const {
|
|||
|
||||
if (dir->change_dir(path) == OK) {
|
||||
String cwd = dir->get_current_dir();
|
||||
cwd = cwd.replace("\\", "/");
|
||||
cwd = cwd.replace_char('\\', '/');
|
||||
|
||||
// Ensure that we end with a '/'.
|
||||
// This is important to ensure that we do not wrongly localize the resource path
|
||||
|
|
@ -208,7 +208,7 @@ String ProjectSettings::localize_path(const String &p_path) const {
|
|||
if (plocal[plocal.length() - 1] == '/') {
|
||||
sep += 1;
|
||||
}
|
||||
return plocal + path.substr(sep, path.size() - sep);
|
||||
return plocal + path.substr(sep);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -289,7 +289,7 @@ bool ProjectSettings::_set(const StringName &p_name, const Variant &p_value) {
|
|||
remove_autoload(node_name);
|
||||
}
|
||||
} else if (p_name.operator String().begins_with("global_group/")) {
|
||||
String group_name = p_name.operator String().get_slice("/", 1);
|
||||
String group_name = p_name.operator String().get_slicec('/', 1);
|
||||
if (global_groups.has(group_name)) {
|
||||
remove_global_group(group_name);
|
||||
}
|
||||
|
|
@ -340,7 +340,7 @@ bool ProjectSettings::_set(const StringName &p_name, const Variant &p_value) {
|
|||
}
|
||||
add_autoload(autoload);
|
||||
} else if (p_name.operator String().begins_with("global_group/")) {
|
||||
String group_name = p_name.operator String().get_slice("/", 1);
|
||||
String group_name = p_name.operator String().get_slicec('/', 1);
|
||||
add_global_group(group_name, p_value);
|
||||
}
|
||||
}
|
||||
|
|
@ -359,14 +359,14 @@ bool ProjectSettings::_get(const StringName &p_name, Variant &r_ret) const {
|
|||
return true;
|
||||
}
|
||||
|
||||
Variant ProjectSettings::get_setting_with_override(const StringName &p_name) const {
|
||||
Variant ProjectSettings::get_setting_with_override_and_custom_features(const StringName &p_name, const Vector<String> &p_features) const {
|
||||
_THREAD_SAFE_METHOD_
|
||||
|
||||
StringName name = p_name;
|
||||
if (feature_overrides.has(name)) {
|
||||
const LocalVector<Pair<StringName, StringName>> &overrides = feature_overrides[name];
|
||||
for (uint32_t i = 0; i < overrides.size(); i++) {
|
||||
if (OS::get_singleton()->has_feature(overrides[i].first)) { // Custom features are checked in OS.has_feature() already. No need to check twice.
|
||||
if (p_features.has(String(overrides[i].first).to_lower())) {
|
||||
if (props.has(overrides[i].second)) {
|
||||
name = overrides[i].second;
|
||||
break;
|
||||
|
|
@ -376,12 +376,39 @@ Variant ProjectSettings::get_setting_with_override(const StringName &p_name) con
|
|||
}
|
||||
|
||||
if (!props.has(name)) {
|
||||
WARN_PRINT(vformat("Property not found: '%s'.", String(name)));
|
||||
WARN_PRINT("Property not found: " + String(name));
|
||||
return Variant();
|
||||
}
|
||||
return props[name].variant;
|
||||
}
|
||||
|
||||
Variant ProjectSettings::get_setting_with_override(const StringName &p_name) const {
|
||||
_THREAD_SAFE_METHOD_
|
||||
|
||||
const LocalVector<Pair<StringName, StringName>> *overrides = feature_overrides.getptr(p_name);
|
||||
if (overrides) {
|
||||
for (uint32_t i = 0; i < overrides->size(); i++) {
|
||||
if (!OS::get_singleton()->has_feature((*overrides)[i].first)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Custom features are checked in OS.has_feature() already. No need to check twice.
|
||||
const RBMap<StringName, VariantContainer>::Element *override_prop = props.find((*overrides)[i].second);
|
||||
if (override_prop) {
|
||||
return override_prop->get().variant;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const RBMap<StringName, VariantContainer>::Element *prop = props.find(p_name);
|
||||
if (!prop) {
|
||||
WARN_PRINT(vformat("Property not found: '%s'.", p_name));
|
||||
return Variant();
|
||||
}
|
||||
|
||||
return prop->get().variant;
|
||||
}
|
||||
|
||||
struct _VCSort {
|
||||
String name;
|
||||
Variant::Type type = Variant::VARIANT_MAX;
|
||||
|
|
@ -564,7 +591,7 @@ Error ProjectSettings::_setup(const String &p_path, const String &p_main_pack, b
|
|||
if (!OS::get_singleton()->get_resource_dir().is_empty()) {
|
||||
// OS will call ProjectSettings->get_resource_path which will be empty if not overridden!
|
||||
// If the OS would rather use a specific location, then it will not be empty.
|
||||
resource_path = OS::get_singleton()->get_resource_dir().replace("\\", "/");
|
||||
resource_path = OS::get_singleton()->get_resource_dir().replace_char('\\', '/');
|
||||
if (!resource_path.is_empty() && resource_path[resource_path.length() - 1] == '/') {
|
||||
resource_path = resource_path.substr(0, resource_path.length() - 1); // Chop end.
|
||||
}
|
||||
|
|
@ -685,7 +712,7 @@ Error ProjectSettings::_setup(const String &p_path, const String &p_main_pack, b
|
|||
while (true) {
|
||||
// Set the resource path early so things can be resolved when loading.
|
||||
resource_path = current_dir;
|
||||
resource_path = resource_path.replace("\\", "/"); // Windows path to Unix path just in case.
|
||||
resource_path = resource_path.replace_char('\\', '/'); // Windows path to Unix path just in case.
|
||||
err = _load_settings_text_or_binary(current_dir.path_join("project.godot"), current_dir.path_join("project.binary"));
|
||||
if (err == OK && !p_ignore_override) {
|
||||
// Optional, we don't mind if it fails.
|
||||
|
|
@ -770,8 +797,7 @@ Error ProjectSettings::_load_settings_binary(const String &p_path) {
|
|||
cs.resize(slen + 1);
|
||||
cs[slen] = 0;
|
||||
f->get_buffer((uint8_t *)cs.ptr(), slen);
|
||||
String key;
|
||||
key.parse_utf8(cs.ptr(), slen);
|
||||
String key = String::utf8(cs.ptr(), slen);
|
||||
|
||||
uint32_t vlen = f->get_32();
|
||||
Vector<uint8_t> d;
|
||||
|
|
@ -1129,7 +1155,7 @@ Error ProjectSettings::save_custom(const String &p_path, const CustomMap &p_cust
|
|||
category = "";
|
||||
} else {
|
||||
category = category.substr(0, div);
|
||||
name = name.substr(div + 1, name.size());
|
||||
name = name.substr(div + 1);
|
||||
}
|
||||
save_props[category].push_back(name);
|
||||
}
|
||||
|
|
@ -1141,7 +1167,7 @@ Error ProjectSettings::save_custom(const String &p_path, const CustomMap &p_cust
|
|||
save_features += ",";
|
||||
}
|
||||
|
||||
String f = p_custom_features[i].strip_edges().replace("\"", "");
|
||||
String f = p_custom_features[i].strip_edges().remove_char('\"');
|
||||
save_features += f;
|
||||
}
|
||||
|
||||
|
|
@ -1408,6 +1434,7 @@ void ProjectSettings::_bind_methods() {
|
|||
ClassDB::bind_method(D_METHOD("get_setting", "name", "default_value"), &ProjectSettings::get_setting, DEFVAL(Variant()));
|
||||
ClassDB::bind_method(D_METHOD("get_setting_with_override", "name"), &ProjectSettings::get_setting_with_override);
|
||||
ClassDB::bind_method(D_METHOD("get_global_class_list"), &ProjectSettings::get_global_class_list);
|
||||
ClassDB::bind_method(D_METHOD("get_setting_with_override_and_custom_features", "name", "features"), &ProjectSettings::get_setting_with_override_and_custom_features);
|
||||
ClassDB::bind_method(D_METHOD("set_order", "name", "position"), &ProjectSettings::set_order);
|
||||
ClassDB::bind_method(D_METHOD("get_order", "name"), &ProjectSettings::get_order);
|
||||
ClassDB::bind_method(D_METHOD("set_initial_value", "name", "value"), &ProjectSettings::set_initial_value);
|
||||
|
|
@ -1434,8 +1461,8 @@ void ProjectSettings::_add_builtin_input_map() {
|
|||
Array events;
|
||||
|
||||
// Convert list of input events into array
|
||||
for (List<Ref<InputEvent>>::Element *I = E.value.front(); I; I = I->next()) {
|
||||
events.push_back(I->get());
|
||||
for (const Ref<InputEvent> &event : E.value) {
|
||||
events.push_back(event);
|
||||
}
|
||||
|
||||
Dictionary action;
|
||||
|
|
@ -1488,6 +1515,9 @@ ProjectSettings::ProjectSettings() {
|
|||
GLOBAL_DEF("application/config/auto_accept_quit", true);
|
||||
GLOBAL_DEF("application/config/quit_on_go_back", true);
|
||||
|
||||
GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "accessibility/general/accessibility_support", PROPERTY_HINT_ENUM, "Auto (When Screen Reader is Running),Always Active,Disabled"), 0);
|
||||
GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "accessibility/general/updates_per_second", PROPERTY_HINT_RANGE, "1,100,1"), 60);
|
||||
|
||||
// The default window size is tuned to:
|
||||
// - Have a 16:9 aspect ratio,
|
||||
// - Have both dimensions divisible by 8 to better play along with video recording,
|
||||
|
|
@ -1497,9 +1527,10 @@ ProjectSettings::ProjectSettings() {
|
|||
|
||||
GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "display/window/size/mode", PROPERTY_HINT_ENUM, "Windowed,Minimized,Maximized,Fullscreen,Exclusive Fullscreen"), 0);
|
||||
|
||||
// Keep the enum values in sync with the `DisplayServer::SCREEN_` enum.
|
||||
GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "display/window/size/initial_position_type", PROPERTY_HINT_ENUM, "Absolute,Center of Primary Screen,Center of Other Screen,Center of Screen With Mouse Pointer,Center of Screen With Keyboard Focus"), 1);
|
||||
// Keep the enum values in sync with the `Window::WINDOW_INITIAL_POSITION_` enum.
|
||||
GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "display/window/size/initial_position_type", PROPERTY_HINT_ENUM, "Absolute:0,Center of Primary Screen:1,Center of Other Screen:3,Center of Screen With Mouse Pointer:4,Center of Screen With Keyboard Focus:5"), 1);
|
||||
GLOBAL_DEF_BASIC(PropertyInfo(Variant::VECTOR2I, "display/window/size/initial_position"), Vector2i());
|
||||
// Keep the enum values in sync with the `DisplayServer::SCREEN_` enum.
|
||||
GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "display/window/size/initial_screen", PROPERTY_HINT_RANGE, "0,64,1,or_greater"), 0);
|
||||
|
||||
GLOBAL_DEF_BASIC("display/window/size/resizable", true);
|
||||
|
|
@ -1509,6 +1540,8 @@ ProjectSettings::ProjectSettings() {
|
|||
GLOBAL_DEF("display/window/size/extend_to_title", false);
|
||||
GLOBAL_DEF("display/window/size/no_focus", false);
|
||||
GLOBAL_DEF("display/window/size/sharp_corners", false);
|
||||
GLOBAL_DEF("display/window/size/minimize_disabled", false);
|
||||
GLOBAL_DEF("display/window/size/maximize_disabled", false);
|
||||
|
||||
GLOBAL_DEF(PropertyInfo(Variant::INT, "display/window/size/window_width_override", PROPERTY_HINT_RANGE, "0,7680,1,or_greater"), 0); // 8K resolution
|
||||
GLOBAL_DEF(PropertyInfo(Variant::INT, "display/window/size/window_height_override", PROPERTY_HINT_RANGE, "0,4320,1,or_greater"), 0); // 8K resolution
|
||||
|
|
@ -1543,8 +1576,13 @@ ProjectSettings::ProjectSettings() {
|
|||
#else
|
||||
custom_prop_info["rendering/driver/threads/thread_model"] = PropertyInfo(Variant::INT, "rendering/driver/threads/thread_model", PROPERTY_HINT_ENUM, "Unsafe (deprecated),Safe,Separate");
|
||||
#endif
|
||||
|
||||
#ifndef PHYSICS_2D_DISABLED
|
||||
GLOBAL_DEF("physics/2d/run_on_separate_thread", false);
|
||||
#endif // PHYSICS_2D_DISABLED
|
||||
#ifndef PHYSICS_3D_DISABLED
|
||||
GLOBAL_DEF("physics/3d/run_on_separate_thread", false);
|
||||
#endif // PHYSICS_3D_DISABLED
|
||||
|
||||
GLOBAL_DEF_BASIC(PropertyInfo(Variant::STRING, "display/window/stretch/mode", PROPERTY_HINT_ENUM, "disabled,canvas_items,viewport"), "disabled");
|
||||
GLOBAL_DEF_BASIC(PropertyInfo(Variant::STRING, "display/window/stretch/aspect", PROPERTY_HINT_ENUM, "ignore,keep,keep_width,keep_height,expand"), "keep");
|
||||
|
|
@ -1612,6 +1650,8 @@ ProjectSettings::ProjectSettings() {
|
|||
GLOBAL_DEF_BASIC("input_devices/pointing/android/enable_long_press_as_right_click", false);
|
||||
GLOBAL_DEF_BASIC("input_devices/pointing/android/enable_pan_and_scale_gestures", false);
|
||||
GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "input_devices/pointing/android/rotary_input_scroll_axis", PROPERTY_HINT_ENUM, "Horizontal,Vertical"), 1);
|
||||
GLOBAL_DEF("input_devices/pointing/android/override_volume_buttons", false);
|
||||
GLOBAL_DEF_BASIC("input_devices/pointing/android/disable_scroll_deadzone", false);
|
||||
|
||||
// These properties will not show up in the dialog. If you want to exclude whole groups, use add_hidden_prefix().
|
||||
GLOBAL_DEF_INTERNAL("application/config/features", PackedStringArray());
|
||||
|
|
@ -1620,6 +1660,19 @@ ProjectSettings::ProjectSettings() {
|
|||
GLOBAL_DEF_INTERNAL("internationalization/locale/translations_pot_files", PackedStringArray());
|
||||
GLOBAL_DEF_INTERNAL("internationalization/locale/translation_add_builtin_strings_to_pot", false);
|
||||
|
||||
#if !defined(NAVIGATION_2D_DISABLED) || !defined(NAVIGATION_3D_DISABLED)
|
||||
GLOBAL_DEF("navigation/world/map_use_async_iterations", true);
|
||||
|
||||
GLOBAL_DEF("navigation/avoidance/thread_model/avoidance_use_multiple_threads", true);
|
||||
GLOBAL_DEF("navigation/avoidance/thread_model/avoidance_use_high_priority_threads", true);
|
||||
|
||||
GLOBAL_DEF("navigation/pathfinding/max_threads", 4);
|
||||
|
||||
GLOBAL_DEF("navigation/baking/use_crash_prevention_checks", true);
|
||||
GLOBAL_DEF("navigation/baking/thread_model/baking_use_multiple_threads", true);
|
||||
GLOBAL_DEF("navigation/baking/thread_model/baking_use_high_priority_threads", true);
|
||||
#endif // !defined(NAVIGATION_2D_DISABLED) || !defined(NAVIGATION_3D_DISABLED)
|
||||
|
||||
ProjectSettings::get_singleton()->add_hidden_prefix("input/");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,8 +28,7 @@
|
|||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/**************************************************************************/
|
||||
|
||||
#ifndef PROJECT_SETTINGS_H
|
||||
#define PROJECT_SETTINGS_H
|
||||
#pragma once
|
||||
|
||||
#include "core/object/class_db.h"
|
||||
|
||||
|
|
@ -194,6 +193,7 @@ public:
|
|||
List<String> get_input_presets() const { return input_presets; }
|
||||
|
||||
Variant get_setting_with_override(const StringName &p_name) const;
|
||||
Variant get_setting_with_override_and_custom_features(const StringName &p_name, const Vector<String> &p_features) const;
|
||||
|
||||
bool is_using_datapack() const;
|
||||
bool is_project_loaded() const;
|
||||
|
|
@ -243,5 +243,3 @@ Variant _GLOBAL_DEF(const PropertyInfo &p_info, const Variant &p_default, bool p
|
|||
#define GLOBAL_DEF_RST_NOVAL_BASIC(m_var, m_value) _GLOBAL_DEF(m_var, m_value, true, true, true)
|
||||
|
||||
#define GLOBAL_DEF_INTERNAL(m_var, m_value) _GLOBAL_DEF(m_var, m_value, false, false, false, true)
|
||||
|
||||
#endif // PROJECT_SETTINGS_H
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue