Files
armorpaint/paint/sources/util_mesh_ext.ts
T
luboslenco 625aa681a9 Merge forge
2025-08-08 14:09:48 +02:00

42 lines
1.2 KiB
TypeScript

function _util_mesh_unique_data_count(): i32 {
return util_mesh_ext_get_unique().length;
}
function util_mesh_ext_pack_uvs(texa: i16_array_t) {
// Scale tex coords into global atlas
let atlas_w: i32 = config_get_scene_atlas_res();
let item_i: i32 = _util_mesh_unique_data_count() - 1; // Add the one being imported
let item_w: i32 = config_get_layer_res();
let atlas_stride: i32 = atlas_w / item_w;
let atlas_step: i32 = 32767 / atlas_stride;
let item_x: i32 = (item_i % atlas_stride) * atlas_step;
let item_y: i32 = math_floor(item_i / atlas_stride) * atlas_step;
for (let i: i32 = 0; i < texa.length / 2; ++i) {
texa[i * 2] = texa[i * 2] / atlas_stride + item_x;
texa[i * 2 + 1] = texa[i * 2 + 1] / atlas_stride + item_y;
}
}
function util_mesh_ext_get_unique(): mesh_object_t[] {
let ar: mesh_object_t[] = [];
for (let i: i32 = 0; i < project_paint_objects.length; ++i) {
if (!project_paint_objects[i].base.visible) {
continue;
}
let found: bool = false;
for (let j: i32 = 0; j < i; ++j) {
if (project_paint_objects[i].data == project_paint_objects[j].data) {
found = true;
break;
}
}
if (!found) {
array_push(ar, project_paint_objects[i]);
}
}
return ar;
}