From 2863d8cb1e4dc9cbb9bc6455c10055ea355e1c2e Mon Sep 17 00:00:00 2001 From: Rob Blanckaert Date: Thu, 5 Dec 2024 00:51:38 -0800 Subject: [PATCH] EditorResourcePreviewGenerator::request_draw_and_wait --- doc/classes/EditorResourcePreviewGenerator.xml | 7 +++++++ editor/inspector/editor_resource_preview.cpp | 7 +++++++ editor/inspector/editor_resource_preview.h | 1 + 3 files changed, 15 insertions(+) diff --git a/doc/classes/EditorResourcePreviewGenerator.xml b/doc/classes/EditorResourcePreviewGenerator.xml index 6c37520e344..e94f658cdad 100644 --- a/doc/classes/EditorResourcePreviewGenerator.xml +++ b/doc/classes/EditorResourcePreviewGenerator.xml @@ -54,5 +54,12 @@ Returns [code]true[/code] if your generator supports the resource of type [param type]. + + + + + Call from within [method _generate] to request the rendering server draw to the [param viewport]. + + diff --git a/editor/inspector/editor_resource_preview.cpp b/editor/inspector/editor_resource_preview.cpp index cfc0cacf7a9..30a22ab93f3 100644 --- a/editor/inspector/editor_resource_preview.cpp +++ b/editor/inspector/editor_resource_preview.cpp @@ -87,6 +87,8 @@ void EditorResourcePreviewGenerator::_bind_methods() { GDVIRTUAL_BIND(_generate_from_path, "path", "size", "metadata"); GDVIRTUAL_BIND(_generate_small_preview_automatically); GDVIRTUAL_BIND(_can_generate_small_preview); + + ClassDB::bind_method(D_METHOD("request_draw_and_wait", "viewport"), &EditorResourcePreviewGenerator::request_draw_and_wait); } void EditorResourcePreviewGenerator::DrawRequester::request_and_wait(RID p_viewport) { @@ -118,6 +120,11 @@ void EditorResourcePreviewGenerator::DrawRequester::abort() { } } +void EditorResourcePreviewGenerator::request_draw_and_wait(RID viewport) const { + DrawRequester draw_requester; + draw_requester.request_and_wait(viewport); +} + Variant EditorResourcePreviewGenerator::DrawRequester::_post_semaphore() { semaphore.post(); return Variant(); // Needed because of how the callback is used. diff --git a/editor/inspector/editor_resource_preview.h b/editor/inspector/editor_resource_preview.h index 654f094de2b..b42f36f7ef8 100644 --- a/editor/inspector/editor_resource_preview.h +++ b/editor/inspector/editor_resource_preview.h @@ -68,6 +68,7 @@ public: virtual bool generate_small_preview_automatically() const; virtual bool can_generate_small_preview() const; + void request_draw_and_wait(RID viewport) const; }; class EditorResourcePreview : public Node {