From 48aaa14c51e4f9cabaacdeadc8bdcab551ff6e2a Mon Sep 17 00:00:00 2001 From: luboslenco Date: Sun, 20 Jul 2025 00:14:24 +0200 Subject: [PATCH] Restore unwrap mesh button --- armorpaint/assets/plugins/uv_unwrap.js | 20 ++++++++------------ armorpaint/plugins/plugins.c | 7 +++++++ base/sources/ts/tab_plugins.ts | 22 ++++++++++++++++++++++ 3 files changed, 37 insertions(+), 12 deletions(-) diff --git a/armorpaint/assets/plugins/uv_unwrap.js b/armorpaint/assets/plugins/uv_unwrap.js index d2811674..e63c327e 100644 --- a/armorpaint/assets/plugins/uv_unwrap.js +++ b/armorpaint/assets/plugins/uv_unwrap.js @@ -5,18 +5,14 @@ function unwrap_mesh(mesh) { proc_xatlas_unwrap(mesh); } -// let h1 = ui_handle_create(); -// plugin_notify_on_ui(plugin, function() { -// if (ui_panel(h1, "UV Unwrap")) { -// if (ui_button("Unwrap Mesh")) { -// for (let po of project_paint_objects) { -// unwrap_mesh(mesh); -// mesh_data_build(); -// } -// util_mesh_merge_mesh(); -// } -// } -// }); +let h1 = ui_handle_create(); +plugin_notify_on_ui(plugin, function() { + if (ui_panel(h1, "UV Unwrap")) { + if (ui_button("Unwrap Mesh")) { + plugin_uv_unwrap_button(); + } + } +}); util_mesh_unwrappers_set("uv_unwrap.js", unwrap_mesh); plugin_notify_on_delete(plugin, function() { diff --git a/armorpaint/plugins/plugins.c b/armorpaint/plugins/plugins.c index 5f8a5dc7..d1e6fc07 100644 --- a/armorpaint/plugins/plugins.c +++ b/armorpaint/plugins/plugins.c @@ -9,6 +9,12 @@ FN(proc_xatlas_unwrap) { return JS_UNDEFINED; } +void plugin_uv_unwrap_button(); +FN(plugin_uv_unwrap_button) { + plugin_uv_unwrap_button(); + return JS_UNDEFINED; +} + void *io_svg_parse(char *buf); FN(io_svg_parse) { size_t len; @@ -42,6 +48,7 @@ void plugin_embed() { JSValue global_obj = JS_GetGlobalObject(js_ctx); BIND(proc_xatlas_unwrap, 1); + BIND(plugin_uv_unwrap_button, 0); BIND(io_svg_parse, 1); BIND(io_usd_parse, 1); BIND(io_gltf_parse, 2); diff --git a/base/sources/ts/tab_plugins.ts b/base/sources/ts/tab_plugins.ts index 30d06374..8f66e8ff 100644 --- a/base/sources/ts/tab_plugins.ts +++ b/base/sources/ts/tab_plugins.ts @@ -40,3 +40,25 @@ function tab_plugins_draw(htab: ui_handle_t) { ///end } } + +function plugin_uv_unwrap_button() { + let cb: any = map_get(util_mesh_unwrappers, "uv_unwrap.js"); // JSValue * -> (a: raw_mesh_t)=>void + for (let i: i32 = 0; i < project_paint_objects.length; ++i) { + let md: mesh_data_t = project_paint_objects[i].data; + let mesh: raw_mesh_t = { + posa: md.vertex_arrays[0].values, + nora: md.vertex_arrays[1].values, + texa: null, + inda: md.index_arrays[0].values + }; + js_call_ptr(cb, mesh); + md.vertex_arrays[0].values = mesh.posa; + md.vertex_arrays[1].values = mesh.nora; + md.vertex_arrays[2].values = mesh.texa; + md.index_arrays[0].values = mesh.inda; + md._.indices[0] = mesh.inda; + md._.ready = false; + mesh_data_build(md); + } + util_mesh_merge(); +}