@inweb/viewer-three 26.6.0 → 26.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/plugins/components/LightHelperComponent.js +9 -3
  2. package/dist/plugins/components/LightHelperComponent.js.map +1 -1
  3. package/dist/plugins/components/LightHelperComponent.min.js +1 -1
  4. package/dist/plugins/components/LightHelperComponent.module.js +5 -4
  5. package/dist/plugins/components/LightHelperComponent.module.js.map +1 -1
  6. package/dist/plugins/components/RoomEnvironmentComponent.js +178 -0
  7. package/dist/plugins/components/RoomEnvironmentComponent.js.map +1 -0
  8. package/dist/plugins/components/RoomEnvironmentComponent.min.js +1 -0
  9. package/dist/plugins/components/RoomEnvironmentComponent.module.js +21 -0
  10. package/dist/plugins/components/RoomEnvironmentComponent.module.js.map +1 -0
  11. package/dist/plugins/loaders/IFCXLoader.js +21 -27
  12. package/dist/plugins/loaders/IFCXLoader.js.map +1 -1
  13. package/dist/plugins/loaders/IFCXLoader.min.js +1 -1
  14. package/dist/plugins/loaders/IFCXLoader.module.js +7 -18
  15. package/dist/plugins/loaders/IFCXLoader.module.js.map +1 -1
  16. package/dist/viewer-three.js +1162 -231
  17. package/dist/viewer-three.js.map +1 -1
  18. package/dist/viewer-three.min.js +2 -2
  19. package/dist/viewer-three.module.js +180 -39
  20. package/dist/viewer-three.module.js.map +1 -1
  21. package/lib/Viewer/Viewer.d.ts +1 -1
  22. package/lib/Viewer/components/HighlighterComponent.d.ts +18 -0
  23. package/lib/Viewer/components/HighlighterUtils.d.ts +6 -0
  24. package/lib/Viewer/components/LightComponent.d.ts +3 -1
  25. package/lib/Viewer/components/SelectionComponent.d.ts +5 -4
  26. package/package.json +5 -5
  27. package/plugins/components/LightHelperComponent.ts +10 -5
  28. package/{src/Viewer → plugins}/components/RoomEnvironmentComponent.ts +4 -4
  29. package/plugins/loaders/IFCX/render.js +26 -21
  30. package/src/Viewer/Viewer.ts +4 -4
  31. package/src/Viewer/components/HighlighterComponent.ts +159 -0
  32. package/src/Viewer/components/HighlighterUtils.ts +116 -0
  33. package/src/Viewer/components/LightComponent.ts +33 -4
  34. package/src/Viewer/components/SelectionComponent.ts +10 -22
  35. package/src/Viewer/components/index.ts +2 -2
  36. package/lib/Viewer/components/RoomEnvironmentComponent.d.ts +0 -7
@@ -21,41 +21,34 @@
21
21
  // acknowledge and accept the above terms.
22
22
  ///////////////////////////////////////////////////////////////////////////////
23
23
 
24
- import { Intersection, MeshBasicMaterial, Object3D, Raycaster, Vector2 } from "three";
24
+ import { Intersection, Object3D, Raycaster, Vector2 } from "three";
25
25
 
26
26
  import { IComponent } from "@inweb/viewer-core";
27
- import type { Viewer } from "../Viewer";
27
+ import { Viewer } from "../Viewer";
28
+ import { HighlighterComponent } from "./HighlighterComponent";
28
29
 
29
30
  export class SelectionComponent implements IComponent {
30
31
  protected viewer: Viewer;
31
32
  protected raycaster: Raycaster;
32
33
  protected downPosition: Vector2;
33
- protected facesMaterial: MeshBasicMaterial;
34
+ protected highlighter: HighlighterComponent;
34
35
 
35
36
  constructor(viewer: Viewer) {
36
37
  this.viewer = viewer;
37
38
  this.raycaster = new Raycaster();
38
39
  this.downPosition = new Vector2();
39
40
 
40
- const { facesColor, facesTransparancy } = this.viewer.options;
41
- this.facesMaterial = new MeshBasicMaterial();
42
- this.facesMaterial.color.setRGB(facesColor.r / 255, facesColor.g / 255, facesColor.b / 255);
43
- this.facesMaterial.opacity = (255 - facesTransparancy) / 255;
44
- this.facesMaterial.transparent = true;
45
-
46
41
  this.viewer.addEventListener("pointerdown", this.onPointerDown);
47
42
  this.viewer.addEventListener("pointerup", this.onPointerUp);
48
43
  this.viewer.addEventListener("dblclick", this.onDoubleClick);
49
- this.viewer.addEventListener("optionschange", this.optionsChange);
44
+ this.viewer.addEventListener("initialize", this.initHighlighter);
50
45
  }
51
46
 
52
47
  dispose() {
53
- this.facesMaterial.dispose();
54
-
55
48
  this.viewer.removeEventListener("pointerdown", this.onPointerDown);
56
49
  this.viewer.removeEventListener("pointerup", this.onPointerUp);
57
50
  this.viewer.removeEventListener("dblclick", this.onDoubleClick);
58
- this.viewer.removeEventListener("optionschange", this.optionsChange);
51
+ this.viewer.removeEventListener("initialize", this.initHighlighter);
59
52
  }
60
53
 
61
54
  onPointerDown = (event: PointerEvent) => {
@@ -116,8 +109,7 @@ export class SelectionComponent implements IComponent {
116
109
  if (object.isSelected) return;
117
110
 
118
111
  object.isSelected = true;
119
- object.originalMaterial = object.material;
120
- object.material = this.facesMaterial;
112
+ this.highlighter.highlight(object);
121
113
 
122
114
  this.viewer.selected.push(object);
123
115
  }
@@ -125,16 +117,12 @@ export class SelectionComponent implements IComponent {
125
117
  clearSelection() {
126
118
  this.viewer.selected.forEach((object: any) => {
127
119
  object.isSelected = false;
128
- object.material = object.originalMaterial;
120
+ this.highlighter.unhighlight(object);
129
121
  });
130
122
  this.viewer.selected.length = 0;
131
123
  }
132
124
 
133
- optionsChange = () => {
134
- const { facesColor, facesTransparancy } = this.viewer.options;
135
- this.facesMaterial.color.setRGB(facesColor.r / 255, facesColor.g / 255, facesColor.b / 255);
136
- this.facesMaterial.opacity = (255 - facesTransparancy) / 255;
137
-
138
- this.viewer.update();
125
+ initHighlighter = () => {
126
+ this.highlighter = this.viewer.getComponent("HighlighterComponent") as any;
139
127
  };
140
128
  }
@@ -24,12 +24,12 @@
24
24
  import { IComponentsRegistry, componentsRegistry } from "@inweb/viewer-core";
25
25
 
26
26
  import { BackgroundComponent } from "./BackgroundComponent";
27
- import { RoomEnvironmentComponent } from "./RoomEnvironmentComponent";
28
27
  import { CameraComponent } from "./CameraComponent";
29
28
  import { ExtentsComponent } from "./ExtentsComponent";
30
29
  import { LightComponent } from "./LightComponent";
31
30
  import { RenderLoopComponent } from "./RenderLoopComponent";
32
31
  import { ResizeCanvasComponent } from "./ResizeCanvasComponent";
32
+ import { HighlighterComponent } from "./HighlighterComponent";
33
33
  import { SelectionComponent } from "./SelectionComponent";
34
34
  import { WCSHelperComponent } from "./WCSHelperComponent";
35
35
 
@@ -78,10 +78,10 @@ export const components: IComponentsRegistry = componentsRegistry("threejs");
78
78
  components.registerComponent("ExtentsComponent", (viewer) => new ExtentsComponent(viewer));
79
79
  components.registerComponent("CameraComponent", (viewer) => new CameraComponent(viewer));
80
80
  components.registerComponent("BackgroundComponent", (viewer) => new BackgroundComponent(viewer));
81
- components.registerComponent("RoomEnvironmentComponent", (viewer) => new RoomEnvironmentComponent(viewer));
82
81
  components.registerComponent("LightComponent", (viewer) => new LightComponent(viewer));
83
82
  components.registerComponent("ResizeCanvasComponent", (viewer) => new ResizeCanvasComponent(viewer));
84
83
  components.registerComponent("RenderLoopComponent", (viewer) => new RenderLoopComponent(viewer));
84
+ components.registerComponent("HighlighterComponent", (viewer) => new HighlighterComponent(viewer));
85
85
  components.registerComponent("SelectionComponent", (viewer) => new SelectionComponent(viewer));
86
86
 
87
87
  components.registerComponent("WCSHelperComponent", (viewer) => new WCSHelperComponent(viewer));
@@ -1,7 +0,0 @@
1
- import { IComponent } from "@inweb/viewer-core";
2
- import type { Viewer } from "../Viewer";
3
- export declare class RoomEnvironmentComponent implements IComponent {
4
- protected viewer: Viewer;
5
- constructor(viewer: Viewer);
6
- dispose(): void;
7
- }