Node preview progress

This commit is contained in:
luboslenco
2025-09-27 19:38:29 +02:00
parent a97804728e
commit 7b7bad642d
2 changed files with 9 additions and 7 deletions
+2 -2
View File
@@ -97,7 +97,7 @@ type context_t = {
layer_preview_dirty?: bool;
layers_preview_dirty?: bool;
node_preview_dirty?: bool;
node_preview?: gpu_texture_t;
node_preview_map?: map_t<ui_node_t, gpu_texture_t>;
node_preview_name?: string;
node_previews?: map_t<string, gpu_texture_t>;
node_previews_used?: string[];
@@ -327,6 +327,7 @@ function context_create(): context_t {
c.layers_preview_dirty = false;
c.node_preview_dirty = false;
c.node_preview_name = "";
c.node_preview_map = map_create();
c.selected_node_preview = true;
c.colorid_picked = false;
c.material_preview = false; // Drawing material previews
@@ -791,4 +792,3 @@ function context_ext_select_paint_object(o: mesh_object_t) {
util_uv_trianglemap_cached = false;
util_uv_dilatemap_cached = false;
}
+7 -5
View File
@@ -977,7 +977,7 @@ function ui_nodes_render() {
let th: f32 = tw * (img.height / img.width);
let tx: f32 = ui_nodes_ww - tw - 8 * UI_SCALE();
let ty: f32 = ui_nodes_wh - th - 8 * UI_SCALE();
if (img == context_raw.node_preview) {
if (img == map_get(context_raw.node_preview_map, sel)) {
ui_draw_shadow(tx, ty, tw, th);
}
let single_channel: bool = sel.type == "LAYER_MASK";
@@ -1129,7 +1129,7 @@ function ui_nodes_get_node_preview_image(n: ui_node_t): gpu_texture_t {
}
}
else if (ui_nodes_canvas_type == canvas_type_t.MATERIAL) {
img = context_raw.node_preview;
img = map_get(context_raw.node_preview_map, n);
}
return img;
}
@@ -1471,13 +1471,15 @@ function ui_nodes_make_node_preview() {
return;
}
if (context_raw.node_preview == null) {
context_raw.node_preview = gpu_create_render_target(util_render_material_preview_size, util_render_material_preview_size);
let img: gpu_texture_t = map_get(context_raw.node_preview_map, node);
if (img == null) {
img = gpu_create_render_target(util_render_material_preview_size, util_render_material_preview_size);
map_set(context_raw.node_preview_map, node, img);
}
context_raw.node_preview_dirty = false;
ui_nodes_hwnd.redraws = 2;
util_render_make_node_preview(ui_nodes_get_canvas(), node, context_raw.node_preview);
util_render_make_node_preview(ui_nodes_get_canvas(), node, img);
}
function ui_nodes_has_group(c: ui_node_canvas_t): bool {