Improve edge/vertex extrusion in side views

This commit is contained in:
JannisX11 2023-04-09 14:13:33 +02:00
parent fbaaed801c
commit cee9f9074a

View File

@ -811,7 +811,7 @@ BARS.defineActions(function() {
Mesh.selected.forEach(mesh => {
let original_vertices = mesh.getSelectedVertices().slice();
let selected_edges = mesh.getSelectedEdges();
let selected_edges = mesh.getSelectedEdges(true);
let new_vertices;
let new_face_keys = [];
let selected_face_keys = mesh.getSelectedFaces();
@ -890,7 +890,21 @@ BARS.defineActions(function() {
// Instead, construct the normal between the first 2 selected vertices
direction = combined_direction;
} else if (match && true) {
let difference = new THREE.Vector3();
let signs_done = [];
match.vertices.forEach(vkey => {
let sign = original_vertices.includes(vkey) ? 1 : -1;
if (signs_done.includes(sign)) return;
difference.x += mesh.vertices[vkey][0] * sign;
difference.y += mesh.vertices[vkey][1] * sign;
difference.z += mesh.vertices[vkey][2] * sign;
signs_done.push(sign);
})
direction = difference.normalize().toArray();
} else if (match) {
// perpendicular edge, currently unused
direction = match.getNormal(true);
}
}
@ -982,6 +996,13 @@ BARS.defineActions(function() {
}
})
// Update edge selection
selected_edges.forEach(edge => {
edge.forEach((vkey, i) => {
edge[i] = new_vertices[original_vertices.indexOf(vkey)];
});
})
UVEditor.setAutoSize(null, true, new_face_keys);
})
Undo.finishEdit('Extrude mesh selection');