From 2ca0ef9712ca3f718d8bffc0e0e90054193add1b Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 29 Apr 2023 16:32:30 +0200 Subject: [PATCH] Fix #1262 inset faces don't have default UV mapping --- js/modeling/mesh_editing.js | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/js/modeling/mesh_editing.js b/js/modeling/mesh_editing.js index e93a61ab..715fa985 100644 --- a/js/modeling/mesh_editing.js +++ b/js/modeling/mesh_editing.js @@ -1039,15 +1039,9 @@ BARS.defineActions(function() { if (original_vertices.length < 3) return; original_vertices = original_vertices.slice(); let new_vertices; - let selected_faces = []; - let selected_face_keys = []; - for (let key in mesh.faces) { - let face = mesh.faces[key]; - if (face.isSelected()) { - selected_faces.push(face); - selected_face_keys.push(key); - } - } + let selected_face_keys = mesh.getSelectedFaces(); + let selected_faces = selected_face_keys.map(fkey => mesh.faces[fkey]); + let modified_face_keys = selected_face_keys.slice(); new_vertices = mesh.addVertices(...original_vertices.map(vkey => { let vector = mesh.vertices[vkey].slice(); @@ -1104,15 +1098,24 @@ BARS.defineActions(function() { if (vertices.length == 2 && i) return; // Only create one quad when extruding line if (selected_faces.find(f => f != face && f.vertices.includes(a) && f.vertices.includes(b))) return; + let new_face_vertices = [ + b, + a, + original_vertices[new_vertices.indexOf(a)], + original_vertices[new_vertices.indexOf(b)], + ]; + let new_face_uv = { + [a]: face.uv[a], + [b]: face.uv[b], + [new_face_vertices[2]]: face.uv[a], + [new_face_vertices[3]]: face.uv[b], + }; let new_face = new MeshFace(mesh, mesh.faces[selected_face_keys[face_index]]).extend({ - vertices: [ - b, - a, - original_vertices[new_vertices.indexOf(a)], - original_vertices[new_vertices.indexOf(b)], - ] + vertices: new_face_vertices, + uv: new_face_uv }); - mesh.addFaces(new_face); + let [fkey] = mesh.addFaces(new_face); + modified_face_keys.push(fkey); remaining_vertices.remove(a); remaining_vertices.remove(b); }) @@ -1132,6 +1135,7 @@ BARS.defineActions(function() { } delete mesh.vertices[b]; }) + UVEditor.setAutoSize(null, true, modified_face_keys); }) Undo.finishEdit('Extrude mesh selection')