diff options
author | Jacques Lucke <jacques@blender.org> | 2022-01-26 17:05:31 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-01-26 17:10:49 +0300 |
commit | 12b26d21b001359cb0bd48ed073aee8f314b3455 (patch) | |
tree | 614ce1c83ce8f61852fa8f7c120277aaa407921c /source/blender/editors/interface/interface_icons.c | |
parent | 6738ecb64e8b6d0c1f5a79f1e63f468b4138de19 (diff) |
Assets: allow creating preview image by rendering active object
For node groups there is no good default preview generation.
Nevertheless, t would be useful to generate a preview image for a
node group by rendering an object in some cases.
This commit adds a new operator that allows updating the preview
image for the active asset by rendering the active object.
Note, the operator can also be used for other asset types, not just
node groups.
The operator can be found in a menu right below the refresh-preview
button. Currently it is the only operator in that menu. In the future,
more operators to create previews may be added.
Differential Revision: https://developer.blender.org/D13747
Diffstat (limited to 'source/blender/editors/interface/interface_icons.c')
-rw-r--r-- | source/blender/editors/interface/interface_icons.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index 0f5b4a1a0f1..c0d6b8a1a6c 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -1949,6 +1949,16 @@ static void ui_id_preview_image_render_size( } } +void UI_icon_render_id_ex(const bContext *C, + Scene *scene, + ID *id_to_render, + const enum eIconSizes size, + const bool use_job, + PreviewImage *r_preview_image) +{ + ui_id_preview_image_render_size(C, scene, id_to_render, r_preview_image, size, use_job); +} + void UI_icon_render_id( const bContext *C, Scene *scene, ID *id, const enum eIconSizes size, const bool use_job) { @@ -1957,19 +1967,21 @@ void UI_icon_render_id( return; } + ID *id_to_render = id; + /* For objects, first try if a preview can created via the object data. */ if (GS(id->name) == ID_OB) { Object *ob = (Object *)id; if (ED_preview_id_is_supported(ob->data)) { - id = ob->data; + id_to_render = ob->data; } } - if (!ED_preview_id_is_supported(id)) { + if (!ED_preview_id_is_supported(id_to_render)) { return; } - ui_id_preview_image_render_size(C, scene, id, pi, size, use_job); + UI_icon_render_id_ex(C, scene, id_to_render, size, use_job, pi); } static void ui_id_icon_render(const bContext *C, ID *id, bool use_jobs) |