From 4ea6b42891cc022f26a87d137c8539fafc512911 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Thu, 25 Mar 2021 15:13:15 -0400 Subject: [PATCH] partial fix for mirroring tabs --- src/mode/cam/client.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/mode/cam/client.js b/src/mode/cam/client.js index c5402b50..b4f262b8 100644 --- a/src/mode/cam/client.js +++ b/src/mode/cam/client.js @@ -709,6 +709,19 @@ func.traceClear(); } }); + api.event.on("widget.mirror", widget => { + if (!isCamMode) { + return; + } + if (traceOn) { + func.traceDone(); + } + unselectTraces(widget); + if (flipping) { + return; + } + mirrorTabs(widget); + }); api.event.on("widget.rotate", rot => { if (!isCamMode) { return; @@ -741,6 +754,22 @@ func.hover(data); }); + function mirrorTabs(widget) { + let tabs = API.widgets.annotate(widget.id).tab || []; + tabs.forEach(rec => { + let { id, pos, rot } = rec; + let tab = widget.tabs[id]; + let e = new THREE.Euler().setFromQuaternion(rot); + // let dv = (e._z - (Math.PI - e._z)); + e._z = Math.PI - e._z; + rec.rot = new THREE.Quaternion().setFromEuler(e); + // let m4 = new THREE.Matrix4().makeRotationFromEuler(new THREE.Euler(0,0,dv)); + // tab.box.geometry.applyMatrix4(m4); + tab.box.position.x = pos.x = -pos.x; + }); + SPACE.update(); + } + function rotateTabs(widget, x, y, z) { let tabs = API.widgets.annotate(widget.id).tab || []; tabs.forEach(rec => {