allow select, clear, toggle faces with alt and shift key modifiers

This commit is contained in:
Stewart Allen 2022-01-20 17:19:15 -05:00
commit a81a1f0b60
2 changed files with 16 additions and 7 deletions

View file

@ -388,7 +388,7 @@ function space_init(data) {
}
if (model) {
let group = model.group;
let { ctrlKey, metaKey, shiftKey } = event;
let { altKey, ctrlKey, metaKey, shiftKey } = event;
if (metaKey) {
// set focus on intersected face
let { x, y, z } = int.point;
@ -408,7 +408,9 @@ function space_init(data) {
case modes.line:
case modes.vertex:
// find faces adjacent to point/line clicked
model.find(int.point, int.face);
model.find(int,
altKey ? { toggle: true } :
shiftKey ? { clear: true } : { select: true });
break;
}
}

View file

@ -508,10 +508,16 @@ mesh.model = class MeshModel extends mesh.object {
}
}
toggleSelectedFaces(toggle = []) {
selectFaces(list = [], action = {}) {
let faces = this.sel.faces;
for (let t of toggle) {
faces.remove(t) || faces.addOnce(t);
for (let t of list) {
if (action.toggle) {
faces.remove(t) || faces.addOnce(t);
} else if (action.clear) {
faces.remove(t);
} else if (action.select) {
faces.addOnce(t);
}
}
}
@ -543,7 +549,8 @@ mesh.model = class MeshModel extends mesh.object {
}
// find adjacent faces to clicked point/line on a face
find(point, face) {
find(int, action) {
let { point, face } = int;
let { x, y, z } = point;
let { a, b, c } = face;
worker.model_select({
@ -552,7 +559,7 @@ mesh.model = class MeshModel extends mesh.object {
let { faces, edges, verts, point } = data;
// console.log({data});
// this.toggleSelectedVertices(verts);
this.toggleSelectedFaces(faces);
this.selectFaces(faces, action);
this.updateSelections();
});
}