Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2022-01-26 17:05:31 +0300
committerJacques Lucke <jacques@blender.org>2022-01-26 17:10:49 +0300
commit12b26d21b001359cb0bd48ed073aee8f314b3455 (patch)
tree614ce1c83ce8f61852fa8f7c120277aaa407921c /source/blender/editors/interface/interface_icons.c
parent6738ecb64e8b6d0c1f5a79f1e63f468b4138de19 (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.c18
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)