@hatiolab/things-scene 9.0.0-beta.9 → 9.0.0

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 (353) hide show
  1. package/README.md +76 -11
  2. package/package.json +30 -14
  3. package/things-scene-min.js +74 -2
  4. package/things-scene-min.js.map +1 -0
  5. package/things-scene.d.ts +49 -7
  6. package/things-scene.mjs +61 -31
  7. package/things-scene.mjs.map +1 -0
  8. package/.prettierrc +0 -21
  9. package/assets/icon-audio.png +0 -0
  10. package/assets/icon-gif-viewer.png +0 -0
  11. package/assets/images/spinner.png +0 -0
  12. package/babel.config.js +0 -22
  13. package/db.sqlite +0 -0
  14. package/dist/animation/animate.d.ts +0 -4
  15. package/dist/animation/animations/animation.d.ts +0 -14
  16. package/dist/animation/animations/fade.d.ts +0 -4
  17. package/dist/animation/animations/heartbeat.d.ts +0 -4
  18. package/dist/animation/animations/moving.d.ts +0 -4
  19. package/dist/animation/animations/outline.d.ts +0 -10
  20. package/dist/animation/animations/rotation.d.ts +0 -4
  21. package/dist/animation/animations/vibration.d.ts +0 -4
  22. package/dist/animation/compile.d.ts +0 -1
  23. package/dist/animation/delta.d.ts +0 -19
  24. package/dist/animation/index.d.ts +0 -1
  25. package/dist/command/command-change.d.ts +0 -7
  26. package/dist/command/command-migrate.d.ts +0 -4
  27. package/dist/command/command-migrate.js +0 -85
  28. package/dist/command/command-migrate.js.map +0 -1
  29. package/dist/command/command.d.ts +0 -5
  30. package/dist/command/snapshot-commander.d.ts +0 -15
  31. package/dist/components/anchor/anchor.d.ts +0 -128
  32. package/dist/components/anchor/ellipse-anchors.d.ts +0 -2
  33. package/dist/components/anchor/ellipse-anchors.js +0 -38
  34. package/dist/components/anchor/ellipse-anchors.js.map +0 -1
  35. package/dist/components/anchor/rect-anchors.d.ts +0 -10
  36. package/dist/components/audio.d.ts +0 -25
  37. package/dist/components/audio.js +0 -141
  38. package/dist/components/audio.js.map +0 -1
  39. package/dist/components/cloud.d.ts +0 -13
  40. package/dist/components/cloud.js +0 -31
  41. package/dist/components/cloud.js.map +0 -1
  42. package/dist/components/component.d.ts +0 -227
  43. package/dist/components/component.js +0 -912
  44. package/dist/components/component.js.map +0 -1
  45. package/dist/components/container-abstract.d.ts +0 -51
  46. package/dist/components/container-abstract.js +0 -372
  47. package/dist/components/container-abstract.js.map +0 -1
  48. package/dist/components/container.d.ts +0 -38
  49. package/dist/components/container.js +0 -75
  50. package/dist/components/container.js.map +0 -1
  51. package/dist/components/data/data-mapping.d.ts +0 -16
  52. package/dist/components/data/data.d.ts +0 -8
  53. package/dist/components/data/evaluator.d.ts +0 -1
  54. package/dist/components/donut.d.ts +0 -15
  55. package/dist/components/donut.js +0 -74
  56. package/dist/components/donut.js.map +0 -1
  57. package/dist/components/drawer/draw-image-pendable.d.ts +0 -1
  58. package/dist/components/drawer/effect.d.ts +0 -1
  59. package/dist/components/drawer/fill.d.ts +0 -14
  60. package/dist/components/drawer/format.d.ts +0 -1
  61. package/dist/components/drawer/line.d.ts +0 -3
  62. package/dist/components/drawer/stroke.d.ts +0 -1
  63. package/dist/components/drawer/text-wrapper.d.ts +0 -10
  64. package/dist/components/drawer/text.d.ts +0 -3
  65. package/dist/components/ellipse.d.ts +0 -35
  66. package/dist/components/ellipse.js +0 -99
  67. package/dist/components/ellipse.js.map +0 -1
  68. package/dist/components/file/ondropfile.d.ts +0 -1
  69. package/dist/components/fit/fit.d.ts +0 -15
  70. package/dist/components/geometry/transcoord.d.ts +0 -41
  71. package/dist/components/geometry/union.d.ts +0 -6
  72. package/dist/components/gif-view.d.ts +0 -18
  73. package/dist/components/gif-view.js +0 -116
  74. package/dist/components/gif-view.js.map +0 -1
  75. package/dist/components/global-ref.d.ts +0 -36
  76. package/dist/components/global-ref.js +0 -128
  77. package/dist/components/global-ref.js.map +0 -1
  78. package/dist/components/group.d.ts +0 -15
  79. package/dist/components/group.js +0 -145
  80. package/dist/components/group.js.map +0 -1
  81. package/dist/components/html/elements.d.ts +0 -2
  82. package/dist/components/html/fill.d.ts +0 -1
  83. package/dist/components/html/reposition.d.ts +0 -1
  84. package/dist/components/html/shadow.d.ts +0 -1
  85. package/dist/components/html-overlay-container.d.ts +0 -27
  86. package/dist/components/html-overlay-container.js +0 -14
  87. package/dist/components/html-overlay-container.js.map +0 -1
  88. package/dist/components/html-overlay-element.d.ts +0 -25
  89. package/dist/components/html-overlay-element.js +0 -9
  90. package/dist/components/html-overlay-element.js.map +0 -1
  91. package/dist/components/image-view.d.ts +0 -19
  92. package/dist/components/image-view.js +0 -180
  93. package/dist/components/image-view.js.map +0 -1
  94. package/dist/components/index.d.ts +0 -32
  95. package/dist/components/index.js +0 -39
  96. package/dist/components/index.js.map +0 -1
  97. package/dist/components/info-window.d.ts +0 -41
  98. package/dist/components/info-window.js +0 -425
  99. package/dist/components/info-window.js.map +0 -1
  100. package/dist/components/line.d.ts +0 -91
  101. package/dist/components/line.js +0 -303
  102. package/dist/components/line.js.map +0 -1
  103. package/dist/components/local-ref.d.ts +0 -47
  104. package/dist/components/local-ref.js +0 -103
  105. package/dist/components/local-ref.js.map +0 -1
  106. package/dist/components/mixins/connectable.d.ts +0 -45
  107. package/dist/components/mixins/data-source.d.ts +0 -9
  108. package/dist/components/mixins/html-element.d.ts +0 -24
  109. package/dist/components/mixins/move-handle.d.ts +0 -11
  110. package/dist/components/mixins/rect-path.d.ts +0 -13
  111. package/dist/components/mixins/value-holder.d.ts +0 -18
  112. package/dist/components/mutater/bounds.d.ts +0 -10
  113. package/dist/components/mutater/path.d.ts +0 -5
  114. package/dist/components/ortholine.d.ts +0 -21
  115. package/dist/components/ortholine.js +0 -814
  116. package/dist/components/ortholine.js.map +0 -1
  117. package/dist/components/outline/ellipse-outline.d.ts +0 -4
  118. package/dist/components/outline/ellipse-outline.js +0 -11
  119. package/dist/components/outline/ellipse-outline.js.map +0 -1
  120. package/dist/components/outline/path-outline.d.ts +0 -1
  121. package/dist/components/path.d.ts +0 -5
  122. package/dist/components/path.js +0 -40
  123. package/dist/components/path.js.map +0 -1
  124. package/dist/components/polygon.d.ts +0 -40
  125. package/dist/components/polygon.js +0 -157
  126. package/dist/components/polygon.js.map +0 -1
  127. package/dist/components/polyline.d.ts +0 -18
  128. package/dist/components/polyline.js +0 -102
  129. package/dist/components/polyline.js.map +0 -1
  130. package/dist/components/popup.d.ts +0 -48
  131. package/dist/components/popup.js +0 -138
  132. package/dist/components/popup.js.map +0 -1
  133. package/dist/components/rect.d.ts +0 -26
  134. package/dist/components/rect.js +0 -91
  135. package/dist/components/rect.js.map +0 -1
  136. package/dist/components/retention/retention-manager.d.ts +0 -8
  137. package/dist/components/root-container.d.ts +0 -90
  138. package/dist/components/root-container.js +0 -478
  139. package/dist/components/root-container.js.map +0 -1
  140. package/dist/components/ruler.d.ts +0 -16
  141. package/dist/components/ruler.js +0 -77
  142. package/dist/components/ruler.js.map +0 -1
  143. package/dist/components/shape.d.ts +0 -25
  144. package/dist/components/shape.js +0 -80
  145. package/dist/components/shape.js.map +0 -1
  146. package/dist/components/star.d.ts +0 -13
  147. package/dist/components/star.js +0 -80
  148. package/dist/components/star.js.map +0 -1
  149. package/dist/components/text/substitutor.d.ts +0 -3
  150. package/dist/components/text.d.ts +0 -8
  151. package/dist/components/text.js +0 -15
  152. package/dist/components/text.js.map +0 -1
  153. package/dist/components/three-container.d.ts +0 -60
  154. package/dist/components/three-container.js +0 -515
  155. package/dist/components/three-container.js.map +0 -1
  156. package/dist/components/triangle.d.ts +0 -15
  157. package/dist/components/triangle.js +0 -76
  158. package/dist/components/triangle.js.map +0 -1
  159. package/dist/const.d.ts +0 -39
  160. package/dist/core/collection.d.ts +0 -8
  161. package/dist/core/debug.d.ts +0 -1
  162. package/dist/core/deep-equals.d.ts +0 -1
  163. package/dist/core/dom-to-image.d.ts +0 -127
  164. package/dist/core/event.d.ts +0 -92
  165. package/dist/core/index.d.ts +0 -2
  166. package/dist/core/list.d.ts +0 -32
  167. package/dist/core/logger.d.ts +0 -3
  168. package/dist/core/memoize.d.ts +0 -6
  169. package/dist/core/mixin.d.ts +0 -1
  170. package/dist/core/obj-accessor.d.ts +0 -1
  171. package/dist/core/reference-map.d.ts +0 -14
  172. package/dist/core/round-rect.d.ts +0 -19
  173. package/dist/core/script-loader.d.ts +0 -3
  174. package/dist/core/snapshot-taker.d.ts +0 -12
  175. package/dist/core/stack.d.ts +0 -2
  176. package/dist/core/timecapsule.d.ts +0 -18
  177. package/dist/core/utils.d.ts +0 -9
  178. package/dist/decorator/anchors-decorator.d.ts +0 -31
  179. package/dist/decorator/data-spread-decorator.d.ts +0 -1
  180. package/dist/decorator/decotag-decorator.d.ts +0 -1
  181. package/dist/decorator/index.d.ts +0 -2
  182. package/dist/decorator/link-decorator.d.ts +0 -1
  183. package/dist/effect/gradation.d.ts +0 -1
  184. package/dist/effect/index.d.ts +0 -1
  185. package/dist/effect/shadow.d.ts +0 -2
  186. package/dist/effect/turn.d.ts +0 -1
  187. package/dist/event/event-engine.d.ts +0 -12
  188. package/dist/event/event-pump.d.ts +0 -11
  189. package/dist/event/event-tracker.d.ts +0 -21
  190. package/dist/event/index.d.ts +0 -2
  191. package/dist/event/ua-event-handler.d.ts +0 -32
  192. package/dist/event-map/event-map.d.ts +0 -9
  193. package/dist/event-map/index.d.ts +0 -1
  194. package/dist/event-map/move-handler.d.ts +0 -1
  195. package/dist/event-map/text-editor-lite.d.ts +0 -1
  196. package/dist/index.d.ts +0 -1
  197. package/dist/index.js +0 -3
  198. package/dist/index.js.map +0 -1
  199. package/dist/layer/action/emphasize.d.ts +0 -2
  200. package/dist/layer/action/popup.d.ts +0 -5
  201. package/dist/layer/action/pressed.d.ts +0 -2
  202. package/dist/layer/add-layer.d.ts +0 -42
  203. package/dist/layer/add-layer.js +0 -142
  204. package/dist/layer/add-layer.js.map +0 -1
  205. package/dist/layer/decotag-layer.d.ts +0 -27
  206. package/dist/layer/decotag-layer.js +0 -105
  207. package/dist/layer/decotag-layer.js.map +0 -1
  208. package/dist/layer/guide-layer.d.ts +0 -44
  209. package/dist/layer/guide-layer.js +0 -261
  210. package/dist/layer/guide-layer.js.map +0 -1
  211. package/dist/layer/index.d.ts +0 -7
  212. package/dist/layer/index.js +0 -11
  213. package/dist/layer/index.js.map +0 -1
  214. package/dist/layer/layer.d.ts +0 -32
  215. package/dist/layer/layer.js +0 -155
  216. package/dist/layer/layer.js.map +0 -1
  217. package/dist/layer/model-layer.d.ts +0 -46
  218. package/dist/layer/model-layer.js +0 -402
  219. package/dist/layer/model-layer.js.map +0 -1
  220. package/dist/layer/modeler/anchor-handler.d.ts +0 -36
  221. package/dist/layer/modeler/control-handler.d.ts +0 -18
  222. package/dist/layer/modeler/focus-outline.d.ts +0 -5
  223. package/dist/layer/modeler/group-outline.d.ts +0 -5
  224. package/dist/layer/modeler/index.d.ts +0 -7
  225. package/dist/layer/modeler/path-handler.d.ts +0 -22
  226. package/dist/layer/modeler/resizer.d.ts +0 -13
  227. package/dist/layer/modeler/rotator.d.ts +0 -15
  228. package/dist/layer/modeler/rotator.js +0 -120
  229. package/dist/layer/modeler/rotator.js.map +0 -1
  230. package/dist/layer/modeling-layer.d.ts +0 -66
  231. package/dist/layer/modeling-layer.js +0 -451
  232. package/dist/layer/modeling-layer.js.map +0 -1
  233. package/dist/layer/selection/selected-finder.d.ts +0 -1
  234. package/dist/layer/selection-layer.d.ts +0 -42
  235. package/dist/layer/selection-layer.js +0 -307
  236. package/dist/layer/selection-layer.js.map +0 -1
  237. package/dist/layer/shift-layer.d.ts +0 -18
  238. package/dist/layer/shift-layer.js +0 -61
  239. package/dist/layer/shift-layer.js.map +0 -1
  240. package/dist/layout/absolute.d.ts +0 -8
  241. package/dist/layout/card.d.ts +0 -7
  242. package/dist/layout/html-absolute.d.ts +0 -8
  243. package/dist/layout/index.d.ts +0 -8
  244. package/dist/layout/index.js +0 -12
  245. package/dist/layout/index.js.map +0 -1
  246. package/dist/layout/layout.d.ts +0 -11
  247. package/dist/layout/linear-horizontal.d.ts +0 -7
  248. package/dist/layout/linear-vertical.d.ts +0 -7
  249. package/dist/layout/table.d.ts +0 -9
  250. package/dist/layout/three.d.ts +0 -8
  251. package/dist/layout/three.js +0 -20
  252. package/dist/layout/three.js.map +0 -1
  253. package/dist/license/license.d.ts +0 -18
  254. package/dist/model/compile.d.ts +0 -1
  255. package/dist/model/compile.js +0 -28
  256. package/dist/model/compile.js.map +0 -1
  257. package/dist/model/duplicate.d.ts +0 -1
  258. package/dist/model/index.d.ts +0 -3
  259. package/dist/model/selector.d.ts +0 -2
  260. package/dist/style/compile.d.ts +0 -1
  261. package/dist/style/index.d.ts +0 -1
  262. package/dist/things-scene/api/add-start.d.ts +0 -1
  263. package/dist/things-scene/api/add.d.ts +0 -5
  264. package/dist/things-scene/api/align.d.ts +0 -1
  265. package/dist/things-scene/api/change.d.ts +0 -2
  266. package/dist/things-scene/api/clipboard.d.ts +0 -3
  267. package/dist/things-scene/api/distribute.d.ts +0 -1
  268. package/dist/things-scene/api/duplicate.d.ts +0 -4
  269. package/dist/things-scene/api/fullscreen.d.ts +0 -1
  270. package/dist/things-scene/api/group.d.ts +0 -8
  271. package/dist/things-scene/api/group.js +0 -78
  272. package/dist/things-scene/api/group.js.map +0 -1
  273. package/dist/things-scene/api/ids.d.ts +0 -4
  274. package/dist/things-scene/api/index.d.ts +0 -15
  275. package/dist/things-scene/api/listener.d.ts +0 -3
  276. package/dist/things-scene/api/remove.d.ts +0 -4
  277. package/dist/things-scene/api/symmetry.d.ts +0 -2
  278. package/dist/things-scene/api/symmetry.js +0 -39
  279. package/dist/things-scene/api/symmetry.js.map +0 -1
  280. package/dist/things-scene/api/to-data-url.d.ts +0 -1
  281. package/dist/things-scene/api/to-data-url.js +0 -69
  282. package/dist/things-scene/api/to-data-url.js.map +0 -1
  283. package/dist/things-scene/api/zorder.d.ts +0 -2
  284. package/dist/things-scene/application-context.d.ts +0 -40
  285. package/dist/things-scene/config.d.ts +0 -4
  286. package/dist/things-scene/create.d.ts +0 -20
  287. package/dist/things-scene/fps.d.ts +0 -1
  288. package/dist/things-scene/index.d.ts +0 -17
  289. package/dist/things-scene/index.js +0 -23
  290. package/dist/things-scene/index.js.map +0 -1
  291. package/dist/things-scene/polyfill.d.ts +0 -2
  292. package/dist/things-scene/scene.d.ts +0 -155
  293. package/dist/things-scene/version.d.ts +0 -2
  294. package/dist/threed/common.d.ts +0 -22
  295. package/dist/threed/control/three-controls.d.ts +0 -11
  296. package/dist/threed/control/three-controls.js +0 -620
  297. package/dist/threed/control/three-controls.js.map +0 -1
  298. package/dist/threed/html/elements.d.ts +0 -2
  299. package/dist/threed/real-object-camera-meshed.d.ts +0 -12
  300. package/dist/threed/real-object-camera-meshed.js +0 -49
  301. package/dist/threed/real-object-camera-meshed.js.map +0 -1
  302. package/dist/threed/real-object-camera.d.ts +0 -9
  303. package/dist/threed/real-object-camera.js +0 -31
  304. package/dist/threed/real-object-camera.js.map +0 -1
  305. package/dist/threed/real-object-dom-element.d.ts +0 -20
  306. package/dist/threed/real-object-dom-element.js +0 -78
  307. package/dist/threed/real-object-dom-element.js.map +0 -1
  308. package/dist/threed/real-object-dummy.d.ts +0 -6
  309. package/dist/threed/real-object-dummy.js +0 -11
  310. package/dist/threed/real-object-dummy.js.map +0 -1
  311. package/dist/threed/real-object-extrude.d.ts +0 -19
  312. package/dist/threed/real-object-extrude.js +0 -171
  313. package/dist/threed/real-object-extrude.js.map +0 -1
  314. package/dist/threed/real-object-gltf.d.ts +0 -15
  315. package/dist/threed/real-object-gltf.js +0 -97
  316. package/dist/threed/real-object-gltf.js.map +0 -1
  317. package/dist/threed/real-object-group.d.ts +0 -5
  318. package/dist/threed/real-object-group.js +0 -11
  319. package/dist/threed/real-object-group.js.map +0 -1
  320. package/dist/threed/real-object-mesh.d.ts +0 -11
  321. package/dist/threed/real-object-mesh.js +0 -55
  322. package/dist/threed/real-object-mesh.js.map +0 -1
  323. package/dist/threed/real-object-plane.d.ts +0 -6
  324. package/dist/threed/real-object-plane.js +0 -23
  325. package/dist/threed/real-object-plane.js.map +0 -1
  326. package/dist/threed/real-object-scene.d.ts +0 -21
  327. package/dist/threed/real-object-scene.js +0 -89
  328. package/dist/threed/real-object-scene.js.map +0 -1
  329. package/dist/threed/real-object-sprite.d.ts +0 -12
  330. package/dist/threed/real-object-sprite.js +0 -35
  331. package/dist/threed/real-object-sprite.js.map +0 -1
  332. package/dist/threed/real-object-text.d.ts +0 -16
  333. package/dist/threed/real-object-text.js +0 -70
  334. package/dist/threed/real-object-text.js.map +0 -1
  335. package/dist/threed/real-object.d.ts +0 -48
  336. package/dist/threed/real-object.js +0 -199
  337. package/dist/threed/real-object.js.map +0 -1
  338. package/dist/threed/texture/text-texture.d.ts +0 -8
  339. package/dist/threed/three-dimensional-container.d.ts +0 -7
  340. package/dist/threed/three-dimensional-container.js +0 -2
  341. package/dist/threed/three-dimensional-container.js.map +0 -1
  342. package/dist/threed/utils/bound-uv-generator.d.ts +0 -16
  343. package/dist/types.d.ts +0 -53
  344. package/dist/types.js +0 -368
  345. package/dist/types.js.map +0 -1
  346. package/rollup.config.js +0 -40
  347. package/schema.graphql +0 -4557
  348. package/src/index.js +0 -5
  349. package/things-board.js +0 -9
  350. package/things-scene-ie.js +0 -2
  351. package/things-scene-ie.js.LICENSE.txt +0 -15
  352. package/things-scene-min.js.LICENSE.txt +0 -15
  353. package/tsconfig.json +0 -9
@@ -1,97 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import * as THREE from 'three';
5
- import RealObject from './real-object';
6
- import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
7
- import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader';
8
- import { KTX2Loader } from 'three/examples/jsm/loaders/KTX2Loader';
9
- /* @ts-ignore */
10
- import { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js';
11
- import { error } from '../core/logger';
12
- export default class RealObjectGLTF extends RealObject {
13
- constructor() {
14
- super(...arguments);
15
- this.objectSize = new THREE.Vector3();
16
- }
17
- static get GLTFLoader() {
18
- return RealObjectGLTF._GLTFLoader;
19
- }
20
- build() {
21
- super.build();
22
- var { src } = this.component.state;
23
- if (!src) {
24
- this.clear();
25
- return;
26
- }
27
- let gltfLoader = new GLTFLoader();
28
- // Optional: Provide a DRACOLoader instance to decode compressed mesh data
29
- const dracoLoader = new DRACOLoader();
30
- dracoLoader.setDecoderPath('/node_modules/three/examples/jsm/libs/draco/');
31
- gltfLoader.setDRACOLoader(dracoLoader);
32
- const ktx2Loader = new KTX2Loader();
33
- ktx2Loader.setTranscoderPath(`/node_modules/three/examples/jsm/libs/basis/`);
34
- ktx2Loader.detectSupport(this.threeContainer.renderer3d);
35
- gltfLoader.setKTX2Loader(ktx2Loader);
36
- gltfLoader.setMeshoptDecoder(MeshoptDecoder);
37
- var fullSrc = this.component.app.url(src);
38
- gltfLoader.setCrossOrigin('use-credentials');
39
- gltfLoader.load(fullSrc, gltf => {
40
- this.gltfLoaded(gltf);
41
- }, xhr => {
42
- console.log(Math.round((xhr.loaded / xhr.total) * 100) + '% loaded');
43
- }, err => {
44
- error('GLTFLoader.load', err);
45
- this.clear();
46
- });
47
- }
48
- gltfLoaded(gltf) {
49
- let scene = gltf.scene;
50
- var animations = gltf.animations;
51
- var object = scene.clone();
52
- object.traverse((child) => {
53
- if (child.isMesh) {
54
- child.castShadow = true;
55
- }
56
- });
57
- var boundingBox = new THREE.Box3().setFromObject(object);
58
- var center = boundingBox.getCenter(object.position);
59
- this.objectSize = boundingBox.getSize(this.objectSize);
60
- center.multiplyScalar(-1);
61
- // 오브젝트 공백을 최소로 하기위해서 clear() 를 최대한 pending함.
62
- this.clear();
63
- this.pivot = new THREE.Object3D();
64
- this.object3d.add(this.pivot);
65
- this.pivot.add(object);
66
- this._rescale();
67
- if (animations && animations.length) {
68
- for (var i = 0; i < animations.length; i++) {
69
- var animation = animations[i];
70
- var action = this.threeContainer.mixer.clipAction(animation);
71
- action.play();
72
- }
73
- }
74
- else {
75
- console.log('no animations..');
76
- }
77
- }
78
- clear() {
79
- // TODO gltf object 리소스 해제가 필요하면, 여기에 추가.
80
- // 반복적으로 로딩하면 WebGL 리소스 부족으로 오류 발생.
81
- return super.clear();
82
- }
83
- _rescale() {
84
- var { width = 1, height = 1, depth = 1 } = this.component.state;
85
- var { x = 1, y = 1, z = 1 } = this.objectSize || {};
86
- this.pivot && this.pivot.scale.set(width / x, depth / y, height / z);
87
- this.component.invalidate();
88
- }
89
- updateDimension() {
90
- this._rescale();
91
- }
92
- get rebuildingProperties() {
93
- return ['fillStyle', 'lineStyle', 'text'];
94
- }
95
- }
96
- RealObjectGLTF._GLTFLoader = new GLTFLoader();
97
- //# sourceMappingURL=real-object-gltf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-object-gltf.js","sourceRoot":"","sources":["../../src/threed/real-object-gltf.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,UAAU,MAAM,eAAe,CAAA;AAEtC,OAAO,EAAQ,UAAU,EAAE,MAAM,0CAA0C,CAAA;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAA;AAClE,gBAAgB;AAChB,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAA;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEtC,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,UAAU;IAAtD;;QAIU,eAAU,GAAmB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAA;IA8G1D,CAAC;IA5GC,MAAM,KAAK,UAAU;QACnB,OAAO,cAAc,CAAC,WAAW,CAAA;IACnC,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAElC,IAAI,CAAC,GAAG,EAAE;YACR,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,OAAM;SACP;QAED,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QAEjC,0EAA0E;QAC1E,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;QACrC,WAAW,CAAC,cAAc,CAAC,8CAA8C,CAAC,CAAA;QAC1E,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAEtC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QACnC,UAAU,CAAC,iBAAiB,CAAC,8CAA8C,CAAC,CAAA;QAC5E,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAe,CAAC,UAAW,CAAC,CAAA;QAC1D,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QAEpC,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAA;QAE5C,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACzC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAA;QAE5C,UAAU,CAAC,IAAI,CACb,OAAO,EACP,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC,EACD,GAAG,CAAC,EAAE;YACJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC,CAAA;QACtE,CAAC,EACD,GAAG,CAAC,EAAE;YACJ,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAA;YAC7B,IAAI,CAAC,KAAK,EAAE,CAAA;QACd,CAAC,CACF,CAAA;IACH,CAAC;IAEO,UAAU,CAAC,IAAU;QAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QAEtB,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAChC,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAE1B,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAqB,EAAE,EAAE;YACxC,IAAK,KAAa,CAAC,MAAM,EAAE;gBACzB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAA;aACxB;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QACxD,IAAI,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACnD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAW,CAAC,CAAA;QAEvD,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;QAEzB,6CAA6C;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAA;QAEZ,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;QACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEtB,IAAI,CAAC,QAAQ,EAAE,CAAA;QAEf,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;gBAC7B,IAAI,MAAM,GAAG,IAAI,CAAC,cAAe,CAAC,KAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;gBAC9D,MAAM,CAAC,IAAI,EAAE,CAAA;aACd;SACF;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;SAC/B;IACH,CAAC;IAED,KAAK;QACH,yCAAyC;QACzC,mCAAmC;QAEnC,OAAO,KAAK,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;IAED,QAAQ;QACN,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE/D,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAA;QAEnD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;QAEpE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAA;IAC7B,CAAC;IAED,eAAe;QACb,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjB,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;IAC3C,CAAC;;AAhHc,0BAAW,GAAG,IAAI,UAAU,EAAE,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\n\nimport RealObject from './real-object'\n\nimport { GLTF, GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'\nimport { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader'\nimport { KTX2Loader } from 'three/examples/jsm/loaders/KTX2Loader'\n/* @ts-ignore */\nimport { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js'\nimport { error } from '../core/logger'\n\nexport default class RealObjectGLTF extends RealObject {\n private static _GLTFLoader = new GLTFLoader()\n\n private pivot?: THREE.Object3D\n private objectSize?: THREE.Vector3 = new THREE.Vector3()\n\n static get GLTFLoader() {\n return RealObjectGLTF._GLTFLoader\n }\n\n build() {\n super.build()\n\n var { src } = this.component.state\n\n if (!src) {\n this.clear()\n return\n }\n\n let gltfLoader = new GLTFLoader()\n\n // Optional: Provide a DRACOLoader instance to decode compressed mesh data\n const dracoLoader = new DRACOLoader()\n dracoLoader.setDecoderPath('/node_modules/three/examples/jsm/libs/draco/')\n gltfLoader.setDRACOLoader(dracoLoader)\n\n const ktx2Loader = new KTX2Loader()\n ktx2Loader.setTranscoderPath(`/node_modules/three/examples/jsm/libs/basis/`)\n ktx2Loader.detectSupport(this.threeContainer!.renderer3d!)\n gltfLoader.setKTX2Loader(ktx2Loader)\n\n gltfLoader.setMeshoptDecoder(MeshoptDecoder)\n\n var fullSrc = this.component.app.url(src)\n gltfLoader.setCrossOrigin('use-credentials')\n\n gltfLoader.load(\n fullSrc,\n gltf => {\n this.gltfLoaded(gltf)\n },\n xhr => {\n console.log(Math.round((xhr.loaded / xhr.total) * 100) + '% loaded')\n },\n err => {\n error('GLTFLoader.load', err)\n this.clear()\n }\n )\n }\n\n private gltfLoaded(gltf: GLTF) {\n let scene = gltf.scene\n\n var animations = gltf.animations\n var object = scene.clone()\n\n object.traverse((child: THREE.Object3D) => {\n if ((child as any).isMesh) {\n child.castShadow = true\n }\n })\n\n var boundingBox = new THREE.Box3().setFromObject(object)\n var center = boundingBox.getCenter(object.position)\n this.objectSize = boundingBox.getSize(this.objectSize!)\n\n center.multiplyScalar(-1)\n\n // 오브젝트 공백을 최소로 하기위해서 clear() 를 최대한 pending함.\n this.clear()\n\n this.pivot = new THREE.Object3D()\n this.object3d.add(this.pivot)\n this.pivot.add(object)\n\n this._rescale()\n\n if (animations && animations.length) {\n for (var i = 0; i < animations.length; i++) {\n var animation = animations[i]\n var action = this.threeContainer!.mixer!.clipAction(animation)\n action.play()\n }\n } else {\n console.log('no animations..')\n }\n }\n\n clear() {\n // TODO gltf object 리소스 해제가 필요하면, 여기에 추가.\n // 반복적으로 로딩하면 WebGL 리소스 부족으로 오류 발생.\n\n return super.clear()\n }\n\n _rescale() {\n var { width = 1, height = 1, depth = 1 } = this.component.state\n\n var { x = 1, y = 1, z = 1 } = this.objectSize || {}\n\n this.pivot && this.pivot.scale.set(width / x, depth / y, height / z)\n\n this.component.invalidate()\n }\n\n updateDimension() {\n this._rescale()\n }\n\n get rebuildingProperties(): string[] {\n return ['fillStyle', 'lineStyle', 'text']\n }\n}\n"]}
@@ -1,5 +0,0 @@
1
- import * as THREE from 'three';
2
- import RealObject from './real-object';
3
- export default class RealObjectGroup extends RealObject<THREE.Group> {
4
- protected getObject3dInstance(): THREE.Group;
5
- }
@@ -1,11 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import * as THREE from 'three';
5
- import RealObject from './real-object';
6
- export default class RealObjectGroup extends RealObject {
7
- getObject3dInstance() {
8
- return new THREE.Group();
9
- }
10
- }
11
- //# sourceMappingURL=real-object-group.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-object-group.js","sourceRoot":"","sources":["../../src/threed/real-object-group.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,UAAU,MAAM,eAAe,CAAA;AAEtC,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAuB;IACxD,mBAAmB;QAC3B,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;CAyBF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport * as THREE from 'three'\nimport RealObject from './real-object'\n\nexport default class RealObjectGroup extends RealObject<THREE.Group> {\n protected getObject3dInstance() {\n return new THREE.Group()\n }\n\n // build() {\n // super.build()\n\n // var { left = 0, top = 0, width = 0, height = 0 } = this.component.bounds\n\n // let cx = left + width / 2 - canvasSize.width / 2\n // let cy = top + height / 2 - canvasSize.height / 2\n // // let cz = this.state.rx\n\n // this.object3d.position.x = cx\n // this.object3d.position.z = cy\n // }\n\n // createChildrenObject() {\n // var { components } = this._model\n\n // components.forEach((component: Model) => {\n // var item = component.realObject\n // if (item) {\n // this.object3d.add(item.object3d)\n // }\n // })\n // }\n}\n"]}
@@ -1,11 +0,0 @@
1
- import * as THREE from 'three';
2
- import RealObject from './real-object';
3
- export default abstract class RealObjectMesh extends RealObject<THREE.Mesh> {
4
- protected getObject3dInstance(): THREE.Mesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>;
5
- build(): void;
6
- updateAlpha(): void;
7
- updateHidden(): void;
8
- protected abstract buildGeometry(): THREE.BufferGeometry;
9
- buildMaterial(): THREE.Material;
10
- clear(): THREE.Mesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>;
11
- }
@@ -1,55 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import * as THREE from 'three';
5
- import { error } from '../core/logger';
6
- import { applyAlpha } from './common';
7
- import RealObject from './real-object';
8
- export default class RealObjectMesh extends RealObject {
9
- getObject3dInstance() {
10
- return new THREE.Mesh();
11
- }
12
- build() {
13
- super.build();
14
- this.object3d.geometry = this.buildGeometry();
15
- this.object3d.material = this.buildMaterial();
16
- }
17
- /* overide */
18
- updateAlpha() {
19
- var { alpha = 1, fillStyle } = this.component.state;
20
- applyAlpha(this.object3d.material, alpha, fillStyle);
21
- }
22
- updateHidden() {
23
- this.object3d.visible = !this.component.state.hidden;
24
- }
25
- buildMaterial() {
26
- var { fillStyle } = this.component.state;
27
- var params = {};
28
- if (typeof fillStyle == 'object') {
29
- params = {
30
- map: new THREE.TextureLoader(THREE.DefaultLoadingManager).load(fillStyle.image, () => {
31
- this.component.invalidate();
32
- }, e => {
33
- error(e);
34
- })
35
- };
36
- }
37
- else {
38
- params = {
39
- color: fillStyle || '#FFF'
40
- };
41
- }
42
- const material = new THREE.MeshLambertMaterial(params);
43
- return material;
44
- }
45
- clear() {
46
- this.object3d.traverse((mesh) => {
47
- if (mesh.isMesh) {
48
- mesh.geometry.dispose();
49
- (mesh.material.length ? mesh.material : [mesh.material]).forEach((m) => m.dispose && m.dispose());
50
- }
51
- });
52
- return super.clear();
53
- }
54
- }
55
- //# sourceMappingURL=real-object-mesh.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-object-mesh.js","sourceRoot":"","sources":["../../src/threed/real-object-mesh.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEtC,OAAO,EAAE,UAAU,EAA2C,MAAM,UAAU,CAAA;AAC9E,OAAO,UAAU,MAAM,eAAe,CAAA;AAEtC,MAAM,CAAC,OAAO,OAAgB,cAAe,SAAQ,UAAsB;IAC/D,mBAAmB;QAC3B,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,CAAA;IACzB,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;IAC/C,CAAC;IAED,aAAa;IAEb,WAAW;QACT,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAEnD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACtD,CAAC;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAA;IACtD,CAAC;IAID,aAAa;QACX,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAExC,IAAI,MAAM,GAAQ,EAAE,CAAA;QAEpB,IAAI,OAAO,SAAS,IAAI,QAAQ,EAAE;YAChC,MAAM,GAAG;gBACP,GAAG,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAC5D,SAAS,CAAC,KAAK,EACf,GAAG,EAAE;oBACH,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAA;gBAC7B,CAAC,EACD,CAAC,CAAC,EAAE;oBACF,KAAK,CAAC,CAAC,CAAC,CAAA;gBACV,CAAC,CACF;aACF,CAAA;SACF;aAAM;YACL,MAAM,GAAG;gBACP,KAAK,EAAE,SAAS,IAAI,MAAM;aAC3B,CAAA;SACF;QAED,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAA;QAEtD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAS,EAAE,EAAE;YACnC,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CACtB;gBAAA,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;aACxG;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,KAAK,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { error } from '../core/logger'\n\nimport { applyAlpha, UNIT_ROTATE, UNIT_SCALE, UNIT_TRANSLATE } from './common'\nimport RealObject from './real-object'\n\nexport default abstract class RealObjectMesh extends RealObject<THREE.Mesh> {\n protected getObject3dInstance() {\n return new THREE.Mesh()\n }\n\n build() {\n super.build()\n\n this.object3d.geometry = this.buildGeometry()\n this.object3d.material = this.buildMaterial()\n }\n\n /* overide */\n\n updateAlpha() {\n var { alpha = 1, fillStyle } = this.component.state\n\n applyAlpha(this.object3d.material, alpha, fillStyle)\n }\n\n updateHidden() {\n this.object3d.visible = !this.component.state.hidden\n }\n\n protected abstract buildGeometry(): THREE.BufferGeometry\n\n buildMaterial(): THREE.Material /* : THREE.MeshMaterialType | THREE.MeshMaterialType[] */ {\n var { fillStyle } = this.component.state\n\n var params: any = {}\n\n if (typeof fillStyle == 'object') {\n params = {\n map: new THREE.TextureLoader(THREE.DefaultLoadingManager).load(\n fillStyle.image,\n () => {\n this.component.invalidate()\n },\n e => {\n error(e)\n }\n )\n }\n } else {\n params = {\n color: fillStyle || '#FFF'\n }\n }\n\n const material = new THREE.MeshLambertMaterial(params)\n\n return material\n }\n\n clear() {\n this.object3d.traverse((mesh: any) => {\n if (mesh.isMesh) {\n mesh.geometry.dispose()\n ;(mesh.material.length ? mesh.material : [mesh.material]).forEach((m: any) => m.dispose && m.dispose())\n }\n })\n\n return super.clear()\n }\n}\n"]}
@@ -1,6 +0,0 @@
1
- import * as THREE from 'three';
2
- import RealObjectMesh from './real-object-mesh';
3
- export default class RealObjectPlane extends RealObjectMesh {
4
- buildGeometry(): THREE.PlaneGeometry;
5
- buildMaterial(): THREE.MeshBasicMaterial;
6
- }
@@ -1,23 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- /*
5
- Inspired by http://learningthreejs.com/blog/2013/04/30/closing-the-gap-between-html-and-webgl/
6
- */
7
- import * as THREE from 'three';
8
- import RealObjectMesh from './real-object-mesh';
9
- export default class RealObjectPlane extends RealObjectMesh {
10
- buildGeometry() {
11
- var { width, height } = this.component.state.dimension;
12
- return new THREE.PlaneGeometry(width, height);
13
- }
14
- buildMaterial() {
15
- var material = new THREE.MeshBasicMaterial();
16
- material.color.set('black');
17
- material.opacity = 0;
18
- material.side = THREE.DoubleSide;
19
- material.blending = THREE.NoBlending;
20
- return material;
21
- }
22
- }
23
- //# sourceMappingURL=real-object-plane.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-object-plane.js","sourceRoot":"","sources":["../../src/threed/real-object-plane.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;EAEE;AAEF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,cAAc,MAAM,oBAAoB,CAAA;AAE/C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,cAAc;IACzD,aAAa;QACX,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAA;QAEtD,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAED,aAAa;QACX,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAA;QAE5C,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC3B,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAA;QACpB,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAA;QAChC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAA;QAEpC,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\n/* \n Inspired by http://learningthreejs.com/blog/2013/04/30/closing-the-gap-between-html-and-webgl/\n*/\n\nimport * as THREE from 'three'\n\nimport RealObjectMesh from './real-object-mesh'\n\nexport default class RealObjectPlane extends RealObjectMesh {\n buildGeometry() {\n var { width, height } = this.component.state.dimension\n\n return new THREE.PlaneGeometry(width, height)\n }\n\n buildMaterial() /* : THREE.MeshMaterialType | THREE.MeshMaterialType[] */ {\n var material = new THREE.MeshBasicMaterial()\n\n material.color.set('black')\n material.opacity = 0\n material.side = THREE.DoubleSide\n material.blending = THREE.NoBlending\n\n return material\n }\n}\n"]}
@@ -1,21 +0,0 @@
1
- import * as THREE from 'three';
2
- import RealObject from './real-object';
3
- export default class RealObjectScene extends RealObject<THREE.Scene> {
4
- private _floor?;
5
- private _animationMixer?;
6
- protected getObject3dInstance(): THREE.Scene;
7
- dispose(): void;
8
- clear(): THREE.Scene;
9
- get floor(): THREE.Mesh;
10
- set floor(floor: THREE.Mesh);
11
- build(): void;
12
- updateTransform(): void;
13
- updateTransformReverse(): void;
14
- updateDimension(): void;
15
- updatePosition(): void;
16
- updateRotate(): void;
17
- updateScale(): void;
18
- updateAlpha(): void;
19
- updateHidden(): void;
20
- get animationMixer(): THREE.AnimationMixer;
21
- }
@@ -1,89 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import * as THREE from 'three';
5
- import { error } from '../core/logger';
6
- import RealObject from './real-object';
7
- export default class RealObjectScene extends RealObject {
8
- getObject3dInstance() {
9
- return new THREE.Scene();
10
- }
11
- dispose() {
12
- this.object3d.children.forEach(child => {
13
- ;
14
- child['dispose'] && child['dispose']();
15
- this.object3d.remove(child);
16
- });
17
- }
18
- clear() {
19
- if (this._floor) {
20
- this.object3d.remove(this._floor);
21
- if (this._floor.material instanceof Array) {
22
- ;
23
- this._floor.material.forEach(material => material.dispose());
24
- }
25
- else {
26
- this._floor.material.dispose();
27
- }
28
- this._floor.geometry.dispose();
29
- delete this._floor;
30
- }
31
- return super.clear();
32
- }
33
- get floor() {
34
- return this._floor;
35
- }
36
- set floor(floor) {
37
- var { width, height } = this.component.state;
38
- floor.scale.set(width, height, 1);
39
- floor.rotation.x = -Math.PI / 2;
40
- floor.position.y = 0;
41
- floor.name = 'floor';
42
- floor.receiveShadow = true;
43
- this.object3d.add(floor);
44
- this._floor = floor;
45
- this.component.invalidate();
46
- }
47
- build() {
48
- super.build();
49
- var { fillStyle } = this.component.state;
50
- if (!fillStyle || fillStyle == 'none') {
51
- return;
52
- }
53
- var floorGeometry = new THREE.PlaneGeometry();
54
- var floorMaterial;
55
- var side = THREE.DoubleSide;
56
- if (typeof fillStyle == 'object' && fillStyle.type == 'pattern' && fillStyle.image) {
57
- floorMaterial = new THREE.MeshBasicMaterial({
58
- map: new THREE.TextureLoader(THREE.DefaultLoadingManager).load(fillStyle.image, () => {
59
- this.component.invalidate();
60
- }, e => {
61
- error(e);
62
- }),
63
- side
64
- });
65
- }
66
- else if (typeof fillStyle == 'string') {
67
- floorMaterial = new THREE.MeshBasicMaterial({
68
- color: fillStyle,
69
- side
70
- });
71
- }
72
- this.floor = new THREE.Mesh(floorGeometry, floorMaterial);
73
- }
74
- updateTransform() { }
75
- updateTransformReverse() { }
76
- updateDimension() { }
77
- updatePosition() { }
78
- updateRotate() { }
79
- updateScale() { }
80
- updateAlpha() { }
81
- updateHidden() { }
82
- get animationMixer() {
83
- if (!this._animationMixer) {
84
- this._animationMixer = new THREE.AnimationMixer(this.object3d);
85
- }
86
- return this._animationMixer;
87
- }
88
- }
89
- //# sourceMappingURL=real-object-scene.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-object-scene.js","sourceRoot":"","sources":["../../src/threed/real-object-scene.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { error } from '../core/logger'\n\nimport RealObject from './real-object'\n\nexport default class RealObjectScene extends RealObject<THREE.Scene> {\n private _floor?: THREE.Mesh\n private _animationMixer?: THREE.AnimationMixer\n\n protected getObject3dInstance() {\n return new THREE.Scene()\n }\n\n dispose() {\n this.object3d.children.forEach(child => {\n ;(child as any)['dispose'] && (child as any)['dispose']()\n\n this.object3d.remove(child)\n })\n }\n\n clear() {\n if (this._floor) {\n this.object3d.remove(this._floor)\n\n if (this._floor.material instanceof Array) {\n ;(this._floor.material as THREE.Material[]).forEach(material => material.dispose())\n } else {\n this._floor.material.dispose()\n }\n this._floor.geometry.dispose()\n\n delete this._floor\n }\n\n return super.clear()\n }\n\n get floor(): THREE.Mesh {\n return this._floor!\n }\n\n set floor(floor: THREE.Mesh) {\n var { width, height } = this.component.state\n\n floor.scale.set(width, height, 1)\n floor.rotation.x = -Math.PI / 2\n floor.position.y = 0\n\n floor.name = 'floor'\n\n floor.receiveShadow = true\n\n this.object3d.add(floor)\n\n this._floor = floor\n\n this.component.invalidate()\n }\n\n build() {\n super.build()\n\n var { fillStyle } = this.component.state\n\n if (!fillStyle || fillStyle == 'none') {\n return\n }\n\n var floorGeometry = new THREE.PlaneGeometry()\n var floorMaterial\n var side = THREE.DoubleSide\n\n if (typeof fillStyle == 'object' && fillStyle.type == 'pattern' && fillStyle.image) {\n floorMaterial = new THREE.MeshBasicMaterial({\n map: new THREE.TextureLoader(THREE.DefaultLoadingManager).load(\n fillStyle.image,\n () => {\n this.component.invalidate()\n },\n e => {\n error(e)\n }\n ),\n side\n })\n } else if (typeof fillStyle == 'string') {\n floorMaterial = new THREE.MeshBasicMaterial({\n color: fillStyle,\n side\n })\n }\n\n this.floor = new THREE.Mesh(floorGeometry, floorMaterial)\n }\n\n updateTransform() {}\n updateTransformReverse() {}\n updateDimension() {}\n updatePosition() {}\n updateRotate() {}\n updateScale() {}\n updateAlpha() {}\n updateHidden() {}\n\n get animationMixer(): THREE.AnimationMixer {\n if (!this._animationMixer) {\n this._animationMixer = new THREE.AnimationMixer(this.object3d)\n }\n\n return this._animationMixer\n }\n}\n"]}
@@ -1,12 +0,0 @@
1
- import * as THREE from 'three';
2
- import RealObject from './real-object';
3
- export default abstract class RealObjectSprite extends RealObject<THREE.Sprite> {
4
- protected getObject3dInstance(): THREE.Sprite;
5
- build(): void;
6
- dispose(): void;
7
- updateDimension(): void;
8
- updateAlpha(): void;
9
- updateHidden(): void;
10
- abstract buildMaterial(): THREE.Material;
11
- clear(): THREE.Sprite;
12
- }
@@ -1,35 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import * as THREE from 'three';
5
- import { applyAlpha } from './common';
6
- import RealObject from './real-object';
7
- export default class RealObjectSprite extends RealObject {
8
- getObject3dInstance() {
9
- return new THREE.Sprite();
10
- }
11
- build() {
12
- super.build();
13
- this.object3d.material = this.buildMaterial();
14
- }
15
- dispose() {
16
- this.clear();
17
- }
18
- /* overide */
19
- updateDimension() {
20
- this.update();
21
- }
22
- updateAlpha() {
23
- var { alpha = 1, fillStyle } = this.component.state;
24
- applyAlpha(this.object3d.material, alpha, fillStyle);
25
- }
26
- updateHidden() {
27
- this.object3d.visible = !this.component.state.hidden;
28
- }
29
- clear() {
30
- this.object3d.material.dispose();
31
- this.geometry.dispose();
32
- return super.clear();
33
- }
34
- }
35
- //# sourceMappingURL=real-object-sprite.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-object-sprite.js","sourceRoot":"","sources":["../../src/threed/real-object-sprite.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,UAAU,MAAM,eAAe,CAAA;AAEtC,MAAM,CAAC,OAAO,OAAgB,gBAAiB,SAAQ,UAAwB;IACnE,mBAAmB;QAC3B,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAA0B,CAAA;IACvE,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED,aAAa;IACb,eAAe;QACb,IAAI,CAAC,MAAM,EAAE,CAAA;IACf,CAAC;IAED,WAAW;QACT,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAEnD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACtD,CAAC;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAA;IACtD,CAAC;IAID,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAC/B;QAAC,IAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;QAEjC,OAAO,KAAK,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\n\nimport { applyAlpha } from './common'\nimport RealObject from './real-object'\n\nexport default abstract class RealObjectSprite extends RealObject<THREE.Sprite> {\n protected getObject3dInstance() {\n return new THREE.Sprite()\n }\n\n build() {\n super.build()\n\n this.object3d.material = this.buildMaterial() as THREE.SpriteMaterial\n }\n\n dispose() {\n this.clear()\n }\n\n /* overide */\n updateDimension() {\n this.update()\n }\n\n updateAlpha() {\n var { alpha = 1, fillStyle } = this.component.state\n\n applyAlpha(this.object3d.material, alpha, fillStyle)\n }\n\n updateHidden() {\n this.object3d.visible = !this.component.state.hidden\n }\n\n abstract buildMaterial(): THREE.Material\n\n clear() {\n this.object3d.material.dispose()\n ;(this as any).geometry.dispose()\n\n return super.clear()\n }\n}\n"]}
@@ -1,16 +0,0 @@
1
- import RealObjectMesh from './real-object-mesh';
2
- import * as THREE from 'three';
3
- /**
4
- * RealObjectText
5
- */
6
- export default class RealObjectText extends RealObjectMesh {
7
- buildGeometry(): THREE.PlaneGeometry;
8
- buildMaterial(): THREE.MeshBasicMaterial;
9
- updateDimension(): void;
10
- get rotation(): {
11
- x: number;
12
- y: any;
13
- z: any;
14
- };
15
- updateAlpha(): void;
16
- }
@@ -1,70 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import RealObjectMesh from './real-object-mesh';
5
- import * as THREE from 'three';
6
- import { textTexture, textBounds } from './texture/text-texture';
7
- /**
8
- * RealObjectText
9
- */
10
- export default class RealObjectText extends RealObjectMesh {
11
- buildGeometry() {
12
- // TODO component.text의 heavy한 로직을 반복적으로 실행하지 않도록, 캐싱하자.
13
- var { bold = false, italic = false, fontFamily = 'Serif', fontSize = 10, fontColor = 'black' } = this.component.state;
14
- var text = this.component.text;
15
- let { width, height } = textBounds(text, {
16
- bold,
17
- italic,
18
- fontFamily,
19
- fontSize,
20
- fontColor
21
- });
22
- // FIXME
23
- // ;(this.component as any).dimension = {
24
- // width,
25
- // height,
26
- // depth: 1
27
- // }
28
- this.component.setState({
29
- width,
30
- depth: 1,
31
- height
32
- });
33
- return new THREE.PlaneGeometry(width, height);
34
- }
35
- buildMaterial() {
36
- var { width, height, bold = false, italic = false, fontFamily = 'Serif', fontSize = 10, fontColor = 'black' } = this.component.state;
37
- // TODO component.text의 heavy한 로직을 반복적으로 실행하지 않도록, 캐싱하자.
38
- var text = this.component.text;
39
- return new THREE.MeshBasicMaterial({
40
- map: textTexture(text, width, height, {
41
- bold,
42
- italic,
43
- fontFamily,
44
- fontSize,
45
- fontColor
46
- }),
47
- transparent: true,
48
- alphaTest: 0.2,
49
- side: THREE.DoubleSide
50
- });
51
- }
52
- /* overide */
53
- updateDimension() {
54
- // Intentionally do nothing
55
- }
56
- get rotation() {
57
- const { rotationX = 0, rotationY = 0, rotation = 0 } = this.component.state;
58
- return {
59
- x: rotationX - Math.PI / 2,
60
- y: rotationY,
61
- z: rotation
62
- };
63
- }
64
- updateAlpha() {
65
- // material의 transparency는 항상 true으로 유지되어야 한다.
66
- super.updateAlpha();
67
- this.object3d.material.transparent = true;
68
- }
69
- }
70
- //# sourceMappingURL=real-object-text.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-object-text.js","sourceRoot":"","sources":["../../src/threed/real-object-text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,cAAc,MAAM,oBAAoB,CAAA;AAE/C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEhE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,cAAc;IACxD,aAAa;QACX,wDAAwD;QACxD,IAAI,EACF,IAAI,GAAG,KAAK,EACZ,MAAM,GAAG,KAAK,EACd,UAAU,GAAG,OAAO,EACpB,QAAQ,GAAG,EAAE,EACb,SAAS,GAAG,OAAO,EACpB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAExB,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAA;QAC9B,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE;YACvC,IAAI;YACJ,MAAM;YACN,UAAU;YACV,QAAQ;YACR,SAAS;SACV,CAAC,CAAA;QAEF,QAAQ;QACR,yCAAyC;QACzC,WAAW;QACX,YAAY;QACZ,aAAa;QACb,IAAI;QACJ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YACtB,KAAK;YACL,KAAK,EAAE,CAAC;YACR,MAAM;SACP,CAAC,CAAA;QAEF,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAED,aAAa;QACX,IAAI,EACF,KAAK,EACL,MAAM,EACN,IAAI,GAAG,KAAK,EACZ,MAAM,GAAG,KAAK,EACd,UAAU,GAAG,OAAO,EACpB,QAAQ,GAAG,EAAE,EACb,SAAS,GAAG,OAAO,EACpB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAExB,wDAAwD;QACxD,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAA;QAE9B,OAAO,IAAI,KAAK,CAAC,iBAAiB,CAAC;YACjC,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;gBACpC,IAAI;gBACJ,MAAM;gBACN,UAAU;gBACV,QAAQ;gBACR,SAAS;aACV,CAAC;YACF,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,GAAG;YACd,IAAI,EAAE,KAAK,CAAC,UAAU;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,aAAa;IACb,eAAe;QACb,2BAA2B;IAC7B,CAAC;IAED,IAAI,QAAQ;QACV,MAAM,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE3E,OAAO;YACL,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;YAC1B,CAAC,EAAE,SAAS;YACZ,CAAC,EAAE,QAAQ;SACZ,CAAA;IACH,CAAC;IAED,WAAW;QACT,8CAA8C;QAC9C,KAAK,CAAC,WAAW,EAAE,CAClB;QAAC,IAAI,CAAC,QAAQ,CAAC,QAAgB,CAAC,WAAW,GAAG,IAAI,CAAA;IACrD,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport RealObjectMesh from './real-object-mesh'\n\nimport * as THREE from 'three'\n\nimport { textTexture, textBounds } from './texture/text-texture'\n\n/**\n * RealObjectText\n */\nexport default class RealObjectText extends RealObjectMesh {\n buildGeometry() {\n // TODO component.text의 heavy한 로직을 반복적으로 실행하지 않도록, 캐싱하자.\n var {\n bold = false,\n italic = false,\n fontFamily = 'Serif',\n fontSize = 10,\n fontColor = 'black'\n } = this.component.state\n\n var text = this.component.text\n let { width, height } = textBounds(text, {\n bold,\n italic,\n fontFamily,\n fontSize,\n fontColor\n })\n\n // FIXME\n // ;(this.component as any).dimension = {\n // width,\n // height,\n // depth: 1\n // }\n this.component.setState({\n width,\n depth: 1,\n height\n })\n\n return new THREE.PlaneGeometry(width, height)\n }\n\n buildMaterial() {\n var {\n width,\n height,\n bold = false,\n italic = false,\n fontFamily = 'Serif',\n fontSize = 10,\n fontColor = 'black'\n } = this.component.state\n\n // TODO component.text의 heavy한 로직을 반복적으로 실행하지 않도록, 캐싱하자.\n var text = this.component.text\n\n return new THREE.MeshBasicMaterial({\n map: textTexture(text, width, height, {\n bold,\n italic,\n fontFamily,\n fontSize,\n fontColor\n }),\n transparent: true,\n alphaTest: 0.2,\n side: THREE.DoubleSide\n })\n }\n\n /* overide */\n updateDimension() {\n // Intentionally do nothing\n }\n\n get rotation() {\n const { rotationX = 0, rotationY = 0, rotation = 0 } = this.component.state\n\n return {\n x: rotationX - Math.PI / 2,\n y: rotationY,\n z: rotation\n }\n }\n\n updateAlpha() {\n // material의 transparency는 항상 true으로 유지되어야 한다.\n super.updateAlpha()\n ;(this.object3d.material as any).transparent = true\n }\n}\n"]}
@@ -1,48 +0,0 @@
1
- import { Component, Properties } from '@hatiolab/things-scene';
2
- import * as THREE from 'three';
3
- import { ThreeDimensionalContainer } from './three-dimensional-container';
4
- export default abstract class RealObject<T extends THREE.Object3D = THREE.Object3D> {
5
- protected _component: Component;
6
- object3d: T;
7
- constructor(component: Component);
8
- update(): void;
9
- protected getObject3dInstance(): T;
10
- build(): void;
11
- get component(): Component;
12
- get threeContainer(): ThreeDimensionalContainer | undefined;
13
- dispose(): void;
14
- clear(): T;
15
- /**
16
- * Component의 상태값의 변화를 Object3D에 반영 - translate, rotation, scale
17
- */
18
- updateTransform(): void;
19
- get position(): {
20
- x: number;
21
- y: any;
22
- z: number;
23
- };
24
- get rotation(): {
25
- x: any;
26
- y: any;
27
- z: any;
28
- };
29
- get scale(): {
30
- x: any;
31
- y: any;
32
- z: any;
33
- };
34
- get cx(): number;
35
- get cy(): number;
36
- get cz(): any;
37
- /**
38
- * Object3D 모델의 변화를 Component의 모델값에 반영
39
- */
40
- updatePosition(): void;
41
- updateRotate(): void;
42
- updateScale(): void;
43
- updateDimension(): void;
44
- updateAlpha(): void;
45
- updateHidden(): void;
46
- onchange(after: Properties, before: Properties): void;
47
- get rebuildingProperties(): string[];
48
- }