From ed8d577bc51b28142ff0260c034d7b0331b28ab5 Mon Sep 17 00:00:00 2001 From: AlexandruPopovici Date: Wed, 3 Aug 2022 19:03:43 +0300 Subject: [PATCH] Implemented moving streams (as a whole) in the sandbox from the UI. As in change their 3D position in real time --- packages/viewer-sandbox/src/Sandbox.ts | 15 ++++++++++++++- packages/viewer/src/modules/SpeckleRenderer.ts | 6 +++++- .../src/modules/materials/SpeckleBasicMaterial.ts | 2 +- .../modules/materials/SpeckleLambertMaterial.ts | 2 +- .../modules/materials/SpeckleLineBasicMaterial.ts | 2 +- .../src/modules/materials/SpeckleLineMaterial.ts | 2 +- .../materials/SpeckleStandardColoredMaterial.ts | 2 +- .../modules/materials/SpeckleStandardMaterial.ts | 2 +- 8 files changed, 25 insertions(+), 8 deletions(-) diff --git a/packages/viewer-sandbox/src/Sandbox.ts b/packages/viewer-sandbox/src/Sandbox.ts index 2bea196ee..dc0f1528c 100644 --- a/packages/viewer-sandbox/src/Sandbox.ts +++ b/packages/viewer-sandbox/src/Sandbox.ts @@ -59,6 +59,17 @@ export default class Sandbox { title: 'URL', disabled: true }) + const position = { value: { x: 0, y: 0, z: 0 } } + const positionInput = this.steamsFolder + .addInput(position, 'value', { label: 'Position' }) + .on('change', () => { + this.viewer.speckleRenderer + .subtree(url) + .position.set(position.value.x, position.value.y, position.value.z) + this.viewer.speckleRenderer.updateDirectLights(0.47, 0) + this.viewer.speckleRenderer.updateHelpers() + }) + const button = this.steamsFolder .addButton({ title: 'Unload' @@ -67,13 +78,14 @@ export default class Sandbox { this.removeStreamControls(url) }) this.streams[url] = [] - this.streams[url].push(label, button) + this.streams[url].push(label, positionInput, button) } private removeStreamControls(url: string) { this.viewer.unloadObject(url) ;(this.streams[url][0] as { dispose: () => void }).dispose() ;(this.streams[url][1] as { dispose: () => void }).dispose() + delete this.streams[url] } public makeGenericUI() { @@ -102,6 +114,7 @@ export default class Sandbox { expanded: true }) + this.tabs.pages[0].addSeparator() this.tabs.pages[0].addSeparator() const toggleSectionBox = this.tabs.pages[0].addButton({ diff --git a/packages/viewer/src/modules/SpeckleRenderer.ts b/packages/viewer/src/modules/SpeckleRenderer.ts index 5433a8e6a..dafe9f954 100644 --- a/packages/viewer/src/modules/SpeckleRenderer.ts +++ b/packages/viewer/src/modules/SpeckleRenderer.ts @@ -57,6 +57,10 @@ export default class SpeckleRenderer { return this.scene.getObjectByName('ContentGroup') } + public subtree(subtreeId: string) { + return this.scene.getObjectByName(subtreeId) + } + public get sceneBox() { return new Box3().setFromObject(this.allObjects) } @@ -296,7 +300,7 @@ export default class SpeckleRenderer { this.renderer.shadowMap.needsUpdate = true } - private updateHelpers() { + public updateHelpers() { if (this.SHOW_HELPERS) { ;(this.scene.getObjectByName('CamHelper') as CameraHelper).update() ;(this.scene.getObjectByName('SceneBoxHelper') as Box3Helper).box.copy( diff --git a/packages/viewer/src/modules/materials/SpeckleBasicMaterial.ts b/packages/viewer/src/modules/materials/SpeckleBasicMaterial.ts index 332ccf358..c88841614 100644 --- a/packages/viewer/src/modules/materials/SpeckleBasicMaterial.ts +++ b/packages/viewer/src/modules/materials/SpeckleBasicMaterial.ts @@ -71,7 +71,7 @@ class SpeckleBasicMaterial extends MeshBasicMaterial { SpeckleBasicMaterial.matBuff.elements[12] = 0 SpeckleBasicMaterial.matBuff.elements[13] = 0 SpeckleBasicMaterial.matBuff.elements[14] = 0 - // SpeckleBasicMaterial.matBuff.multiply(object.matrixWorld) + SpeckleBasicMaterial.matBuff.multiply(object.matrixWorld) object.modelViewMatrix.copy(SpeckleBasicMaterial.matBuff) SpeckleBasicMaterial.vecBuff0.set( diff --git a/packages/viewer/src/modules/materials/SpeckleLambertMaterial.ts b/packages/viewer/src/modules/materials/SpeckleLambertMaterial.ts index d23e852e1..60aa42e71 100644 --- a/packages/viewer/src/modules/materials/SpeckleLambertMaterial.ts +++ b/packages/viewer/src/modules/materials/SpeckleLambertMaterial.ts @@ -71,7 +71,7 @@ class SpeckleLambertMaterial extends MeshLambertMaterial { SpeckleLambertMaterial.matBuff.elements[12] = 0 SpeckleLambertMaterial.matBuff.elements[13] = 0 SpeckleLambertMaterial.matBuff.elements[14] = 0 - // SpeckleLambertMaterial.matBuff.multiply(object.matrixWorld) + SpeckleLambertMaterial.matBuff.multiply(object.matrixWorld) object.modelViewMatrix.copy(SpeckleLambertMaterial.matBuff) SpeckleLambertMaterial.vecBuff0.set( diff --git a/packages/viewer/src/modules/materials/SpeckleLineBasicMaterial.ts b/packages/viewer/src/modules/materials/SpeckleLineBasicMaterial.ts index 6d37894d0..459ec20d9 100644 --- a/packages/viewer/src/modules/materials/SpeckleLineBasicMaterial.ts +++ b/packages/viewer/src/modules/materials/SpeckleLineBasicMaterial.ts @@ -69,7 +69,7 @@ class SpeckleLineBasicMaterial extends LineBasicMaterial { SpeckleLineBasicMaterial.matBuff.elements[12] = 0 SpeckleLineBasicMaterial.matBuff.elements[13] = 0 SpeckleLineBasicMaterial.matBuff.elements[14] = 0 - // SpeckleLineBasicMaterial.matBuff.multiply(object.matrixWorld) + SpeckleLineBasicMaterial.matBuff.multiply(object.matrixWorld) object.modelViewMatrix.copy(SpeckleLineBasicMaterial.matBuff) SpeckleLineBasicMaterial.vecBuff0.set( diff --git a/packages/viewer/src/modules/materials/SpeckleLineMaterial.ts b/packages/viewer/src/modules/materials/SpeckleLineMaterial.ts index 847342a36..ece7038f0 100644 --- a/packages/viewer/src/modules/materials/SpeckleLineMaterial.ts +++ b/packages/viewer/src/modules/materials/SpeckleLineMaterial.ts @@ -84,7 +84,7 @@ class SpeckleLineMaterial extends LineMaterial { SpeckleLineMaterial.matBuff.elements[12] = 0 SpeckleLineMaterial.matBuff.elements[13] = 0 SpeckleLineMaterial.matBuff.elements[14] = 0 - // SpeckleLineMaterial.matBuff.multiply(object.matrixWorld) + SpeckleLineMaterial.matBuff.multiply(object.matrixWorld) object.modelViewMatrix.copy(SpeckleLineMaterial.matBuff) SpeckleLineMaterial.vecBuff0.set( diff --git a/packages/viewer/src/modules/materials/SpeckleStandardColoredMaterial.ts b/packages/viewer/src/modules/materials/SpeckleStandardColoredMaterial.ts index 7478fedea..e95a703fe 100644 --- a/packages/viewer/src/modules/materials/SpeckleStandardColoredMaterial.ts +++ b/packages/viewer/src/modules/materials/SpeckleStandardColoredMaterial.ts @@ -93,7 +93,7 @@ class SpeckleStandardColoredMaterial extends MeshStandardMaterial { SpeckleStandardColoredMaterial.matBuff.elements[12] = 0 SpeckleStandardColoredMaterial.matBuff.elements[13] = 0 SpeckleStandardColoredMaterial.matBuff.elements[14] = 0 - // SpeckleStandardColoredMaterial.matBuff.multiply(object.matrixWorld) + SpeckleStandardColoredMaterial.matBuff.multiply(object.matrixWorld) object.modelViewMatrix.copy(SpeckleStandardColoredMaterial.matBuff) SpeckleStandardColoredMaterial.vecBuff0.set( diff --git a/packages/viewer/src/modules/materials/SpeckleStandardMaterial.ts b/packages/viewer/src/modules/materials/SpeckleStandardMaterial.ts index dd441c1e7..c9a40952b 100644 --- a/packages/viewer/src/modules/materials/SpeckleStandardMaterial.ts +++ b/packages/viewer/src/modules/materials/SpeckleStandardMaterial.ts @@ -71,7 +71,7 @@ class SpeckleStandardMaterial extends MeshStandardMaterial { SpeckleStandardMaterial.matBuff.elements[12] = 0 SpeckleStandardMaterial.matBuff.elements[13] = 0 SpeckleStandardMaterial.matBuff.elements[14] = 0 - // SpeckleStandardMaterial.matBuff.multiply(object.matrixWorld) + SpeckleStandardMaterial.matBuff.multiply(object.matrixWorld) object.modelViewMatrix.copy(SpeckleStandardMaterial.matBuff) SpeckleStandardMaterial.vecBuff0.set(