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

View file

@ -508,10 +508,16 @@ mesh.model = class MeshModel extends mesh.object {
} }
} }
toggleSelectedFaces(toggle = []) { selectFaces(list = [], action = {}) {
let faces = this.sel.faces; let faces = this.sel.faces;
for (let t of toggle) { for (let t of list) {
if (action.toggle) {
faces.remove(t) || faces.addOnce(t); 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 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 { x, y, z } = point;
let { a, b, c } = face; let { a, b, c } = face;
worker.model_select({ worker.model_select({
@ -552,7 +559,7 @@ mesh.model = class MeshModel extends mesh.object {
let { faces, edges, verts, point } = data; let { faces, edges, verts, point } = data;
// console.log({data}); // console.log({data});
// this.toggleSelectedVertices(verts); // this.toggleSelectedVertices(verts);
this.toggleSelectedFaces(faces); this.selectFaces(faces, action);
this.updateSelections(); this.updateSelections();
}); });
} }