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

View file

@ -183,7 +183,6 @@ let group = {
groups.addOnce(group); groups.addOnce(group);
space.world.add(group.group); space.world.add(group.group);
space.update(); space.update();
selection.set([group]);
return group; return group;
}, },
@ -234,6 +233,7 @@ let api = mesh.api = {
}, },
objects: () => { objects: () => {
// return models, not groups
return group.list().map(o => o.models).flat().map(o => o.object()); 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} // @param model {MeshModel}
remove(model) { remove(model) {
// remove all models
if (arguments.length === 0) {
for (let m of this.models.slice()) {
this.remove(m);
}
return;
}
model.group = undefined; model.group = undefined;
this.models.remove(model); this.models.remove(model);
this.group.remove(model.mesh); this.group.remove(model.mesh);