@aibee/owlly 1.0.25

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 (500) hide show
  1. package/README.external.md +75 -0
  2. package/README.md +28 -0
  3. package/lib/src/external/lines/line-geometry.d.ts +9 -0
  4. package/lib/src/external/lines/line-geometry.js +52 -0
  5. package/lib/src/external/lines/line-geometry.js.map +1 -0
  6. package/lib/src/external/lines/line-material.d.ts +10 -0
  7. package/lib/src/external/lines/line-material.js +377 -0
  8. package/lib/src/external/lines/line-material.js.map +1 -0
  9. package/lib/src/external/lines/line-segments-2.d.ts +7 -0
  10. package/lib/src/external/lines/line-segments-2.js +144 -0
  11. package/lib/src/external/lines/line-segments-2.js.map +1 -0
  12. package/lib/src/external/lines/line-segments-geometry.d.ts +15 -0
  13. package/lib/src/external/lines/line-segments-geometry.js +141 -0
  14. package/lib/src/external/lines/line-segments-geometry.js.map +1 -0
  15. package/lib/src/external/loaders/gltf-loader.d.ts +77 -0
  16. package/lib/src/external/loaders/gltf-loader.js +2319 -0
  17. package/lib/src/external/loaders/gltf-loader.js.map +1 -0
  18. package/lib/src/external/orbit-controls.d.ts +44 -0
  19. package/lib/src/external/orbit-controls.js +746 -0
  20. package/lib/src/external/orbit-controls.js.map +1 -0
  21. package/lib/src/external/renderers/css-2d-renderer.d.ts +16 -0
  22. package/lib/src/external/renderers/css-2d-renderer.js +122 -0
  23. package/lib/src/external/renderers/css-2d-renderer.js.map +1 -0
  24. package/lib/src/external/renderers/css-3d-renderer.d.ts +18 -0
  25. package/lib/src/external/renderers/css-3d-renderer.js +139 -0
  26. package/lib/src/external/renderers/css-3d-renderer.js.map +1 -0
  27. package/lib/src/external/transform-controls.d.ts +106 -0
  28. package/lib/src/external/transform-controls.js +1113 -0
  29. package/lib/src/external/transform-controls.js.map +1 -0
  30. package/lib/src/external/util/buffer-geometry-utils.d.ts +45 -0
  31. package/lib/src/external/util/buffer-geometry-utils.js +569 -0
  32. package/lib/src/external/util/buffer-geometry-utils.js.map +1 -0
  33. package/lib/src/owlly/controller/aerial-element-controller.d.ts +65 -0
  34. package/lib/src/owlly/controller/aerial-element-controller.js +236 -0
  35. package/lib/src/owlly/controller/aerial-element-controller.js.map +1 -0
  36. package/lib/src/owlly/controller/basic-controller.d.ts +324 -0
  37. package/lib/src/owlly/controller/basic-controller.js +1239 -0
  38. package/lib/src/owlly/controller/basic-controller.js.map +1 -0
  39. package/lib/src/owlly/controller/camera-controller.d.ts +37 -0
  40. package/lib/src/owlly/controller/camera-controller.js +138 -0
  41. package/lib/src/owlly/controller/camera-controller.js.map +1 -0
  42. package/lib/src/owlly/controller/controller.d.ts +61 -0
  43. package/lib/src/owlly/controller/controller.js +24 -0
  44. package/lib/src/owlly/controller/controller.js.map +1 -0
  45. package/lib/src/owlly/controller/index.d.ts +2 -0
  46. package/lib/src/owlly/controller/index.js +14 -0
  47. package/lib/src/owlly/controller/index.js.map +1 -0
  48. package/lib/src/owlly/controller/mouse-indicator-controller.d.ts +34 -0
  49. package/lib/src/owlly/controller/mouse-indicator-controller.js +119 -0
  50. package/lib/src/owlly/controller/mouse-indicator-controller.js.map +1 -0
  51. package/lib/src/owlly/controller/orbit-control.d.ts +147 -0
  52. package/lib/src/owlly/controller/orbit-control.js +265 -0
  53. package/lib/src/owlly/controller/orbit-control.js.map +1 -0
  54. package/lib/src/owlly/controller/panorama-adjust-controller.d.ts +45 -0
  55. package/lib/src/owlly/controller/panorama-adjust-controller.js +158 -0
  56. package/lib/src/owlly/controller/panorama-adjust-controller.js.map +1 -0
  57. package/lib/src/owlly/controller/panorama-controller.d.ts +441 -0
  58. package/lib/src/owlly/controller/panorama-controller.js +1944 -0
  59. package/lib/src/owlly/controller/panorama-controller.js.map +1 -0
  60. package/lib/src/owlly/controller/panorama-transform-controller.d.ts +66 -0
  61. package/lib/src/owlly/controller/panorama-transform-controller.js +137 -0
  62. package/lib/src/owlly/controller/panorama-transform-controller.js.map +1 -0
  63. package/lib/src/owlly/controller/plane-controller.d.ts +43 -0
  64. package/lib/src/owlly/controller/plane-controller.js +174 -0
  65. package/lib/src/owlly/controller/plane-controller.js.map +1 -0
  66. package/lib/src/owlly/controller/texture-controller.d.ts +181 -0
  67. package/lib/src/owlly/controller/texture-controller.js +876 -0
  68. package/lib/src/owlly/controller/texture-controller.js.map +1 -0
  69. package/lib/src/owlly/controller/tile-panorama-controller.d.ts +308 -0
  70. package/lib/src/owlly/controller/tile-panorama-controller.js +1354 -0
  71. package/lib/src/owlly/controller/tile-panorama-controller.js.map +1 -0
  72. package/lib/src/owlly/controller/transform-controller.d.ts +106 -0
  73. package/lib/src/owlly/controller/transform-controller.js +546 -0
  74. package/lib/src/owlly/controller/transform-controller.js.map +1 -0
  75. package/lib/src/owlly/element/bottom-nav-element.d.ts +65 -0
  76. package/lib/src/owlly/element/bottom-nav-element.js +258 -0
  77. package/lib/src/owlly/element/bottom-nav-element.js.map +1 -0
  78. package/lib/src/owlly/element/camera.d.ts +82 -0
  79. package/lib/src/owlly/element/camera.js +284 -0
  80. package/lib/src/owlly/element/camera.js.map +1 -0
  81. package/lib/src/owlly/element/dom-2d-element.d.ts +35 -0
  82. package/lib/src/owlly/element/dom-2d-element.js +49 -0
  83. package/lib/src/owlly/element/dom-2d-element.js.map +1 -0
  84. package/lib/src/owlly/element/dom-3d-element.d.ts +27 -0
  85. package/lib/src/owlly/element/dom-3d-element.js +34 -0
  86. package/lib/src/owlly/element/dom-3d-element.js.map +1 -0
  87. package/lib/src/owlly/element/dom-label-2d.d.ts +116 -0
  88. package/lib/src/owlly/element/dom-label-2d.js +383 -0
  89. package/lib/src/owlly/element/dom-label-2d.js.map +1 -0
  90. package/lib/src/owlly/element/element.d.ts +53 -0
  91. package/lib/src/owlly/element/element.js +76 -0
  92. package/lib/src/owlly/element/element.js.map +1 -0
  93. package/lib/src/owlly/element/floor-model.d.ts +83 -0
  94. package/lib/src/owlly/element/floor-model.js +228 -0
  95. package/lib/src/owlly/element/floor-model.js.map +1 -0
  96. package/lib/src/owlly/element/gif-kit/Gif.d.ts +96 -0
  97. package/lib/src/owlly/element/gif-kit/Gif.js +433 -0
  98. package/lib/src/owlly/element/gif-kit/Gif.js.map +1 -0
  99. package/lib/src/owlly/element/gif-kit/GifColor.d.ts +21 -0
  100. package/lib/src/owlly/element/gif-kit/GifColor.js +38 -0
  101. package/lib/src/owlly/element/gif-kit/GifColor.js.map +1 -0
  102. package/lib/src/owlly/element/gif-kit/GifCompressedCodesToByteArrayConverter.d.ts +20 -0
  103. package/lib/src/owlly/element/gif-kit/GifCompressedCodesToByteArrayConverter.js +51 -0
  104. package/lib/src/owlly/element/gif-kit/GifCompressedCodesToByteArrayConverter.js.map +1 -0
  105. package/lib/src/owlly/element/gif-kit/GifFrame.d.ts +31 -0
  106. package/lib/src/owlly/element/gif-kit/GifFrame.js +97 -0
  107. package/lib/src/owlly/element/gif-kit/GifFrame.js.map +1 -0
  108. package/lib/src/owlly/element/gif-kit/GifImage.d.ts +23 -0
  109. package/lib/src/owlly/element/gif-kit/GifImage.js +8 -0
  110. package/lib/src/owlly/element/gif-kit/GifImage.js.map +1 -0
  111. package/lib/src/owlly/element/gif-kit/GifParser.d.ts +17 -0
  112. package/lib/src/owlly/element/gif-kit/GifParser.js +197 -0
  113. package/lib/src/owlly/element/gif-kit/GifParser.js.map +1 -0
  114. package/lib/src/owlly/element/gif-kit/GifPresenter.d.ts +20 -0
  115. package/lib/src/owlly/element/gif-kit/GifPresenter.js +44 -0
  116. package/lib/src/owlly/element/gif-kit/GifPresenter.js.map +1 -0
  117. package/lib/src/owlly/element/gif-kit/GifVersion.d.ts +10 -0
  118. package/lib/src/owlly/element/gif-kit/GifVersion.js +13 -0
  119. package/lib/src/owlly/element/gif-kit/GifVersion.js.map +1 -0
  120. package/lib/src/owlly/element/gltf-mesh-element.d.ts +31 -0
  121. package/lib/src/owlly/element/gltf-mesh-element.js +137 -0
  122. package/lib/src/owlly/element/gltf-mesh-element.js.map +1 -0
  123. package/lib/src/owlly/element/index.d.ts +20 -0
  124. package/lib/src/owlly/element/index.js +25 -0
  125. package/lib/src/owlly/element/index.js.map +1 -0
  126. package/lib/src/owlly/element/map-kit/area.d.ts +24 -0
  127. package/lib/src/owlly/element/map-kit/area.js +218 -0
  128. package/lib/src/owlly/element/map-kit/area.js.map +1 -0
  129. package/lib/src/owlly/element/map-kit/block-set.d.ts +39 -0
  130. package/lib/src/owlly/element/map-kit/block-set.js +91 -0
  131. package/lib/src/owlly/element/map-kit/block-set.js.map +1 -0
  132. package/lib/src/owlly/element/map-kit/block.d.ts +77 -0
  133. package/lib/src/owlly/element/map-kit/block.js +339 -0
  134. package/lib/src/owlly/element/map-kit/block.js.map +1 -0
  135. package/lib/src/owlly/element/map-kit/index.d.ts +4 -0
  136. package/lib/src/owlly/element/map-kit/index.js +7 -0
  137. package/lib/src/owlly/element/map-kit/index.js.map +1 -0
  138. package/lib/src/owlly/element/map-kit/shape.d.ts +131 -0
  139. package/lib/src/owlly/element/map-kit/shape.js +190 -0
  140. package/lib/src/owlly/element/map-kit/shape.js.map +1 -0
  141. package/lib/src/owlly/element/mesh-element.d.ts +22 -0
  142. package/lib/src/owlly/element/mesh-element.js +64 -0
  143. package/lib/src/owlly/element/mesh-element.js.map +1 -0
  144. package/lib/src/owlly/element/mesh-line-2d.d.ts +82 -0
  145. package/lib/src/owlly/element/mesh-line-2d.js +888 -0
  146. package/lib/src/owlly/element/mesh-line-2d.js.map +1 -0
  147. package/lib/src/owlly/element/meshline-o.d.ts +64 -0
  148. package/lib/src/owlly/element/meshline-o.js +679 -0
  149. package/lib/src/owlly/element/meshline-o.js.map +1 -0
  150. package/lib/src/owlly/element/panorama-group.d.ts +241 -0
  151. package/lib/src/owlly/element/panorama-group.js +967 -0
  152. package/lib/src/owlly/element/panorama-group.js.map +1 -0
  153. package/lib/src/owlly/element/panorama.d.ts +132 -0
  154. package/lib/src/owlly/element/panorama.js +813 -0
  155. package/lib/src/owlly/element/panorama.js.map +1 -0
  156. package/lib/src/owlly/element/path-group.d.ts +69 -0
  157. package/lib/src/owlly/element/path-group.js +172 -0
  158. package/lib/src/owlly/element/path-group.js.map +1 -0
  159. package/lib/src/owlly/element/path.d.ts +99 -0
  160. package/lib/src/owlly/element/path.js +532 -0
  161. package/lib/src/owlly/element/path.js.map +1 -0
  162. package/lib/src/owlly/element/placeable-2d.d.ts +158 -0
  163. package/lib/src/owlly/element/placeable-2d.js +471 -0
  164. package/lib/src/owlly/element/placeable-2d.js.map +1 -0
  165. package/lib/src/owlly/element/polygon-mesh.d.ts +107 -0
  166. package/lib/src/owlly/element/polygon-mesh.js +308 -0
  167. package/lib/src/owlly/element/polygon-mesh.js.map +1 -0
  168. package/lib/src/owlly/element/ring-element.d.ts +79 -0
  169. package/lib/src/owlly/element/ring-element.js +384 -0
  170. package/lib/src/owlly/element/ring-element.js.map +1 -0
  171. package/lib/src/owlly/element/sphere-mesh.d.ts +28 -0
  172. package/lib/src/owlly/element/sphere-mesh.js +70 -0
  173. package/lib/src/owlly/element/sphere-mesh.js.map +1 -0
  174. package/lib/src/owlly/element/svg-floor-model.d.ts +22 -0
  175. package/lib/src/owlly/element/svg-floor-model.js +185 -0
  176. package/lib/src/owlly/element/svg-floor-model.js.map +1 -0
  177. package/lib/src/owlly/element/svg-floors.d.ts +27 -0
  178. package/lib/src/owlly/element/svg-floors.js +110 -0
  179. package/lib/src/owlly/element/svg-floors.js.map +1 -0
  180. package/lib/src/owlly/element/tile-panorama-group.d.ts +335 -0
  181. package/lib/src/owlly/element/tile-panorama-group.js +1007 -0
  182. package/lib/src/owlly/element/tile-panorama-group.js.map +1 -0
  183. package/lib/src/owlly/element/tile-panorama.d.ts +161 -0
  184. package/lib/src/owlly/element/tile-panorama.js +511 -0
  185. package/lib/src/owlly/element/tile-panorama.js.map +1 -0
  186. package/lib/src/owlly/element/tile-plane.d.ts +105 -0
  187. package/lib/src/owlly/element/tile-plane.js +361 -0
  188. package/lib/src/owlly/element/tile-plane.js.map +1 -0
  189. package/lib/src/owlly/element/video-element.d.ts +33 -0
  190. package/lib/src/owlly/element/video-element.js +160 -0
  191. package/lib/src/owlly/element/video-element.js.map +1 -0
  192. package/lib/src/owlly/geometries/ExtrudeGeometry2.d.ts +15 -0
  193. package/lib/src/owlly/geometries/ExtrudeGeometry2.js +211 -0
  194. package/lib/src/owlly/geometries/ExtrudeGeometry2.js.map +1 -0
  195. package/lib/src/owlly/index.d.ts +13 -0
  196. package/lib/src/owlly/index.js +17 -0
  197. package/lib/src/owlly/index.js.map +1 -0
  198. package/lib/src/owlly/overlay/canvas-overlay.d.ts +96 -0
  199. package/lib/src/owlly/overlay/canvas-overlay.js +511 -0
  200. package/lib/src/owlly/overlay/canvas-overlay.js.map +1 -0
  201. package/lib/src/owlly/overlay/css-2d-overlay.d.ts +14 -0
  202. package/lib/src/owlly/overlay/css-2d-overlay.js +36 -0
  203. package/lib/src/owlly/overlay/css-2d-overlay.js.map +1 -0
  204. package/lib/src/owlly/overlay/css-3d-overlay.d.ts +16 -0
  205. package/lib/src/owlly/overlay/css-3d-overlay.js +37 -0
  206. package/lib/src/owlly/overlay/css-3d-overlay.js.map +1 -0
  207. package/lib/src/owlly/overlay/index.d.ts +6 -0
  208. package/lib/src/owlly/overlay/index.js +12 -0
  209. package/lib/src/owlly/overlay/index.js.map +1 -0
  210. package/lib/src/owlly/overlay/label-overlay.d.ts +62 -0
  211. package/lib/src/owlly/overlay/label-overlay.js +329 -0
  212. package/lib/src/owlly/overlay/label-overlay.js.map +1 -0
  213. package/lib/src/owlly/overlay/overlay.d.ts +14 -0
  214. package/lib/src/owlly/overlay/overlay.js +5 -0
  215. package/lib/src/owlly/overlay/overlay.js.map +1 -0
  216. package/lib/src/owlly/overlay/path-overlay.d.ts +39 -0
  217. package/lib/src/owlly/overlay/path-overlay.js +125 -0
  218. package/lib/src/owlly/overlay/path-overlay.js.map +1 -0
  219. package/lib/src/owlly/overlay/path-overlay2.d.ts +35 -0
  220. package/lib/src/owlly/overlay/path-overlay2.js +119 -0
  221. package/lib/src/owlly/overlay/path-overlay2.js.map +1 -0
  222. package/lib/src/owlly/overlay/poi-overlay-3d.d.ts +278 -0
  223. package/lib/src/owlly/overlay/poi-overlay-3d.js +1433 -0
  224. package/lib/src/owlly/overlay/poi-overlay-3d.js.map +1 -0
  225. package/lib/src/owlly/overlay/poi-overlay.d.ts +277 -0
  226. package/lib/src/owlly/overlay/poi-overlay.js +1412 -0
  227. package/lib/src/owlly/overlay/poi-overlay.js.map +1 -0
  228. package/lib/src/owlly/owlly-2d/index.d.ts +28 -0
  229. package/lib/src/owlly/owlly-2d/index.js +93 -0
  230. package/lib/src/owlly/owlly-2d/index.js.map +1 -0
  231. package/lib/src/owlly/screen/index.d.ts +1 -0
  232. package/lib/src/owlly/screen/index.js +2 -0
  233. package/lib/src/owlly/screen/index.js.map +1 -0
  234. package/lib/src/owlly/screen/screen.d.ts +73 -0
  235. package/lib/src/owlly/screen/screen.js +237 -0
  236. package/lib/src/owlly/screen/screen.js.map +1 -0
  237. package/lib/src/owlly/stage/__test__/stage.spec.d.ts +1 -0
  238. package/lib/src/owlly/stage/__test__/stage.spec.js +15 -0
  239. package/lib/src/owlly/stage/__test__/stage.spec.js.map +1 -0
  240. package/lib/src/owlly/stage/externals.d.ts +19 -0
  241. package/lib/src/owlly/stage/externals.js +25 -0
  242. package/lib/src/owlly/stage/externals.js.map +1 -0
  243. package/lib/src/owlly/stage/index.d.ts +4 -0
  244. package/lib/src/owlly/stage/index.js +7 -0
  245. package/lib/src/owlly/stage/index.js.map +1 -0
  246. package/lib/src/owlly/stage/owlly.d.ts +38 -0
  247. package/lib/src/owlly/stage/owlly.js +168 -0
  248. package/lib/src/owlly/stage/owlly.js.map +1 -0
  249. package/lib/src/owlly/stage/stage.d.ts +108 -0
  250. package/lib/src/owlly/stage/stage.js +235 -0
  251. package/lib/src/owlly/stage/stage.js.map +1 -0
  252. package/lib/src/owlly/utils/alignment-utils.d.ts +20 -0
  253. package/lib/src/owlly/utils/alignment-utils.js +64 -0
  254. package/lib/src/owlly/utils/alignment-utils.js.map +1 -0
  255. package/lib/src/owlly/utils/basic-calc.d.ts +18 -0
  256. package/lib/src/owlly/utils/basic-calc.js +130 -0
  257. package/lib/src/owlly/utils/basic-calc.js.map +1 -0
  258. package/lib/src/owlly/utils/basic-tools.d.ts +71 -0
  259. package/lib/src/owlly/utils/basic-tools.js +236 -0
  260. package/lib/src/owlly/utils/basic-tools.js.map +1 -0
  261. package/lib/src/owlly/utils/bvh-tree.d.ts +105 -0
  262. package/lib/src/owlly/utils/bvh-tree.js +540 -0
  263. package/lib/src/owlly/utils/bvh-tree.js.map +1 -0
  264. package/lib/src/owlly/utils/camera.d.ts +37 -0
  265. package/lib/src/owlly/utils/camera.js +51 -0
  266. package/lib/src/owlly/utils/camera.js.map +1 -0
  267. package/lib/src/owlly/utils/cube-texture-cache.d.ts +25 -0
  268. package/lib/src/owlly/utils/cube-texture-cache.js +144 -0
  269. package/lib/src/owlly/utils/cube-texture-cache.js.map +1 -0
  270. package/lib/src/owlly/utils/device-utils.d.ts +18 -0
  271. package/lib/src/owlly/utils/device-utils.js +42 -0
  272. package/lib/src/owlly/utils/device-utils.js.map +1 -0
  273. package/lib/src/owlly/utils/environment-utils.d.ts +37 -0
  274. package/lib/src/owlly/utils/environment-utils.js +74 -0
  275. package/lib/src/owlly/utils/environment-utils.js.map +1 -0
  276. package/lib/src/owlly/utils/event-hub.d.ts +50 -0
  277. package/lib/src/owlly/utils/event-hub.js +107 -0
  278. package/lib/src/owlly/utils/event-hub.js.map +1 -0
  279. package/lib/src/owlly/utils/events.d.ts +219 -0
  280. package/lib/src/owlly/utils/events.js +220 -0
  281. package/lib/src/owlly/utils/events.js.map +1 -0
  282. package/lib/src/owlly/utils/geometry-utils.d.ts +119 -0
  283. package/lib/src/owlly/utils/geometry-utils.js +623 -0
  284. package/lib/src/owlly/utils/geometry-utils.js.map +1 -0
  285. package/lib/src/owlly/utils/helper.d.ts +6 -0
  286. package/lib/src/owlly/utils/helper.js +25 -0
  287. package/lib/src/owlly/utils/helper.js.map +1 -0
  288. package/lib/src/owlly/utils/index.d.ts +14 -0
  289. package/lib/src/owlly/utils/index.js +18 -0
  290. package/lib/src/owlly/utils/index.js.map +1 -0
  291. package/lib/src/owlly/utils/lru-cache.d.ts +26 -0
  292. package/lib/src/owlly/utils/lru-cache.js +110 -0
  293. package/lib/src/owlly/utils/lru-cache.js.map +1 -0
  294. package/lib/src/owlly/utils/map-utils.d.ts +7 -0
  295. package/lib/src/owlly/utils/map-utils.js +53 -0
  296. package/lib/src/owlly/utils/map-utils.js.map +1 -0
  297. package/lib/src/owlly/utils/number-utils.d.ts +8 -0
  298. package/lib/src/owlly/utils/number-utils.js +73 -0
  299. package/lib/src/owlly/utils/number-utils.js.map +1 -0
  300. package/lib/src/owlly/utils/panorama-model-util.d.ts +46 -0
  301. package/lib/src/owlly/utils/panorama-model-util.js +246 -0
  302. package/lib/src/owlly/utils/panorama-model-util.js.map +1 -0
  303. package/lib/src/owlly/utils/path-utils.d.ts +80 -0
  304. package/lib/src/owlly/utils/path-utils.js +729 -0
  305. package/lib/src/owlly/utils/path-utils.js.map +1 -0
  306. package/lib/src/owlly/utils/svgutils.d.ts +138 -0
  307. package/lib/src/owlly/utils/svgutils.js +562 -0
  308. package/lib/src/owlly/utils/svgutils.js.map +1 -0
  309. package/lib/src/owlly/utils/texture-cache.d.ts +29 -0
  310. package/lib/src/owlly/utils/texture-cache.js +116 -0
  311. package/lib/src/owlly/utils/texture-cache.js.map +1 -0
  312. package/lib/src/owlly/utils/tile-util.d.ts +187 -0
  313. package/lib/src/owlly/utils/tile-util.js +457 -0
  314. package/lib/src/owlly/utils/tile-util.js.map +1 -0
  315. package/lib/src/owlly/utils/time-profiler.d.ts +21 -0
  316. package/lib/src/owlly/utils/time-profiler.js +49 -0
  317. package/lib/src/owlly/utils/time-profiler.js.map +1 -0
  318. package/lib/src/owlly/view/__test__/perspective-view.spec.d.ts +0 -0
  319. package/lib/src/owlly/view/__test__/perspective-view.spec.js +22 -0
  320. package/lib/src/owlly/view/__test__/perspective-view.spec.js.map +1 -0
  321. package/lib/src/owlly/view/camera-view.d.ts +35 -0
  322. package/lib/src/owlly/view/camera-view.js +102 -0
  323. package/lib/src/owlly/view/camera-view.js.map +1 -0
  324. package/lib/src/owlly/view/index.d.ts +3 -0
  325. package/lib/src/owlly/view/index.js +6 -0
  326. package/lib/src/owlly/view/index.js.map +1 -0
  327. package/lib/src/owlly/view/orthographic-view.d.ts +40 -0
  328. package/lib/src/owlly/view/orthographic-view.js +95 -0
  329. package/lib/src/owlly/view/orthographic-view.js.map +1 -0
  330. package/lib/src/owlly/view/perspective-view.d.ts +40 -0
  331. package/lib/src/owlly/view/perspective-view.js +96 -0
  332. package/lib/src/owlly/view/perspective-view.js.map +1 -0
  333. package/lib/src/owlly/view/svg-map-view.d.ts +46 -0
  334. package/lib/src/owlly/view/svg-map-view.js +145 -0
  335. package/lib/src/owlly/view/svg-map-view.js.map +1 -0
  336. package/lib/src/owlly/view/view.d.ts +146 -0
  337. package/lib/src/owlly/view/view.js +318 -0
  338. package/lib/src/owlly/view/view.js.map +1 -0
  339. package/lib/src/web/main.centroid.d.ts +0 -0
  340. package/lib/src/web/main.centroid.js +74 -0
  341. package/lib/src/web/main.centroid.js.map +1 -0
  342. package/lib/src/web/main.hyma.meshline2d.d.ts +1 -0
  343. package/lib/src/web/main.hyma.meshline2d.js +76 -0
  344. package/lib/src/web/main.hyma.meshline2d.js.map +1 -0
  345. package/lib/src/web/main.jyfang.sample.d.ts +0 -0
  346. package/lib/src/web/main.jyfang.sample.js +122 -0
  347. package/lib/src/web/main.jyfang.sample.js.map +1 -0
  348. package/lib/src/web/main.rpeng.extrude.d.ts +1 -0
  349. package/lib/src/web/main.rpeng.extrude.js +180 -0
  350. package/lib/src/web/main.rpeng.extrude.js.map +1 -0
  351. package/lib/src/web/main.rpeng.mes.plane.d.ts +1 -0
  352. package/lib/src/web/main.rpeng.mes.plane.js +135 -0
  353. package/lib/src/web/main.rpeng.mes.plane.js.map +1 -0
  354. package/lib/src/web/main.rpeng.sample.d.ts +0 -0
  355. package/lib/src/web/main.rpeng.sample.js +318 -0
  356. package/lib/src/web/main.rpeng.sample.js.map +1 -0
  357. package/lib/src/web/main.rpeng.vr.d.ts +1 -0
  358. package/lib/src/web/main.rpeng.vr.js +141 -0
  359. package/lib/src/web/main.rpeng.vr.js.map +1 -0
  360. package/lib/src/web/main.sample.d.ts +1 -0
  361. package/lib/src/web/main.sample.js +52 -0
  362. package/lib/src/web/main.sample.js.map +1 -0
  363. package/lib/src/web/quattree.hyma.d.ts +0 -0
  364. package/lib/src/web/quattree.hyma.js +150 -0
  365. package/lib/src/web/quattree.hyma.js.map +1 -0
  366. package/lib/src/web/sensor-vr-plugin.d.ts +0 -0
  367. package/lib/src/web/sensor-vr-plugin.js +166 -0
  368. package/lib/src/web/sensor-vr-plugin.js.map +1 -0
  369. package/package.json +142 -0
  370. package/src/@types/SceneUtils.d.ts +9 -0
  371. package/src/@types/chaikin-smooth.d.ts +5 -0
  372. package/src/@types/global.d.ts +3 -0
  373. package/src/@types/snapsvg.d.ts +11 -0
  374. package/src/@types/svgson.d.ts +30 -0
  375. package/src/assets/favicon.ico +0 -0
  376. package/src/external/lines/line-geometry.ts +70 -0
  377. package/src/external/lines/line-material.ts +453 -0
  378. package/src/external/lines/line-segments-2.ts +194 -0
  379. package/src/external/lines/line-segments-geometry.ts +197 -0
  380. package/src/external/loaders/gltf-loader.ts +3004 -0
  381. package/src/external/orbit-controls.ts +1070 -0
  382. package/src/external/renderers/css-2d-renderer.ts +185 -0
  383. package/src/external/renderers/css-3d-renderer.ts +245 -0
  384. package/src/external/transform-controls.ts +1532 -0
  385. package/src/external/util/buffer-geometry-utils.ts +783 -0
  386. package/src/owlly/controller/aerial-element-controller.ts +277 -0
  387. package/src/owlly/controller/basic-controller.ts +1509 -0
  388. package/src/owlly/controller/camera-controller.ts +155 -0
  389. package/src/owlly/controller/controller.ts +76 -0
  390. package/src/owlly/controller/index.ts +15 -0
  391. package/src/owlly/controller/mouse-indicator-controller.ts +157 -0
  392. package/src/owlly/controller/orbit-control.ts +310 -0
  393. package/src/owlly/controller/panorama-adjust-controller.ts +183 -0
  394. package/src/owlly/controller/panorama-controller.ts +2234 -0
  395. package/src/owlly/controller/panorama-transform-controller.ts +151 -0
  396. package/src/owlly/controller/plane-controller.ts +222 -0
  397. package/src/owlly/controller/texture-controller.ts +949 -0
  398. package/src/owlly/controller/tile-panorama-controller.ts +1633 -0
  399. package/src/owlly/controller/transform-controller.ts +684 -0
  400. package/src/owlly/element/bottom-nav-element.ts +352 -0
  401. package/src/owlly/element/camera.ts +389 -0
  402. package/src/owlly/element/dom-2d-element.ts +88 -0
  403. package/src/owlly/element/dom-3d-element.ts +87 -0
  404. package/src/owlly/element/dom-label-2d.ts +497 -0
  405. package/src/owlly/element/element.ts +117 -0
  406. package/src/owlly/element/floor-model.ts +290 -0
  407. package/src/owlly/element/gif-kit/Gif.ts +509 -0
  408. package/src/owlly/element/gif-kit/GifColor.ts +44 -0
  409. package/src/owlly/element/gif-kit/GifCompressedCodesToByteArrayConverter.ts +56 -0
  410. package/src/owlly/element/gif-kit/GifFrame.ts +207 -0
  411. package/src/owlly/element/gif-kit/GifImage.ts +26 -0
  412. package/src/owlly/element/gif-kit/GifParser.ts +254 -0
  413. package/src/owlly/element/gif-kit/GifPresenter.ts +46 -0
  414. package/src/owlly/element/gif-kit/GifVersion.ts +12 -0
  415. package/src/owlly/element/gltf-mesh-element.ts +184 -0
  416. package/src/owlly/element/index.ts +25 -0
  417. package/src/owlly/element/map-kit/area.ts +232 -0
  418. package/src/owlly/element/map-kit/block-set.ts +102 -0
  419. package/src/owlly/element/map-kit/block.ts +417 -0
  420. package/src/owlly/element/map-kit/index.ts +6 -0
  421. package/src/owlly/element/map-kit/shape.ts +285 -0
  422. package/src/owlly/element/mesh-element.ts +94 -0
  423. package/src/owlly/element/mesh-line-2d.ts +1032 -0
  424. package/src/owlly/element/meshline-o.ts +802 -0
  425. package/src/owlly/element/panorama-group.ts +1250 -0
  426. package/src/owlly/element/panorama.ts +1044 -0
  427. package/src/owlly/element/path-group.ts +212 -0
  428. package/src/owlly/element/path.ts +727 -0
  429. package/src/owlly/element/placeable-2d.ts +627 -0
  430. package/src/owlly/element/polygon-mesh.ts +344 -0
  431. package/src/owlly/element/ring-element.ts +517 -0
  432. package/src/owlly/element/sphere-mesh.ts +96 -0
  433. package/src/owlly/element/svg-floor-model.ts +200 -0
  434. package/src/owlly/element/svg-floors.ts +121 -0
  435. package/src/owlly/element/tile-panorama-group.ts +1314 -0
  436. package/src/owlly/element/tile-panorama.ts +636 -0
  437. package/src/owlly/element/tile-plane.ts +430 -0
  438. package/src/owlly/element/video-element.ts +190 -0
  439. package/src/owlly/geometries/ExtrudeGeometry2.ts +255 -0
  440. package/src/owlly/index.ts +19 -0
  441. package/src/owlly/overlay/canvas-overlay.ts +642 -0
  442. package/src/owlly/overlay/css-2d-overlay.ts +48 -0
  443. package/src/owlly/overlay/css-3d-overlay.ts +50 -0
  444. package/src/owlly/overlay/index.ts +11 -0
  445. package/src/owlly/overlay/label-overlay.ts +419 -0
  446. package/src/owlly/overlay/overlay.ts +17 -0
  447. package/src/owlly/overlay/path-overlay.ts +170 -0
  448. package/src/owlly/overlay/path-overlay2.ts +149 -0
  449. package/src/owlly/overlay/poi-overlay-3d.ts +1759 -0
  450. package/src/owlly/overlay/poi-overlay.ts +1739 -0
  451. package/src/owlly/owlly-2d/index.ts +108 -0
  452. package/src/owlly/screen/index.ts +1 -0
  453. package/src/owlly/screen/screen.ts +323 -0
  454. package/src/owlly/stage/__test__/stage.spec.ts +15 -0
  455. package/src/owlly/stage/externals.ts +45 -0
  456. package/src/owlly/stage/index.ts +12 -0
  457. package/src/owlly/stage/owlly.ts +223 -0
  458. package/src/owlly/stage/stage.ts +274 -0
  459. package/src/owlly/utils/alignment-utils.ts +84 -0
  460. package/src/owlly/utils/basic-calc.ts +141 -0
  461. package/src/owlly/utils/basic-tools.ts +286 -0
  462. package/src/owlly/utils/bvh-tree.ts +695 -0
  463. package/src/owlly/utils/camera.ts +72 -0
  464. package/src/owlly/utils/cube-texture-cache.ts +155 -0
  465. package/src/owlly/utils/device-utils.ts +53 -0
  466. package/src/owlly/utils/environment-utils.ts +81 -0
  467. package/src/owlly/utils/event-hub.ts +120 -0
  468. package/src/owlly/utils/events.ts +266 -0
  469. package/src/owlly/utils/geometry-utils.ts +749 -0
  470. package/src/owlly/utils/helper.ts +33 -0
  471. package/src/owlly/utils/index.ts +17 -0
  472. package/src/owlly/utils/lru-cache.ts +126 -0
  473. package/src/owlly/utils/map-utils.ts +55 -0
  474. package/src/owlly/utils/number-utils.ts +75 -0
  475. package/src/owlly/utils/panorama-model-util.ts +255 -0
  476. package/src/owlly/utils/path-utils.ts +837 -0
  477. package/src/owlly/utils/svgutils.ts +732 -0
  478. package/src/owlly/utils/texture-cache.ts +132 -0
  479. package/src/owlly/utils/tile-util.ts +563 -0
  480. package/src/owlly/utils/time-profiler.ts +57 -0
  481. package/src/owlly/view/__test__/perspective-view.spec.ts +23 -0
  482. package/src/owlly/view/camera-view.ts +114 -0
  483. package/src/owlly/view/index.ts +5 -0
  484. package/src/owlly/view/orthographic-view.ts +124 -0
  485. package/src/owlly/view/perspective-view.ts +125 -0
  486. package/src/owlly/view/svg-map-view.ts +187 -0
  487. package/src/owlly/view/view.ts +409 -0
  488. package/src/public/js/jsmpeg.min.js +3129 -0
  489. package/src/web/index.html +52 -0
  490. package/src/web/main.centroid.ts +85 -0
  491. package/src/web/main.hyma.meshline2d.ts +84 -0
  492. package/src/web/main.jyfang.sample.ts +139 -0
  493. package/src/web/main.rpeng.extrude.ts +194 -0
  494. package/src/web/main.rpeng.mes.plane.ts +161 -0
  495. package/src/web/main.rpeng.sample.ts +345 -0
  496. package/src/web/main.rpeng.vr.ts +159 -0
  497. package/src/web/main.sample.ts +59 -0
  498. package/src/web/quattree.hyma.ts +163 -0
  499. package/src/web/sensor-vr-plugin.ts +201 -0
  500. package/src/web/testPixel.png +0 -0
@@ -0,0 +1,642 @@
1
+ import { Externals, NS_THREE, NS_KONVA } from '../stage/externals';
2
+ import { Overlay } from './overlay';
3
+ import { Owlly2D } from '../owlly-2d';
4
+ import { Shape, ShapeData } from '../element/map-kit/shape';
5
+ import { View } from '../view/view';
6
+ import { Events } from '../utils/events';
7
+ // import { BasicTools } from '../utils';
8
+
9
+ class ShapeGroup {
10
+ shape: NS_KONVA.Shape;
11
+
12
+ rawShape: Shape;
13
+
14
+ baseZoom: { x: number; y: number };
15
+
16
+ zIndices: number[];
17
+
18
+ points: NS_KONVA.Shape[];
19
+
20
+ vertexOptions: NS_KONVA.CircleConfig;
21
+
22
+ lineJointsStyle: 'none' | 'endpoints' | 'joints';
23
+
24
+ constructor(shape: NS_KONVA.Shape, rawShape: Shape, baseZoom: { x: number; y: number }, zIndices: number[] = []) {
25
+ this.shape = shape;
26
+ this.rawShape = rawShape;
27
+ this.baseZoom = baseZoom;
28
+ this.zIndices = zIndices;
29
+ this.points = [];
30
+ this.lineJointsStyle = 'joints';
31
+ this.vertexOptions = {
32
+ radius: 0,
33
+ fill: '#fff',
34
+ shadowColor: '#000',
35
+ shadowBlur: 3,
36
+ shadowOffset: { x: 1, y: 2 },
37
+ shadowOpacity: 0.3,
38
+ shadowEnabled: false,
39
+ };
40
+ }
41
+ }
42
+
43
+ enum MouseState {
44
+ IDLE,
45
+ DOWN,
46
+ MOVE,
47
+ }
48
+
49
+ /**
50
+ * POI覆盖层, 可以展示POI图标与文字, 存在图标时以图标中心为中心, 否则为文字中心
51
+ * @example
52
+ * ```typescript
53
+ * const poiOverlay = new PoiOverlay();
54
+ * // 任意View
55
+ * view.addOverlay(poiOverlay);
56
+ * ```
57
+ */
58
+ class CanvasOverlay extends Overlay {
59
+ private owlly2D: Owlly2D;
60
+
61
+ private container: HTMLElement;
62
+
63
+ private parent: View;
64
+
65
+ private layer: NS_KONVA.Layer;
66
+
67
+ private renderThisFrame: boolean;
68
+
69
+ private shapes: ShapeGroup[];
70
+
71
+ private mouseState: MouseState;
72
+
73
+ private mousePositionBuffer: NS_THREE.Vector2;
74
+
75
+ private eventTarget: ShapeGroup;
76
+
77
+ private enabled: boolean;
78
+
79
+ private listeners: {
80
+ pointerDown: (event: MouseEvent) => void;
81
+ pointerUp: (event: MouseEvent) => void;
82
+ touchStart: (event: TouchEvent) => void;
83
+ touchEnd: (event: TouchEvent) => void;
84
+ nodePointerDown: (event: NS_KONVA.KonvaEventObject<MouseEvent>) => void;
85
+ nodePointerUp: (event: NS_KONVA.KonvaEventObject<MouseEvent>) => void;
86
+ };
87
+
88
+ init(parent: View, container = new HTMLElement()): void {
89
+ const { THREE } = Externals.getInstance();
90
+ this.container = container;
91
+ this.parent = parent;
92
+ this.owlly2D = Owlly2D.getInstance(container);
93
+ this.layer = this.owlly2D.addLayer();
94
+ this.shapes = [];
95
+ this.renderThisFrame = true;
96
+ this.layer.zIndex(0);
97
+ this.enabled = true;
98
+
99
+ this.mouseState = MouseState.IDLE;
100
+ this.mousePositionBuffer = new THREE.Vector2();
101
+ this.listeners = {
102
+ pointerDown: (e): void => { this.onPointerDown(e); },
103
+ pointerUp: (e): void => { this.onPointerUp(e); },
104
+ touchStart: (e): void => { this.onTouchStart(e); },
105
+ touchEnd: (e): void => { this.onTouchEnd(e); },
106
+ nodePointerDown: (e): void => { this.onNodePointerDown(e); },
107
+ nodePointerUp: (): void => { this.onNodePointerUp(); },
108
+ };
109
+ this.container.addEventListener('pointerdown', this.listeners.pointerDown, true);
110
+ this.container.addEventListener('pointerup', this.listeners.pointerUp, true);
111
+ this.container.addEventListener('touchstart', this.listeners.touchStart, true);
112
+ this.container.addEventListener('touchend', this.listeners.touchEnd, true);
113
+ }
114
+
115
+ /**
116
+ * 打开交互
117
+ */
118
+ openInteraction(): void {
119
+ this.owlly2D.openInteraction();
120
+ }
121
+
122
+ /**
123
+ * 关闭交互
124
+ */
125
+ closeInteraction(): void {
126
+ this.owlly2D.closeInteraction();
127
+ }
128
+
129
+ update(): boolean {
130
+ if (this.renderThisFrame) {
131
+ this.renderThisFrame = false;
132
+ return true;
133
+ }
134
+ return false;
135
+ }
136
+
137
+ render(): void {
138
+ if (!this.enabled) return;
139
+
140
+ if (this.parent.camera) {
141
+ const { camera } = this.parent;
142
+ const { clientHeight, clientWidth } = this.container;
143
+ const widthHalf = clientWidth / 2;
144
+ const heightHalf = clientHeight / 2;
145
+ this.shapes.forEach(({
146
+ shape, rawShape, zIndices, points, vertexOptions, lineJointsStyle,
147
+ }) => {
148
+ this.updateShapeDataToKonvaShape(
149
+ shape,
150
+ rawShape,
151
+ camera,
152
+ widthHalf,
153
+ heightHalf,
154
+ points,
155
+ vertexOptions,
156
+ zIndices,
157
+ lineJointsStyle,
158
+ );
159
+ });
160
+ }
161
+ this.layer.draw();
162
+ }
163
+
164
+ setRenderOrder(order: number): void {
165
+ this.layer.zIndex(order);
166
+ }
167
+
168
+ dispose(): void {
169
+ this.shapes.forEach((s) => {
170
+ const konvaObject = s.shape;
171
+ konvaObject.destroy();
172
+
173
+ if (s.shape.children.length === 0) {
174
+ s.shape.destroy();
175
+ s.points.forEach((p) => {
176
+ p.off('mousedown touchdown');
177
+ p.destroy();
178
+ });
179
+ }
180
+
181
+ if (s && s.shape) delete (s as any).shape; // eslint-disable-line
182
+ });
183
+
184
+ this.renderThisFrame = true;
185
+
186
+ this.container.removeEventListener('pointerdown', this.listeners.pointerDown, true);
187
+ this.container.removeEventListener('pointerup', this.listeners.pointerUp, true);
188
+ this.container.removeEventListener('touchstart', this.listeners.touchStart, true);
189
+ this.container.removeEventListener('touchend', this.listeners.touchEnd, true);
190
+ this.layer.destroy();
191
+ }
192
+
193
+ private onPointerDown(e: MouseEvent): void {
194
+ this.owlly2D.stage._mousedown(e); // eslint-disable-line no-underscore-dangle
195
+ }
196
+
197
+ private onPointerUp(e: MouseEvent): void {
198
+ const { THREE } = Externals.getInstance();
199
+ this.owlly2D.stage._mouseup(e); // eslint-disable-line no-underscore-dangle
200
+ const { clientX, clientY } = e;
201
+ const { left: rectX, top: rectY } = this.container.getBoundingClientRect();
202
+ const x = clientX - rectX;
203
+ const y = clientY - rectY;
204
+ const distance = new THREE.Vector2(x, y).distanceToSquared(this.mousePositionBuffer);
205
+ this.emit(Events.CANVAS_VERTEX_UP, this.eventTarget, e.button);
206
+ if (this.mouseState === MouseState.DOWN && distance < 100) {
207
+ this.emit(Events.CANVAS_VERTEX_CLICKED, this.eventTarget, e.button);
208
+ }
209
+ this.mouseState = MouseState.IDLE;
210
+ }
211
+
212
+ private onTouchStart(e: TouchEvent): void {
213
+ this.owlly2D.stage._touchstart(e); // eslint-disable-line no-underscore-dangle
214
+ }
215
+
216
+ private onTouchEnd(e: TouchEvent): void {
217
+ const { THREE } = Externals.getInstance();
218
+ this.owlly2D.stage._touchend(e); // eslint-disable-line no-underscore-dangle
219
+ const { clientX, clientY } = e.changedTouches[0];
220
+ // const { clientWidth, clientHeight } = this.container;
221
+ const { left: rectX, top: rectY } = this.container.getBoundingClientRect();
222
+ const x = clientX - rectX;
223
+ const y = clientY - rectY;
224
+ const distance = new THREE.Vector2(x, y).distanceToSquared(this.mousePositionBuffer);
225
+ this.emit(Events.CANVAS_VERTEX_UP, this.eventTarget, 0);
226
+ if (this.mouseState === MouseState.DOWN && distance < 100) {
227
+ this.emit(Events.CANVAS_VERTEX_CLICKED, this.eventTarget, 0);
228
+ }
229
+ this.mouseState = MouseState.IDLE;
230
+ }
231
+
232
+ private onNodePointerDown(e: NS_KONVA.KonvaEventObject<MouseEvent | TouchEvent>): void {
233
+ // console.log('node pointer down', e);
234
+ if (this.mouseState !== MouseState.IDLE) return;
235
+ let index = -1;
236
+ const target = this.shapes.find((shape) => {
237
+ const i = shape.points.indexOf((e.currentTarget) as NS_KONVA.Circle);
238
+ if (i >= 0) index = i;
239
+ return i >= 0;
240
+ });
241
+ if (!target) return;
242
+ this.mouseState = MouseState.DOWN;
243
+ const { clientX, clientY } = e.evt instanceof MouseEvent ? e.evt : e.evt.touches[0];
244
+ // const { clientWidth, clientHeight } = this.container;
245
+ const { left: rectX, top: rectY } = this.container.getBoundingClientRect();
246
+ const x = clientX - rectX;
247
+ const y = clientY - rectY;
248
+ this.mousePositionBuffer.set(x, y);
249
+ this.eventTarget = target;
250
+ this.emit(Events.CANVAS_VERTEX_DOWN, target, index, e.evt instanceof MouseEvent ? e.evt.button : 0);
251
+ }
252
+
253
+ private onNodePointerUp(): void {
254
+ // do nothing
255
+ }
256
+
257
+ /**
258
+ * 清空画布
259
+ */
260
+ public clearShapes(): void {
261
+ this.shapes.forEach((shape) => {
262
+ shape.shape.destroy();
263
+ shape.points.forEach((point) => {
264
+ point.destroy();
265
+ });
266
+ delete (shape as any).shape; // eslint-disable-line
267
+ });
268
+ this.shapes = [];
269
+
270
+ this.renderThisFrame = true;
271
+ }
272
+
273
+ /**
274
+ * 删除Shape
275
+ * @param shape Shape
276
+ */
277
+ public removeShape(
278
+ shape: Shape | NS_KONVA.Shape,
279
+ ): void {
280
+ if (!shape) return;
281
+
282
+ for (let i = 0; i < this.shapes.length; i++) {
283
+ if (this.shapes[i].rawShape === shape || this.shapes[i].shape === shape) {
284
+ const konvaObject = this.shapes[i].shape;
285
+ konvaObject.destroy();
286
+
287
+ const shapeToRemove = this.shapes[i];
288
+
289
+ if (this.shapes[i].shape.children.length === 0) {
290
+ this.shapes[i].shape.destroy();
291
+ this.shapes[i].points.forEach((p) => {
292
+ p.off('mousedown touchdown');
293
+ p.destroy();
294
+ });
295
+ this.shapes.splice(i, 1);
296
+ }
297
+
298
+ if (shapeToRemove === this.shapes[i] && this.shapes[i].shape) delete (this.shapes[i] as any).shape; // eslint-disable-line
299
+
300
+ this.renderThisFrame = true;
301
+ }
302
+ }
303
+ }
304
+
305
+ /**
306
+ * 更新Shape
307
+ * @param shape Shape
308
+ */
309
+ public updateShape(
310
+ shape: Shape | NS_KONVA.Shape,
311
+ zIndices: number[] = [],
312
+ ): NS_KONVA.Shape | null {
313
+ if (!shape) return null;
314
+
315
+ const { Konva } = Externals.getInstance();
316
+
317
+ for (let i = 0; i < this.shapes.length; i++) {
318
+ if (this.shapes[i].rawShape === shape || this.shapes[i].shape === shape) {
319
+ const konvaObject = this.shapes[i].shape;
320
+ this.shapes[i].zIndices = zIndices;
321
+ if (konvaObject instanceof Konva.Shape) {
322
+ const newShape = this.transformShapeDataToKonvaShape(this.shapes[i].rawShape.getData());
323
+ if (newShape) {
324
+ konvaObject.setAttrs(newShape!.attrs);
325
+ }
326
+ this.shapes[i].points.forEach((p) => { p.setAttrs(this.shapes[i].vertexOptions); });
327
+ }
328
+ this.renderThisFrame = true;
329
+
330
+ return this.shapes[i].shape;
331
+ }
332
+ }
333
+
334
+ return null;
335
+ }
336
+
337
+ public setVertexConfig(shape: Shape | NS_KONVA.Shape, config: NS_KONVA.CircleConfig): NS_KONVA.Shape | null {
338
+ if (!shape) return null;
339
+
340
+ for (let i = 0; i < this.shapes.length; i++) {
341
+ if (this.shapes[i].rawShape === shape || this.shapes[i].shape === shape) {
342
+ const newConfig = Object.assign(this.shapes[i].vertexOptions, config);
343
+ this.shapes[i].points.forEach((p) => {
344
+ p.setAttrs(newConfig);
345
+ });
346
+ this.renderThisFrame = true;
347
+
348
+ return this.shapes[i].shape;
349
+ }
350
+ }
351
+
352
+ return null;
353
+ }
354
+
355
+ /**
356
+ * 将shapeData转换为Konva.Path对象
357
+ * @param shapeData ShapeData
358
+ */
359
+ private transformShapeDataToKonvaShape(shapeData: ShapeData): NS_KONVA.Shape | null {
360
+ const { shapeType } = shapeData;
361
+ const { Konva } = Externals.getInstance();
362
+ if (shapeType === 'point') {
363
+ const circle = new Konva.Circle({
364
+ radius: shapeData.radius,
365
+ id: shapeData.id,
366
+ x: shapeData.x,
367
+ y: shapeData.y,
368
+ stroke: shapeData.stroke,
369
+ strokeWidth: shapeData.strokeWidth,
370
+ fill: shapeData.fill,
371
+ });
372
+ return circle;
373
+ } if (shapeType === 'line') {
374
+ const path = new Konva.Path({
375
+ id: shapeData.id,
376
+ x: shapeData.x,
377
+ y: shapeData.y,
378
+ data: `${shapeData.path.toUpperCase()}`,
379
+ stroke: shapeData.stroke,
380
+ strokeWidth: shapeData.strokeWidth,
381
+ lineJoin: 'round',
382
+ lineCap: 'round',
383
+ });
384
+ return path;
385
+ } if (shapeType === 'shape') {
386
+ const path = new Konva.Path({
387
+ id: shapeData.id,
388
+ x: shapeData.x,
389
+ y: shapeData.y,
390
+ data: `${shapeData.path.toUpperCase()}z`,
391
+ stroke: shapeData.stroke,
392
+ strokeWidth: shapeData.strokeWidth,
393
+ fill: shapeData.fill,
394
+ lineJoin: 'round',
395
+ lineCap: 'round',
396
+ });
397
+ return path;
398
+ }
399
+
400
+ return null;
401
+ }
402
+
403
+ // private sideOfVecToCamera(camera: Camera, vec: Vector3, norm: Vector3): number {
404
+ // return vec.clone().sub(camera.position).dot(norm);
405
+ // }
406
+
407
+ private updateShapeDataToKonvaShape(
408
+ shape: NS_KONVA.Shape,
409
+ rawShape: Shape,
410
+ camera: NS_THREE.Camera,
411
+ halfW: number,
412
+ halfH: number,
413
+ points: NS_KONVA.Shape[],
414
+ pointOptions: NS_KONVA.ShapeConfig,
415
+ zIndices: number[] = [],
416
+ lineJointsStyle: 'none' | 'endpoints' | 'joints' = 'joints',
417
+ ): void {
418
+ const { THREE, Konva } = Externals.getInstance();
419
+ const shapeData = rawShape.getData();
420
+ const { shapeType } = shapeData;
421
+ const frustum = new THREE.Frustum();
422
+ frustum.setFromProjectionMatrix(
423
+ new THREE.Matrix4().multiplyMatrices(
424
+ camera.projectionMatrix,
425
+ camera.matrixWorldInverse,
426
+ ),
427
+ );
428
+ if (shapeType === 'point') {
429
+ const circle = shape as NS_KONVA.Circle;
430
+ const v = new THREE.Vector3(shapeData.x, shapeData.y, shapeData.zIndex);
431
+ const coordinate2 = v.project(camera!);
432
+ const x = (coordinate2.x + 1) * halfW;
433
+ const y = (1 - coordinate2.y) * halfH;
434
+ circle.x(x);
435
+ circle.y(y);
436
+ } else if (camera instanceof THREE.OrthographicCamera) {
437
+ const path = shape as NS_KONVA.Path;
438
+ const pathSteps = rawShape.getSteps();
439
+ const globalZ = shapeData.zIndex;
440
+ let data = pathSteps.map((s, i) => {
441
+ let z = globalZ;
442
+ if (i < zIndices.length) z = zIndices[i];
443
+ const coords = s.coords.map(([x, y]) => {
444
+ const v = new THREE.Vector3(x, y, z);
445
+ const coordinate2 = v.project(camera!);
446
+ const sx = (coordinate2.x + 1) * halfW;
447
+ const sy = (1 - coordinate2.y) * halfH;
448
+ return `${sx},${sy}`;
449
+ }).join(',');
450
+ return `${s.command}${coords}`;
451
+ }).join('').toUpperCase();
452
+ if (shapeType === 'shape') data += 'z';
453
+ path.data(data);
454
+ } else {
455
+ const path = shape as NS_KONVA.Path;
456
+ const pathSteps = rawShape.getSteps();
457
+ const globalZ = shapeData.zIndex;
458
+ const lookAtVec = new THREE.Vector3(0, 0, -1);
459
+ lookAtVec.applyQuaternion(camera.quaternion);
460
+
461
+ let prevVecVisible = false;
462
+ let currentVecVisible = false;
463
+ const prevVec = new THREE.Vector3();
464
+
465
+ let data = pathSteps.map((s, i) => {
466
+ let z = globalZ;
467
+ if (i < zIndices.length) z = zIndices[i];
468
+
469
+ const [x, y] = s.coords[s.coords.length - 1];
470
+ const v = new THREE.Vector3(x, y, z);
471
+ let addOn = '';
472
+ currentVecVisible = frustum.containsPoint(v);
473
+ if (i > 0) {
474
+ const line = new THREE.Line3(prevVec.clone(), v.clone());
475
+
476
+ const lVisible = prevVecVisible && currentVecVisible;
477
+ if (!lVisible) {
478
+ const intersections = frustum.planes.map((p) => {
479
+ const intersects = p.intersectLine(line, new THREE.Vector3());
480
+ if (!intersects) return null;
481
+ const valid = !frustum.planes.filter((pl) => pl !== p).some(
482
+ (pl) => (pl.distanceToPoint(intersects) < 0),
483
+ );
484
+ return valid ? intersects : null;
485
+ }).filter((p) => p) as NS_THREE.Vector3[];
486
+ if (intersections.length) {
487
+ intersections.sort((a, b) => (a.distanceToSquared(prevVec) - b.distanceToSquared(prevVec)));
488
+ addOn = intersections.map((vec, j) => {
489
+ const coord = vec.project(camera!);
490
+ const sign = coord.z > 1 ? -1 : 1;
491
+ const sx = (coord.x + 1) * halfW * sign;
492
+ const sy = (1 - coord.y) * halfH * sign;
493
+ if (j === 0) return `${prevVecVisible ? 'l' : 'm'}${sx},${sy}`;
494
+ return `l${sx},${sy}`;
495
+ }).join('');
496
+ }
497
+ }
498
+ }
499
+ prevVec.copy(v);
500
+ const coordinate2 = v.project(camera!);
501
+ const sign = coordinate2.z > 1 ? -1 : 1;
502
+ const sx = (coordinate2.x + 1) * halfW * sign;
503
+ const sy = (1 - coordinate2.y) * halfH * sign;
504
+ const pointVisible = lineJointsStyle === 'joints' || (lineJointsStyle === 'endpoints' && (i === 0 || i === zIndices.length - 1));
505
+
506
+ if (i < points.length) {
507
+ const point = points[i];
508
+ point.x(sx);
509
+ point.y(sy);
510
+ point.visible(pointVisible && currentVecVisible && path.visible());
511
+ point.setAttrs(pointOptions);
512
+ } else {
513
+ const point = new Konva.Circle({
514
+ radius: 0,
515
+ x: sx,
516
+ y: sy,
517
+ stroke: 'transparent',
518
+ strokeWidth: 0,
519
+ });
520
+ point.visible(pointVisible && currentVecVisible && path.visible());
521
+ point.setAttrs(pointOptions);
522
+ point.on('mousedown touchdown', this.listeners.nodePointerDown);
523
+ this.layer.add(point);
524
+ points.push(point);
525
+ }
526
+
527
+ prevVecVisible = currentVecVisible;
528
+
529
+ return `${addOn}${currentVecVisible ? 'l' : 'm'}${sx},${sy}`;
530
+ }).join('').toUpperCase();
531
+
532
+ while (points.length > pathSteps.length) {
533
+ const point = points.pop();
534
+ point!.off('mousedown touchdown');
535
+ point!.destroy();
536
+ }
537
+
538
+ if (shapeType === 'shape') data += 'z';
539
+ path.data(data);
540
+ }
541
+ }
542
+
543
+ public addShape(
544
+ shapes: Shape | Shape[],
545
+ baseZoom: { x: number; y: number } = { x: 1, y: 1 },
546
+ zIndices: number[] | number[][] = [],
547
+ ): NS_KONVA.Shape | NS_KONVA.Shape[] | null {
548
+ const ret: NS_KONVA.Shape[] = [];
549
+ const shapeList = Array.isArray(shapes) ? shapes : [shapes];
550
+ const zIndicesList = (zIndices.length && Array.isArray(zIndices[0]) ? zIndices : [zIndices]) as number[][];
551
+ shapeList.forEach((shape, i) => {
552
+ const shapeData = shape.getData();
553
+ const konvaShape = this.transformShapeDataToKonvaShape(shapeData);
554
+ if (konvaShape !== null) {
555
+ ret.push(konvaShape);
556
+ this.layer.add(konvaShape);
557
+ const shapeGroup = new ShapeGroup(konvaShape, shape, baseZoom, zIndicesList[i]);
558
+ shapeGroup.points.forEach((p) => { p.setAttrs(shapeGroup.vertexOptions); });
559
+ this.shapes.push(shapeGroup);
560
+ }
561
+ });
562
+
563
+ this.renderThisFrame = true;
564
+
565
+ if (Array.isArray(shapes)) {
566
+ return ret;
567
+ } if (ret.length > 0) {
568
+ return ret[0];
569
+ }
570
+ return null;
571
+ }
572
+
573
+ public getShapeGroup(shape: Shape | NS_KONVA.Shape): ShapeGroup | undefined {
574
+ return this.shapes.find((s) => s.rawShape === shape || s.shape === shape);
575
+ }
576
+
577
+ public forceRender(): void {
578
+ this.renderThisFrame = true;
579
+ }
580
+
581
+ /**
582
+ * 计算路径距离中点
583
+ * @param shape 目标图形
584
+ */
585
+ public getMiddlePoint(shape: Shape | NS_KONVA.Shape): NS_THREE.Vector3 | null {
586
+ const shapeGroup = this.getShapeGroup(shape);
587
+ if (!shapeGroup) return null;
588
+ const steps = shapeGroup.rawShape.getSteps();
589
+ const { zIndices } = shapeGroup;
590
+ const { THREE } = Externals.getInstance();
591
+
592
+ if (!steps.length) return null;
593
+
594
+ const distArray = [0];
595
+ let dist = 0;
596
+ const prevPoint = new THREE.Vector3(
597
+ steps[0].coords[steps[0].coords.length - 1][0],
598
+ steps[0].coords[steps[0].coords.length - 1][1],
599
+ zIndices.length > 0 ? zIndices[0] : 0,
600
+ );
601
+ const currentPoint = new THREE.Vector3();
602
+ const result = new THREE.Vector3().copy(prevPoint);
603
+ for (let i = 1; i < steps.length; i += 1) {
604
+ const [x, y] = steps[i].coords[steps[i].coords.length - 1];
605
+ const z = zIndices[i];
606
+ currentPoint.set(x, y, z);
607
+ const d = currentPoint.distanceTo(prevPoint);
608
+ dist += d;
609
+ distArray.push(dist);
610
+ prevPoint.copy(currentPoint);
611
+ }
612
+ const distHalf = dist / 2;
613
+ let middleIndex = 0;
614
+ while (middleIndex + 1 < distArray.length && distArray[middleIndex + 1] < distHalf) middleIndex += 1;
615
+ result.set(
616
+ steps[middleIndex].coords[steps[middleIndex].coords.length - 1][0],
617
+ steps[middleIndex].coords[steps[middleIndex].coords.length - 1][1],
618
+ zIndices.length > middleIndex ? zIndices[middleIndex] : 0,
619
+ );
620
+ if (middleIndex + 1 < distArray.length) {
621
+ const segmentLength = distArray[middleIndex + 1] - distArray[middleIndex];
622
+ const ratio = (distHalf - distArray[middleIndex]) / segmentLength;
623
+ const furtherPoint = new THREE.Vector3(
624
+ steps[middleIndex + 1].coords[steps[middleIndex + 1].coords.length - 1][0],
625
+ steps[middleIndex + 1].coords[steps[middleIndex + 1].coords.length - 1][1],
626
+ zIndices.length > middleIndex + 1 ? zIndices[middleIndex + 1] : 0,
627
+ );
628
+ result.add(furtherPoint.sub(result).multiplyScalar(ratio));
629
+ }
630
+ return result;
631
+ }
632
+
633
+ public setEnabled(value: boolean): void {
634
+ this.enabled = value;
635
+ }
636
+
637
+ resize(containerWidth: number, containerHeight: number): void {
638
+ this.owlly2D.resize(containerWidth, containerHeight);
639
+ }
640
+ }
641
+
642
+ export { CanvasOverlay, ShapeGroup };
@@ -0,0 +1,48 @@
1
+ import { CSS2DRenderer } from '../../external/renderers/css-2d-renderer';
2
+ import { Overlay } from './overlay';
3
+ import { View } from '../view/view';
4
+
5
+ class CSS2DOverlay extends Overlay {
6
+ private container: HTMLElement;
7
+
8
+ private parent: View;
9
+
10
+ private renderer: CSS2DRenderer | null;
11
+
12
+ init(parent: View, container = parent.container): void {
13
+ this.container = container;
14
+ this.parent = parent;
15
+ const { clientWidth, clientHeight } = this.container;
16
+ this.renderer = new CSS2DRenderer();
17
+ this.renderer.setSize(clientWidth, clientHeight);
18
+ this.renderer.domElement.style.position = 'absolute';
19
+ this.renderer.domElement.style.top = '0';
20
+ this.renderer.domElement.style.userSelect = 'none';
21
+ this.container.appendChild(this.renderer.domElement);
22
+ }
23
+
24
+ resize(containerWidth: number, containerHeight: number): void {
25
+ this.renderer!.setSize(containerWidth, containerHeight);
26
+ }
27
+
28
+ setRenderOrder(order: number): void {
29
+ this.renderer!.domElement.style.setProperty('z-index', `${order}`);
30
+ }
31
+
32
+ update(): boolean {
33
+ return false;
34
+ }
35
+
36
+ render(): void {
37
+ if (!this.parent.camera) return;
38
+ this.renderer!.render(this.parent.stage.scene, this.parent.camera);
39
+ }
40
+
41
+ dispose(): void {
42
+ this.container.removeChild(this.renderer!.domElement);
43
+ this.renderer = null;
44
+ this.container = null as unknown as HTMLElement;
45
+ }
46
+ }
47
+
48
+ export { CSS2DOverlay };