Skip to content

Commit 435bcca

Browse files
committed
Add EditorInterface method to search asset library
1 parent 97e5d8c commit 435bcca

File tree

6 files changed

+63
-4
lines changed

6 files changed

+63
-4
lines changed

editor/asset_library/asset_library_editor_plugin.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1832,6 +1832,14 @@ void AssetLibraryEditorPlugin::make_visible(bool p_visible) {
18321832
}
18331833
}
18341834

1835+
LineEdit *AssetLibraryEditorPlugin::get_search_filter() {
1836+
return addon_library->get_search_filter();
1837+
}
1838+
1839+
HTTPRequest *AssetLibraryEditorPlugin::get_request() {
1840+
return addon_library->get_request();
1841+
}
1842+
18351843
AssetLibraryEditorPlugin::AssetLibraryEditorPlugin() {
18361844
addon_library = memnew(EditorAssetLibrary);
18371845
addon_library->set_v_size_flags(Control::SIZE_EXPAND_FILL);

editor/asset_library/asset_library_editor_plugin.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,9 @@ class EditorAssetLibrary : public PanelContainer {
334334
public:
335335
void disable_community_support();
336336

337+
LineEdit *get_search_filter() { return filter; }
338+
HTTPRequest *get_request() { return request; }
339+
337340
EditorAssetLibrary(bool p_templates_only = false);
338341
};
339342

@@ -354,5 +357,8 @@ class AssetLibraryEditorPlugin : public EditorPlugin {
354357
//virtual Dictionary get_state() const;
355358
//virtual void set_state(const Dictionary& p_state);
356359

360+
LineEdit *get_search_filter();
361+
HTTPRequest *get_request();
362+
357363
AssetLibraryEditorPlugin();
358364
};

editor/editor_interface.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,12 @@
2929
/**************************************************************************/
3030

3131
#include "editor_interface.h"
32+
#include "core/string/print_string.h"
3233
#include "editor_interface.compat.inc"
3334

3435
#include "core/config/project_settings.h"
3536
#include "core/io/resource_loader.h"
37+
#include "editor/asset_library/asset_library_editor_plugin.h"
3638
#include "editor/docks/filesystem_dock.h"
3739
#include "editor/docks/inspector_dock.h"
3840
#include "editor/editor_main_screen.h"
@@ -59,6 +61,8 @@
5961
#include "scene/3d/mesh_instance_3d.h"
6062
#include "scene/gui/box_container.h"
6163
#include "scene/gui/control.h"
64+
#include "scene/gui/line_edit.h"
65+
#include "scene/main/http_request.h"
6266
#include "scene/main/window.h"
6367
#include "scene/resources/packed_scene.h"
6468
#include "scene/resources/theme.h"
@@ -117,6 +121,37 @@ void EditorInterface::open_export_dialog() {
117121
EditorNode::get_singleton()->open_export_dialog();
118122
}
119123

124+
void EditorInterface::search_asset_library(const String &p_filter) {
125+
AssetLibraryEditorPlugin *asset_lib = EditorNode::get_singleton()->get_asset_library();
126+
ERR_FAIL_NULL_MSG(asset_lib, "Asset Library not available.");
127+
128+
LineEdit *asset_library_filter = asset_lib->get_search_filter();
129+
130+
HTTPRequest *request = asset_lib->get_request();
131+
132+
if (!asset_library_filter->is_editable()) {
133+
request->connect("request_completed", callable_mp(this, &EditorInterface::_on_asset_library_request_completed).bind(asset_library_filter, p_filter), CONNECT_ONE_SHOT);
134+
} else {
135+
asset_library_filter->set_text(p_filter);
136+
asset_library_filter->emit_signal("text_changed", asset_library_filter->get_text());
137+
}
138+
}
139+
140+
void EditorInterface::_on_asset_library_request_completed(int p_result, int p_response_code, const PackedStringArray &p_headers, const PackedByteArray &p_body, LineEdit *p_asset_library_filter, String p_search_string) {
141+
if (p_response_code != 200) {
142+
print_verbose(vformat("Asset Library HTTPRequest returned with response code %s", p_response_code));
143+
return;
144+
}
145+
146+
if (p_asset_library_filter == nullptr) {
147+
print_verbose("No Asset Library LineEdit node found");
148+
return;
149+
}
150+
151+
p_asset_library_filter->set_text(p_search_string);
152+
p_asset_library_filter->emit_signal("text_changed", p_asset_library_filter->get_text());
153+
}
154+
120155
AABB EditorInterface::_calculate_aabb_for_scene(Node *p_node, AABB &p_scene_aabb) {
121156
MeshInstance3D *mesh_node = Object::cast_to<MeshInstance3D>(p_node);
122157
if (mesh_node && mesh_node->get_mesh().is_valid()) {
@@ -844,6 +879,7 @@ void EditorInterface::_bind_methods() {
844879

845880
ClassDB::bind_method(D_METHOD("open_project_settings", "general_page", "filter"), &EditorInterface::open_project_settings);
846881
ClassDB::bind_method(D_METHOD("open_export_dialog"), &EditorInterface::open_export_dialog);
882+
ClassDB::bind_method(D_METHOD("search_asset_library", "filter"), &EditorInterface::search_asset_library);
847883

848884
ClassDB::bind_method(D_METHOD("make_mesh_previews", "meshes", "preview_size"), &EditorInterface::_make_mesh_previews);
849885

editor/editor_interface.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class EditorSettings;
4848
class EditorToaster;
4949
class EditorUndoRedoManager;
5050
class FileSystemDock;
51+
class LineEdit;
5152
class Mesh;
5253
class Node;
5354
class PropertySelector;
@@ -109,9 +110,6 @@ class EditorInterface : public Object {
109110
EditorToaster *get_editor_toaster() const;
110111
EditorUndoRedoManager *get_editor_undo_redo() const;
111112

112-
void open_project_settings(const String &p_general_page, const String &p_filter);
113-
void open_export_dialog();
114-
115113
Vector<Ref<Texture2D>> make_mesh_previews(const Vector<Ref<Mesh>> &p_meshes, Vector<Transform3D> *p_transforms, int p_preview_size);
116114
void make_scene_preview(const String &p_path, Node *p_scene, int p_preview_size);
117115

@@ -149,6 +147,11 @@ class EditorInterface : public Object {
149147
String get_current_feature_profile() const;
150148
void set_current_feature_profile(const String &p_profile_name);
151149

150+
void open_project_settings(const String &p_general_page, const String &p_filter);
151+
void open_export_dialog();
152+
void search_asset_library(const String &p_filter);
153+
void _on_asset_library_request_completed(int p_result, int p_response_code, const PackedStringArray &p_headers, const PackedByteArray &p_body, LineEdit *p_asset_library_filter, String p_search_string);
154+
152155
// Editor dialogs.
153156

154157
void popup_node_selector(const Callable &p_callback, const TypedArray<StringName> &p_valid_types = TypedArray<StringName>(), Node *p_current_value = nullptr);

editor/editor_node.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8957,7 +8957,8 @@ EditorNode::EditorNode() {
89578957
TextEditor::register_editor();
89588958

89598959
if (AssetLibraryEditorPlugin::is_available()) {
8960-
add_editor_plugin(memnew(AssetLibraryEditorPlugin));
8960+
asset_library_plugin = memnew(AssetLibraryEditorPlugin);
8961+
add_editor_plugin(asset_library_plugin);
89618962
} else {
89628963
print_verbose("Asset Library not available (due to using Web editor, or SSL support disabled).");
89638964
}

editor/editor_node.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class Window;
6464

6565
class AudioStreamImportSettingsDialog;
6666
class AudioStreamPreviewGenerator;
67+
class AssetLibraryEditorPlugin;
6768
class BackgroundProgress;
6869
class DependencyErrorDialog;
6970
class DockSplitContainer;
@@ -275,6 +276,8 @@ class EditorNode : public Node {
275276
ProjectExportDialog *project_export = nullptr;
276277
ProjectSettingsEditor *project_settings_editor = nullptr;
277278

279+
AssetLibraryEditorPlugin *asset_library_plugin = nullptr;
280+
278281
FBXImporterManager *fbx_importer_manager = nullptr;
279282

280283
Vector<EditorPlugin *> editor_plugins;
@@ -795,6 +798,8 @@ class EditorNode : public Node {
795798

796799
ProjectSettingsEditor *get_project_settings() { return project_settings_editor; }
797800

801+
AssetLibraryEditorPlugin *get_asset_library() { return asset_library_plugin; }
802+
798803
void trigger_menu_option(int p_option, bool p_confirmed);
799804
bool has_previous_closed_scenes() const;
800805

0 commit comments

Comments
 (0)