From 7b7bad642d8d21ce8190917ed6788cfe55c9cae1 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Sat, 27 Sep 2025 19:38:29 +0200 Subject: [PATCH] Node preview progress --- paint/sources/context.ts | 4 ++-- paint/sources/ui_nodes.ts | 12 +++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/paint/sources/context.ts b/paint/sources/context.ts index 62e46b3b..d08132fa 100644 --- a/paint/sources/context.ts +++ b/paint/sources/context.ts @@ -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; node_preview_name?: string; node_previews?: map_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; } - diff --git a/paint/sources/ui_nodes.ts b/paint/sources/ui_nodes.ts index 46b5bf4d..55176076 100644 --- a/paint/sources/ui_nodes.ts +++ b/paint/sources/ui_nodes.ts @@ -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 {