@hatiolab/things-scene 10.0.0-beta.14 → 10.0.0-beta.140

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 (482) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +56 -53
  3. package/dist-types/animation/animate.d.ts.map +1 -1
  4. package/dist-types/animation/animations/animation.d.ts +5 -3
  5. package/dist-types/animation/animations/animation.d.ts.map +1 -1
  6. package/dist-types/animation/animations/heartbeat.d.ts +0 -7
  7. package/dist-types/animation/animations/heartbeat.d.ts.map +1 -1
  8. package/dist-types/animation/animations/waypoint.d.ts +45 -4
  9. package/dist-types/animation/animations/waypoint.d.ts.map +1 -1
  10. package/dist-types/animation/interfaces.d.ts +1 -1
  11. package/dist-types/animation/interfaces.d.ts.map +1 -1
  12. package/dist-types/clock/frame-clock.d.ts +119 -0
  13. package/dist-types/clock/frame-clock.d.ts.map +1 -0
  14. package/dist-types/clock/index.d.ts +3 -0
  15. package/dist-types/clock/index.d.ts.map +1 -0
  16. package/dist-types/command/command-migrate.d.ts.map +1 -1
  17. package/dist-types/command/snapshot-commander.d.ts.map +1 -1
  18. package/dist-types/components/audio.d.ts +19 -12
  19. package/dist-types/components/audio.d.ts.map +1 -1
  20. package/dist-types/components/component-data.d.ts +24 -0
  21. package/dist-types/components/component-data.d.ts.map +1 -1
  22. package/dist-types/components/component-drawing.d.ts.map +1 -1
  23. package/dist-types/components/component-geometry.d.ts.map +1 -1
  24. package/dist-types/components/component-hierarchy.d.ts +1 -1
  25. package/dist-types/components/component-hierarchy.d.ts.map +1 -1
  26. package/dist-types/components/component.d.ts +123 -17
  27. package/dist-types/components/component.d.ts.map +1 -1
  28. package/dist-types/components/container-abstract.d.ts +74 -29
  29. package/dist-types/components/container-abstract.d.ts.map +1 -1
  30. package/dist-types/components/container.d.ts +19 -11
  31. package/dist-types/components/container.d.ts.map +1 -1
  32. package/dist-types/components/data/data.d.ts.map +1 -1
  33. package/dist-types/components/data/evaluator.d.ts +27 -0
  34. package/dist-types/components/data/evaluator.d.ts.map +1 -1
  35. package/dist-types/components/donut.d.ts.map +1 -1
  36. package/dist-types/components/drawer/fill.d.ts.map +1 -1
  37. package/dist-types/components/drawer/stroke.d.ts.map +1 -1
  38. package/dist-types/components/ellipse.d.ts +19 -12
  39. package/dist-types/components/ellipse.d.ts.map +1 -1
  40. package/dist-types/components/generic-placeholders.d.ts +294 -0
  41. package/dist-types/components/generic-placeholders.d.ts.map +1 -0
  42. package/dist-types/components/geometry/snap-guide.d.ts +45 -0
  43. package/dist-types/components/geometry/snap-guide.d.ts.map +1 -0
  44. package/dist-types/components/geometry/transcoord.d.ts.map +1 -1
  45. package/dist-types/components/global-ref.d.ts.map +1 -1
  46. package/dist-types/components/group.d.ts +2 -0
  47. package/dist-types/components/group.d.ts.map +1 -1
  48. package/dist-types/components/html/reposition.d.ts.map +1 -1
  49. package/dist-types/components/html/shadow.d.ts +33 -1
  50. package/dist-types/components/html/shadow.d.ts.map +1 -1
  51. package/dist-types/components/html-overlay-container.d.ts +19 -11
  52. package/dist-types/components/html-overlay-container.d.ts.map +1 -1
  53. package/dist-types/components/html-overlay-element.d.ts +38 -23
  54. package/dist-types/components/html-overlay-element.d.ts.map +1 -1
  55. package/dist-types/components/image-view.d.ts +19 -12
  56. package/dist-types/components/image-view.d.ts.map +1 -1
  57. package/dist-types/components/index.d.ts +7 -0
  58. package/dist-types/components/index.d.ts.map +1 -1
  59. package/dist-types/components/info-window.d.ts +19 -12
  60. package/dist-types/components/info-window.d.ts.map +1 -1
  61. package/dist-types/components/line.d.ts +2 -1
  62. package/dist-types/components/line.d.ts.map +1 -1
  63. package/dist-types/components/local-ref.d.ts +19 -12
  64. package/dist-types/components/local-ref.d.ts.map +1 -1
  65. package/dist-types/components/mixins/connectable.d.ts +19 -12
  66. package/dist-types/components/mixins/connectable.d.ts.map +1 -1
  67. package/dist-types/components/mixins/data-source.d.ts +19 -12
  68. package/dist-types/components/mixins/data-source.d.ts.map +1 -1
  69. package/dist-types/components/mixins/gltf-component.d.ts +282 -0
  70. package/dist-types/components/mixins/gltf-component.d.ts.map +1 -0
  71. package/dist-types/components/mixins/holdable.d.ts +12 -0
  72. package/dist-types/components/mixins/holdable.d.ts.map +1 -0
  73. package/dist-types/components/mixins/html-element.d.ts +28 -11
  74. package/dist-types/components/mixins/html-element.d.ts.map +1 -1
  75. package/dist-types/components/mixins/move-handle.d.ts +28 -16
  76. package/dist-types/components/mixins/move-handle.d.ts.map +1 -1
  77. package/dist-types/components/mixins/rect-path.d.ts +19 -12
  78. package/dist-types/components/mixins/rect-path.d.ts.map +1 -1
  79. package/dist-types/components/mixins/three-d-only.d.ts +256 -0
  80. package/dist-types/components/mixins/three-d-only.d.ts.map +1 -0
  81. package/dist-types/components/mixins/value-holder.d.ts +19 -12
  82. package/dist-types/components/mixins/value-holder.d.ts.map +1 -1
  83. package/dist-types/components/modeling-faint.d.ts +14 -0
  84. package/dist-types/components/modeling-faint.d.ts.map +1 -0
  85. package/dist-types/components/mutater/path.d.ts.map +1 -1
  86. package/dist-types/components/node.d.ts +19 -12
  87. package/dist-types/components/node.d.ts.map +1 -1
  88. package/dist-types/components/outline/path-outline.d.ts.map +1 -1
  89. package/dist-types/components/polygon-container.d.ts +61 -0
  90. package/dist-types/components/polygon-container.d.ts.map +1 -0
  91. package/dist-types/components/polygon.d.ts +2 -0
  92. package/dist-types/components/polygon.d.ts.map +1 -1
  93. package/dist-types/components/polyline.d.ts +6 -0
  94. package/dist-types/components/polyline.d.ts.map +1 -1
  95. package/dist-types/components/popup-container.d.ts +25 -0
  96. package/dist-types/components/popup-container.d.ts.map +1 -0
  97. package/dist-types/components/popup.d.ts +49 -12
  98. package/dist-types/components/popup.d.ts.map +1 -1
  99. package/dist-types/components/position/popup-position.d.ts +11 -0
  100. package/dist-types/components/position/popup-position.d.ts.map +1 -1
  101. package/dist-types/components/rect.d.ts +38 -24
  102. package/dist-types/components/rect.d.ts.map +1 -1
  103. package/dist-types/components/retention/retention-manager.d.ts +9 -1
  104. package/dist-types/components/retention/retention-manager.d.ts.map +1 -1
  105. package/dist-types/components/root-container.d.ts +18 -4
  106. package/dist-types/components/root-container.d.ts.map +1 -1
  107. package/dist-types/components/ruler.d.ts +19 -12
  108. package/dist-types/components/ruler.d.ts.map +1 -1
  109. package/dist-types/components/service-component.d.ts +271 -0
  110. package/dist-types/components/service-component.d.ts.map +1 -0
  111. package/dist-types/components/shape.d.ts.map +1 -1
  112. package/dist-types/components/star.d.ts.map +1 -1
  113. package/dist-types/components/text.d.ts +19 -12
  114. package/dist-types/components/text.d.ts.map +1 -1
  115. package/dist-types/core/dom-to-image.d.ts.map +1 -1
  116. package/dist-types/core/logger.d.ts.map +1 -1
  117. package/dist-types/core/memoize.d.ts.map +1 -1
  118. package/dist-types/decorator/decorator-registry.d.ts +14 -1
  119. package/dist-types/decorator/decorator-registry.d.ts.map +1 -1
  120. package/dist-types/decorator/decorators/animated-icon-decorator.d.ts.map +1 -1
  121. package/dist-types/decorator/decorators/border-highlighting-decorator.d.ts +0 -4
  122. package/dist-types/decorator/decorators/border-highlighting-decorator.d.ts.map +1 -1
  123. package/dist-types/decorator/decorators/bouncing-arrow-decorator.d.ts +0 -3
  124. package/dist-types/decorator/decorators/bouncing-arrow-decorator.d.ts.map +1 -1
  125. package/dist-types/decorator/decorators/data-spread-decorator.d.ts +16 -0
  126. package/dist-types/decorator/decorators/data-spread-decorator.d.ts.map +1 -1
  127. package/dist-types/diagnostics/contract-inspector.d.ts +110 -0
  128. package/dist-types/diagnostics/contract-inspector.d.ts.map +1 -0
  129. package/dist-types/diagnostics/data-lag-tracker.d.ts +50 -0
  130. package/dist-types/diagnostics/data-lag-tracker.d.ts.map +1 -0
  131. package/dist-types/diagnostics/inspector.d.ts +192 -5
  132. package/dist-types/diagnostics/inspector.d.ts.map +1 -1
  133. package/dist-types/diagnostics/load-tracker.d.ts +82 -0
  134. package/dist-types/diagnostics/load-tracker.d.ts.map +1 -0
  135. package/dist-types/diagnostics/loading-overlay.d.ts +98 -0
  136. package/dist-types/diagnostics/loading-overlay.d.ts.map +1 -0
  137. package/dist-types/diagnostics/metrics.d.ts +10 -0
  138. package/dist-types/diagnostics/metrics.d.ts.map +1 -1
  139. package/dist-types/effect/shadow.d.ts +3 -1
  140. package/dist-types/effect/shadow.d.ts.map +1 -1
  141. package/dist-types/event-map/index.d.ts +1 -0
  142. package/dist-types/event-map/index.d.ts.map +1 -1
  143. package/dist-types/event-map/transition-handler.d.ts +2 -0
  144. package/dist-types/event-map/transition-handler.d.ts.map +1 -0
  145. package/dist-types/flow/auto-route.d.ts +36 -0
  146. package/dist-types/flow/auto-route.d.ts.map +1 -0
  147. package/dist-types/flow/capability-inference.d.ts +19 -0
  148. package/dist-types/flow/capability-inference.d.ts.map +1 -0
  149. package/dist-types/flow/face-anchors.d.ts +26 -0
  150. package/dist-types/flow/face-anchors.d.ts.map +1 -0
  151. package/dist-types/flow/flow-engine.d.ts +122 -0
  152. package/dist-types/flow/flow-engine.d.ts.map +1 -0
  153. package/dist-types/flow/flow-graph-coordinator.d.ts +80 -0
  154. package/dist-types/flow/flow-graph-coordinator.d.ts.map +1 -0
  155. package/dist-types/flow/flow-graph-validator.d.ts +33 -0
  156. package/dist-types/flow/flow-graph-validator.d.ts.map +1 -0
  157. package/dist-types/flow/flow-graph.d.ts +76 -0
  158. package/dist-types/flow/flow-graph.d.ts.map +1 -0
  159. package/dist-types/flow/flow-introspection.d.ts +36 -0
  160. package/dist-types/flow/flow-introspection.d.ts.map +1 -0
  161. package/dist-types/flow/flow-node.d.ts +69 -0
  162. package/dist-types/flow/flow-node.d.ts.map +1 -0
  163. package/dist-types/flow/flow-orientation-coordinator.d.ts +13 -0
  164. package/dist-types/flow/flow-orientation-coordinator.d.ts.map +1 -0
  165. package/dist-types/flow/flow-orientation.d.ts +42 -0
  166. package/dist-types/flow/flow-orientation.d.ts.map +1 -0
  167. package/dist-types/flow/flow-trace.d.ts +5 -0
  168. package/dist-types/flow/flow-trace.d.ts.map +1 -0
  169. package/dist-types/flow/index.d.ts +16 -0
  170. package/dist-types/flow/index.d.ts.map +1 -0
  171. package/dist-types/flow/segment-topology.d.ts +225 -0
  172. package/dist-types/flow/segment-topology.d.ts.map +1 -0
  173. package/dist-types/interfaces/event-handler.d.ts +40 -0
  174. package/dist-types/interfaces/event-handler.d.ts.map +1 -0
  175. package/dist-types/interfaces/index.d.ts +2 -0
  176. package/dist-types/interfaces/index.d.ts.map +1 -1
  177. package/dist-types/interfaces/layout.d.ts +35 -1
  178. package/dist-types/interfaces/layout.d.ts.map +1 -1
  179. package/dist-types/interfaces/providers.d.ts +27 -3
  180. package/dist-types/interfaces/providers.d.ts.map +1 -1
  181. package/dist-types/interfaces/real-object.d.ts +8 -1
  182. package/dist-types/interfaces/real-object.d.ts.map +1 -1
  183. package/dist-types/interfaces/rendering.d.ts +86 -14
  184. package/dist-types/interfaces/rendering.d.ts.map +1 -1
  185. package/dist-types/interfaces/types.d.ts +20 -1
  186. package/dist-types/interfaces/types.d.ts.map +1 -1
  187. package/dist-types/items/arrangement/centering-queue-strategy.d.ts +10 -0
  188. package/dist-types/items/arrangement/centering-queue-strategy.d.ts.map +1 -0
  189. package/dist-types/items/arrangement/index.d.ts +2 -0
  190. package/dist-types/items/arrangement/index.d.ts.map +1 -0
  191. package/dist-types/items/capacity-mixin.d.ts +303 -0
  192. package/dist-types/items/capacity-mixin.d.ts.map +1 -0
  193. package/dist-types/items/capacity.d.ts +53 -0
  194. package/dist-types/items/capacity.d.ts.map +1 -0
  195. package/dist-types/items/index.d.ts +7 -0
  196. package/dist-types/items/index.d.ts.map +1 -0
  197. package/dist-types/items/items-data-binding.d.ts +103 -0
  198. package/dist-types/items/items-data-binding.d.ts.map +1 -0
  199. package/dist-types/items/slot-record.d.ts +23 -0
  200. package/dist-types/items/slot-record.d.ts.map +1 -0
  201. package/dist-types/items/stacking/index.d.ts +3 -0
  202. package/dist-types/items/stacking/index.d.ts.map +1 -0
  203. package/dist-types/items/stacking/stack-layout.d.ts +33 -0
  204. package/dist-types/items/stacking/stack-layout.d.ts.map +1 -0
  205. package/dist-types/items/stacking/stacking-strategy.d.ts +114 -0
  206. package/dist-types/items/stacking/stacking-strategy.d.ts.map +1 -0
  207. package/dist-types/layer/action/popup.d.ts +13 -0
  208. package/dist-types/layer/action/popup.d.ts.map +1 -1
  209. package/dist-types/layer/add-layer.d.ts +8 -0
  210. package/dist-types/layer/add-layer.d.ts.map +1 -1
  211. package/dist-types/layer/dual-canvas-layer.d.ts.map +1 -1
  212. package/dist-types/layer/index.d.ts +1 -0
  213. package/dist-types/layer/index.d.ts.map +1 -1
  214. package/dist-types/layer/layer.d.ts +2 -0
  215. package/dist-types/layer/layer.d.ts.map +1 -1
  216. package/dist-types/layer/model-layer.d.ts +79 -7
  217. package/dist-types/layer/model-layer.d.ts.map +1 -1
  218. package/dist-types/layer/modeler/index.d.ts +1 -0
  219. package/dist-types/layer/modeler/index.d.ts.map +1 -1
  220. package/dist-types/layer/modeler/move-handle-icon.d.ts +2 -0
  221. package/dist-types/layer/modeler/move-handle-icon.d.ts.map +1 -0
  222. package/dist-types/layer/modeler/move-handle-modeler.d.ts +18 -0
  223. package/dist-types/layer/modeler/move-handle-modeler.d.ts.map +1 -0
  224. package/dist-types/layer/modeler/path-handler.d.ts.map +1 -1
  225. package/dist-types/layer/modeler/rotator.d.ts.map +1 -1
  226. package/dist-types/layer/modeling-layer.d.ts +19 -0
  227. package/dist-types/layer/modeling-layer.d.ts.map +1 -1
  228. package/dist-types/layer/selection/selected-finder.d.ts +1 -1
  229. package/dist-types/layer/selection/selected-finder.d.ts.map +1 -1
  230. package/dist-types/layer/selection-layer.d.ts +7 -0
  231. package/dist-types/layer/selection-layer.d.ts.map +1 -1
  232. package/dist-types/layer/snap-guide-layer.d.ts +23 -0
  233. package/dist-types/layer/snap-guide-layer.d.ts.map +1 -0
  234. package/dist-types/layout/absolute.d.ts +2 -2
  235. package/dist-types/layout/card.d.ts +2 -2
  236. package/dist-types/layout/linear-horizontal.d.ts +2 -2
  237. package/dist-types/layout/linear-vertical.d.ts +2 -2
  238. package/dist-types/layout/table.d.ts +3 -3
  239. package/dist-types/license/license.d.ts.map +1 -1
  240. package/dist-types/math/component-pose.d.ts +51 -0
  241. package/dist-types/math/component-pose.d.ts.map +1 -0
  242. package/dist-types/math/index.d.ts +3 -0
  243. package/dist-types/math/index.d.ts.map +1 -0
  244. package/dist-types/math/pose6dof.d.ts +93 -0
  245. package/dist-types/math/pose6dof.d.ts.map +1 -0
  246. package/dist-types/navigation/index.d.ts +7 -0
  247. package/dist-types/navigation/index.d.ts.map +1 -0
  248. package/dist-types/navigation/nav-graph.d.ts +55 -0
  249. package/dist-types/navigation/nav-graph.d.ts.map +1 -0
  250. package/dist-types/navigation/path-planner.d.ts +29 -0
  251. package/dist-types/navigation/path-planner.d.ts.map +1 -0
  252. package/dist-types/navigation/reservation-table.d.ts +103 -0
  253. package/dist-types/navigation/reservation-table.d.ts.map +1 -0
  254. package/dist-types/navigation/types.d.ts +145 -0
  255. package/dist-types/navigation/types.d.ts.map +1 -0
  256. package/dist-types/placement/index.d.ts +3 -0
  257. package/dist-types/placement/index.d.ts.map +1 -0
  258. package/dist-types/placement/placement.d.ts +53 -0
  259. package/dist-types/placement/placement.d.ts.map +1 -0
  260. package/dist-types/search/index.d.ts +3 -0
  261. package/dist-types/search/index.d.ts.map +1 -0
  262. package/dist-types/search/scene-search-engine.d.ts +64 -0
  263. package/dist-types/search/scene-search-engine.d.ts.map +1 -0
  264. package/dist-types/search/search-overlay.d.ts +94 -0
  265. package/dist-types/search/search-overlay.d.ts.map +1 -0
  266. package/dist-types/things-scene/api/add-start.d.ts +25 -0
  267. package/dist-types/things-scene/api/add-start.d.ts.map +1 -1
  268. package/dist-types/things-scene/api/align.d.ts.map +1 -1
  269. package/dist-types/things-scene/api/clipboard.d.ts +1 -1
  270. package/dist-types/things-scene/api/clipboard.d.ts.map +1 -1
  271. package/dist-types/things-scene/api/distribute.d.ts.map +1 -1
  272. package/dist-types/things-scene/api/ids.d.ts +4 -1
  273. package/dist-types/things-scene/api/ids.d.ts.map +1 -1
  274. package/dist-types/things-scene/api/index.d.ts +1 -1
  275. package/dist-types/things-scene/api/index.d.ts.map +1 -1
  276. package/dist-types/things-scene/api/listener.d.ts +1 -1
  277. package/dist-types/things-scene/api/listener.d.ts.map +1 -1
  278. package/dist-types/things-scene/api/place.d.ts.map +1 -1
  279. package/dist-types/things-scene/api/to-data-url.d.ts +1 -1
  280. package/dist-types/things-scene/api/to-data-url.d.ts.map +1 -1
  281. package/dist-types/things-scene/api/zorder.d.ts +1 -1
  282. package/dist-types/things-scene/api/zorder.d.ts.map +1 -1
  283. package/dist-types/things-scene/application-context.d.ts +62 -0
  284. package/dist-types/things-scene/application-context.d.ts.map +1 -1
  285. package/dist-types/things-scene/create.d.ts +67 -3
  286. package/dist-types/things-scene/create.d.ts.map +1 -1
  287. package/dist-types/things-scene/index.d.ts +30 -0
  288. package/dist-types/things-scene/index.d.ts.map +1 -1
  289. package/dist-types/things-scene/scene.d.ts +196 -21
  290. package/dist-types/things-scene/scene.d.ts.map +1 -1
  291. package/dist-types/threed/arrow-3d.d.ts +13 -4
  292. package/dist-types/threed/arrow-3d.d.ts.map +1 -1
  293. package/dist-types/threed/common.d.ts +6 -1
  294. package/dist-types/threed/common.d.ts.map +1 -1
  295. package/dist-types/threed/environments/base-environment.d.ts +17 -0
  296. package/dist-types/threed/environments/base-environment.d.ts.map +1 -0
  297. package/dist-types/threed/environments/cloudy-environment.d.ts +10 -0
  298. package/dist-types/threed/environments/cloudy-environment.d.ts.map +1 -0
  299. package/dist-types/threed/environments/factory-environment.d.ts +3 -3
  300. package/dist-types/threed/environments/factory-environment.d.ts.map +1 -1
  301. package/dist-types/threed/environments/home-environment.d.ts +3 -3
  302. package/dist-types/threed/environments/home-environment.d.ts.map +1 -1
  303. package/dist-types/threed/environments/office-environment.d.ts +3 -3
  304. package/dist-types/threed/environments/office-environment.d.ts.map +1 -1
  305. package/dist-types/threed/environments/rainy-environment.d.ts +10 -0
  306. package/dist-types/threed/environments/rainy-environment.d.ts.map +1 -0
  307. package/dist-types/threed/environments/studio-environment.d.ts +2 -3
  308. package/dist-types/threed/environments/studio-environment.d.ts.map +1 -1
  309. package/dist-types/threed/environments/sunny-environment.d.ts +10 -0
  310. package/dist-types/threed/environments/sunny-environment.d.ts.map +1 -0
  311. package/dist-types/threed/environments/warehouse-environment.d.ts +3 -3
  312. package/dist-types/threed/environments/warehouse-environment.d.ts.map +1 -1
  313. package/dist-types/threed/factories/backdrop.d.ts +542 -0
  314. package/dist-types/threed/factories/backdrop.d.ts.map +1 -0
  315. package/dist-types/threed/factories/banner.d.ts +25 -13
  316. package/dist-types/threed/factories/banner.d.ts.map +1 -1
  317. package/dist-types/threed/factories/camera.d.ts +21 -12
  318. package/dist-types/threed/factories/camera.d.ts.map +1 -1
  319. package/dist-types/threed/factories/cube.d.ts +20 -12
  320. package/dist-types/threed/factories/cube.d.ts.map +1 -1
  321. package/dist-types/threed/factories/cylinder.d.ts +1 -0
  322. package/dist-types/threed/factories/cylinder.d.ts.map +1 -1
  323. package/dist-types/threed/factories/decal.d.ts +517 -0
  324. package/dist-types/threed/factories/decal.d.ts.map +1 -0
  325. package/dist-types/threed/factories/floor-plate.d.ts +12 -0
  326. package/dist-types/threed/factories/floor-plate.d.ts.map +1 -0
  327. package/dist-types/threed/factories/gltf-object.d.ts +279 -47
  328. package/dist-types/threed/factories/gltf-object.d.ts.map +1 -1
  329. package/dist-types/threed/factories/group.d.ts +2 -0
  330. package/dist-types/threed/factories/group.d.ts.map +1 -0
  331. package/dist-types/threed/factories/light.d.ts +1 -0
  332. package/dist-types/threed/factories/light.d.ts.map +1 -1
  333. package/dist-types/threed/factories/line.d.ts +10 -0
  334. package/dist-types/threed/factories/line.d.ts.map +1 -0
  335. package/dist-types/threed/factories/ortholine.d.ts +10 -0
  336. package/dist-types/threed/factories/ortholine.d.ts.map +1 -0
  337. package/dist-types/threed/factories/polygon.d.ts +19 -0
  338. package/dist-types/threed/factories/polygon.d.ts.map +1 -1
  339. package/dist-types/threed/factories/polyline.d.ts +10 -0
  340. package/dist-types/threed/factories/polyline.d.ts.map +1 -0
  341. package/dist-types/threed/factories/rect.d.ts.map +1 -1
  342. package/dist-types/threed/factories/sphere.d.ts +6 -0
  343. package/dist-types/threed/factories/sphere.d.ts.map +1 -1
  344. package/dist-types/threed/factories/sprite.d.ts +20 -12
  345. package/dist-types/threed/factories/sprite.d.ts.map +1 -1
  346. package/dist-types/threed/factories/triangle.d.ts.map +1 -1
  347. package/dist-types/threed/factories/wall.d.ts +20 -12
  348. package/dist-types/threed/factories/wall.d.ts.map +1 -1
  349. package/dist-types/threed/floor/floor.d.ts.map +1 -1
  350. package/dist-types/threed/handle-3d.d.ts +21 -0
  351. package/dist-types/threed/handle-3d.d.ts.map +1 -0
  352. package/dist-types/threed/html/elements.d.ts.map +1 -1
  353. package/dist-types/threed/index.d.ts +28 -0
  354. package/dist-types/threed/index.d.ts.map +1 -1
  355. package/dist-types/threed/managers/box-selection-manager.d.ts +26 -0
  356. package/dist-types/threed/managers/box-selection-manager.d.ts.map +1 -0
  357. package/dist-types/threed/managers/camera-bookmark-manager.d.ts +48 -37
  358. package/dist-types/threed/managers/camera-bookmark-manager.d.ts.map +1 -1
  359. package/dist-types/threed/managers/camera-manager.d.ts +9 -2
  360. package/dist-types/threed/managers/camera-manager.d.ts.map +1 -1
  361. package/dist-types/threed/managers/controls-manager.d.ts +12 -0
  362. package/dist-types/threed/managers/controls-manager.d.ts.map +1 -1
  363. package/dist-types/threed/managers/event-manager3d.d.ts +14 -0
  364. package/dist-types/threed/managers/event-manager3d.d.ts.map +1 -1
  365. package/dist-types/threed/managers/gizmo-manager.d.ts +6 -0
  366. package/dist-types/threed/managers/gizmo-manager.d.ts.map +1 -1
  367. package/dist-types/threed/managers/gizmo-operation-manager.d.ts +54 -1
  368. package/dist-types/threed/managers/gizmo-operation-manager.d.ts.map +1 -1
  369. package/dist-types/threed/managers/index.d.ts +3 -1
  370. package/dist-types/threed/managers/index.d.ts.map +1 -1
  371. package/dist-types/threed/managers/interaction-manager.d.ts +17 -0
  372. package/dist-types/threed/managers/interaction-manager.d.ts.map +1 -1
  373. package/dist-types/threed/managers/light-manager.d.ts +15 -0
  374. package/dist-types/threed/managers/light-manager.d.ts.map +1 -1
  375. package/dist-types/threed/managers/renderer-manager.d.ts +37 -0
  376. package/dist-types/threed/managers/renderer-manager.d.ts.map +1 -1
  377. package/dist-types/threed/managers/scene-manager.d.ts +12 -2
  378. package/dist-types/threed/managers/scene-manager.d.ts.map +1 -1
  379. package/dist-types/threed/managers/types.d.ts +4 -1
  380. package/dist-types/threed/managers/types.d.ts.map +1 -1
  381. package/dist-types/threed/managers/vertex-gizmo-manager.d.ts +154 -0
  382. package/dist-types/threed/managers/vertex-gizmo-manager.d.ts.map +1 -0
  383. package/dist-types/threed/material-3d.d.ts +5 -2
  384. package/dist-types/threed/material-3d.d.ts.map +1 -1
  385. package/dist-types/threed/material-bank.d.ts +42 -0
  386. package/dist-types/threed/material-bank.d.ts.map +1 -0
  387. package/dist-types/threed/material-variant.d.ts +43 -0
  388. package/dist-types/threed/material-variant.d.ts.map +1 -0
  389. package/dist-types/threed/ratio-lock-utils.d.ts +9 -0
  390. package/dist-types/threed/ratio-lock-utils.d.ts.map +1 -0
  391. package/dist-types/threed/real-object-dom-element.d.ts +9 -0
  392. package/dist-types/threed/real-object-dom-element.d.ts.map +1 -1
  393. package/dist-types/threed/real-object-dom-texture.d.ts +9 -1
  394. package/dist-types/threed/real-object-dom-texture.d.ts.map +1 -1
  395. package/dist-types/threed/real-object-external-model.d.ts +24 -0
  396. package/dist-types/threed/real-object-external-model.d.ts.map +1 -0
  397. package/dist-types/threed/real-object-extrude.d.ts +16 -1
  398. package/dist-types/threed/real-object-extrude.d.ts.map +1 -1
  399. package/dist-types/threed/real-object-gltf.d.ts +21 -11
  400. package/dist-types/threed/real-object-gltf.d.ts.map +1 -1
  401. package/dist-types/threed/real-object-group.d.ts +2 -0
  402. package/dist-types/threed/real-object-group.d.ts.map +1 -1
  403. package/dist-types/threed/real-object-line.d.ts +83 -0
  404. package/dist-types/threed/real-object-line.d.ts.map +1 -0
  405. package/dist-types/threed/real-object-mesh.d.ts +0 -1
  406. package/dist-types/threed/real-object-mesh.d.ts.map +1 -1
  407. package/dist-types/threed/real-object-plane-2d.d.ts +23 -1
  408. package/dist-types/threed/real-object-plane-2d.d.ts.map +1 -1
  409. package/dist-types/threed/real-object-service.d.ts +14 -0
  410. package/dist-types/threed/real-object-service.d.ts.map +1 -0
  411. package/dist-types/threed/real-object-sprite.d.ts +7 -2
  412. package/dist-types/threed/real-object-sprite.d.ts.map +1 -1
  413. package/dist-types/threed/real-object-text.d.ts +5 -0
  414. package/dist-types/threed/real-object-text.d.ts.map +1 -1
  415. package/dist-types/threed/real-object.d.ts +276 -7
  416. package/dist-types/threed/real-object.d.ts.map +1 -1
  417. package/dist-types/threed/text-editor-3d.d.ts +11 -0
  418. package/dist-types/threed/text-editor-3d.d.ts.map +1 -0
  419. package/dist-types/threed/texture/canvas-texture.d.ts +7 -0
  420. package/dist-types/threed/texture/canvas-texture.d.ts.map +1 -1
  421. package/dist-types/threed/texture/fillstyle-texture.d.ts +57 -0
  422. package/dist-types/threed/texture/fillstyle-texture.d.ts.map +1 -0
  423. package/dist-types/threed/texture/text-texture.d.ts +15 -0
  424. package/dist-types/threed/texture/text-texture.d.ts.map +1 -1
  425. package/dist-types/threed/three-capability.d.ts +93 -12
  426. package/dist-types/threed/three-capability.d.ts.map +1 -1
  427. package/dist-types/threed/three-container.d.ts.map +1 -1
  428. package/dist-types/threed/threed-enabled.d.ts +5 -0
  429. package/dist-types/threed/threed-enabled.d.ts.map +1 -0
  430. package/dist-types/threed/utils/anchor.d.ts +33 -0
  431. package/dist-types/threed/utils/anchor.d.ts.map +1 -0
  432. package/dist-types/threed/utils/dispose.d.ts.map +1 -1
  433. package/dist-types/threed/utils/polygon-shape.d.ts +21 -0
  434. package/dist-types/threed/utils/polygon-shape.d.ts.map +1 -0
  435. package/dist-types/threed/utils/tether.d.ts +46 -0
  436. package/dist-types/threed/utils/tether.d.ts.map +1 -0
  437. package/dist-types/threed/z-priority.d.ts +27 -0
  438. package/dist-types/threed/z-priority.d.ts.map +1 -0
  439. package/dist-types/tracker/tracker.d.ts +57 -0
  440. package/dist-types/tracker/tracker.d.ts.map +1 -0
  441. package/dist-types/transfer/carrier-line-capability.d.ts +95 -0
  442. package/dist-types/transfer/carrier-line-capability.d.ts.map +1 -0
  443. package/dist-types/transfer/centering-slot-strategy.d.ts +8 -0
  444. package/dist-types/transfer/centering-slot-strategy.d.ts.map +1 -0
  445. package/dist-types/transfer/fixed-slot-strategy.d.ts +8 -0
  446. package/dist-types/transfer/fixed-slot-strategy.d.ts.map +1 -0
  447. package/dist-types/transfer/index.d.ts +25 -0
  448. package/dist-types/transfer/index.d.ts.map +1 -0
  449. package/dist-types/transfer/pickup-helpers.d.ts +75 -0
  450. package/dist-types/transfer/pickup-helpers.d.ts.map +1 -0
  451. package/dist-types/transfer/simulation-clock.d.ts +45 -0
  452. package/dist-types/transfer/simulation-clock.d.ts.map +1 -0
  453. package/dist-types/transfer/tracer.d.ts +35 -0
  454. package/dist-types/transfer/tracer.d.ts.map +1 -0
  455. package/dist-types/transfer/transfer-helpers.d.ts +18 -0
  456. package/dist-types/transfer/transfer-helpers.d.ts.map +1 -0
  457. package/dist-types/transfer/transfer.d.ts +257 -0
  458. package/dist-types/transfer/transfer.d.ts.map +1 -0
  459. package/dist-types/transfer/transferable-mixin.d.ts +275 -0
  460. package/dist-types/transfer/transferable-mixin.d.ts.map +1 -0
  461. package/dist-types/transfer/types.d.ts +462 -0
  462. package/dist-types/transfer/types.d.ts.map +1 -0
  463. package/dist-types/transition/transition-effect.d.ts +117 -0
  464. package/dist-types/transition/transition-effect.d.ts.map +1 -0
  465. package/dist-types/types/bounding.d.ts +1 -1
  466. package/dist-types/types/bounding.d.ts.map +1 -1
  467. package/dist-types/types/capability.d.ts +65 -0
  468. package/dist-types/types/capability.d.ts.map +1 -0
  469. package/dist-types/types/component.d.ts +6 -177
  470. package/dist-types/types/component.d.ts.map +1 -1
  471. package/dist-types/types/event.d.ts +57 -0
  472. package/dist-types/types/event.d.ts.map +1 -1
  473. package/dist-types/types/polygon-path-arc.d.ts +72 -0
  474. package/dist-types/types/polygon-path-arc.d.ts.map +1 -0
  475. package/dist-types/types/polygon-path.d.ts +153 -0
  476. package/dist-types/types/polygon-path.d.ts.map +1 -0
  477. package/package.json +13 -2
  478. package/things-scene-min.js +12 -13
  479. package/things-scene-min.js.map +1 -1
  480. package/things-scene-transfer.mjs +7 -0
  481. package/things-scene.mjs +8 -9
  482. package/things-scene.mjs.map +1 -1
@@ -5,6 +5,8 @@ import { GizmoManager } from './gizmo-manager.js';
5
5
  export interface GizmoOperationHost {
6
6
  readonly root: any;
7
7
  readonly app: any;
8
+ /** Host DOM element for overlay positioning */
9
+ readonly hostElement?: HTMLElement;
8
10
  invalidate(): void;
9
11
  }
10
12
  /**
@@ -17,12 +19,16 @@ export declare class GizmoOperationManager {
17
19
  private _preDragDimension?;
18
20
  private _preDragScale?;
19
21
  private _preDragEffectiveDepth?;
22
+ private _scaleAnchorSign?;
23
+ private _preDragAttachedPosition?;
20
24
  private _altDragDuplicates?;
21
25
  private _mouseDownAltKey;
22
26
  private _multiSelectOffsets?;
23
27
  private _gizmoInitialRotation?;
24
28
  private _multiSelectInitialRotations?;
25
29
  private _multiSelectPreDragDimensions?;
30
+ private _infoOverlay?;
31
+ private _dragStartPosition?;
26
32
  /**
27
33
  * mousedown 시 altKey를 캡처한다.
28
34
  * forwardEvent보다 먼저 호출되어야 한다.
@@ -37,21 +43,68 @@ export declare class GizmoOperationManager {
37
43
  setEnabled(enabled: boolean): void;
38
44
  }, getHost: () => GizmoOperationHost | undefined, callbacks?: {
39
45
  onAttachChanged?: (isAttached: boolean) => void;
46
+ onDraggingChanged?: (isDragging: boolean) => void;
40
47
  }): void;
41
48
  private _onDragStart;
42
49
  private _performAltDragDuplicate;
43
50
  private _captureMultiSelectState;
44
51
  private _captureScalePreDrag;
52
+ /**
53
+ * 드래그한 기즈모 핸들의 축별 부호를 계산한다.
54
+ * - controls.axis: 드래그 축 이름 ('X'/'Y'/'Z'/'XY'/'XZ'/'YZ'/'XYZ'/'XYZE' 등)
55
+ * - controls.pointStart: 드래그 시작 시 pointer의 월드 위치(object 원점 기준 상대)
56
+ *
57
+ * 반환 부호: 해당 축 pointStart의 로컬 좌표 성분 부호
58
+ * +1 → 드래그한 +방향 핸들 → pre.edge(left/top/zPos)를 고정하고 +방향 확장
59
+ * -1 → 드래그한 -방향 핸들 → 반대편 edge 고정, -방향 확장
60
+ * 0 → 방향성 없음 (uniform handle) 또는 축 미해당 → 기존 center 동작 유지
61
+ *
62
+ * 주의: TransformControls 내부 API(pointStart)에 의존. three.js 업그레이드 시
63
+ * node_modules/three/examples/jsm/controls/TransformControls.js 확인 필요.
64
+ */
65
+ private _computeAnchorSign;
45
66
  private _onDragEnd;
46
67
  /**
47
68
  * 기즈모 드래그 결과를 컴포넌트 속성에 역변환하여 반영한다.
48
69
  */
49
70
  private _syncFromGizmo;
71
+ /**
72
+ * 오브젝트 바닥면이 Y=0(바닥)에 가까우면 스냅한다.
73
+ * Object3D.position.y는 오브젝트 중심이므로, 바닥면 = position.y - effectiveDepth/2.
74
+ */
75
+ private _applyGroundSnap;
50
76
  /**
51
77
  * scale 기즈모 드래그를 dimension 변경으로 역산한다.
52
78
  * 축 매핑: scale.x → width, scale.y → depth, scale.z → height
53
- * center 기준 양방향 확장.
79
+ * anchor sign에 따라 한쪽 edge 고정(드래그 방향으로만 확장) 또는 center 확장.
80
+ *
81
+ * @returns 멀티셀렉트에서 동일 로직 적용하기 위해 ratioLock 반영된 ratio/sign 반환
54
82
  */
55
83
  private _syncDimensionFromGizmo;
84
+ /**
85
+ * anchor sign 기반 dimension props 계산.
86
+ * sign > 0: pre.left/top/zPos 고정, 드래그 방향으로만 확장
87
+ * sign < 0: 반대편 edge 고정, 반대 방향으로 확장
88
+ * sign = 0: center 기준 양방향 확장 (기존 동작)
89
+ */
90
+ private _computeAnchorProps;
91
+ /**
92
+ * TransformControls는 scale 드래그 시 object.scale만 변경(center-scale).
93
+ * anchor edge가 실제로 고정되어 보이려면 object.position을 매 프레임 역보정한다.
94
+ * shift_local = sign * (S' - preScale) * (pre_size / 2)
95
+ * 오브젝트 회전이 있으면 로컬 shift를 월드 축으로 변환.
96
+ */
97
+ private _applyAnchorPositionCorrection;
98
+ private _showInfoOverlay;
99
+ private _updateInfoOverlay;
100
+ /**
101
+ * scale 모드 info 오버레이 포맷 — 델타 + 최종값 병기.
102
+ * - 단일 축 핸들(X/Y/Z): `⤢ W 150px (+50)` — 최종 치수 + 델타
103
+ * - 중앙 uniform 핸들 또는 세 축 거의 동일 배율: `⤢ ×1.50 (150×75×100)`
104
+ * - 비균일 멀티축: `⤢ W:150(+50) D:130(+30) H:120(+20)`
105
+ * 축 매핑: scale.x→width, scale.y→depth, scale.z→height
106
+ */
107
+ private _formatScaleInfo;
108
+ private _hideInfoOverlay;
56
109
  }
57
110
  //# sourceMappingURL=gizmo-operation-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gizmo-operation-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/gizmo-operation-manager.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAA;IAClB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IACjB,UAAU,IAAI,IAAI,CAAA;CACnB;AAcD;;;;;GAKG;AACH,qBAAa,qBAAqB;IAEhC,OAAO,CAAC,iBAAiB,CAAC,CAAkB;IAC5C,OAAO,CAAC,aAAa,CAAC,CAAqC;IAE3D,OAAO,CAAC,sBAAsB,CAAC,CAAQ;IAGvC,OAAO,CAAC,kBAAkB,CAAC,CAAoD;IAC/E,OAAO,CAAC,gBAAgB,CAAQ;IAGhC,OAAO,CAAC,mBAAmB,CAAC,CAAgC;IAC5D,OAAO,CAAC,qBAAqB,CAAC,CAAa;IAC3C,OAAO,CAAC,4BAA4B,CAAC,CAA8B;IACnE,OAAO,CAAC,6BAA6B,CAAC,CAAqC;IAE3E;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAIpC;;;;OAIG;IACH,cAAc,CACZ,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE;QAAE,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,EACvD,OAAO,EAAE,MAAM,kBAAkB,GAAG,SAAS,EAC7C,SAAS,CAAC,EAAE;QACV,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;KAChD,GACA,IAAI;IA6BP,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,wBAAwB;IA2ChC,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,UAAU;IAuClB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiEtB;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;CAsBhC"}
1
+ {"version":3,"file":"gizmo-operation-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/gizmo-operation-manager.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAA;IAClB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,UAAU,IAAI,IAAI,CAAA;CACnB;AAcD;;;;;GAKG;AACH,qBAAa,qBAAqB;IAEhC,OAAO,CAAC,iBAAiB,CAAC,CAAkB;IAC5C,OAAO,CAAC,aAAa,CAAC,CAAqC;IAE3D,OAAO,CAAC,sBAAsB,CAAC,CAAQ;IAGvC,OAAO,CAAC,gBAAgB,CAAC,CAAqC;IAE9D,OAAO,CAAC,wBAAwB,CAAC,CAAe;IAGhD,OAAO,CAAC,kBAAkB,CAAC,CAAoD;IAC/E,OAAO,CAAC,gBAAgB,CAAQ;IAGhC,OAAO,CAAC,mBAAmB,CAAC,CAAgC;IAC5D,OAAO,CAAC,qBAAqB,CAAC,CAAa;IAC3C,OAAO,CAAC,4BAA4B,CAAC,CAA8B;IACnE,OAAO,CAAC,6BAA6B,CAAC,CAAqC;IAE3E,OAAO,CAAC,YAAY,CAAC,CAAgB;IACrC,OAAO,CAAC,kBAAkB,CAAC,CAAe;IAE1C;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAIpC;;;;OAIG;IACH,cAAc,CACZ,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE;QAAE,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,EACvD,OAAO,EAAE,MAAM,kBAAkB,GAAG,SAAS,EAC7C,SAAS,CAAC,EAAE;QACV,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;QAC/C,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;KAClD,GACA,IAAI;IAuCP,OAAO,CAAC,YAAY;IA4BpB,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,wBAAwB;IA2ChC,OAAO,CAAC,oBAAoB;IAiB5B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,UAAU;IA4ElB;;OAEG;IACH,OAAO,CAAC,cAAc;IAwDtB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAmC/B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IA8B3B;;;;;OAKG;IACH,OAAO,CAAC,8BAA8B;IA0BtC,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,kBAAkB;IA2C1B;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,gBAAgB;CAMzB"}
@@ -1,4 +1,4 @@
1
- export { SceneManager } from './scene-manager.js';
1
+ export { SceneManager, recommendsLogarithmicDepthForSky } from './scene-manager.js';
2
2
  export { CameraManager, type CameraViewName } from './camera-manager.js';
3
3
  export { RendererManager } from './renderer-manager.js';
4
4
  export { LightManager } from './light-manager.js';
@@ -9,5 +9,7 @@ export { GizmoOperationManager, type GizmoOperationHost } from './gizmo-operatio
9
9
  export { InteractionManager, type InteractionDelegate } from './interaction-manager.js';
10
10
  export { PlacementManager, type PlacementDelegate } from './placement-manager.js';
11
11
  export { CameraBookmarkManager, type CameraBookmark } from './camera-bookmark-manager.js';
12
+ export { BoxSelectionManager } from './box-selection-manager.js';
13
+ export { VertexGizmoManager } from './vertex-gizmo-manager.js';
12
14
  export type { CameraConfig, RendererConfig, LightingConfig } from './types.js';
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAC7F,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACvF,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAE,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAA;AACzF,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAA;AACnF,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAC7F,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACvF,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAE,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
@@ -32,6 +32,22 @@ export interface InteractionDelegate {
32
32
  handleTouchEnd(e: TouchEvent): void;
33
33
  /** 키 입력. 처리했으면 true, 상위로 전파해야 하면 false */
34
34
  handleKeyDown(e: KeyboardEvent): boolean;
35
+ /** 키 해제. 처리했으면 true */
36
+ handleKeyUp?(e: KeyboardEvent): boolean;
37
+ /** Space 키 패닝 모드 여부 */
38
+ isSpacePanning?(): boolean;
39
+ /** 박스 셀렉션 시작 */
40
+ handleBoxSelectionStart?(x: number, y: number): void;
41
+ /** 박스 셀렉션 업데이트 */
42
+ handleBoxSelectionUpdate?(x: number, y: number): void;
43
+ /** 박스 셀렉션 종료 (additive: Shift 유지 여부, typeFiltered: Ctrl/Cmd 유지 여부) */
44
+ handleBoxSelectionEnd?(additive: boolean, typeFiltered?: boolean): void;
45
+ /** vertex 핸들 드래그 시작 시도. 성공 시 true 반환 */
46
+ tryVertexDragStart?(e: MouseEvent): boolean;
47
+ /** vertex 핸들 드래그 이동 */
48
+ handleVertexDragMove?(e: MouseEvent): void;
49
+ /** vertex 핸들 드래그 종료 */
50
+ handleVertexDragEnd?(e: MouseEvent): void;
35
51
  }
36
52
  /**
37
53
  * DOM 이벤트 핸들링과 드래그 상태 관리를 담당하는 매니저.
@@ -45,6 +61,7 @@ export declare class InteractionManager {
45
61
  private _hostElement?;
46
62
  private _mouseIsDown;
47
63
  private _isDragging;
64
+ private _touchGizmoCaptured;
48
65
  private _mouseDownPos;
49
66
  private _boundHandlers?;
50
67
  private _docMoveHandler?;
@@ -1 +1 @@
1
- {"version":3,"file":"interaction-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/interaction-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interaction-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/interaction-manager.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,21 @@ export declare class LightManager {
18
18
  color?: number | string;
19
19
  intensity?: number;
20
20
  }): void;
21
+ /**
22
+ * directional light를 camera에 붙일지, scene에 독립 배치할지 전환한다.
23
+ * - follow=true: camera에 attach — light는 카메라 이동에 따라 함께 이동 (기본 동작)
24
+ * - follow=false: scene에 attach — light는 고정 월드 위치, angle 기반 조명 가능
25
+ */
26
+ setDirectionalFollowCamera(follow: boolean): void;
27
+ /**
28
+ * directional light의 방향을 방위각/고도각으로 설정 (world-space).
29
+ * - azimuth: 수평면 회전 (deg, 0=+Z/정면, 90=+X/우측)
30
+ * - elevation: 수직 고도 (deg, 0=수평, 90=정수리)
31
+ * - distance: 중심으로부터의 거리 (기본 1000)
32
+ *
33
+ * follow-camera 모드일 땐 설정해도 효과 없음 (camera 좌표계 기준으로 재계산됨).
34
+ */
35
+ setDirectionalAngle(azimuthDeg: number, elevationDeg: number, distance?: number): void;
21
36
  setDirectionalEnabled(enabled: boolean, config?: {
22
37
  color?: number | string;
23
38
  intensity?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"light-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/light-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAC,CAAuB;IAC1C,OAAO,CAAC,SAAS,CAAC,CAAwB;IAC1C,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAc;IAE9B,IAAI,SAAS,IAAI,KAAK,CAAC,eAAe,GAAG,SAAS,CAEjD;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAEjD;IAED,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc;IAoDtE,gBAAgB,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAOhH,iBAAiB,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAM/E,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAevG,OAAO;CAQR"}
1
+ {"version":3,"file":"light-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/light-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAC,CAAuB;IAC1C,OAAO,CAAC,SAAS,CAAC,CAAwB;IAC1C,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAc;IAE9B,IAAI,SAAS,IAAI,KAAK,CAAC,eAAe,GAAG,SAAS,CAEjD;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAEjD;IAED,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc;IAwDtE,gBAAgB,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAOhH,iBAAiB,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAM/E;;;;OAIG;IACH,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAOjD;;;;;;;OAOG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,SAAO,GAAG,IAAI;IAiBpF,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAiBvG,OAAO;CAQR"}
@@ -9,35 +9,72 @@ export declare class RendererManager {
9
9
  private _composer?;
10
10
  private _outlinePass?;
11
11
  private _noSupportWebgl;
12
+ private _hudScene?;
13
+ private _hudCamera?;
14
+ private _hudCSS3DRenderer?;
15
+ private _hudCSS3DScene?;
16
+ private _hudCSS3DCamera?;
12
17
  get renderer(): THREE.WebGLRenderer | undefined;
18
+ /**
19
+ * 런타임에 tone mapping exposure만 갱신한다. property-panel에서 slider로
20
+ * 조정할 때 호출 — renderer 재생성 없이 다음 renderThreeD()부터 반영.
21
+ */
22
+ setExposure(value: number): void;
13
23
  get css3DRenderer(): CSS3DRenderer;
14
24
  get css3DScene(): THREE.Scene;
15
25
  get composer(): EffectComposer | undefined;
16
26
  get noSupportWebgl(): boolean;
17
27
  get domElement(): HTMLCanvasElement | undefined;
28
+ get hudScene(): THREE.Scene;
29
+ get hudCSS3DScene(): THREE.Scene;
30
+ get hudCamera(): THREE.OrthographicCamera | undefined;
31
+ /**
32
+ * HUD 직교 카메라를 초기화한다.
33
+ * 2D 좌표계와 동일: 원점 = 좌상단, X→오른쪽, Y→아래
34
+ */
35
+ setupHUD(width: number, height: number): void;
36
+ /**
37
+ * HUD 카메라 프러스텀을 캔버스 크기에 맞춘다.
38
+ */
39
+ resizeHUD(width: number, height: number): void;
18
40
  setupWebGL(width: number, height: number, config: RendererConfig): boolean;
19
41
  setupCSS3D(isViewMode: boolean, sceneAttr?: string): void;
20
42
  private createCSS3DRenderer;
21
43
  setupComposer(scene: THREE.Scene, camera: THREE.Camera, width: number, height: number, gizmoHelper?: THREE.Object3D): EffectComposer;
44
+ setupLightComposer(scene: THREE.Scene, camera: THREE.Camera, width: number, height: number): EffectComposer;
45
+ get hasOutlinePass(): boolean;
22
46
  updateRenderPassCamera(camera: THREE.Camera): void;
23
47
  /**
24
48
  * 아웃라인을 표시할 오브젝트 목록을 설정한다.
25
49
  */
26
50
  setOutlineObjects(objects: THREE.Object3D[]): void;
51
+ /**
52
+ * 아웃라인 색을 설정한다. visibleEdge / hiddenEdge 둘 다 같은 색으로.
53
+ * Tracker 등 외부 모듈이 selection/tracking outline 색을 자기 정책으로
54
+ * 동기화할 때 사용. 기본 색 (#f26522) 복원도 같은 메서드.
55
+ */
56
+ setOutlineColor(color: number): void;
27
57
  resize(width: number, height: number): void;
28
58
  private _scene?;
29
59
  private _camera?;
60
+ /**
61
+ * 경량 composer를 해제하고 direct render 모드로 복귀한다.
62
+ */
63
+ teardownLightComposer(): void;
30
64
  /**
31
65
  * 포스트프로세싱 없이 직접 렌더링할 때 사용할 scene/camera를 설정한다.
32
66
  */
33
67
  setDirectRenderTargets(scene: THREE.Scene, camera: THREE.Camera): void;
34
68
  render(): void;
69
+ private renderHUD;
35
70
  renderCSS3D(camera: THREE.Camera): void;
71
+ get hudCSS3DRenderer(): CSS3DRenderer | undefined;
36
72
  getSize(): {
37
73
  width: number;
38
74
  height: number;
39
75
  };
40
76
  destroy(): void;
77
+ disposeHUD(): void;
41
78
  disposeCSS3DScene(): void;
42
79
  }
43
80
  //# sourceMappingURL=renderer-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/renderer-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAA;AAKpF,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAA;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAC,CAAqB;IACvC,OAAO,CAAC,cAAc,CAAC,CAAe;IACtC,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,SAAS,CAAC,CAAgB;IAClC,OAAO,CAAC,YAAY,CAAC,CAAa;IAClC,OAAO,CAAC,eAAe,CAAQ;IAE/B,IAAI,QAAQ,oCAEX;IAED,IAAI,aAAa,kBAKhB;IAED,IAAI,UAAU,gBAKb;IAED,IAAI,QAAQ,+BAEX;IAED,IAAI,cAAc,YAEjB;IAED,IAAI,UAAU,kCAEb;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO;IA8C1E,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM;IAmBlD,OAAO,CAAC,mBAAmB;IAI3B,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,QAAQ;IA4CnH,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM;IAa3C;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE;IAM3C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAOpC,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAc;IAE9B;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM;IAK/D,MAAM;IAmBN,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM;IAIhC,OAAO,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAM5C,OAAO;IAQP,iBAAiB;CAMlB"}
1
+ {"version":3,"file":"renderer-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/renderer-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAA;AAKpF,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAA;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAC,CAAqB;IACvC,OAAO,CAAC,cAAc,CAAC,CAAe;IACtC,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,SAAS,CAAC,CAAgB;IAClC,OAAO,CAAC,YAAY,CAAC,CAAa;IAClC,OAAO,CAAC,eAAe,CAAQ;IAG/B,OAAO,CAAC,SAAS,CAAC,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAC,CAA0B;IAE7C,OAAO,CAAC,iBAAiB,CAAC,CAAe;IACzC,OAAO,CAAC,cAAc,CAAC,CAAa;IACpC,OAAO,CAAC,eAAe,CAAC,CAA0B;IAElD,IAAI,QAAQ,oCAEX;IAED;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMhC,IAAI,aAAa,kBAKhB;IAED,IAAI,UAAU,gBAKb;IAED,IAAI,QAAQ,+BAEX;IAED,IAAI,cAAc,YAEjB;IAED,IAAI,UAAU,kCAEb;IAED,IAAI,QAAQ,gBAKX;IAED,IAAI,aAAa,gBAKhB;IAED,IAAI,SAAS,yCAEZ;IAED;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IA4CtC;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAQvC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO;IAmD1E,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM;IAmBlD,OAAO,CAAC,mBAAmB;IAI3B,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,QAAQ;IA4CnH,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAsB1F,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM;IAa3C;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE;IAM3C;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM;IAO7B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAkBpC,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAc;IAE9B;;OAEG;IACH,qBAAqB;IAQrB;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM;IAK/D,MAAM;IAsBN,OAAO,CAAC,SAAS;IAcjB,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM;IAchC,IAAI,gBAAgB,8BAEnB;IAED,OAAO,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAM5C,OAAO;IAYP,UAAU;IAkCV,iBAAiB;CAMlB"}
@@ -1,5 +1,11 @@
1
1
  import * as THREE from 'three';
2
2
  import type Component from '../../components/component.js';
3
+ /**
4
+ * 환경 프리셋의 logarithmicDepthBuffer 추천 여부.
5
+ * 실내 (warehouse/factory/office/home) = true. 그 외 / unknown = false.
6
+ * Renderer 생성 시 사용자가 명시 override 안 했을 때 default 로 적용.
7
+ */
8
+ export declare function recommendsLogarithmicDepthForSky(sky?: string): boolean;
3
9
  export declare class SceneManager {
4
10
  private _scene?;
5
11
  private _mixer?;
@@ -16,8 +22,12 @@ export declare class SceneManager {
16
22
  */
17
23
  private _applyEnvironment;
18
24
  /**
19
- * 3D 배경(sky)을 설정한다.
20
- * @param sky - 프리셋 이름('studio'|'warehouse'|'factory'|'office') | 'color' | '' (none)
25
+ * 환경맵을 해제한다. (IBL 기여 제거)
26
+ */
27
+ private _clearEnvironment;
28
+ /**
29
+ * 3D 씬 배경(sky)을 설정한다. environment(IBL)도 함께 관리한다.
30
+ * @param sky - 프리셋 이름 (studio/warehouse/factory/office/home | sunny/cloudy/rainy) | 'color' | '' (none)
21
31
  * @param skyColor - sky='color'일 때 사용할 색상
22
32
  */
23
33
  setSky(sky?: string, skyColor?: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"scene-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/scene-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAmB1D,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,MAAM,CAAC,CAAsB;IACrC,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAe;IACnC,OAAO,CAAC,SAAS,CAAC,CAAqB;IAEvC,IAAI,KAAK,4BAER;IAED,IAAI,KAAK,qCAER;IAED,KAAK;IAKL,UAAU;IAOV,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa;IAK9C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAetC,QAAQ,CAAC,SAAS,EAAE,SAAS;IAO7B;;;OAGG;IACH,WAAW,CAAC,SAAS,EAAE,SAAS;IAYhC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ;IAI/B,eAAe;IAOf,OAAO;CAyBR"}
1
+ {"version":3,"file":"scene-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/scene-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AA2B1D;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAItE;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,MAAM,CAAC,CAAsB;IACrC,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAe;IACnC,OAAO,CAAC,SAAS,CAAC,CAAqB;IAEvC,IAAI,KAAK,4BAER;IAED,IAAI,KAAK,qCAER;IAED,KAAK;IAKL,UAAU;IAOV,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa;IAO9C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAmBtC,QAAQ,CAAC,SAAS,EAAE,SAAS;IAO7B;;;OAGG;IACH,WAAW,CAAC,SAAS,EAAE,SAAS;IAYhC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ;IAI/B,eAAe;IAOf,OAAO;CAyBR"}
@@ -11,6 +11,8 @@ export interface RendererConfig {
11
11
  antialias: boolean;
12
12
  exposure: number;
13
13
  postprocessing?: boolean;
14
+ shadowMap?: boolean;
15
+ logarithmicDepthBuffer?: boolean;
14
16
  }
15
17
  export interface LightingConfig {
16
18
  hemisphere: {
@@ -21,7 +23,8 @@ export interface LightingConfig {
21
23
  directional?: {
22
24
  color: number;
23
25
  intensity: number;
24
- attachToCamera: boolean;
26
+ attachToCamera?: boolean;
27
+ position?: [number, number, number];
25
28
  castShadow?: boolean;
26
29
  shadowMapSize?: number;
27
30
  shadowBias?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACxE,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,cAAc,EAAE,OAAO,CAAA;QACvB,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,UAAU,EAAE,OAAO,CAAA;QACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAClC,UAAU,EAAE,MAAM,CAAA;QAClB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACxE,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,cAAc,CAAC,EAAE,OAAO,CAAA;QACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACnC,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,UAAU,EAAE,OAAO,CAAA;QACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAClC,UAAU,EAAE,MAAM,CAAA;QAClB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF"}
@@ -0,0 +1,154 @@
1
+ import * as THREE from 'three';
2
+ import type Component from '../../components/component.js';
3
+ /**
4
+ * 선택된 path 기반 컴포넌트의 각 vertex에 드래그 가능한 핸들을 표시하는 매니저.
5
+ *
6
+ * polyline, line, polygon, path 등 mutable+path 속성을 가진 컴포넌트에 공통 적용.
7
+ * 멀티셀렉트 시 모든 mutable+path 컴포넌트의 핸들을 표시한다.
8
+ *
9
+ * 기능:
10
+ * - vertex 핸들 드래그: vertex 이동
11
+ * - midpoint 핸들 드래그: 세그먼트 중간에 새 vertex 삽입
12
+ * - Alt+드래그 끝점: 끝에 새 vertex 추가 (pathExtendable인 경우)
13
+ * - 더블클릭 vertex: vertex 삭제 (pathExtendable이고 path.length > 2)
14
+ */
15
+ export declare class VertexGizmoManager {
16
+ private _componentHandles;
17
+ private _handleGroup?;
18
+ private _scene3d?;
19
+ private _commander?;
20
+ private _activeComponent?;
21
+ private _activeVertexHandles;
22
+ private _activeHandleIndex;
23
+ private _activeKind;
24
+ private _activeHandle?;
25
+ private _isDragging;
26
+ private _isPending;
27
+ private _pendingHit?;
28
+ private _pendingHandleType?;
29
+ private _pendingScreenStart;
30
+ private _dragPlane;
31
+ private _dragOffset;
32
+ private _raycaster;
33
+ private _intersection;
34
+ get isDragging(): boolean;
35
+ get isAttached(): boolean;
36
+ /** 핸들 표시/숨김 (기즈모 드래그 중에는 숨김) */
37
+ setVisible(visible: boolean): void;
38
+ /**
39
+ * 선택된 컴포넌트들에 vertex 핸들을 표시한다.
40
+ */
41
+ attachMultiple(components: Component[], scene: THREE.Scene, commander?: any): void;
42
+ /** 하위 호환: 단일 컴포넌트 attach */
43
+ attach(component: Component, scene: THREE.Scene, commander?: any): void;
44
+ /**
45
+ * 핸들을 제거한다.
46
+ */
47
+ detach(): void;
48
+ /**
49
+ * 컴포넌트에 대한 핸들을 생성한다.
50
+ */
51
+ private _buildComponentHandles;
52
+ /**
53
+ * 특정 컴포넌트의 핸들만 재생성한다.
54
+ */
55
+ private _rebuildComponentHandles;
56
+ private _createVertexHandle;
57
+ private _createMidpointHandle;
58
+ private _createCornerHandle;
59
+ private _createBulgeHandle;
60
+ /**
61
+ * 3D 핸들 위치 → 2D path 포인트 역변환
62
+ */
63
+ private _handlePosToPoint;
64
+ /**
65
+ * mutatePath를 commander undo 지원과 함께 실행
66
+ */
67
+ private _execMutatePath;
68
+ /** 모든 핸들을 flat 배열로 반환 */
69
+ private _getAllHandles;
70
+ /** 컴포넌트에 속하는 ComponentHandles를 찾는다 */
71
+ private _findComponentHandles;
72
+ /**
73
+ * 마우스 다운: 핸들 raycast hit 감지 → **pending 상태 진입** (드래그 시작 X).
74
+ *
75
+ * 2D `ua-event-handler.ts` 와 동일 컨벤션: mousedown 만으로 path mutation 을 일으키지
76
+ * 않고, mousemove 가 DRAG_THRESHOLD_PX2 를 넘는 순간 dragstart 처리.
77
+ * 이전엔 midpoint 핸들 클릭만 해도 vertex 가 즉시 추가되었고, vertex 클릭만 해도
78
+ * mouseup 에서 no-op CommandChange 가 쌓였다 — 두 케이스 모두 2D 와 다른 거동.
79
+ *
80
+ * vertex/midpoint 우선 raycast — corner/bulge 는 vertex 가 hit 안 될 때만 검사.
81
+ * 같은 ray 위에 vertex 와 corner 가 겹칠 때 vertex 가 우선되도록.
82
+ *
83
+ * @returns true이면 이벤트를 소비
84
+ */
85
+ onPointerDown(ndc: THREE.Vector2, camera: THREE.Camera, event: MouseEvent): boolean;
86
+ /**
87
+ * pending 상태에서 임계값 통과 시점에 호출 — kind 별 dragstart 처리.
88
+ * `_startMidpointDrag` 는 vertex 를 splice 하므로 이 시점까지 path mutation 이 미뤄진다.
89
+ */
90
+ private _beginDrag;
91
+ /**
92
+ * corner radius 핸들 드래그 시작 — 보드 평면 ray-cast 로 드래그 좌표를 받아
93
+ * cornerRadiusFromDrag 으로 새 radius 계산.
94
+ */
95
+ private _startCornerDrag;
96
+ /**
97
+ * bulge 핸들 드래그 시작.
98
+ */
99
+ private _startBulgeDrag;
100
+ /**
101
+ * midpoint 핸들 드래그 시작: 세그먼트 중간에 새 vertex를 삽입
102
+ */
103
+ private _startMidpointDrag;
104
+ /**
105
+ * Alt+드래그 끝점: 끝에 새 vertex를 추가하고 드래그 시작
106
+ */
107
+ private _startEndpointExtend;
108
+ /**
109
+ * 카메라 방향 기반 드래그 평면 설정
110
+ */
111
+ private _setupDragPlane;
112
+ /**
113
+ * 마우스 이동: pending 인 경우 임계값 검사 후 dragstart, 그 후 dragmove 처리.
114
+ *
115
+ * 첫 mousemove 가 임계값을 넘는 순간 `_beginDrag` 호출 — 이 함수가 _setupDragPlane 까지
116
+ * 처리하므로 같은 mousemove 내에서 fallthrough 로 dragmove 까지 이어지면 된다.
117
+ */
118
+ onPointerMove(ndc: THREE.Vector2, camera: THREE.Camera, event: MouseEvent): boolean;
119
+ /** corner 드래그 라이브 갱신 — 보드 좌표 변환 후 cornerRadiusFromDrag */
120
+ private _dragCornerLive;
121
+ /** bulge 드래그 라이브 갱신 */
122
+ private _dragBulgeLive;
123
+ /**
124
+ * 현재 활성 컴포넌트의 vertex 핸들 위치로부터 Line2 geometry를 실시간 업데이트한다.
125
+ */
126
+ private _updateLinePreview;
127
+ /**
128
+ * 마우스 업: 드래그 종료 → component.mutatePath() 호출.
129
+ *
130
+ * pending 만 있고 드래그가 시작 안 된 경우 = 클릭만. mutation 없이 정리만 한다
131
+ * (2D 와 동일 — 클릭은 path 를 더럽히지 않음). dblclick 은 별개 이벤트라 정리해도 무방.
132
+ */
133
+ onPointerUp(): boolean;
134
+ /**
135
+ * 더블클릭:
136
+ * - vertex 핸들 → vertex 삭제 (기존)
137
+ * - corner 핸들 → radius 제거 (직각 복귀)
138
+ * - bulge 핸들 → bulge 제거 (직선 복귀)
139
+ *
140
+ * vertex 우선 raycast — corner/bulge 는 vertex 가 hit 안 될 때만 검사.
141
+ * onPointerDown 과 동일 컨벤션 (vertex 위 클릭이 corner 로 떨어지지 않도록).
142
+ */
143
+ onDblClick(ndc: THREE.Vector2, camera: THREE.Camera): boolean;
144
+ /**
145
+ * 핸들 위치를 현재 path 데이터에서 갱신한다.
146
+ */
147
+ syncHandles(): void;
148
+ /**
149
+ * 카메라 거리에 따라 핸들 크기를 조절하여 화면상 일정한 크기를 유지한다.
150
+ */
151
+ updateHandleScales(camera: THREE.Camera): void;
152
+ destroy(): void;
153
+ }
154
+ //# sourceMappingURL=vertex-gizmo-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertex-gizmo-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/vertex-gizmo-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AA4D1D;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,YAAY,CAAC,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAK;IAGxB,OAAO,CAAC,gBAAgB,CAAC,CAAW;IACpC,OAAO,CAAC,oBAAoB,CAAmB;IAC/C,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,aAAa,CAAC,CAAY;IAClC,OAAO,CAAC,WAAW,CAAQ;IAE3B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,WAAW,CAAC,CAAY;IAChC,OAAO,CAAC,kBAAkB,CAAC,CAAY;IACvC,OAAO,CAAC,mBAAmB,CAAiB;IAC5C,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,aAAa,CAAsB;IAE3C,IAAI,UAAU,YAA8B;IAC5C,IAAI,UAAU,YAA+C;IAE7D,gCAAgC;IAChC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAMlC;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,IAAI;IAqBlF,4BAA4B;IAC5B,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,IAAI;IAIvE;;OAEG;IACH,MAAM,IAAI,IAAI;IAqBd;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA0F9B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAwBhC,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,kBAAkB;IAkB1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB,yBAAyB;IACzB,OAAO,CAAC,cAAc;IAatB,sCAAsC;IACtC,OAAO,CAAC,qBAAqB;IAI7B;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IAwDnF;;;OAGG;IACH,OAAO,CAAC,UAAU;IAsClB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;;;;OAKG;IACH,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IAkEnF,0DAA0D;IAC1D,OAAO,CAAC,eAAe;IAwCvB,uBAAuB;IACvB,OAAO,CAAC,cAAc;IA0CtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;;;;OAKG;IACH,WAAW,IAAI,OAAO;IA4DtB;;;;;;;;OAQG;IACH,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO;IAuE7D;;OAEG;IACH,WAAW,IAAI,IAAI;IAMnB;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI;IA2B9C,OAAO,IAAI,IAAI;CAGhB"}
@@ -10,8 +10,6 @@ export interface Material3D {
10
10
  side?: 'double' | 'front' | 'back';
11
11
  castShadow?: boolean;
12
12
  receiveShadow?: boolean;
13
- spriteMode?: 'billboard' | 'plane';
14
- renderMode?: 'css3d' | 'texture';
15
13
  }
16
14
  export interface ResolvedMaterial3D {
17
15
  metalness: number;
@@ -33,4 +31,9 @@ export interface MaterialPreset {
33
31
  export declare const MATERIAL_PRESETS: Record<string, MaterialPreset>;
34
32
  export declare function resolveMaterial3d(material3d?: Material3D): ResolvedMaterial3D;
35
33
  export declare function toThreeSide(side: ResolvedMaterial3D['side']): THREE.Side;
34
+ /**
35
+ * resolved material3d 속성을 MeshStandardMaterial에 일괄 적용한다.
36
+ * createMaterials / updateMaterial3d 에서 공통으로 사용.
37
+ */
38
+ export declare function applyMaterial3dProps(material: THREE.MeshStandardMaterial, resolved: ResolvedMaterial3D): void;
36
39
  //# sourceMappingURL=material-3d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"material-3d.d.ts","sourceRoot":"","sources":["../../src/threed/material-3d.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,WAAW,UAAU;IAEzB,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAG1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IAGlC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IAGvB,UAAU,CAAC,EAAE,WAAW,GAAG,OAAO,CAAA;IAGlC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IACjC,UAAU,EAAE,OAAO,CAAA;IACnB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAQ3D,CAAA;AAED,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,kBAAkB,CA4B7E;AAQD,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAExE"}
1
+ {"version":3,"file":"material-3d.d.ts","sourceRoot":"","sources":["../../src/threed/material-3d.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,WAAW,UAAU;IAEzB,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAG1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IAGlC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IACjC,UAAU,EAAE,OAAO,CAAA;IACnB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAQ3D,CAAA;AAED,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,kBAAkB,CA4B7E;AAQD,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAExE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,oBAAoB,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAS7G"}
@@ -0,0 +1,42 @@
1
+ import * as THREE from 'three';
2
+ /**
3
+ * 코어 공통 **Material Bank** — 이름(key) + intrinsic spec 으로 base material 을 등록·공유한다.
4
+ *
5
+ * base 캐시 키 = `key + spec 시그니처`. 같은 key 라도 **spec(재질 속성)이 다르면 별도 base**(예:
6
+ * 인스턴스별 material3d 커스터마이즈)이고, spec 이 같으면 컴포넌트 종류를 넘어 **공유**된다. key 관례는
7
+ * `"{컴포넌트명}|{용도}"` (예: `"conveyor|belt"`, `"chute|body"`).
8
+ *
9
+ * 상태색은 `material(key, spec, color)` — base(색 없는 intrinsic)에 색 overlay(색상별 공유 변형).
10
+ * faint 는 색을 버리고 base 로 수렴(코어 applyFocusDim 자동). 예) 상태색 4종 컴포넌트(같은 intrinsic)
11
+ * → base 1 + 색 4 + faint 1 = 6개, 인스턴스 무관.
12
+ *
13
+ * material 은 미리 만들지 않고 lazy 생성, 앱 수명 공유. dispose 는 앱/씬 종료 시 MaterialBank.dispose().
14
+ */
15
+ export interface MaterialSpec {
16
+ color?: THREE.ColorRepresentation;
17
+ metalness?: number;
18
+ roughness?: number;
19
+ opacity?: number;
20
+ transparent?: boolean;
21
+ emissive?: THREE.ColorRepresentation;
22
+ emissiveIntensity?: number;
23
+ envMapIntensity?: number;
24
+ side?: THREE.Side;
25
+ map?: THREE.Texture | null;
26
+ flatShading?: boolean;
27
+ depthWrite?: boolean;
28
+ }
29
+ export declare const MaterialBank: {
30
+ /**
31
+ * key + spec 으로 공유 base material 을 얻는다(같은 (key, spec)이면 공유, spec 다르면 별도 base).
32
+ * color 를 주면 base 의 색 overlay 변형(같은 색끼리 공유), 안 주면 base 자체. faint 는 코어 자동.
33
+ */
34
+ material(key: string, spec: MaterialSpec, color?: THREE.ColorRepresentation): THREE.MeshStandardMaterial;
35
+ /** 등록된 base 개수(테스트/진단용). */
36
+ readonly size: number;
37
+ /** key 로 등록된 base 존재 여부(spec 무관, prefix 매칭). */
38
+ has(key: string): boolean;
39
+ /** 전체 해제 — 앱/씬 종료 시. 각 base 의 변형(색·faint)까지 dispose. */
40
+ dispose(): void;
41
+ };
42
+ //# sourceMappingURL=material-bank.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material-bank.d.ts","sourceRoot":"","sources":["../../src/threed/material-bank.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAA;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAA;IACjB,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAA;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAgDD,eAAO,MAAM,YAAY;IACvB;;;OAGG;kBACW,MAAM,QAAQ,YAAY,UAAU,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,oBAAoB;IAOxG,4BAA4B;mBAChB,MAAM;IAIlB,gDAAgD;aACvC,MAAM,GAAG,OAAO;IAMzB,wDAAwD;eAC7C,IAAI;CAOhB,CAAA"}
@@ -0,0 +1,43 @@
1
+ import * as THREE from 'three';
2
+ /**
3
+ * 파생 material 변형(variant) 공유 레지스트리 — **base material 하나**에서 `(base × spec)` 로 변형을
4
+ * lazy 생성·공유한다. 상태색과 faint 를 같은 메커니즘으로 다룬다:
5
+ * - 상태색 : resolveVariant(base, { color }) → 같은 색 인스턴스들이 변형 하나 공유
6
+ * - faint : resolveVariant(base, { opacityFactor:0.5 }) → color 없음(=base 색) → base 당 1개, 색 무관 수렴
7
+ *
8
+ * 예) 상태색 4종 컴포넌트 → base 1 + 색 변형 4 + faint 1 = **6개**(인스턴스 수 무관). faint 는 색을
9
+ * 버리고 base 로 모이므로 색상 수만큼 늘지 않는다.
10
+ *
11
+ * base 는 절대 변경하지 않으므로 공유 안전(오염 없음). content alpha 등 base.opacity 변화는 스왑
12
+ * 시점에 곱해 반영된다.
13
+ *
14
+ * 수명 2층: 캐시 WeakMap<base, Map<sig, variant>>(base GC 시 소멸) + 명시적 GPU 해제(base dispose 시
15
+ * disposeVariantsOf; 텍스처는 base 참조공유라 제외). dispose 전 restoreCanonicalMaterials 로 원복.
16
+ */
17
+ export interface MaterialVariantSpec {
18
+ color?: THREE.ColorRepresentation;
19
+ /** base.opacity 에 곱할 배율(content alpha 등). 1 이상이면 무변형. */
20
+ opacityFactor?: number;
21
+ }
22
+ /** `base × spec` 공유 변형을 돌려준다. 무변형 spec 이면 base 그대로. */
23
+ export declare function resolveVariant(base: any, spec: MaterialVariantSpec): any;
24
+ /**
25
+ * mesh.material 을 faint(흐림)로 스왑하거나(faint=true) 원복(false). **faint 는 색을 버리고 base 로
26
+ * 수렴**한다 — 현재 material 이 색 변형이면 그 base 의 faint 변형(색 무관 1개)을 공유한다. base 선언이
27
+ * 없으면 material 자신이 base(하위호환: material 별 faint). 복원은 표시 material 로(색 정확히 되돌림).
28
+ */
29
+ export declare function setFaint(mesh: any, faint: boolean): void;
30
+ /**
31
+ * content alpha × faint 를 mesh.material 에 **opacity 오버레이**로 반영 — 코어가 모든 컴포넌트에 일괄.
32
+ * canonical(=컴포넌트가 만든 설계 material, 설계 opacity 유지) 을 base 로 삼아 variant 스왑:
33
+ * - faint: 색·contentAlpha·emissive 무관하게 base 당 하나로 수렴(opacity = 설계 × 0.5).
34
+ * - 비-faint & contentAlpha<1: 색 유지 + opacity = 설계 × contentAlpha.
35
+ * - 무변형(contentAlpha≥1, 비-faint): canonical 그대로(스왑 없음).
36
+ * 컴포넌트는 alpha 를 material 에 굽지 않는다(설계 opacity 만) — 코어가 여기서 한 번만 곱한다.
37
+ */
38
+ export declare function applyMeshOpacity(mesh: any, contentAlpha: number, faint: boolean): void;
39
+ /** dispose 전 호출 — 변형을 벗기고 표시 material 복원. 공유 변형/base 텍스처의 조기 파괴 방지. */
40
+ export declare function restoreCanonicalMaterials(root: any): void;
41
+ /** base material dispose 시 그 변형들의 GPU program 도 해제(텍스처는 base 소유라 제외). */
42
+ export declare function disposeVariantsOf(base: any): void;
43
+ //# sourceMappingURL=material-variant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material-variant.d.ts","sourceRoot":"","sources":["../../src/threed/material-variant.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAA;IACjC,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAuCD,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,GAAG,GAAG,CAexE;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAexD;AAID;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAgBtF;AAED,uEAAuE;AACvE,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAQzD;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAKjD"}