@operato/scene-visualizer 10.0.0-beta.1 → 10.0.0-beta.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 (160) hide show
  1. package/package.json +2 -2
  2. package/dist/banner.d.ts +0 -244
  3. package/dist/banner.js +0 -75
  4. package/dist/banner.js.map +0 -1
  5. package/dist/camera.d.ts +0 -249
  6. package/dist/camera.js +0 -107
  7. package/dist/camera.js.map +0 -1
  8. package/dist/cube.d.ts +0 -241
  9. package/dist/cube.js +0 -37
  10. package/dist/cube.js.map +0 -1
  11. package/dist/cylinder.d.ts +0 -9
  12. package/dist/cylinder.js +0 -37
  13. package/dist/cylinder.js.map +0 -1
  14. package/dist/ellipse.d.ts +0 -5
  15. package/dist/ellipse.js +0 -20
  16. package/dist/ellipse.js.map +0 -1
  17. package/dist/gltf-object.d.ts +0 -249
  18. package/dist/gltf-object.js +0 -103
  19. package/dist/gltf-object.js.map +0 -1
  20. package/dist/html-overlay-element.d.ts +0 -1
  21. package/dist/html-overlay-element.js +0 -8
  22. package/dist/html-overlay-element.js.map +0 -1
  23. package/dist/light.d.ts +0 -14
  24. package/dist/light.js +0 -134
  25. package/dist/light.js.map +0 -1
  26. package/dist/polygon.d.ts +0 -17
  27. package/dist/polygon.js +0 -62
  28. package/dist/polygon.js.map +0 -1
  29. package/dist/rect.d.ts +0 -5
  30. package/dist/rect.js +0 -34
  31. package/dist/rect.js.map +0 -1
  32. package/dist/scene/component.d.ts +0 -1
  33. package/dist/scene/component.js +0 -29
  34. package/dist/scene/component.js.map +0 -1
  35. package/dist/sphere.d.ts +0 -9
  36. package/dist/sphere.js +0 -37
  37. package/dist/sphere.js.map +0 -1
  38. package/dist/sprite.d.ts +0 -238
  39. package/dist/sprite.js +0 -27
  40. package/dist/sprite.js.map +0 -1
  41. package/dist/text.d.ts +0 -1
  42. package/dist/text.js +0 -7
  43. package/dist/text.js.map +0 -1
  44. package/dist/three-container-editor.d.ts +0 -22
  45. package/dist/three-container-editor.js +0 -132
  46. package/dist/three-container-editor.js.map +0 -1
  47. package/dist/three-container.d.ts +0 -61
  48. package/dist/three-container.js +0 -371
  49. package/dist/three-container.js.map +0 -1
  50. package/dist/three-controls.d.ts +0 -111
  51. package/dist/three-controls.js +0 -414
  52. package/dist/three-controls.js.map +0 -1
  53. package/dist/three-layout.d.ts +0 -8
  54. package/dist/three-layout.js +0 -20
  55. package/dist/three-layout.js.map +0 -1
  56. package/dist/three-space.d.ts +0 -8
  57. package/dist/three-space.js +0 -58
  58. package/dist/three-space.js.map +0 -1
  59. package/dist/threed/common.d.ts +0 -22
  60. package/dist/threed/common.js +0 -19
  61. package/dist/threed/common.js.map +0 -1
  62. package/dist/threed/floor/floor.d.ts +0 -3
  63. package/dist/threed/floor/floor.js +0 -51
  64. package/dist/threed/floor/floor.js.map +0 -1
  65. package/dist/threed/html/elements.d.ts +0 -2
  66. package/dist/threed/html/elements.js +0 -21
  67. package/dist/threed/html/elements.js.map +0 -1
  68. package/dist/threed/index.d.ts +0 -16
  69. package/dist/threed/index.js +0 -17
  70. package/dist/threed/index.js.map +0 -1
  71. package/dist/threed/interfaces.d.ts +0 -15
  72. package/dist/threed/interfaces.js +0 -5
  73. package/dist/threed/interfaces.js.map +0 -1
  74. package/dist/threed/managers/camera-manager.d.ts +0 -14
  75. package/dist/threed/managers/camera-manager.js +0 -60
  76. package/dist/threed/managers/camera-manager.js.map +0 -1
  77. package/dist/threed/managers/controls-manager.d.ts +0 -50
  78. package/dist/threed/managers/controls-manager.js +0 -249
  79. package/dist/threed/managers/controls-manager.js.map +0 -1
  80. package/dist/threed/managers/event-manager3d.d.ts +0 -19
  81. package/dist/threed/managers/event-manager3d.js +0 -76
  82. package/dist/threed/managers/event-manager3d.js.map +0 -1
  83. package/dist/threed/managers/index.d.ts +0 -7
  84. package/dist/threed/managers/index.js +0 -7
  85. package/dist/threed/managers/index.js.map +0 -1
  86. package/dist/threed/managers/light-manager.d.ts +0 -7
  87. package/dist/threed/managers/light-manager.js +0 -37
  88. package/dist/threed/managers/light-manager.js.map +0 -1
  89. package/dist/threed/managers/renderer-manager.d.ts +0 -30
  90. package/dist/threed/managers/renderer-manager.js +0 -120
  91. package/dist/threed/managers/renderer-manager.js.map +0 -1
  92. package/dist/threed/managers/scene-manager.d.ts +0 -15
  93. package/dist/threed/managers/scene-manager.js +0 -48
  94. package/dist/threed/managers/scene-manager.js.map +0 -1
  95. package/dist/threed/managers/types.d.ts +0 -36
  96. package/dist/threed/managers/types.js +0 -2
  97. package/dist/threed/managers/types.js.map +0 -1
  98. package/dist/threed/real-object-camera-meshed.d.ts +0 -12
  99. package/dist/threed/real-object-camera-meshed.js +0 -49
  100. package/dist/threed/real-object-camera-meshed.js.map +0 -1
  101. package/dist/threed/real-object-camera.d.ts +0 -9
  102. package/dist/threed/real-object-camera.js +0 -31
  103. package/dist/threed/real-object-camera.js.map +0 -1
  104. package/dist/threed/real-object-dom-element.d.ts +0 -9
  105. package/dist/threed/real-object-dom-element.js +0 -48
  106. package/dist/threed/real-object-dom-element.js.map +0 -1
  107. package/dist/threed/real-object-dummy.d.ts +0 -6
  108. package/dist/threed/real-object-dummy.js +0 -11
  109. package/dist/threed/real-object-dummy.js.map +0 -1
  110. package/dist/threed/real-object-extrude.d.ts +0 -22
  111. package/dist/threed/real-object-extrude.js +0 -180
  112. package/dist/threed/real-object-extrude.js.map +0 -1
  113. package/dist/threed/real-object-gltf.d.ts +0 -16
  114. package/dist/threed/real-object-gltf.js +0 -105
  115. package/dist/threed/real-object-gltf.js.map +0 -1
  116. package/dist/threed/real-object-group.d.ts +0 -5
  117. package/dist/threed/real-object-group.js +0 -11
  118. package/dist/threed/real-object-group.js.map +0 -1
  119. package/dist/threed/real-object-mesh.d.ts +0 -13
  120. package/dist/threed/real-object-mesh.js +0 -73
  121. package/dist/threed/real-object-mesh.js.map +0 -1
  122. package/dist/threed/real-object-plane.d.ts +0 -5
  123. package/dist/threed/real-object-plane.js +0 -22
  124. package/dist/threed/real-object-plane.js.map +0 -1
  125. package/dist/threed/real-object-registry.d.ts +0 -7
  126. package/dist/threed/real-object-registry.js +0 -32
  127. package/dist/threed/real-object-registry.js.map +0 -1
  128. package/dist/threed/real-object-scene.d.ts +0 -21
  129. package/dist/threed/real-object-scene.js +0 -72
  130. package/dist/threed/real-object-scene.js.map +0 -1
  131. package/dist/threed/real-object-sprite-2d.d.ts +0 -14
  132. package/dist/threed/real-object-sprite-2d.js +0 -45
  133. package/dist/threed/real-object-sprite-2d.js.map +0 -1
  134. package/dist/threed/real-object-sprite.d.ts +0 -11
  135. package/dist/threed/real-object-sprite.js +0 -52
  136. package/dist/threed/real-object-sprite.js.map +0 -1
  137. package/dist/threed/real-object-text.d.ts +0 -15
  138. package/dist/threed/real-object-text.js +0 -66
  139. package/dist/threed/real-object-text.js.map +0 -1
  140. package/dist/threed/real-object.d.ts +0 -65
  141. package/dist/threed/real-object.js +0 -251
  142. package/dist/threed/real-object.js.map +0 -1
  143. package/dist/threed/texture/canvas-texture.d.ts +0 -4
  144. package/dist/threed/texture/canvas-texture.js +0 -49
  145. package/dist/threed/texture/canvas-texture.js.map +0 -1
  146. package/dist/threed/texture/text-texture.d.ts +0 -8
  147. package/dist/threed/texture/text-texture.js +0 -79
  148. package/dist/threed/texture/text-texture.js.map +0 -1
  149. package/dist/threed/three-dimensional-container.d.ts +0 -7
  150. package/dist/threed/three-dimensional-container.js +0 -2
  151. package/dist/threed/three-dimensional-container.js.map +0 -1
  152. package/dist/threed/utils/bound-uv-generator.d.ts +0 -16
  153. package/dist/threed/utils/bound-uv-generator.js +0 -42
  154. package/dist/threed/utils/bound-uv-generator.js.map +0 -1
  155. package/dist/threed/utils/dispose.d.ts +0 -2
  156. package/dist/threed/utils/dispose.js +0 -32
  157. package/dist/threed/utils/dispose.js.map +0 -1
  158. package/dist/wall.d.ts +0 -241
  159. package/dist/wall.js +0 -44
  160. package/dist/wall.js.map +0 -1
@@ -1,76 +0,0 @@
1
- import * as THREE from 'three';
2
- export class EventManager3D {
3
- constructor() {
4
- this._mouse = new THREE.Vector2();
5
- this._raycaster = new THREE.Raycaster();
6
- }
7
- get mouse() {
8
- return this._mouse;
9
- }
10
- get lastFocused() {
11
- return this._lastFocused;
12
- }
13
- set lastFocused(value) {
14
- this._lastFocused = value;
15
- }
16
- get lastHovered() {
17
- return this._lastHovered;
18
- }
19
- set lastHovered(value) {
20
- this._lastHovered = value;
21
- }
22
- updateMouseNDC(px, py, left, top, width, height) {
23
- this._mouse.x = ((px - left) / width) * 2 - 1;
24
- this._mouse.y = -((py - top) / height) * 2 + 1;
25
- }
26
- getObjectByRaycast(camera, scene) {
27
- const intersects = this.getObjectsByRaycast(camera, scene);
28
- if (intersects && intersects.length > 0) {
29
- let object = intersects[0].object;
30
- while (object) {
31
- if (object.userData.context) {
32
- return object;
33
- }
34
- object = object.parent;
35
- }
36
- }
37
- }
38
- getObjectsByRaycast(camera, scene) {
39
- this._raycaster.setFromCamera(this._mouse, camera);
40
- return this._raycaster.intersectObjects(scene.children, true);
41
- }
42
- handleClick(camera, scene, event) {
43
- var _a;
44
- if (this._lastFocused) {
45
- this._lastFocused.focused = false;
46
- }
47
- const object = this.getObjectByRaycast(camera, scene);
48
- const realObject = object === null || object === void 0 ? void 0 : object.userData.context;
49
- if (realObject) {
50
- realObject.focused = true;
51
- this._lastFocused = realObject;
52
- (_a = realObject.component) === null || _a === void 0 ? void 0 : _a.trigger('click', event);
53
- }
54
- return realObject;
55
- }
56
- handleHover(camera, scene, event) {
57
- var _a, _b;
58
- const object = this.getObjectByRaycast(camera, scene);
59
- const realObject = object === null || object === void 0 ? void 0 : object.userData.context;
60
- if (realObject !== this._lastHovered) {
61
- if (this._lastHovered) {
62
- (_a = this._lastHovered.component) === null || _a === void 0 ? void 0 : _a.trigger('mouseleave', event);
63
- this._lastHovered = undefined;
64
- }
65
- if (realObject) {
66
- this._lastHovered = realObject;
67
- (_b = this._lastHovered.component) === null || _b === void 0 ? void 0 : _b.trigger('mouseenter', event);
68
- }
69
- }
70
- }
71
- destroy() {
72
- this._lastFocused = undefined;
73
- this._lastHovered = undefined;
74
- }
75
- }
76
- //# sourceMappingURL=event-manager3d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-manager3d.js","sourceRoot":"","sources":["../../../src/threed/managers/event-manager3d.ts"],"names":[],"mappings":"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","sourcesContent":["import * as THREE from 'three'\nimport type { IThreeRealObject } from '../interfaces.js'\n\nexport class EventManager3D {\n private _mouse = new THREE.Vector2()\n private _raycaster = new THREE.Raycaster()\n private _lastFocused?: IThreeRealObject\n private _lastHovered?: IThreeRealObject\n\n get mouse() {\n return this._mouse\n }\n\n get lastFocused() {\n return this._lastFocused\n }\n\n set lastFocused(value: IThreeRealObject | undefined) {\n this._lastFocused = value\n }\n\n get lastHovered() {\n return this._lastHovered\n }\n\n set lastHovered(value: IThreeRealObject | undefined) {\n this._lastHovered = value\n }\n\n updateMouseNDC(px: number, py: number, left: number, top: number, width: number, height: number) {\n this._mouse.x = ((px - left) / width) * 2 - 1\n this._mouse.y = -((py - top) / height) * 2 + 1\n }\n\n getObjectByRaycast(camera: THREE.Camera, scene: THREE.Scene): THREE.Object3D | undefined {\n const intersects = this.getObjectsByRaycast(camera, scene)\n\n if (intersects && intersects.length > 0) {\n let object: THREE.Object3D | null = intersects[0].object\n while (object) {\n if (object.userData.context) {\n return object\n }\n object = object.parent\n }\n }\n }\n\n getObjectsByRaycast(camera: THREE.Camera, scene: THREE.Scene): THREE.Intersection[] {\n this._raycaster.setFromCamera(this._mouse, camera)\n return this._raycaster.intersectObjects(scene.children, true)\n }\n\n handleClick(camera: THREE.Camera, scene: THREE.Scene, event: MouseEvent): IThreeRealObject | undefined {\n if (this._lastFocused) {\n this._lastFocused.focused = false\n }\n\n const object = this.getObjectByRaycast(camera, scene)\n const realObject = object?.userData.context as IThreeRealObject | undefined\n\n if (realObject) {\n realObject.focused = true\n this._lastFocused = realObject\n realObject.component?.trigger('click', event)\n }\n\n return realObject\n }\n\n handleHover(camera: THREE.Camera, scene: THREE.Scene, event: MouseEvent) {\n const object = this.getObjectByRaycast(camera, scene)\n const realObject = object?.userData.context as IThreeRealObject | undefined\n\n if (realObject !== this._lastHovered) {\n if (this._lastHovered) {\n this._lastHovered.component?.trigger('mouseleave', event)\n this._lastHovered = undefined\n }\n\n if (realObject) {\n this._lastHovered = realObject\n this._lastHovered.component?.trigger('mouseenter', event)\n }\n }\n }\n\n destroy() {\n this._lastFocused = undefined\n this._lastHovered = undefined\n }\n}\n"]}
@@ -1,7 +0,0 @@
1
- export { SceneManager } from './scene-manager.js';
2
- export { CameraManager } from './camera-manager.js';
3
- export { RendererManager } from './renderer-manager.js';
4
- export { LightManager } from './light-manager.js';
5
- export { ControlsManager } from './controls-manager.js';
6
- export { EventManager3D } from './event-manager3d.js';
7
- export type { CameraConfig, RendererConfig, LightingConfig } from './types.js';
@@ -1,7 +0,0 @@
1
- export { SceneManager } from './scene-manager.js';
2
- export { CameraManager } from './camera-manager.js';
3
- export { RendererManager } from './renderer-manager.js';
4
- export { LightManager } from './light-manager.js';
5
- export { ControlsManager } from './controls-manager.js';
6
- export { EventManager3D } from './event-manager3d.js';
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/threed/managers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA","sourcesContent":["export { SceneManager } from './scene-manager.js'\nexport { CameraManager } from './camera-manager.js'\nexport { RendererManager } from './renderer-manager.js'\nexport { LightManager } from './light-manager.js'\nexport { ControlsManager } from './controls-manager.js'\nexport { EventManager3D } from './event-manager3d.js'\nexport type { CameraConfig, RendererConfig, LightingConfig } from './types.js'\n"]}
@@ -1,7 +0,0 @@
1
- import * as THREE from 'three';
2
- import { LightingConfig } from './types.js';
3
- export declare class LightManager {
4
- private lights;
5
- setup(scene: THREE.Scene, camera: THREE.Camera, config: LightingConfig): void;
6
- destroy(): void;
7
- }
@@ -1,37 +0,0 @@
1
- import * as THREE from 'three';
2
- export class LightManager {
3
- constructor() {
4
- this.lights = [];
5
- }
6
- setup(scene, camera, config) {
7
- const { hemisphere, directional, point } = config;
8
- const hemiLight = new THREE.HemisphereLight(hemisphere.skyColor, hemisphere.groundColor, hemisphere.intensity);
9
- scene.add(hemiLight);
10
- this.lights.push(hemiLight);
11
- if (directional) {
12
- const dirLight = new THREE.DirectionalLight(directional.color, directional.intensity);
13
- if (directional.attachToCamera) {
14
- camera.add(dirLight);
15
- }
16
- else {
17
- scene.add(dirLight);
18
- }
19
- this.lights.push(dirLight);
20
- }
21
- if (point) {
22
- const pointLight = new THREE.PointLight(point.color, point.intensity, undefined, point.decay);
23
- pointLight.power = point.power;
24
- pointLight.castShadow = point.castShadow;
25
- pointLight.position.set(...point.position);
26
- pointLight.shadow.camera.near = point.shadowNear;
27
- pointLight.shadow.camera.far = point.shadowFar;
28
- scene.add(pointLight);
29
- this.lights.push(pointLight);
30
- }
31
- }
32
- destroy() {
33
- this.lights.forEach(light => light.dispose());
34
- this.lights = [];
35
- }
36
- }
37
- //# sourceMappingURL=light-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"light-manager.js","sourceRoot":"","sources":["../../../src/threed/managers/light-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,OAAO,YAAY;IAAzB;QACU,WAAM,GAAkB,EAAE,CAAA;IAmCpC,CAAC;IAjCC,KAAK,CAAC,KAAkB,EAAE,MAAoB,EAAE,MAAsB;QACpE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;QAEjD,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;QAC9G,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAE3B,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;YACrF,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACtB,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACrB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5B,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YAC7F,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;YAC9B,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;YACxC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC1C,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAA;YAChD,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAA;YAC9C,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QAC7C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;IAClB,CAAC;CACF","sourcesContent":["import * as THREE from 'three'\nimport { LightingConfig } from './types.js'\n\nexport class LightManager {\n private lights: THREE.Light[] = []\n\n setup(scene: THREE.Scene, camera: THREE.Camera, config: LightingConfig) {\n const { hemisphere, directional, point } = config\n\n const hemiLight = new THREE.HemisphereLight(hemisphere.skyColor, hemisphere.groundColor, hemisphere.intensity)\n scene.add(hemiLight)\n this.lights.push(hemiLight)\n\n if (directional) {\n const dirLight = new THREE.DirectionalLight(directional.color, directional.intensity)\n if (directional.attachToCamera) {\n camera.add(dirLight)\n } else {\n scene.add(dirLight)\n }\n this.lights.push(dirLight)\n }\n\n if (point) {\n const pointLight = new THREE.PointLight(point.color, point.intensity, undefined, point.decay)\n pointLight.power = point.power\n pointLight.castShadow = point.castShadow\n pointLight.position.set(...point.position)\n pointLight.shadow.camera.near = point.shadowNear\n pointLight.shadow.camera.far = point.shadowFar\n scene.add(pointLight)\n this.lights.push(pointLight)\n }\n }\n\n destroy() {\n this.lights.forEach(light => light.dispose())\n this.lights = []\n }\n}\n"]}
@@ -1,30 +0,0 @@
1
- import * as THREE from 'three';
2
- import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';
3
- import { CSS3DRenderer } from 'three/examples/jsm/renderers/CSS3DRenderer.js';
4
- import { RendererConfig } from './types.js';
5
- export declare class RendererManager {
6
- private _renderer?;
7
- private _css3DRenderer?;
8
- private _css3DScene?;
9
- private _composer?;
10
- private _noSupportWebgl;
11
- get renderer(): THREE.WebGLRenderer | undefined;
12
- get css3DRenderer(): CSS3DRenderer;
13
- get css3DScene(): THREE.Scene;
14
- get composer(): EffectComposer | undefined;
15
- get noSupportWebgl(): boolean;
16
- get domElement(): HTMLCanvasElement | undefined;
17
- setupWebGL(width: number, height: number, config: RendererConfig): boolean;
18
- setupCSS3D(isViewMode: boolean, sceneAttr?: string): void;
19
- private createCSS3DRenderer;
20
- setupComposer(scene: THREE.Scene, camera: THREE.Camera, width: number, height: number): EffectComposer;
21
- resize(width: number, height: number): void;
22
- render(): void;
23
- renderCSS3D(camera: THREE.Camera): void;
24
- getSize(): {
25
- width: number;
26
- height: number;
27
- };
28
- destroy(): void;
29
- disposeCSS3DScene(): void;
30
- }
@@ -1,120 +0,0 @@
1
- import * as THREE from 'three';
2
- import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';
3
- import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';
4
- import { CSS3DRenderer } from 'three/examples/jsm/renderers/CSS3DRenderer.js';
5
- export class RendererManager {
6
- constructor() {
7
- this._noSupportWebgl = false;
8
- }
9
- get renderer() {
10
- return this._renderer;
11
- }
12
- get css3DRenderer() {
13
- if (!this._css3DRenderer) {
14
- this._css3DRenderer = this.createCSS3DRenderer();
15
- }
16
- return this._css3DRenderer;
17
- }
18
- get css3DScene() {
19
- if (!this._css3DScene) {
20
- this._css3DScene = new THREE.Scene();
21
- }
22
- return this._css3DScene;
23
- }
24
- get composer() {
25
- return this._composer;
26
- }
27
- get noSupportWebgl() {
28
- return this._noSupportWebgl;
29
- }
30
- get domElement() {
31
- var _a;
32
- return (_a = this._renderer) === null || _a === void 0 ? void 0 : _a.domElement;
33
- }
34
- setupWebGL(width, height, config) {
35
- try {
36
- const canvas = document.createElement('canvas');
37
- const context = canvas.getContext('webgl2');
38
- const renderer = new THREE.WebGLRenderer({
39
- canvas,
40
- context,
41
- precision: config.precision,
42
- alpha: true,
43
- antialias: config.antialias
44
- });
45
- renderer.autoClear = true;
46
- // @ts-ignore for three@0.150.1
47
- renderer.outputColorSpace = THREE.SRGBColorSpace;
48
- renderer.useLegacyLights = false;
49
- renderer.toneMappingExposure = Math.pow(config.exposure, 5.0);
50
- renderer.toneMapping = THREE.LinearToneMapping;
51
- renderer.shadowMap.enabled = true;
52
- renderer.setClearColor(0xffffff, 0);
53
- renderer.setSize(width, height);
54
- this._renderer = renderer;
55
- this._noSupportWebgl = false;
56
- return true;
57
- }
58
- catch (e) {
59
- this._noSupportWebgl = true;
60
- return false;
61
- }
62
- }
63
- setupCSS3D(isViewMode, sceneAttr) {
64
- const renderer = this.css3DRenderer;
65
- const div = renderer.domElement;
66
- div.style.position = 'absolute';
67
- div.style.top = '0';
68
- div.style.pointerEvents = 'none';
69
- if (sceneAttr) {
70
- div.setAttribute('scene', sceneAttr);
71
- }
72
- if (!isViewMode) {
73
- div.style.pointerEvents = 'none';
74
- }
75
- }
76
- createCSS3DRenderer() {
77
- return new CSS3DRenderer();
78
- }
79
- setupComposer(scene, camera, width, height) {
80
- this._composer = new EffectComposer(this._renderer);
81
- this._composer.setSize(width, height);
82
- const renderPass = new RenderPass(scene, camera);
83
- this._composer.addPass(renderPass);
84
- return this._composer;
85
- }
86
- resize(width, height) {
87
- var _a, _b, _c;
88
- (_a = this._renderer) === null || _a === void 0 ? void 0 : _a.setSize(width, height);
89
- (_b = this._css3DRenderer) === null || _b === void 0 ? void 0 : _b.setSize(width, height);
90
- (_c = this._composer) === null || _c === void 0 ? void 0 : _c.setSize(width, height);
91
- }
92
- render() {
93
- var _a;
94
- (_a = this._composer) === null || _a === void 0 ? void 0 : _a.render();
95
- }
96
- renderCSS3D(camera) {
97
- var _a;
98
- (_a = this._css3DRenderer) === null || _a === void 0 ? void 0 : _a.render(this.css3DScene, camera);
99
- }
100
- getSize() {
101
- var _a;
102
- const v = new THREE.Vector2();
103
- (_a = this._renderer) === null || _a === void 0 ? void 0 : _a.getSize(v);
104
- return { width: v.x, height: v.y };
105
- }
106
- destroy() {
107
- var _a, _b;
108
- (_a = this._composer) === null || _a === void 0 ? void 0 : _a.dispose();
109
- (_b = this._renderer) === null || _b === void 0 ? void 0 : _b.dispose();
110
- delete this._composer;
111
- delete this._renderer;
112
- }
113
- disposeCSS3DScene() {
114
- if (this._css3DScene) {
115
- const children = [...this._css3DScene.children];
116
- children.forEach(child => this._css3DScene.remove(child));
117
- }
118
- }
119
- }
120
- //# sourceMappingURL=renderer-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer-manager.js","sourceRoot":"","sources":["../../../src/threed/managers/renderer-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import * as THREE from 'three'\nimport { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js'\nimport { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js'\nimport { CSS3DRenderer } from 'three/examples/jsm/renderers/CSS3DRenderer.js'\nimport { RendererConfig } from './types.js'\n\nexport class RendererManager {\n private _renderer?: THREE.WebGLRenderer\n private _css3DRenderer?: CSS3DRenderer\n private _css3DScene?: THREE.Scene\n private _composer?: EffectComposer\n private _noSupportWebgl = false\n\n get renderer() {\n return this._renderer\n }\n\n get css3DRenderer() {\n if (!this._css3DRenderer) {\n this._css3DRenderer = this.createCSS3DRenderer()\n }\n return this._css3DRenderer\n }\n\n get css3DScene() {\n if (!this._css3DScene) {\n this._css3DScene = new THREE.Scene()\n }\n return this._css3DScene\n }\n\n get composer() {\n return this._composer\n }\n\n get noSupportWebgl() {\n return this._noSupportWebgl\n }\n\n get domElement() {\n return this._renderer?.domElement\n }\n\n setupWebGL(width: number, height: number, config: RendererConfig): boolean {\n try {\n const canvas = document.createElement('canvas')\n const context = canvas.getContext('webgl2')!\n\n const renderer = new THREE.WebGLRenderer({\n canvas,\n context,\n precision: config.precision,\n alpha: true,\n antialias: config.antialias\n })\n\n renderer.autoClear = true\n // @ts-ignore for three@0.150.1\n renderer.outputColorSpace = THREE.SRGBColorSpace\n renderer.useLegacyLights = false\n renderer.toneMappingExposure = Math.pow(config.exposure, 5.0)\n renderer.toneMapping = THREE.LinearToneMapping\n renderer.shadowMap.enabled = true\n renderer.setClearColor(0xffffff, 0)\n renderer.setSize(width, height)\n\n this._renderer = renderer\n this._noSupportWebgl = false\n return true\n } catch (e) {\n this._noSupportWebgl = true\n return false\n }\n }\n\n setupCSS3D(isViewMode: boolean, sceneAttr?: string) {\n const renderer = this.css3DRenderer\n const div = renderer.domElement\n div.style.position = 'absolute'\n div.style.top = '0'\n div.style.pointerEvents = 'none'\n\n if (sceneAttr) {\n div.setAttribute('scene', sceneAttr)\n }\n\n if (!isViewMode) {\n div.style.pointerEvents = 'none'\n }\n }\n\n private createCSS3DRenderer(): CSS3DRenderer {\n return new CSS3DRenderer()\n }\n\n setupComposer(scene: THREE.Scene, camera: THREE.Camera, width: number, height: number) {\n this._composer = new EffectComposer(this._renderer!)\n this._composer.setSize(width, height)\n\n const renderPass = new RenderPass(scene, camera)\n this._composer.addPass(renderPass)\n\n return this._composer\n }\n\n resize(width: number, height: number) {\n this._renderer?.setSize(width, height)\n this._css3DRenderer?.setSize(width, height)\n this._composer?.setSize(width, height)\n }\n\n render() {\n this._composer?.render()\n }\n\n renderCSS3D(camera: THREE.Camera) {\n this._css3DRenderer?.render(this.css3DScene, camera)\n }\n\n getSize(): { width: number; height: number } {\n const v = new THREE.Vector2()\n this._renderer?.getSize(v)\n return { width: v.x, height: v.y }\n }\n\n destroy() {\n this._composer?.dispose()\n this._renderer?.dispose()\n delete this._composer\n delete this._renderer\n }\n\n disposeCSS3DScene() {\n if (this._css3DScene) {\n const children = [...this._css3DScene.children]\n children.forEach(child => this._css3DScene!.remove(child))\n }\n }\n}\n"]}
@@ -1,15 +0,0 @@
1
- import * as THREE from 'three';
2
- import { Component } from '@hatiolab/things-scene';
3
- export declare class SceneManager {
4
- private _scene?;
5
- private _mixer?;
6
- private _clock?;
7
- get scene(): THREE.Scene | undefined;
8
- get mixer(): THREE.AnimationMixer | undefined;
9
- setup(): THREE.Scene;
10
- setupMixer(): THREE.AnimationMixer;
11
- addFloor(component: Component): void;
12
- addObject(obj3d: THREE.Object3D): void;
13
- updateAnimation(): void;
14
- destroy(): void;
15
- }
@@ -1,48 +0,0 @@
1
- import * as THREE from 'three';
2
- import { createFloor } from '../floor/floor.js';
3
- import { disposeObject3D } from '../utils/dispose.js';
4
- export class SceneManager {
5
- get scene() {
6
- return this._scene;
7
- }
8
- get mixer() {
9
- return this._mixer;
10
- }
11
- setup() {
12
- this._scene = new THREE.Scene();
13
- return this._scene;
14
- }
15
- setupMixer() {
16
- this._clock = new THREE.Clock(true);
17
- this._mixer = new THREE.AnimationMixer(this._scene);
18
- return this._mixer;
19
- }
20
- addFloor(component) {
21
- const floor = createFloor(component);
22
- if (floor) {
23
- this._scene.add(floor);
24
- }
25
- }
26
- addObject(obj3d) {
27
- this._scene.add(obj3d);
28
- }
29
- updateAnimation() {
30
- if (this._mixer && this._clock) {
31
- this._mixer.update(this._clock.getDelta());
32
- }
33
- }
34
- destroy() {
35
- if (this._mixer) {
36
- this._mixer.stopAllAction();
37
- this._mixer.uncacheRoot(this._scene);
38
- }
39
- if (this._scene) {
40
- disposeObject3D(this._scene);
41
- this._scene.clear();
42
- }
43
- delete this._scene;
44
- delete this._mixer;
45
- delete this._clock;
46
- }
47
- }
48
- //# sourceMappingURL=scene-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scene-manager.js","sourceRoot":"","sources":["../../../src/threed/managers/scene-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,MAAM,OAAO,YAAY;IAKvB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAA;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,UAAU;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAO,CAAC,CAAA;QACpD,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,QAAQ,CAAC,SAAoB;QAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IAED,SAAS,CAAC,KAAqB;QAC7B,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAA;YAC3B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAO,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;CACF","sourcesContent":["import * as THREE from 'three'\nimport { Component } from '@hatiolab/things-scene'\nimport { createFloor } from '../floor/floor.js'\nimport { disposeObject3D } from '../utils/dispose.js'\n\nexport class SceneManager {\n private _scene?: THREE.Scene\n private _mixer?: THREE.AnimationMixer\n private _clock?: THREE.Clock\n\n get scene() {\n return this._scene\n }\n\n get mixer() {\n return this._mixer\n }\n\n setup() {\n this._scene = new THREE.Scene()\n return this._scene\n }\n\n setupMixer() {\n this._clock = new THREE.Clock(true)\n this._mixer = new THREE.AnimationMixer(this._scene!)\n return this._mixer\n }\n\n addFloor(component: Component) {\n const floor = createFloor(component)\n if (floor) {\n this._scene!.add(floor)\n }\n }\n\n addObject(obj3d: THREE.Object3D) {\n this._scene!.add(obj3d)\n }\n\n updateAnimation() {\n if (this._mixer && this._clock) {\n this._mixer.update(this._clock.getDelta())\n }\n }\n\n destroy() {\n if (this._mixer) {\n this._mixer.stopAllAction()\n this._mixer.uncacheRoot(this._scene!)\n }\n\n if (this._scene) {\n disposeObject3D(this._scene)\n this._scene.clear()\n }\n\n delete this._scene\n delete this._mixer\n delete this._clock\n }\n}\n"]}
@@ -1,36 +0,0 @@
1
- export interface CameraConfig {
2
- fov: number;
3
- near: number;
4
- far: number;
5
- zoom: number;
6
- cameraX?: number;
7
- cameraY?: number;
8
- cameraZ?: number;
9
- }
10
- export interface RendererConfig {
11
- precision: string;
12
- antialias: boolean;
13
- exposure: number;
14
- }
15
- export interface LightingConfig {
16
- hemisphere: {
17
- skyColor: number;
18
- groundColor: number;
19
- intensity: number;
20
- };
21
- directional?: {
22
- color: number;
23
- intensity: number;
24
- attachToCamera: boolean;
25
- };
26
- point?: {
27
- color: number;
28
- intensity: number;
29
- decay: number;
30
- power: number;
31
- castShadow: boolean;
32
- position: [number, number, number];
33
- shadowNear: number;
34
- shadowFar: number;
35
- };
36
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/threed/managers/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface CameraConfig {\n fov: number\n near: number\n far: number\n zoom: number\n cameraX?: number\n cameraY?: number\n cameraZ?: number\n}\n\nexport interface RendererConfig {\n precision: string\n antialias: boolean\n exposure: number\n}\n\nexport interface LightingConfig {\n hemisphere: { skyColor: number; groundColor: number; intensity: number }\n directional?: { color: number; intensity: number; attachToCamera: boolean }\n point?: {\n color: number\n intensity: number\n decay: number\n power: number\n castShadow: boolean\n position: [number, number, number]\n shadowNear: number\n shadowFar: number\n }\n}\n"]}
@@ -1,12 +0,0 @@
1
- import * as THREE from 'three';
2
- import { RealObjectMesh } from './real-object-mesh.js';
3
- export declare class RealObjectCamera extends RealObjectMesh {
4
- protected _camera?: THREE.PerspectiveCamera;
5
- update(): void;
6
- get camera(): THREE.PerspectiveCamera;
7
- createCamera(): THREE.PerspectiveCamera;
8
- updateCamera(): void;
9
- build(): void;
10
- clear(): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
11
- buildGeometry(): void;
12
- }
@@ -1,49 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import * as THREE from 'three';
5
- import { RealObjectMesh } from './real-object-mesh.js';
6
- import { UNIT_DIMENSION } from './common.js';
7
- const DEFAULT = {
8
- far: 100000,
9
- fov: 80,
10
- near: 1,
11
- zoom: 1
12
- };
13
- export class RealObjectCamera extends RealObjectMesh {
14
- update() {
15
- super.update();
16
- this.updateCamera();
17
- }
18
- get camera() {
19
- if (!this._camera) {
20
- this._camera = this.createCamera();
21
- this.updateCamera();
22
- }
23
- return this._camera;
24
- }
25
- createCamera() {
26
- return new THREE.PerspectiveCamera();
27
- }
28
- updateCamera() {
29
- var { near = DEFAULT.near, far = DEFAULT.far, fov = DEFAULT.fov, zoom = DEFAULT.zoom } = this.component.state;
30
- this.camera.far = far;
31
- this.camera.fov = fov;
32
- this.camera.near = near;
33
- this.camera.zoom = zoom;
34
- }
35
- build() {
36
- super.build();
37
- this.object3d.add(this.camera);
38
- }
39
- clear() {
40
- delete this._camera;
41
- return super.clear();
42
- }
43
- buildGeometry() {
44
- var { width = 1, height = 1, depth = 1 } = this.component.state.dimension || UNIT_DIMENSION;
45
- var radius = Math.min(width, height, depth) / 2;
46
- this.object3d.geometry = new THREE.SphereGeometry(radius, 32, 32);
47
- }
48
- }
49
- //# sourceMappingURL=real-object-camera-meshed.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-object-camera-meshed.js","sourceRoot":"","sources":["../../src/threed/real-object-camera-meshed.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,OAAO,GAAG;IACd,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAA;AAED,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAGlD,MAAM;QACJ,KAAK,CAAC,MAAM,EAAE,CAAA;QAEd,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;YAClC,IAAI,CAAC,YAAY,EAAE,CAAA;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAA;IACtC,CAAC;IAED,YAAY;QACV,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE7G,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAA;QACrB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAA;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;IACzB,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAA;QAEnB,OAAO,KAAK,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;IAED,aAAa;QACX,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,IAAI,cAAc,CAAA;QAE3F,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;QAE/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACnE,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\n\nimport { RealObjectMesh } from './real-object-mesh.js'\nimport { UNIT_DIMENSION } from './common.js'\n\nconst DEFAULT = {\n far: 100000,\n fov: 80,\n near: 1,\n zoom: 1\n}\n\nexport class RealObjectCamera extends RealObjectMesh {\n protected _camera?: THREE.PerspectiveCamera\n\n update() {\n super.update()\n\n this.updateCamera()\n }\n\n get camera(): THREE.PerspectiveCamera {\n if (!this._camera) {\n this._camera = this.createCamera()\n this.updateCamera()\n }\n\n return this._camera\n }\n\n createCamera() {\n return new THREE.PerspectiveCamera()\n }\n\n updateCamera() {\n var { near = DEFAULT.near, far = DEFAULT.far, fov = DEFAULT.fov, zoom = DEFAULT.zoom } = this.component.state\n\n this.camera.far = far\n this.camera.fov = fov\n this.camera.near = near\n this.camera.zoom = zoom\n }\n\n build() {\n super.build()\n\n this.object3d.add(this.camera)\n }\n\n clear() {\n delete this._camera\n\n return super.clear()\n }\n\n buildGeometry() {\n var { width = 1, height = 1, depth = 1 } = this.component.state.dimension || UNIT_DIMENSION\n\n var radius = Math.min(width, height, depth) / 2\n\n this.object3d.geometry = new THREE.SphereGeometry(radius, 32, 32)\n }\n}\n"]}
@@ -1,9 +0,0 @@
1
- import * as THREE from 'three';
2
- import { RealObject } from './real-object.js';
3
- export declare class RealObjectCamera extends RealObject<THREE.PerspectiveCamera> {
4
- protected _camera?: THREE.PerspectiveCamera;
5
- build(): void;
6
- update(): void;
7
- protected getObject3dInstance(): THREE.PerspectiveCamera;
8
- updateCamera(): void;
9
- }
@@ -1,31 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import * as THREE from 'three';
5
- import { RealObject } from './real-object.js';
6
- const DEFAULT = {
7
- far: 100000,
8
- fov: 80,
9
- near: 1,
10
- zoom: 1
11
- };
12
- export class RealObjectCamera extends RealObject {
13
- build() {
14
- super.build();
15
- }
16
- update() {
17
- super.update();
18
- this.updateCamera();
19
- }
20
- getObject3dInstance() {
21
- return new THREE.PerspectiveCamera();
22
- }
23
- updateCamera() {
24
- var { near = DEFAULT.near, far = DEFAULT.far, fov = DEFAULT.fov, zoom = DEFAULT.zoom } = this.component.state;
25
- this.object3d.far = far;
26
- this.object3d.fov = fov;
27
- this.object3d.near = near;
28
- this.object3d.zoom = zoom;
29
- }
30
- }
31
- //# sourceMappingURL=real-object-camera.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-object-camera.js","sourceRoot":"","sources":["../../src/threed/real-object-camera.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,OAAO,GAAG;IACd,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAA;AAED,MAAM,OAAO,gBAAiB,SAAQ,UAAmC;IAGvE,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;IACf,CAAC;IAED,MAAM;QACJ,KAAK,CAAC,MAAM,EAAE,CAAA;QAEd,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAES,mBAAmB;QAC3B,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAA;IACtC,CAAC;IAED,YAAY;QACV,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE7G,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAA;QACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAA;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAA;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAA;IAC3B,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\n\nimport { RealObject } from './real-object.js'\n\nconst DEFAULT = {\n far: 100000,\n fov: 80,\n near: 1,\n zoom: 1\n}\n\nexport class RealObjectCamera extends RealObject<THREE.PerspectiveCamera> {\n protected _camera?: THREE.PerspectiveCamera\n\n build() {\n super.build()\n }\n\n update() {\n super.update()\n\n this.updateCamera()\n }\n\n protected getObject3dInstance() {\n return new THREE.PerspectiveCamera()\n }\n\n updateCamera() {\n var { near = DEFAULT.near, far = DEFAULT.far, fov = DEFAULT.fov, zoom = DEFAULT.zoom } = this.component.state\n\n this.object3d.far = far\n this.object3d.fov = fov\n this.object3d.near = near\n this.object3d.zoom = zoom\n }\n}\n"]}
@@ -1,9 +0,0 @@
1
- import { CSS3DObject } from 'three/examples/jsm/renderers/CSS3DRenderer.js';
2
- import { RealObject } from './real-object.js';
3
- export declare class RealObjectDomElement extends RealObject<CSS3DObject> {
4
- protected getObject3dInstance(): CSS3DObject;
5
- get cz(): any;
6
- build(): void;
7
- updateDimension(): void;
8
- updateAlpha(): void;
9
- }
@@ -1,48 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import { CSS3DObject } from 'three/examples/jsm/renderers/CSS3DRenderer.js';
5
- import { RealObject } from './real-object.js';
6
- export class RealObjectDomElement extends RealObject {
7
- getObject3dInstance() {
8
- return new CSS3DObject(this.component.element);
9
- }
10
- get cz() {
11
- var { zPos = 0 } = this.component.state;
12
- var { height } = this.component.bounds;
13
- var { tz = 0 } = this.component.delta();
14
- return zPos + tz + height / 2;
15
- }
16
- build() {
17
- super.build();
18
- var element = this.component.element;
19
- if (!element)
20
- return;
21
- var { width, height } = this.component.bounds;
22
- element.style.width = width + 'px';
23
- element.style.height = height + 'px';
24
- element.style.left = '';
25
- element.style.top = '';
26
- }
27
- updateDimension() {
28
- super.updateDimension();
29
- var dimension = this.dimension;
30
- var element = this.component.element;
31
- if (!element)
32
- return;
33
- element.style.width = dimension.width + 'px';
34
- element.style.height = dimension.height + 'px';
35
- }
36
- updateAlpha() {
37
- super.updateAlpha();
38
- // material의 opacity는 항상 0으로 유지되어야 하며,
39
- // dom element의 opacity에 alpha를 적용해야한다.
40
- // 하지만, 컬러톤의 반영 외에 transparent 기능은 하지 못하므로, 뒤에 있는 오브젝트를 보여주지 못한다.
41
- var { alpha = 1 } = this.component.state;
42
- var element = this.component.element;
43
- if (element) {
44
- element.style.opacity = String(alpha);
45
- }
46
- }
47
- }
48
- //# sourceMappingURL=real-object-dom-element.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-object-dom-element.js","sourceRoot":"","sources":["../../src/threed/real-object-dom-element.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,OAAO,oBAAqB,SAAQ,UAAuB;IACrD,mBAAmB;QAC3B,OAAO,IAAI,WAAW,CAAE,IAAI,CAAC,SAAkE,CAAC,OAAQ,CAAC,CAAA;IAC3G,CAAC;IAED,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QACvC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;QACtC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAW,CAAA;QAEhD,OAAO,IAAI,GAAG,EAAE,GAAG,MAAM,GAAG,CAAC,CAAA;IAC/B,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,OAAO,GAAI,IAAI,CAAC,SAAkE,CAAC,OAAO,CAAA;QAC9F,IAAI,CAAC,OAAO;YAAE,OAAM;QAEpB,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;QAE7C,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAA;QAClC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;QAEpC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAA;QACvB,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAA;IACxB,CAAC;IAED,eAAe;QACb,KAAK,CAAC,eAAe,EAAE,CAAA;QAEvB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAC9B,IAAI,OAAO,GAAI,IAAI,CAAC,SAAkE,CAAC,OAAO,CAAA;QAC9F,IAAI,CAAC,OAAO;YAAE,OAAM;QAEpB,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,IAAI,CAAA;QAC5C,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAA;IAChD,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAA;QAEnB,sCAAsC;QACtC,uCAAuC;QACvC,iEAAiE;QACjE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAExC,IAAI,OAAO,GAAI,IAAI,CAAC,SAAkE,CAAC,OAAO,CAAA;QAC9F,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { HTMLOverlayElement, HTMLOverlayContainer, DELTA } from '@hatiolab/things-scene'\n\nimport { CSS3DObject } from 'three/examples/jsm/renderers/CSS3DRenderer.js'\nimport { RealObject } from './real-object.js'\n\nexport class RealObjectDomElement extends RealObject<CSS3DObject> {\n protected getObject3dInstance() {\n return new CSS3DObject((this.component as unknown as HTMLOverlayElement | HTMLOverlayContainer).element!)\n }\n\n get cz() {\n var { zPos = 0 } = this.component.state\n var { height } = this.component.bounds\n var { tz = 0 } = this.component.delta() as DELTA\n\n return zPos + tz + height / 2\n }\n\n build() {\n super.build()\n\n var element = (this.component as unknown as HTMLOverlayElement | HTMLOverlayContainer).element\n if (!element) return\n\n var { width, height } = this.component.bounds\n\n element.style.width = width + 'px'\n element.style.height = height + 'px'\n\n element.style.left = ''\n element.style.top = ''\n }\n\n updateDimension() {\n super.updateDimension()\n\n var dimension = this.dimension\n var element = (this.component as unknown as HTMLOverlayElement | HTMLOverlayContainer).element\n if (!element) return\n\n element.style.width = dimension.width + 'px'\n element.style.height = dimension.height + 'px'\n }\n\n updateAlpha() {\n super.updateAlpha()\n\n // material의 opacity는 항상 0으로 유지되어야 하며,\n // dom element의 opacity에 alpha를 적용해야한다.\n // 하지만, 컬러톤의 반영 외에 transparent 기능은 하지 못하므로, 뒤에 있는 오브젝트를 보여주지 못한다.\n var { alpha = 1 } = this.component.state\n\n var element = (this.component as unknown as HTMLOverlayElement | HTMLOverlayContainer).element\n if (element) {\n element.style.opacity = String(alpha)\n }\n }\n}\n"]}