add rotate to face with meta/ctrl on selected object

This commit is contained in:
Stewart Allen 2020-03-30 14:10:36 -04:00
commit 63be296463
3 changed files with 24 additions and 7 deletions

View file

@ -367,7 +367,7 @@ var gs_kiri_init = exports;
return; return;
} }
let coord = prompt("Enter X,Y,Z degrees of rotation").split(','), let coord = prompt("Enter X,Y,Z degrees of rotation").split(','),
prod = Math.PI / 360, prod = Math.PI / 180,
x = parseFloat(coord[0] || 0.0) * prod, x = parseFloat(coord[0] || 0.0) * prod,
y = parseFloat(coord[1] || 0.0) * prod, y = parseFloat(coord[1] || 0.0) * prod,
z = parseFloat(coord[2] || 0.0) * prod; z = parseFloat(coord[2] || 0.0) * prod;
@ -1549,7 +1549,13 @@ var gs_kiri_init = exports;
SPACE.platform.setGrid(25, 5); SPACE.platform.setGrid(25, 5);
SPACE.platform.opacity(0.2); SPACE.platform.opacity(0.2);
SPACE.mouse.downSelect(function() { SPACE.mouse.downSelect(function(int,event) {
// lay flat with meta or ctrl clicking a selected face
if (int && (event.ctrlKey || event.metaKey)) {
let q = new THREE.Quaternion();
q.setFromUnitVectors(int.face.normal, new THREE.Vector3(0,0,-1));
API.selection.rotate(q);
}
if (API.view.get() !== VIEWS.ARRANGE) return null; if (API.view.get() !== VIEWS.ARRANGE) return null;
return API.selection.meshes(); return API.selection.meshes();
}); });

View file

@ -450,12 +450,21 @@ var gs_kiri_widget = exports;
this.bounds = null; this.bounds = null;
this.setWireframe(false); this.setWireframe(false);
this.clearSlices(); this.clearSlices();
this.mesh.geometry.applyMatrix4(new THREE.Matrix4().makeRotationFromEuler(new THREE.Euler(x || 0, y || 0, z || 0))); let m4 = new THREE.Matrix4();
let euler = typeof(x) === 'number';
if (euler) {
m4 = m4.makeRotationFromEuler(new THREE.Euler(x || 0, y || 0, z || 0));
} else {
m4 = m4.makeRotationFromQuaternion(x);
}
this.mesh.geometry.applyMatrix4(m4);
this.center(); this.center();
let rot = this.orient.rot; if (euler) {
rot.x += (x || 0); let rot = this.orient.rot;
rot.y += (y || 0); rot.x += (x || 0);
rot.z += (z || 0); rot.y += (y || 0);
rot.z += (z || 0);
}
}; };
PRO.mirror = function() { PRO.mirror = function() {

View file

@ -440,6 +440,8 @@ var MOTO = window.moto = window.moto || {};
mouseDragPoint = trackInt.point.clone(); mouseDragPoint = trackInt.point.clone();
mouseDragStart = mouseDragPoint; mouseDragStart = mouseDragPoint;
viewControl.enabled = false; viewControl.enabled = false;
}
if (selectInt) {
mouseDownSelect(selectInt, event); mouseDownSelect(selectInt, event);
} }
} }