diff options
-rw-r--r-- | core/project_settings.cpp | 15 | ||||
-rw-r--r-- | core/project_settings.h | 2 | ||||
-rw-r--r-- | doc/classes/ProjectSettings.xml | 6 | ||||
-rw-r--r-- | drivers/coreaudio/audio_driver_coreaudio.cpp | 5 | ||||
-rw-r--r-- | editor/editor_file_dialog.cpp | 7 | ||||
-rw-r--r-- | editor/editor_file_dialog.h | 1 | ||||
-rw-r--r-- | editor/editor_properties.cpp | 1 | ||||
-rw-r--r-- | editor/inspector_dock.cpp | 12 | ||||
-rw-r--r-- | servers/audio/audio_stream.cpp | 7 | ||||
-rw-r--r-- | servers/audio_server.cpp | 1 |
10 files changed, 54 insertions, 3 deletions
diff --git a/core/project_settings.cpp b/core/project_settings.cpp index 407bb78375..031ac06063 100644 --- a/core/project_settings.cpp +++ b/core/project_settings.cpp @@ -307,7 +307,7 @@ void ProjectSettings::_convert_to_last_version() { * If a project file is found, load it or fail. * If nothing was found, error out. */ -Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bool p_upwards) { +Error ProjectSettings::_setup(const String &p_path, const String &p_main_pack, bool p_upwards) { // If looking for files in a network client, use it directly @@ -450,6 +450,18 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bo return OK; } +Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bool p_upwards) { + Error err = _setup(p_path, p_main_pack, p_upwards); + if (err == OK) { + String custom_settings = GLOBAL_DEF("application/config/project_settings_override", ""); + if (custom_settings != "") { + _load_settings_text(custom_settings); + } + } + + return err; +} + bool ProjectSettings::has_setting(String p_var) const { _THREAD_SAFE_METHOD_ @@ -995,6 +1007,7 @@ ProjectSettings::ProjectSettings() { GLOBAL_DEF("application/run/disable_stderr", false); GLOBAL_DEF("application/config/use_custom_user_dir", false); GLOBAL_DEF("application/config/custom_user_dir_name", ""); + GLOBAL_DEF("application/config/project_settings_override", ""); action = Dictionary(); action["deadzone"] = Variant(0.5f); diff --git a/core/project_settings.h b/core/project_settings.h index 611355f2ef..f150e4499b 100644 --- a/core/project_settings.h +++ b/core/project_settings.h @@ -112,6 +112,8 @@ protected: void _add_property_info_bind(const Dictionary &p_info); + Error _setup(const String &p_path, const String &p_main_pack, bool p_upwards = false); + protected: static void _bind_methods(); diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index 7a9918237f..92d5415ed6 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -184,6 +184,9 @@ <member name="application/config/use_custom_user_dir" type="bool" setter="" getter=""> Allow the project to save to its own custom user dir (in AppData on windows or ~/.config on unixes). This setting only works for desktop exporters. A name must be set in the "custom_user_dir_name" setting for this to take effect. </member> + <member name="application/config/project_settings_override" type="String" setter="" getter=""> + Specifies a file to override project settings. For example: user://custom_settings.cfg. + </member> <member name="application/run/disable_stderr" type="bool" setter="" getter=""> Disable printing to stderr on exported build. </member> @@ -210,6 +213,9 @@ </member> <member name="audio/driver" type="String" setter="" getter=""> </member> + <member name="audio/enable_audio_input" type="bool" setter="" getter=""> + This option should be enabled if project works with microphone. + </member> <member name="audio/mix_rate" type="int" setter="" getter=""> Mix rate used for audio. In general, it's better to not touch this and leave it to the host operating system. </member> diff --git a/drivers/coreaudio/audio_driver_coreaudio.cpp b/drivers/coreaudio/audio_driver_coreaudio.cpp index 726cee10a4..3d093b965a 100644 --- a/drivers/coreaudio/audio_driver_coreaudio.cpp +++ b/drivers/coreaudio/audio_driver_coreaudio.cpp @@ -159,7 +159,10 @@ Error AudioDriverCoreAudio::init() { result = AudioUnitInitialize(audio_unit); ERR_FAIL_COND_V(result != noErr, FAILED); - return capture_init(); + if (GLOBAL_GET("audio/enable_audio_input")) { + return capture_init(); + } + return OK; } OSStatus AudioDriverCoreAudio::output_callback(void *inRefCon, diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp index 81d9442656..2360e5f410 100644 --- a/editor/editor_file_dialog.cpp +++ b/editor/editor_file_dialog.cpp @@ -1699,6 +1699,12 @@ EditorFileDialog::~EditorFileDialog() { memdelete(dir_access); } +void EditorLineEditFileChooser::_notification(int p_what) { + + if (p_what == NOTIFICATION_ENTER_TREE || p_what == NOTIFICATION_THEME_CHANGED) + button->set_icon(get_icon("Folder", "EditorIcons")); +} + void EditorLineEditFileChooser::_bind_methods() { ClassDB::bind_method(D_METHOD("_browse"), &EditorLineEditFileChooser::_browse); @@ -1725,7 +1731,6 @@ EditorLineEditFileChooser::EditorLineEditFileChooser() { add_child(line_edit); line_edit->set_h_size_flags(SIZE_EXPAND_FILL); button = memnew(Button); - button->set_text(" .. "); add_child(button); button->connect("pressed", this, "_browse"); dialog = memnew(EditorFileDialog); diff --git a/editor/editor_file_dialog.h b/editor/editor_file_dialog.h index 56cefb9a47..574fefcab4 100644 --- a/editor/editor_file_dialog.h +++ b/editor/editor_file_dialog.h @@ -254,6 +254,7 @@ class EditorLineEditFileChooser : public HBoxContainer { void _browse(); protected: + void _notification(int p_what); static void _bind_methods(); public: diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index ff7ab051b5..b992b90758 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -2421,6 +2421,7 @@ void EditorPropertyResource::update_property() { sub_inspector->set_keying(is_keying()); sub_inspector->set_read_only(is_read_only()); sub_inspector->set_use_folding(is_using_folding()); + sub_inspector->set_undo_redo(EditorNode::get_singleton()->get_undo_redo()); sub_inspector_vbox = memnew(VBoxContainer); add_child(sub_inspector_vbox); diff --git a/editor/inspector_dock.cpp b/editor/inspector_dock.cpp index 750fca2852..d201087ecf 100644 --- a/editor/inspector_dock.cpp +++ b/editor/inspector_dock.cpp @@ -334,6 +334,7 @@ void InspectorDock::_notification(int p_what) { set_theme(editor->get_gui_base()->get_theme()); resource_new_button->set_icon(get_icon("New", "EditorIcons")); resource_load_button->set_icon(get_icon("Load", "EditorIcons")); + resource_save_button->set_icon(get_icon("Save", "EditorIcons")); backward_button->set_icon(get_icon("Back", "EditorIcons")); forward_button->set_icon(get_icon("Forward", "EditorIcons")); history_menu->set_icon(get_icon("History", "EditorIcons")); @@ -416,6 +417,7 @@ void InspectorDock::update(Object *p_object) { object_menu->set_disabled(false); search->set_editable(true); + resource_save_button->set_disabled(!is_resource); PopupMenu *p = object_menu->get_popup(); @@ -515,6 +517,16 @@ InspectorDock::InspectorDock(EditorNode *p_editor, EditorData &p_editor_data) { resource_load_button->connect("pressed", this, "_open_resource_selector"); resource_load_button->set_focus_mode(Control::FOCUS_NONE); + resource_save_button = memnew(MenuButton); + resource_save_button->set_tooltip(TTR("Save the currently edited resource.")); + resource_save_button->set_icon(get_icon("Save", "EditorIcons")); + general_options_hb->add_child(resource_save_button); + resource_save_button->get_popup()->add_item(TTR("Save"), RESOURCE_SAVE); + resource_save_button->get_popup()->add_item(TTR("Save As..."), RESOURCE_SAVE_AS); + resource_save_button->get_popup()->connect("id_pressed", this, "_menu_option"); + resource_save_button->set_focus_mode(Control::FOCUS_NONE); + resource_save_button->set_disabled(true); + general_options_hb->add_spacer(); backward_button = memnew(ToolButton); diff --git a/servers/audio/audio_stream.cpp b/servers/audio/audio_stream.cpp index 02a0bed964..21073a1cd1 100644 --- a/servers/audio/audio_stream.cpp +++ b/servers/audio/audio_stream.cpp @@ -30,6 +30,7 @@ #include "audio_stream.h" #include "core/os/os.h" +#include "core/project_settings.h" ////////////////////////////// @@ -184,6 +185,12 @@ float AudioStreamPlaybackMicrophone::get_stream_sampling_rate() { } void AudioStreamPlaybackMicrophone::start(float p_from_pos) { + + if (!GLOBAL_GET("audio/enable_audio_input")) { + WARN_PRINTS("Need to enable Project settings > Audio > Enable Audio Input option to use capturing."); + return; + } + input_ofs = 0; AudioDriver::get_singleton()->capture_start(); diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp index 0cead5b2ba..0073f9e149 100644 --- a/servers/audio_server.cpp +++ b/servers/audio_server.cpp @@ -172,6 +172,7 @@ int AudioDriverManager::get_driver_count() { } void AudioDriverManager::initialize(int p_driver) { + GLOBAL_DEF_RST("audio/enable_audio_input", false); int failed_driver = -1; // Check if there is a selected driver |