From 5eeeae53a1e4e42fcce9d8312f570a4b928095f0 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Mon, 26 Apr 2021 20:57:03 +0100 Subject: [PATCH] feat(viewer): adds selection & doubleclick events --- packages/viewer/src/app.js | 11 +++++++++++ packages/viewer/src/modules/Converter.js | 2 ++ packages/viewer/src/modules/InteractionHandler.js | 3 +++ 3 files changed, 16 insertions(+) diff --git a/packages/viewer/src/app.js b/packages/viewer/src/app.js index 98e350892..71fe6ecc7 100644 --- a/packages/viewer/src/app.js +++ b/packages/viewer/src/app.js @@ -17,6 +17,16 @@ window.loadData = async function LoadData( url ) { await v.loadObject( url, token ) } +v.on( 'select', objects => { + console.info( `Selection event. Current selection count: ${objects.length}.` ) + console.log( objects ) +} ) + +v.on( 'object-doubleclicked', obj => { + console.info( 'Object double click event.' ) + console.log( obj ) +} ) + window.viewerScreenshot = function() { let data = v.interactions.screenshot() // transparent png. @@ -32,3 +42,4 @@ window.viewerScreenshot = function() { window.zoomFast = function(){ v.interactions.zoomExtents( 0.95, false ) } + diff --git a/packages/viewer/src/modules/Converter.js b/packages/viewer/src/modules/Converter.js index 8dfe9b0e7..fd4f9b0c6 100644 --- a/packages/viewer/src/modules/Converter.js +++ b/packages/viewer/src/modules/Converter.js @@ -6,6 +6,7 @@ import { getConversionFactor } from './Units' /** * Utility class providing some top level conversion methods. + * Warning: HIC SVNT DRACONES. */ export default class Coverter { @@ -100,6 +101,7 @@ export default class Coverter { /** * Directly converts an object and invokes the callback with the the conversion result. + * If you don't know what you're doing, use traverseAndConvert() instead. * @param {[type]} obj [description] * @param {Function} callback [description] * @return {[type]} [description] diff --git a/packages/viewer/src/modules/InteractionHandler.js b/packages/viewer/src/modules/InteractionHandler.js index 943531390..3ae9ef087 100644 --- a/packages/viewer/src/modules/InteractionHandler.js +++ b/packages/viewer/src/modules/InteractionHandler.js @@ -36,6 +36,7 @@ export default class InteractionHandler { if ( !objs || objs.length === 0 ) this.zoomExtents() else this.zoomToObject( objs[0].object ) this.viewer.needsRender = true + this.viewer.emit( 'object-doubleclicked', objs[0].object ) } _handleSelect( objs ) { @@ -66,11 +67,13 @@ export default class InteractionHandler { box.material = this.selectionEdgesMaterial this.selectedObjects.add( box ) this.viewer.needsRender = true + this.viewer.emit( 'select', this.selectedObjects.children.filter( o => o.type !== 'BoxHelper' ) ) } deselectObjects() { this.selectedObjects.clear() this.viewer.needsRender = true + this.viewer.emit( 'select', this.selectedObjects.children.filter( o => o.type !== 'BoxHelper' ) ) } toggleSectionBox() {