EditorResourcePreviewGenerator::request_draw_and_wait

This commit is contained in:
Rob Blanckaert 2024-12-05 00:51:38 -08:00
parent 7ed0b61676
commit 2863d8cb1e
3 changed files with 15 additions and 0 deletions

View file

@ -54,5 +54,12 @@
Returns [code]true[/code] if your generator supports the resource of type [param type].
</description>
</method>
<method name="request_draw_and_wait" qualifiers="const">
<return type="void" />
<param index="0" name="viewport" type="RID" />
<description>
Call from within [method _generate] to request the rendering server draw to the [param viewport].
</description>
</method>
</methods>
</class>

View file

@ -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.

View file

@ -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 {