add delete/backspace to remove model. front view. no auto-select on add

This commit is contained in:
Stewart Allen 2022-01-01 15:04:24 -05:00
commit b4e9a8a87a
3 changed files with 24 additions and 7 deletions

View file

@ -24,7 +24,7 @@ function init() {
});
space.init($('container'), delta => { }, ortho);
platform.onClick(click => {
api.selection.clear();
// api.selection.clear();
});
platform.onMove(delta => { });
platform.set({
@ -102,6 +102,9 @@ broker.subscribe('space_init', data => {
case 'KeyH':
space.view.home();
break;
case 'KeyF':
space.view.front();
break;
case 'KeyT':
space.view.top();
break;
@ -113,6 +116,13 @@ broker.subscribe('space_init', data => {
'keydown', evt => {
let rv = Math.PI / 16;
switch (evt.code) {
case 'Backspace':
case 'Delete':
for (let s of api.selection.list()) {
s.showBounds(false);
s.remove();
}
break;
case 'ArrowUp':
api.selection.rotate(-rv,0,0).floor();
break;
@ -144,11 +154,11 @@ broker.subscribe('space_init', data => {
let q = new THREE.Quaternion();
// find intersecting point, look "up" on Z and rotate to face that
q.setFromUnitVectors(int.face.normal, new THREE.Vector3(0,0,-1));
// group.qrotate(q);
let e = new THREE.Euler().setFromQuaternion(q);
let n = int.face.normal;
console.log({n,q,e});
group.rotation(e.x, e.y, e.z);
group.qrotate(q);
// let e = new THREE.Euler().setFromQuaternion(q);
// let n = int.face.normal;
// console.log({n,q,e});
// group.rotation(e.x, e.y, e.z);
group.floor();
} else {
api.selection.toggle(model.group);

View file

@ -183,7 +183,6 @@ let group = {
groups.addOnce(group);
space.world.add(group.group);
space.update();
selection.set([group]);
return group;
},
@ -234,6 +233,7 @@ let api = mesh.api = {
},
objects: () => {
// return models, not groups
return group.list().map(o => o.models).flat().map(o => o.object());
}
};

View file

@ -42,6 +42,13 @@ mesh.group = class MeshGroup extends mesh.object {
// @param model {MeshModel}
remove(model) {
// remove all models
if (arguments.length === 0) {
for (let m of this.models.slice()) {
this.remove(m);
}
return;
}
model.group = undefined;
this.models.remove(model);
this.group.remove(model.mesh);