@operato/scene-visualizer 9.2.2 → 10.0.0-beta.10

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 (249) hide show
  1. package/dist/carrier.d.ts +263 -0
  2. package/dist/carrier.js +272 -0
  3. package/dist/carrier.js.map +1 -0
  4. package/dist/desk.d.ts +238 -3
  5. package/dist/desk.js +1 -2
  6. package/dist/desk.js.map +1 -1
  7. package/dist/editors/index.d.ts +3 -0
  8. package/dist/editors/index.js +15 -0
  9. package/dist/editors/index.js.map +1 -1
  10. package/dist/editors/property-editor-gltf-fill-targets.d.ts +20 -0
  11. package/dist/editors/property-editor-gltf-fill-targets.js +313 -0
  12. package/dist/editors/property-editor-gltf-fill-targets.js.map +1 -0
  13. package/dist/editors/property-editor-gltf-info.d.ts +25 -3
  14. package/dist/editors/property-editor-gltf-info.js +333 -73
  15. package/dist/editors/property-editor-gltf-info.js.map +1 -1
  16. package/dist/editors/property-editor-gltf-play-targets.d.ts +25 -0
  17. package/dist/editors/property-editor-gltf-play-targets.js +388 -0
  18. package/dist/editors/property-editor-gltf-play-targets.js.map +1 -0
  19. package/dist/editors/property-editor-location-increase-pattern.js +87 -95
  20. package/dist/editors/property-editor-location-increase-pattern.js.map +1 -1
  21. package/dist/editors/property-editor-stocker-location.d.ts +13 -0
  22. package/dist/editors/property-editor-stocker-location.js +151 -0
  23. package/dist/editors/property-editor-stocker-location.js.map +1 -0
  24. package/dist/editors/property-editor-stocker-ports.d.ts +8 -0
  25. package/dist/editors/property-editor-stocker-ports.js +112 -0
  26. package/dist/editors/property-editor-stocker-ports.js.map +1 -0
  27. package/dist/effects/outline.js +1 -1
  28. package/dist/effects/outline.js.map +1 -1
  29. package/dist/index.d.ts +8 -17
  30. package/dist/index.js +10 -17
  31. package/dist/index.js.map +1 -1
  32. package/dist/rack-table-3d.d.ts +16 -0
  33. package/dist/rack-table-3d.js +95 -0
  34. package/dist/rack-table-3d.js.map +1 -0
  35. package/dist/rack-table-cell.d.ts +238 -3
  36. package/dist/rack-table-cell.js +44 -51
  37. package/dist/rack-table-cell.js.map +1 -1
  38. package/dist/rack-table-location.d.ts +37 -0
  39. package/dist/rack-table-location.js +227 -0
  40. package/dist/rack-table-location.js.map +1 -0
  41. package/dist/rack-table.d.ts +13 -29
  42. package/dist/rack-table.js +121 -380
  43. package/dist/rack-table.js.map +1 -1
  44. package/dist/rack.d.ts +16 -5
  45. package/dist/rack.js +106 -19
  46. package/dist/rack.js.map +1 -1
  47. package/dist/signal-tower.d.ts +492 -0
  48. package/dist/signal-tower.js +275 -0
  49. package/dist/signal-tower.js.map +1 -0
  50. package/dist/stock-hub.d.ts +25 -0
  51. package/dist/stock-hub.js +147 -0
  52. package/dist/stock-hub.js.map +1 -0
  53. package/dist/stock.d.ts +52 -8
  54. package/dist/stock.js +223 -120
  55. package/dist/stock.js.map +1 -1
  56. package/dist/stocker-3d.d.ts +23 -0
  57. package/dist/stocker-3d.js +352 -0
  58. package/dist/stocker-3d.js.map +1 -0
  59. package/dist/stocker-port-3d.d.ts +14 -0
  60. package/dist/stocker-port-3d.js +80 -0
  61. package/dist/stocker-port-3d.js.map +1 -0
  62. package/dist/stocker-port.d.ts +254 -0
  63. package/dist/stocker-port.js +123 -0
  64. package/dist/stocker-port.js.map +1 -0
  65. package/dist/stocker.d.ts +340 -0
  66. package/dist/stocker.js +370 -0
  67. package/dist/stocker.js.map +1 -0
  68. package/dist/tank.d.ts +492 -0
  69. package/dist/tank.js +312 -0
  70. package/dist/tank.js.map +1 -0
  71. package/dist/templates/carrier.d.ts +19 -0
  72. package/dist/templates/carrier.js +20 -0
  73. package/dist/templates/carrier.js.map +1 -0
  74. package/dist/templates/cube.js +1 -1
  75. package/dist/templates/cube.js.map +1 -1
  76. package/dist/templates/cylinder.js +3 -3
  77. package/dist/templates/cylinder.js.map +1 -1
  78. package/dist/templates/index.d.ts +38 -38
  79. package/dist/templates/index.js +15 -1
  80. package/dist/templates/index.js.map +1 -1
  81. package/dist/templates/rack-table.d.ts +2 -0
  82. package/dist/templates/rack-table.js +4 -2
  83. package/dist/templates/rack-table.js.map +1 -1
  84. package/dist/templates/signal-tower.d.ts +21 -0
  85. package/dist/templates/signal-tower.js +22 -0
  86. package/dist/templates/signal-tower.js.map +1 -0
  87. package/dist/templates/sphere.d.ts +1 -0
  88. package/dist/templates/sphere.js +5 -4
  89. package/dist/templates/sphere.js.map +1 -1
  90. package/dist/templates/stock-hub.d.ts +14 -0
  91. package/dist/templates/stock-hub.js +15 -0
  92. package/dist/templates/stock-hub.js.map +1 -0
  93. package/dist/templates/stocker-port.d.ts +17 -0
  94. package/dist/templates/stocker-port.js +17 -0
  95. package/dist/templates/stocker-port.js.map +1 -0
  96. package/dist/templates/stocker.d.ts +27 -0
  97. package/dist/templates/stocker.js +38 -0
  98. package/dist/templates/stocker.js.map +1 -0
  99. package/dist/templates/tank.d.ts +21 -0
  100. package/dist/templates/tank.js +22 -0
  101. package/dist/templates/tank.js.map +1 -0
  102. package/dist/templates/vehicle.d.ts +19 -0
  103. package/dist/templates/vehicle.js +20 -0
  104. package/dist/templates/vehicle.js.map +1 -0
  105. package/dist/templates/visualizer.js +1 -1
  106. package/dist/templates/visualizer.js.map +1 -1
  107. package/dist/vehicle.d.ts +248 -0
  108. package/dist/vehicle.js +133 -0
  109. package/dist/vehicle.js.map +1 -0
  110. package/dist/visualizer.d.ts +5 -5
  111. package/dist/visualizer.js +72 -68
  112. package/dist/visualizer.js.map +1 -1
  113. package/icons/carrier.png +0 -0
  114. package/icons/signal-tower.png +0 -0
  115. package/icons/stock-hub.png +0 -0
  116. package/icons/tank.png +0 -0
  117. package/icons/vehicle.png +0 -0
  118. package/package.json +16 -18
  119. package/translations/en.json +6 -0
  120. package/translations/ja.json +5 -0
  121. package/translations/ko.json +6 -1
  122. package/translations/ms.json +5 -0
  123. package/translations/zh.json +5 -0
  124. package/dist/banner.d.ts +0 -15
  125. package/dist/banner.js +0 -76
  126. package/dist/banner.js.map +0 -1
  127. package/dist/camera.d.ts +0 -20
  128. package/dist/camera.js +0 -108
  129. package/dist/camera.js.map +0 -1
  130. package/dist/cube.d.ts +0 -13
  131. package/dist/cube.js +0 -38
  132. package/dist/cube.js.map +0 -1
  133. package/dist/cylinder.d.ts +0 -11
  134. package/dist/cylinder.js +0 -38
  135. package/dist/cylinder.js.map +0 -1
  136. package/dist/ellipse.d.ts +0 -5
  137. package/dist/ellipse.js +0 -22
  138. package/dist/ellipse.js.map +0 -1
  139. package/dist/gltf-object.d.ts +0 -20
  140. package/dist/gltf-object.js +0 -104
  141. package/dist/gltf-object.js.map +0 -1
  142. package/dist/html-overlay-element.d.ts +0 -1
  143. package/dist/html-overlay-element.js +0 -12
  144. package/dist/html-overlay-element.js.map +0 -1
  145. package/dist/light.d.ts +0 -15
  146. package/dist/light.js +0 -135
  147. package/dist/light.js.map +0 -1
  148. package/dist/polygon.d.ts +0 -17
  149. package/dist/polygon.js +0 -64
  150. package/dist/polygon.js.map +0 -1
  151. package/dist/rect.d.ts +0 -5
  152. package/dist/rect.js +0 -36
  153. package/dist/rect.js.map +0 -1
  154. package/dist/scene/component.d.ts +0 -1
  155. package/dist/scene/component.js +0 -29
  156. package/dist/scene/component.js.map +0 -1
  157. package/dist/sphere.d.ts +0 -11
  158. package/dist/sphere.js +0 -38
  159. package/dist/sphere.js.map +0 -1
  160. package/dist/sprite.d.ts +0 -9
  161. package/dist/sprite.js +0 -28
  162. package/dist/sprite.js.map +0 -1
  163. package/dist/text.d.ts +0 -1
  164. package/dist/text.js +0 -9
  165. package/dist/text.js.map +0 -1
  166. package/dist/three-container-editor.d.ts +0 -22
  167. package/dist/three-container-editor.js +0 -132
  168. package/dist/three-container-editor.js.map +0 -1
  169. package/dist/three-container.d.ts +0 -85
  170. package/dist/three-container.js +0 -565
  171. package/dist/three-container.js.map +0 -1
  172. package/dist/three-controls.d.ts +0 -11
  173. package/dist/three-controls.js +0 -616
  174. package/dist/three-controls.js.map +0 -1
  175. package/dist/three-layout.d.ts +0 -8
  176. package/dist/three-layout.js +0 -20
  177. package/dist/three-layout.js.map +0 -1
  178. package/dist/three-space.d.ts +0 -85
  179. package/dist/three-space.js +0 -570
  180. package/dist/three-space.js.map +0 -1
  181. package/dist/threed/common.d.ts +0 -22
  182. package/dist/threed/common.js +0 -19
  183. package/dist/threed/common.js.map +0 -1
  184. package/dist/threed/floor/floor.d.ts +0 -3
  185. package/dist/threed/floor/floor.js +0 -51
  186. package/dist/threed/floor/floor.js.map +0 -1
  187. package/dist/threed/html/elements.d.ts +0 -2
  188. package/dist/threed/html/elements.js +0 -21
  189. package/dist/threed/html/elements.js.map +0 -1
  190. package/dist/threed/index.d.ts +0 -15
  191. package/dist/threed/index.js +0 -16
  192. package/dist/threed/index.js.map +0 -1
  193. package/dist/threed/real-object-camera-meshed.d.ts +0 -12
  194. package/dist/threed/real-object-camera-meshed.js +0 -49
  195. package/dist/threed/real-object-camera-meshed.js.map +0 -1
  196. package/dist/threed/real-object-camera.d.ts +0 -9
  197. package/dist/threed/real-object-camera.js +0 -31
  198. package/dist/threed/real-object-camera.js.map +0 -1
  199. package/dist/threed/real-object-dom-element.d.ts +0 -9
  200. package/dist/threed/real-object-dom-element.js +0 -40
  201. package/dist/threed/real-object-dom-element.js.map +0 -1
  202. package/dist/threed/real-object-dummy.d.ts +0 -6
  203. package/dist/threed/real-object-dummy.js +0 -11
  204. package/dist/threed/real-object-dummy.js.map +0 -1
  205. package/dist/threed/real-object-extrude.d.ts +0 -21
  206. package/dist/threed/real-object-extrude.js +0 -173
  207. package/dist/threed/real-object-extrude.js.map +0 -1
  208. package/dist/threed/real-object-gltf.d.ts +0 -16
  209. package/dist/threed/real-object-gltf.js +0 -101
  210. package/dist/threed/real-object-gltf.js.map +0 -1
  211. package/dist/threed/real-object-group.d.ts +0 -5
  212. package/dist/threed/real-object-group.js +0 -11
  213. package/dist/threed/real-object-group.js.map +0 -1
  214. package/dist/threed/real-object-mesh.d.ts +0 -13
  215. package/dist/threed/real-object-mesh.js +0 -75
  216. package/dist/threed/real-object-mesh.js.map +0 -1
  217. package/dist/threed/real-object-plane.d.ts +0 -5
  218. package/dist/threed/real-object-plane.js +0 -22
  219. package/dist/threed/real-object-plane.js.map +0 -1
  220. package/dist/threed/real-object-scene.d.ts +0 -21
  221. package/dist/threed/real-object-scene.js +0 -67
  222. package/dist/threed/real-object-scene.js.map +0 -1
  223. package/dist/threed/real-object-sprite-2d.d.ts +0 -14
  224. package/dist/threed/real-object-sprite-2d.js +0 -45
  225. package/dist/threed/real-object-sprite-2d.js.map +0 -1
  226. package/dist/threed/real-object-sprite.d.ts +0 -11
  227. package/dist/threed/real-object-sprite.js +0 -50
  228. package/dist/threed/real-object-sprite.js.map +0 -1
  229. package/dist/threed/real-object-text.d.ts +0 -15
  230. package/dist/threed/real-object-text.js +0 -64
  231. package/dist/threed/real-object-text.js.map +0 -1
  232. package/dist/threed/real-object.d.ts +0 -64
  233. package/dist/threed/real-object.js +0 -260
  234. package/dist/threed/real-object.js.map +0 -1
  235. package/dist/threed/texture/canvas-texture.d.ts +0 -4
  236. package/dist/threed/texture/canvas-texture.js +0 -49
  237. package/dist/threed/texture/canvas-texture.js.map +0 -1
  238. package/dist/threed/texture/text-texture.d.ts +0 -8
  239. package/dist/threed/texture/text-texture.js +0 -79
  240. package/dist/threed/texture/text-texture.js.map +0 -1
  241. package/dist/threed/three-dimensional-container.d.ts +0 -8
  242. package/dist/threed/three-dimensional-container.js +0 -2
  243. package/dist/threed/three-dimensional-container.js.map +0 -1
  244. package/dist/threed/utils/bound-uv-generator.d.ts +0 -16
  245. package/dist/threed/utils/bound-uv-generator.js +0 -42
  246. package/dist/threed/utils/bound-uv-generator.js.map +0 -1
  247. package/dist/wall.d.ts +0 -13
  248. package/dist/wall.js +0 -45
  249. package/dist/wall.js.map +0 -1
@@ -1,19 +0,0 @@
1
- import tinycolor from 'tinycolor2';
2
- export const SCALE_MIN = 0.001;
3
- export function applyAlpha(material, alpha, fillStyle) {
4
- var opacity = 1;
5
- if (!fillStyle || fillStyle == 'none' || fillStyle == 'transparent') {
6
- opacity = 0;
7
- }
8
- else {
9
- var fillAlpha = typeof fillStyle == 'string' ? tinycolor(fillStyle).getAlpha() : 1;
10
- opacity = alpha * fillAlpha;
11
- }
12
- material.opacity = opacity;
13
- material.transparent = opacity < 1;
14
- }
15
- export const UNIT_DIMENSION = { width: 1, height: 1, depth: 1 };
16
- export const UNIT_SCALE = { x: 1, y: 1, z: 1 };
17
- export const UNIT_TRANSLATE = { x: 0, y: 0, z: 0 };
18
- export const UNIT_ROTATE = { x: 0, y: 0, z: 0 };
19
- //# sourceMappingURL=common.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/threed/common.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAA;AAElC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAA;AAE9B,MAAM,UAAU,UAAU,CAAC,QAAa,EAAE,KAAa,EAAE,SAAc;IACrE,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;QACpE,OAAO,GAAG,CAAC,CAAA;IACb,CAAC;SAAM,CAAC;QACN,IAAI,SAAS,GAAG,OAAO,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAClF,OAAO,GAAG,KAAK,GAAG,SAAS,CAAA;IAC7B,CAAC;IAED,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,QAAQ,CAAC,WAAW,GAAG,OAAO,GAAG,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;AAC/D,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;AAClD,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA","sourcesContent":["import tinycolor from 'tinycolor2'\n\nexport const SCALE_MIN = 0.001\n\nexport function applyAlpha(material: any, alpha: number, fillStyle: any) {\n var opacity = 1\n if (!fillStyle || fillStyle == 'none' || fillStyle == 'transparent') {\n opacity = 0\n } else {\n var fillAlpha = typeof fillStyle == 'string' ? tinycolor(fillStyle).getAlpha() : 1\n opacity = alpha * fillAlpha\n }\n\n material.opacity = opacity\n material.transparent = opacity < 1\n}\n\nexport const UNIT_DIMENSION = { width: 1, height: 1, depth: 1 }\nexport const UNIT_SCALE = { x: 1, y: 1, z: 1 }\nexport const UNIT_TRANSLATE = { x: 0, y: 0, z: 0 }\nexport const UNIT_ROTATE = { x: 0, y: 0, z: 0 }\n"]}
@@ -1,3 +0,0 @@
1
- import * as THREE from 'three';
2
- import { Component } from '@hatiolab/things-scene';
3
- export declare function createFloor(component: Component): THREE.Mesh | undefined;
@@ -1,51 +0,0 @@
1
- import * as THREE from 'three';
2
- import { RealObject } from '../real-object.js';
3
- export function createFloor(component) {
4
- var { fillStyle } = component.state;
5
- if (!fillStyle || fillStyle == 'none') {
6
- return;
7
- }
8
- var floorGeometry = new THREE.BoxGeometry(1, 1, 1);
9
- var floorMaterial;
10
- const texture = RealObject.buildFillStyleTexture(component);
11
- if (texture) {
12
- const color = '#424b57';
13
- floorMaterial = [
14
- new THREE.MeshStandardMaterial({
15
- color
16
- }),
17
- new THREE.MeshStandardMaterial({
18
- color
19
- }),
20
- new THREE.MeshStandardMaterial({
21
- color
22
- }),
23
- new THREE.MeshStandardMaterial({
24
- color
25
- }),
26
- new THREE.MeshStandardMaterial({
27
- map: texture
28
- }),
29
- new THREE.MeshStandardMaterial({
30
- color
31
- })
32
- ];
33
- }
34
- else if (typeof fillStyle == 'string') {
35
- floorMaterial = new THREE.MeshStandardMaterial({
36
- color: fillStyle
37
- });
38
- }
39
- if (!floorMaterial) {
40
- return;
41
- }
42
- const mesh = new THREE.Mesh(floorGeometry, floorMaterial);
43
- var { width, height } = component.state;
44
- mesh.scale.set(width, height, 5);
45
- mesh.rotation.x = -Math.PI / 2;
46
- mesh.position.y = -2;
47
- mesh.name = 'floor';
48
- mesh.receiveShadow = true;
49
- return mesh;
50
- }
51
- //# sourceMappingURL=floor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"floor.js","sourceRoot":"","sources":["../../../src/threed/floor/floor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,MAAM,UAAU,WAAW,CAAC,SAAoB;IAC9C,IAAI,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC,KAAK,CAAA;IAEnC,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QACtC,OAAM;IACR,CAAC;IAED,IAAI,aAAa,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAClD,IAAI,aAA4D,CAAA;IAEhE,MAAM,OAAO,GAAG,UAAU,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAA;IAE3D,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,SAAS,CAAA;QAEvB,aAAa,GAAG;YACd,IAAI,KAAK,CAAC,oBAAoB,CAAC;gBAC7B,KAAK;aACN,CAAC;YACF,IAAI,KAAK,CAAC,oBAAoB,CAAC;gBAC7B,KAAK;aACN,CAAC;YACF,IAAI,KAAK,CAAC,oBAAoB,CAAC;gBAC7B,KAAK;aACN,CAAC;YACF,IAAI,KAAK,CAAC,oBAAoB,CAAC;gBAC7B,KAAK;aACN,CAAC;YACF,IAAI,KAAK,CAAC,oBAAoB,CAAC;gBAC7B,GAAG,EAAE,OAAO;aACb,CAAC;YACF,IAAI,KAAK,CAAC,oBAAoB,CAAC;gBAC7B,KAAK;aACN,CAAC;SACH,CAAA;IACH,CAAC;SAAM,IAAI,OAAO,SAAS,IAAI,QAAQ,EAAE,CAAC;QACxC,aAAa,GAAG,IAAI,KAAK,CAAC,oBAAoB,CAAC;YAC7C,KAAK,EAAE,SAAS;SACjB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAM;IACR,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;IAEzD,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAA;IAEvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IAChC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;IAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAEpB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;IACnB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;IAEzB,OAAO,IAAI,CAAA;AACb,CAAC","sourcesContent":["import * as THREE from 'three'\nimport { Component } from '@hatiolab/things-scene'\nimport { RealObject } from '../real-object.js'\n\nexport function createFloor(component: Component): THREE.Mesh | undefined {\n var { fillStyle } = component.state\n\n if (!fillStyle || fillStyle == 'none') {\n return\n }\n\n var floorGeometry = new THREE.BoxGeometry(1, 1, 1)\n var floorMaterial: THREE.Material | THREE.Material[] | undefined\n\n const texture = RealObject.buildFillStyleTexture(component)\n\n if (texture) {\n const color = '#424b57'\n\n floorMaterial = [\n new THREE.MeshStandardMaterial({\n color\n }),\n new THREE.MeshStandardMaterial({\n color\n }),\n new THREE.MeshStandardMaterial({\n color\n }),\n new THREE.MeshStandardMaterial({\n color\n }),\n new THREE.MeshStandardMaterial({\n map: texture\n }),\n new THREE.MeshStandardMaterial({\n color\n })\n ]\n } else if (typeof fillStyle == 'string') {\n floorMaterial = new THREE.MeshStandardMaterial({\n color: fillStyle\n })\n }\n\n if (!floorMaterial) {\n return\n }\n\n const mesh = new THREE.Mesh(floorGeometry, floorMaterial)\n\n var { width, height } = component.state\n\n mesh.scale.set(width, height, 5)\n mesh.rotation.x = -Math.PI / 2\n mesh.position.y = -2\n\n mesh.name = 'floor'\n mesh.receiveShadow = true\n\n return mesh\n}\n"]}
@@ -1,2 +0,0 @@
1
- export declare var PIXEL_RATIO: number;
2
- export declare function createCanvas(width: number, height: number): HTMLCanvasElement;
@@ -1,21 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- export var PIXEL_RATIO = (function () {
5
- var ctx = document.createElement('canvas').getContext('2d'), dpr = window.devicePixelRatio || 1, bsr = ctx.webkitBackingStorePixelRatio ||
6
- ctx.mozBackingStorePixelRatio ||
7
- ctx.msBackingStorePixelRatio ||
8
- ctx.oBackingStorePixelRatio ||
9
- ctx.backingStorePixelRatio ||
10
- 1;
11
- return dpr / bsr;
12
- })();
13
- export function createCanvas(width, height) {
14
- let canvas = document.createElement('canvas');
15
- canvas.width = width;
16
- canvas.height = height;
17
- canvas.style.width = width + 'px';
18
- canvas.style.height = height + 'px';
19
- return canvas;
20
- }
21
- //# sourceMappingURL=elements.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"elements.js","sourceRoot":"","sources":["../../../src/threed/html/elements.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,IAAI,WAAW,GAAG,CAAC;IACxB,IAAI,GAAG,GAAQ,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAC9D,GAAG,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,EAClC,GAAG,GACD,GAAG,CAAC,4BAA4B;QAChC,GAAG,CAAC,yBAAyB;QAC7B,GAAG,CAAC,wBAAwB;QAC5B,GAAG,CAAC,uBAAuB;QAC3B,GAAG,CAAC,sBAAsB;QAC1B,CAAC,CAAA;IACL,OAAO,GAAG,GAAG,GAAG,CAAA;AAClB,CAAC,CAAC,EAAE,CAAA;AAEJ,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,MAAc;IACxD,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAE7C,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAA;IACjC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAEnC,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nexport var PIXEL_RATIO = (function () {\n var ctx: any = document.createElement('canvas').getContext('2d'),\n dpr = window.devicePixelRatio || 1,\n bsr =\n ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.msBackingStorePixelRatio ||\n ctx.oBackingStorePixelRatio ||\n ctx.backingStorePixelRatio ||\n 1\n return dpr / bsr\n})()\n\nexport function createCanvas(width: number, height: number): HTMLCanvasElement {\n let canvas = document.createElement('canvas')\n\n canvas.width = width\n canvas.height = height\n canvas.style.width = width + 'px'\n canvas.style.height = height + 'px'\n\n return canvas\n}\n"]}
@@ -1,15 +0,0 @@
1
- export * from './common.js';
2
- export * from './three-dimensional-container.js';
3
- export * from './real-object.js';
4
- export * from './real-object-dummy.js';
5
- export * from './real-object-extrude.js';
6
- export * from './real-object-camera.js';
7
- export * from './real-object-dom-element.js';
8
- export * from './real-object-gltf.js';
9
- export * from './real-object-group.js';
10
- export * from './real-object-mesh.js';
11
- export * from './real-object-plane.js';
12
- export * from './real-object-scene.js';
13
- export * from './real-object-sprite-2d.js';
14
- export * from './real-object-sprite.js';
15
- export * from './real-object-text.js';
@@ -1,16 +0,0 @@
1
- export * from './common.js';
2
- export * from './three-dimensional-container.js';
3
- export * from './real-object.js';
4
- export * from './real-object-dummy.js';
5
- export * from './real-object-extrude.js';
6
- export * from './real-object-camera.js';
7
- export * from './real-object-dom-element.js';
8
- export * from './real-object-gltf.js';
9
- export * from './real-object-group.js';
10
- export * from './real-object-mesh.js';
11
- export * from './real-object-plane.js';
12
- export * from './real-object-scene.js';
13
- export * from './real-object-sprite-2d.js';
14
- export * from './real-object-sprite.js';
15
- export * from './real-object-text.js';
16
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/threed/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,kCAAkC,CAAA;AAChD,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA","sourcesContent":["export * from './common.js'\nexport * from './three-dimensional-container.js'\nexport * from './real-object.js'\nexport * from './real-object-dummy.js'\nexport * from './real-object-extrude.js'\nexport * from './real-object-camera.js'\nexport * from './real-object-dom-element.js'\nexport * from './real-object-gltf.js'\nexport * from './real-object-group.js'\nexport * from './real-object-mesh.js'\nexport * from './real-object-plane.js'\nexport * from './real-object-scene.js'\nexport * from './real-object-sprite-2d.js'\nexport * from './real-object-sprite.js'\nexport * from './real-object-text.js'\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,40 +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
- var { width, height } = this.component.bounds;
20
- element.style.width = width + 'px';
21
- element.style.height = height + 'px';
22
- element.style.left = '';
23
- element.style.top = '';
24
- }
25
- updateDimension() {
26
- super.updateDimension();
27
- var dimension = this.dimension;
28
- this.component.element.style.width = dimension.width + 'px';
29
- this.component.element.style.height = dimension.height + 'px';
30
- }
31
- updateAlpha() {
32
- super.updateAlpha();
33
- // material의 opacity는 항상 0으로 유지되어야 하며,
34
- // dom element의 opacity에 alpha를 적용해야한다.
35
- // 하지만, 컬러톤의 반영 외에 transparent 기능은 하지 못하므로, 뒤에 있는 오브젝트를 보여주지 못한다.
36
- var { alpha = 1 } = this.component.state;
37
- this.component.element.style.opacity = alpha;
38
- }
39
- }
40
- //# 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,SAAuD,CAAC,OAAO,CAAC,CAAA;IAC/F,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,SAAuD,CAAC,OAAO,CAAA;QAEnF,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,CAC7B;QAAC,IAAI,CAAC,SAAuD,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,IAAI,CAC1G;QAAC,IAAI,CAAC,SAAuD,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAA;IAC/G,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,CAEvC;QAAC,IAAI,CAAC,SAAuD,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAA;IAC9F,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 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 HTMLOverlayElement | HTMLOverlayContainer).element\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 ;(this.component as HTMLOverlayElement | HTMLOverlayContainer).element.style.width = dimension.width + 'px'\n ;(this.component as HTMLOverlayElement | HTMLOverlayContainer).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 ;(this.component as HTMLOverlayElement | HTMLOverlayContainer).element.style.opacity = alpha\n }\n}\n"]}
@@ -1,6 +0,0 @@
1
- import * as THREE from 'three';
2
- import { RealObject } from './real-object.js';
3
- export declare class RealObjectDummy extends RealObject<THREE.Object3D> {
4
- build(): void;
5
- update(): void;
6
- }
@@ -1,11 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import { RealObject } from './real-object.js';
5
- export class RealObjectDummy extends RealObject {
6
- build() {
7
- super.build();
8
- }
9
- update() { }
10
- }
11
- //# sourceMappingURL=real-object-dummy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-object-dummy.js","sourceRoot":"","sources":["../../src/threed/real-object-dummy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,OAAO,eAAgB,SAAQ,UAA0B;IAC7D,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;IACf,CAAC;IACD,MAAM,KAAI,CAAC;CACZ","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { RealObject } from './real-object.js'\n\nexport class RealObjectDummy extends RealObject<THREE.Object3D> {\n build() {\n super.build()\n }\n update() {}\n}\n"]}
@@ -1,21 +0,0 @@
1
- import * as THREE from 'three';
2
- import { RealObject } from './real-object.js';
3
- import { BoundUVGenerator } from './utils/bound-uv-generator.js';
4
- export declare class RealObjectExtrude extends RealObject {
5
- _boundUVGenerator?: BoundUVGenerator;
6
- private _mainMesh?;
7
- private _sideMesh?;
8
- get shape(): any;
9
- get sideShape(): null;
10
- get boundUVGenerator(): BoundUVGenerator;
11
- build(): void;
12
- createGeometry(shape: THREE.Shape): THREE.BufferGeometry;
13
- createMainMaterial(): THREE.MeshStandardMaterial;
14
- createMainMesh(geometry: THREE.BufferGeometry, material: THREE.Material): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material, THREE.Object3DEventMap>;
15
- createSideMesh(geometry: THREE.BufferGeometry, shape: THREE.Shape): THREE.Mesh<THREE.ExtrudeGeometry, THREE.MeshStandardMaterial, THREE.Object3DEventMap>;
16
- createTexture(): THREE.CanvasTexture;
17
- updateAlpha(): void;
18
- updateStrokeStyle(): void;
19
- updateFillStyle(): void;
20
- updateDimension(): void;
21
- }
@@ -1,173 +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
- import { BoundUVGenerator } from './utils/bound-uv-generator.js';
7
- import { createCanvas } from './html/elements.js';
8
- import { applyAlpha } from './common.js';
9
- export class RealObjectExtrude extends RealObject {
10
- get shape() {
11
- return null;
12
- }
13
- get sideShape() {
14
- return null;
15
- }
16
- get boundUVGenerator() {
17
- if (!this._boundUVGenerator)
18
- this._boundUVGenerator = new BoundUVGenerator();
19
- return this._boundUVGenerator;
20
- }
21
- build() {
22
- super.build();
23
- var { depth = 1 } = this.component.state;
24
- // 다각형 그리기
25
- var shape = this.shape;
26
- if (!shape) {
27
- return;
28
- }
29
- var boundUVGenerator = this.boundUVGenerator;
30
- if (boundUVGenerator) {
31
- boundUVGenerator.setShape({
32
- extrudedShape: shape,
33
- extrudedOptions: {
34
- depth
35
- }
36
- });
37
- }
38
- var geometry = this.createGeometry(shape);
39
- var material = this.createMainMaterial();
40
- this._mainMesh = this.createMainMesh(geometry, material);
41
- this._mainMesh.castShadow = true;
42
- this.object3d.add(this._mainMesh);
43
- this._sideMesh = this.createSideMesh(geometry, shape /* FIXME , extrudeSettings */);
44
- this._sideMesh.castShadow = true;
45
- this.object3d.add(this._sideMesh);
46
- this.updateFillStyle();
47
- this.updateStrokeStyle();
48
- }
49
- createGeometry(shape) {
50
- const { depth = 1 } = this.component.state;
51
- const extrudeSettings = {
52
- steps: 1,
53
- depth,
54
- bevelEnabled: false,
55
- UVGenerator: this.boundUVGenerator
56
- };
57
- var geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings);
58
- geometry.center();
59
- return geometry;
60
- }
61
- createMainMaterial() {
62
- return new THREE.MeshStandardMaterial({
63
- metalness: 0.5,
64
- roughness: 0.5
65
- });
66
- }
67
- createMainMesh(geometry, material) {
68
- var mesh = new THREE.Mesh(geometry, material);
69
- mesh.rotation.x = -Math.PI / 2;
70
- mesh.rotation.y = -Math.PI;
71
- mesh.rotation.z = -Math.PI;
72
- return mesh;
73
- }
74
- createSideMesh(geometry, shape) {
75
- var { depth = 1, lineWidth = 0 } = this.component.state;
76
- var hole = new THREE.Path();
77
- hole.setFromPoints(shape.getPoints());
78
- var sideMaterial = new THREE.MeshStandardMaterial({
79
- metalness: 0.5,
80
- roughness: 0.5,
81
- // prevent overlapped layers flickering
82
- polygonOffset: true,
83
- polygonOffsetFactor: -0.1
84
- });
85
- shape = this.sideShape || shape;
86
- shape.holes.push(hole);
87
- var sideExtrudeSettings = {
88
- steps: 1,
89
- depth: depth + 1,
90
- bevelEnabled: true,
91
- bevelThickness: 0,
92
- bevelSize: lineWidth,
93
- bevelSizeSegments: 5
94
- };
95
- var sideGeometry = new THREE.ExtrudeGeometry(shape, sideExtrudeSettings);
96
- sideGeometry.center();
97
- var sideMesh = new THREE.Mesh(sideGeometry, sideMaterial);
98
- sideMesh.rotation.x = -Math.PI / 2;
99
- sideMesh.rotation.y = -Math.PI;
100
- sideMesh.rotation.z = -Math.PI;
101
- return sideMesh;
102
- }
103
- createTexture() {
104
- function nextPowerOf2(n) {
105
- var count = 0;
106
- if (n && !(n & (n - 1))) {
107
- return n;
108
- }
109
- while (n != 0) {
110
- n >>= 1;
111
- count += 1;
112
- }
113
- return 1 << count;
114
- }
115
- var { width, height } = this.component.bounds;
116
- var poweredWidth = nextPowerOf2(width);
117
- var poweredHeight = nextPowerOf2(height);
118
- let canvas = createCanvas(poweredWidth, poweredHeight);
119
- this.component.render(canvas.getContext('2d'));
120
- var texture = new THREE.CanvasTexture(canvas);
121
- texture.needsUpdate = true;
122
- texture.wrapS = THREE.RepeatWrapping;
123
- texture.wrapT = THREE.RepeatWrapping;
124
- texture.offset.set(0, 1 - height / poweredHeight);
125
- texture.repeat.set(width / poweredWidth, height / poweredHeight);
126
- texture.minFilter = THREE.LinearFilter;
127
- return texture;
128
- }
129
- updateAlpha() {
130
- var { alpha = 1, fillStyle, strokeStyle } = this.component.state;
131
- this._mainMesh && applyAlpha(this._mainMesh.material, alpha, fillStyle);
132
- this._sideMesh && applyAlpha(this._sideMesh.material, alpha, strokeStyle);
133
- }
134
- updateStrokeStyle() {
135
- var _a;
136
- const material = (_a = this._sideMesh) === null || _a === void 0 ? void 0 : _a.material;
137
- if (!material) {
138
- return;
139
- }
140
- var { strokeStyle } = this.component.state;
141
- material.color.set(strokeStyle);
142
- }
143
- updateFillStyle() {
144
- var _a;
145
- var { fillStyle, alpha = 1 } = this.component.state;
146
- var material = (_a = this._mainMesh) === null || _a === void 0 ? void 0 : _a.material;
147
- if (!material) {
148
- return;
149
- }
150
- const texture = RealObject.buildFillStyleTexture(this.component);
151
- if (texture) {
152
- material.map = texture;
153
- }
154
- else {
155
- material.color.set(fillStyle);
156
- }
157
- }
158
- updateDimension() {
159
- var { width, height, depth } = this.dimension;
160
- if (!this._mainMesh || !this._sideMesh)
161
- return;
162
- this._mainMesh.geometry.computeBoundingBox();
163
- let bbox = this._mainMesh.geometry.boundingBox;
164
- if (bbox) {
165
- let originalWidth = bbox.max.x - bbox.min.x;
166
- let originalHeight = bbox.max.y - bbox.min.y;
167
- let originalDepth = bbox.max.z - bbox.min.z;
168
- this._mainMesh.scale.set(width / originalWidth, height / originalHeight, depth / originalDepth);
169
- this._sideMesh.scale.set(width / originalWidth, height / originalHeight, depth / originalDepth);
170
- }
171
- }
172
- }
173
- //# sourceMappingURL=real-object-extrude.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-object-extrude.js","sourceRoot":"","sources":["../../src/threed/real-object-extrude.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\n\nimport { RealObject } from './real-object.js'\n\nimport { BoundUVGenerator } from './utils/bound-uv-generator.js'\nimport { createCanvas } from './html/elements.js'\nimport { applyAlpha } from './common.js'\n\nexport class RealObjectExtrude extends RealObject {\n _boundUVGenerator?: BoundUVGenerator\n private _mainMesh?: THREE.Mesh\n private _sideMesh?: THREE.Mesh\n\n get shape(): any {\n return null\n }\n\n get sideShape() {\n return null\n }\n\n get boundUVGenerator() {\n if (!this._boundUVGenerator) this._boundUVGenerator = new BoundUVGenerator()\n\n return this._boundUVGenerator\n }\n\n build() {\n super.build()\n\n var { depth = 1 } = this.component.state\n\n // 다각형 그리기\n var shape = this.shape\n if (!shape) {\n return\n }\n\n var boundUVGenerator = this.boundUVGenerator\n\n if (boundUVGenerator) {\n boundUVGenerator.setShape({\n extrudedShape: shape,\n extrudedOptions: {\n depth\n }\n })\n }\n\n var geometry = this.createGeometry(shape)\n\n var material = this.createMainMaterial()\n this._mainMesh = this.createMainMesh(geometry, material as THREE.Material)\n this._mainMesh.castShadow = true\n\n this.object3d.add(this._mainMesh)\n\n this._sideMesh = this.createSideMesh(geometry, shape /* FIXME , extrudeSettings */)\n this._sideMesh.castShadow = true\n\n this.object3d.add(this._sideMesh)\n\n this.updateFillStyle()\n this.updateStrokeStyle()\n }\n\n createGeometry(shape: THREE.Shape): THREE.BufferGeometry {\n const { depth = 1 } = this.component.state\n\n const extrudeSettings = {\n steps: 1,\n depth,\n bevelEnabled: false,\n UVGenerator: this.boundUVGenerator\n } as THREE.ExtrudeGeometryOptions\n\n var geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings)\n geometry.center()\n\n return geometry as any\n }\n\n createMainMaterial() {\n return new THREE.MeshStandardMaterial({\n metalness: 0.5,\n roughness: 0.5\n })\n }\n\n createMainMesh(geometry: THREE.BufferGeometry, material: THREE.Material) {\n var mesh = new THREE.Mesh(geometry, material)\n mesh.rotation.x = -Math.PI / 2\n mesh.rotation.y = -Math.PI\n mesh.rotation.z = -Math.PI\n\n return mesh\n }\n\n createSideMesh(geometry: THREE.BufferGeometry, shape: THREE.Shape) {\n var { depth = 1, lineWidth = 0 } = this.component.state\n\n var hole = new THREE.Path()\n hole.setFromPoints(shape.getPoints())\n\n var sideMaterial = new THREE.MeshStandardMaterial({\n metalness: 0.5,\n roughness: 0.5,\n // prevent overlapped layers flickering\n polygonOffset: true,\n polygonOffsetFactor: -0.1\n })\n\n shape = this.sideShape || shape\n shape.holes.push(hole)\n\n var sideExtrudeSettings = {\n steps: 1,\n depth: depth + 1,\n bevelEnabled: true,\n bevelThickness: 0,\n bevelSize: lineWidth,\n bevelSizeSegments: 5\n }\n\n var sideGeometry = new THREE.ExtrudeGeometry(shape, sideExtrudeSettings)\n sideGeometry.center()\n\n var sideMesh = new THREE.Mesh(sideGeometry, sideMaterial)\n sideMesh.rotation.x = -Math.PI / 2\n sideMesh.rotation.y = -Math.PI\n sideMesh.rotation.z = -Math.PI\n\n return sideMesh\n }\n\n createTexture() {\n function nextPowerOf2(n: number) {\n var count = 0\n\n if (n && !(n & (n - 1))) {\n return n\n }\n\n while (n != 0) {\n n >>= 1\n count += 1\n }\n\n return 1 << count\n }\n\n var { width, height } = this.component.bounds\n\n var poweredWidth = nextPowerOf2(width)\n var poweredHeight = nextPowerOf2(height)\n\n let canvas = createCanvas(poweredWidth, poweredHeight)\n this.component.render(canvas.getContext('2d')!)\n\n var texture = new THREE.CanvasTexture(canvas)\n\n texture.needsUpdate = true\n texture.wrapS = THREE.RepeatWrapping\n texture.wrapT = THREE.RepeatWrapping\n texture.offset.set(0, 1 - height / poweredHeight)\n texture.repeat.set(width / poweredWidth, height / poweredHeight)\n texture.minFilter = THREE.LinearFilter\n\n return texture\n }\n\n updateAlpha() {\n var { alpha = 1, fillStyle, strokeStyle } = this.component.state\n\n this._mainMesh && applyAlpha(this._mainMesh.material, alpha, fillStyle)\n this._sideMesh && applyAlpha(this._sideMesh.material, alpha, strokeStyle)\n }\n\n updateStrokeStyle() {\n const material = this._sideMesh?.material as THREE.MeshStandardMaterial\n if (!material) {\n return\n }\n\n var { strokeStyle } = this.component.state\n\n material.color.set(strokeStyle)\n }\n\n updateFillStyle() {\n var { fillStyle, alpha = 1 } = this.component.state\n\n var material = this._mainMesh?.material as THREE.MeshStandardMaterial\n if (!material) {\n return\n }\n\n const texture = RealObject.buildFillStyleTexture(this.component)\n\n if (texture) {\n material.map = texture\n } else {\n material.color.set(fillStyle)\n }\n }\n\n updateDimension() {\n var { width, height, depth } = this.dimension\n\n if (!this._mainMesh || !this._sideMesh) return\n\n this._mainMesh.geometry.computeBoundingBox()\n let bbox = this._mainMesh.geometry.boundingBox\n\n if (bbox) {\n let originalWidth = bbox.max.x - bbox.min.x\n let originalHeight = bbox.max.y - bbox.min.y\n let originalDepth = bbox.max.z - bbox.min.z\n\n this._mainMesh.scale.set(width / originalWidth, height / originalHeight, depth / originalDepth)\n this._sideMesh.scale.set(width / originalWidth, height / originalHeight, depth / originalDepth)\n }\n }\n}\n"]}
@@ -1,16 +0,0 @@
1
- import * as THREE from 'three';
2
- import { RealObject } from './real-object.js';
3
- import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
4
- import { Properties } from '@hatiolab/things-scene';
5
- export declare class RealObjectGLTF extends RealObject {
6
- private static _GLTFLoader;
7
- private pivot?;
8
- private objectSize?;
9
- static get GLTFLoader(): GLTFLoader;
10
- build(): void;
11
- private gltfLoaded;
12
- clear(): THREE.Object3D<THREE.Object3DEventMap>;
13
- updateDimension(): void;
14
- updateSource(): void;
15
- onchange(after: Properties, before: Properties): void;
16
- }