add delete/backspace to remove model. front view. no auto-select on add
This commit is contained in:
parent
d73cf48d90
commit
b4e9a8a87a
3 changed files with 24 additions and 7 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue