kitchen-simulator 1.1.1-test.49 → 1.1.1-test.50

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 (358) hide show
  1. package/es/@history.js +2 -0
  2. package/es/AppContext.js +3 -0
  3. package/es/KitchenConfigurator.js +645 -0
  4. package/es/KitchenConfiguratorApp.js +480 -0
  5. package/es/actions/area-actions.js +14 -0
  6. package/es/actions/export.js +23 -0
  7. package/es/actions/groups-actions.js +89 -0
  8. package/es/actions/holes-actions.js +119 -0
  9. package/es/actions/items-actions.js +313 -0
  10. package/es/actions/lines-actions.js +81 -0
  11. package/es/actions/project-actions.js +281 -0
  12. package/es/actions/scene-actions.js +33 -0
  13. package/es/actions/vertices-actions.js +27 -0
  14. package/es/actions/viewer2d-actions.js +58 -0
  15. package/es/actions/viewer3d-actions.js +23 -0
  16. package/es/catalog/areas/area/planner-element.js +40 -0
  17. package/es/catalog/areas/area/textures/ceramic-tile.jpg +0 -0
  18. package/es/catalog/areas/area/textures/grass.jpg +0 -0
  19. package/es/catalog/areas/area/textures/parquet.jpg +0 -0
  20. package/es/catalog/areas/area/textures/strand-porcelain.jpg +0 -0
  21. package/es/catalog/areas/area/textures/tile1.jpg +0 -0
  22. package/es/catalog/catalog.js +277 -0
  23. package/es/catalog/envMap/nx.hdr +0 -0
  24. package/es/catalog/envMap/ny.hdr +0 -0
  25. package/es/catalog/envMap/nz.hdr +0 -0
  26. package/es/catalog/envMap/px.hdr +0 -0
  27. package/es/catalog/envMap/py.hdr +0 -0
  28. package/es/catalog/envMap/pz.hdr +0 -0
  29. package/es/catalog/factories/area-factory-3d.js +181 -0
  30. package/es/catalog/factories/area-factory.js +81 -0
  31. package/es/catalog/factories/export.js +7 -0
  32. package/es/catalog/factories/wall-factory-3d.js +202 -0
  33. package/es/catalog/factories/wall-factory.js +268 -0
  34. package/es/catalog/holes/door-closet/planner-element.js +222 -0
  35. package/es/catalog/holes/door-double/door_double.png +0 -0
  36. package/es/catalog/holes/door-double/planner-element.js +315 -0
  37. package/es/catalog/holes/door-exterior/planner-element.js +215 -0
  38. package/es/catalog/holes/door-interior/planner-element.js +227 -0
  39. package/es/catalog/holes/door-panic/panicDoor.png +0 -0
  40. package/es/catalog/holes/door-panic/planner-element.js +503 -0
  41. package/es/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  42. package/es/catalog/holes/door-panic-double/planner-element.js +463 -0
  43. package/es/catalog/holes/door-sliding/planner-element.js +225 -0
  44. package/es/catalog/holes/doorway-framed/planner-element.js +145 -0
  45. package/es/catalog/holes/doorway-frameless/planner-element.js +104 -0
  46. package/es/catalog/holes/export.js +13 -0
  47. package/es/catalog/holes/gate/gate.jpg +0 -0
  48. package/es/catalog/holes/window-clear/planner-element.js +166 -0
  49. package/es/catalog/holes/window-clear/texture.png +0 -0
  50. package/es/catalog/holes/window-cross/planner-element.js +165 -0
  51. package/es/catalog/holes/window-cross/texture.png +0 -0
  52. package/es/catalog/holes/window-double-hung/planner-element.js +303 -0
  53. package/es/catalog/holes/window-double-hung/texture.png +0 -0
  54. package/es/catalog/holes/window-vertical/planner-element.js +276 -0
  55. package/es/catalog/holes/window-vertical/texture.png +0 -0
  56. package/es/catalog/lines/wall/planner-element.js +70 -0
  57. package/es/catalog/lines/wall/textures/bricks-normal.jpg +0 -0
  58. package/es/catalog/lines/wall/textures/bricks-normal2.jpg +0 -0
  59. package/es/catalog/lines/wall/textures/bricks.jpg +0 -0
  60. package/es/catalog/lines/wall/textures/bricks2.jpg +0 -0
  61. package/es/catalog/lines/wall/textures/bricks3.jpg +0 -0
  62. package/es/catalog/lines/wall/textures/morden-normal.jpg +0 -0
  63. package/es/catalog/lines/wall/textures/morden.jpg +0 -0
  64. package/es/catalog/lines/wall/textures/painted-normal.jpg +0 -0
  65. package/es/catalog/lines/wall/textures/painted.jpg +0 -0
  66. package/es/catalog/lines/wall/textures/plaster-normal.jpg +0 -0
  67. package/es/catalog/lines/wall/textures/plaster.jpg +0 -0
  68. package/es/catalog/lines/wall/wall.png +0 -0
  69. package/es/catalog/molding/molding-dcm/planner-element.js +28 -0
  70. package/es/catalog/molding/molding-dcm/texture.png +0 -0
  71. package/es/catalog/molding/molding-fbm/planner-element.js +28 -0
  72. package/es/catalog/molding/molding-fbm/texture.png +0 -0
  73. package/es/catalog/molding/molding-lrm/planner-element.js +28 -0
  74. package/es/catalog/molding/molding-lrm/texture.png +0 -0
  75. package/es/catalog/properties/export.js +21 -0
  76. package/es/catalog/properties/property-checkbox.js +116 -0
  77. package/es/catalog/properties/property-color.js +39 -0
  78. package/es/catalog/properties/property-enum.js +97 -0
  79. package/es/catalog/properties/property-hidden.js +19 -0
  80. package/es/catalog/properties/property-lenght-measure.js +101 -0
  81. package/es/catalog/properties/property-length-measure.js +134 -0
  82. package/es/catalog/properties/property-length-measure_hole.js +101 -0
  83. package/es/catalog/properties/property-number.js +48 -0
  84. package/es/catalog/properties/property-read-only.js +26 -0
  85. package/es/catalog/properties/property-string.js +48 -0
  86. package/es/catalog/properties/property-toggle.js +39 -0
  87. package/es/catalog/properties/shared-property-style.js +14 -0
  88. package/es/catalog/utils/FuseUtils.js +82 -0
  89. package/es/catalog/utils/exporter.js +148 -0
  90. package/es/catalog/utils/geom-utils.js +189 -0
  91. package/es/catalog/utils/item-loader.js +1521 -0
  92. package/es/catalog/utils/load-obj.js +91 -0
  93. package/es/catalog/utils/mtl-loader.js +358 -0
  94. package/es/catalog/utils/obj-loader.js +477 -0
  95. package/es/class/FuseUtils.js +82 -0
  96. package/es/class/area.js +145 -0
  97. package/es/class/export.js +24 -0
  98. package/es/class/group.js +440 -0
  99. package/es/class/guide.js +62 -0
  100. package/es/class/hole.js +929 -0
  101. package/es/class/item.js +1883 -0
  102. package/es/class/layer.js +667 -0
  103. package/es/class/line.js +1180 -0
  104. package/es/class/project.js +793 -0
  105. package/es/class/vertex.js +202 -0
  106. package/es/components/content.js +107 -0
  107. package/es/components/disclaimer/disclaimer.js +97 -0
  108. package/es/components/export.js +9 -0
  109. package/es/components/style/button.js +113 -0
  110. package/es/components/style/cancel-button.js +22 -0
  111. package/es/components/style/content-container.js +33 -0
  112. package/es/components/style/content-title.js +29 -0
  113. package/es/components/style/delete-button.js +25 -0
  114. package/es/components/style/export.js +31 -0
  115. package/es/components/style/form-block.js +24 -0
  116. package/es/components/style/form-color-input.js +27 -0
  117. package/es/components/style/form-label.js +26 -0
  118. package/es/components/style/form-number-input.js +213 -0
  119. package/es/components/style/form-number-input_2.js +206 -0
  120. package/es/components/style/form-select.js +68 -0
  121. package/es/components/style/form-slider.js +61 -0
  122. package/es/components/style/form-submit-button.js +26 -0
  123. package/es/components/style/form-text-input.js +95 -0
  124. package/es/components/viewer2d/area.js +81 -0
  125. package/es/components/viewer2d/export.js +31 -0
  126. package/es/components/viewer2d/grids/grid-horizontal-streak.js +37 -0
  127. package/es/components/viewer2d/grids/grid-streak.js +37 -0
  128. package/es/components/viewer2d/grids/grid-vertical-streak.js +37 -0
  129. package/es/components/viewer2d/grids/grids.js +35 -0
  130. package/es/components/viewer2d/group.js +53 -0
  131. package/es/components/viewer2d/item.js +513 -0
  132. package/es/components/viewer2d/layer.js +164 -0
  133. package/es/components/viewer2d/line.js +882 -0
  134. package/es/components/viewer2d/ruler.js +100 -0
  135. package/es/components/viewer2d/rulerDist.js +146 -0
  136. package/es/components/viewer2d/rulerX.js +151 -0
  137. package/es/components/viewer2d/rulerY.js +153 -0
  138. package/es/components/viewer2d/scene.js +140 -0
  139. package/es/components/viewer2d/snap.js +74 -0
  140. package/es/components/viewer2d/state.js +78 -0
  141. package/es/components/viewer2d/utils.js +198 -0
  142. package/es/components/viewer2d/vertex.js +65 -0
  143. package/es/components/viewer2d/viewer2d.js +1398 -0
  144. package/es/components/viewer3d/camera-controls-module/camera-controls.module.js +2592 -0
  145. package/es/components/viewer3d/dcm.js +401 -0
  146. package/es/components/viewer3d/fbm.js +414 -0
  147. package/es/components/viewer3d/front3D.js +66 -0
  148. package/es/components/viewer3d/grid-creator.js +25 -0
  149. package/es/components/viewer3d/grids/grid-horizontal-streak.js +36 -0
  150. package/es/components/viewer3d/grids/grid-streak.js +27 -0
  151. package/es/components/viewer3d/grids/grid-vertical-streak.js +36 -0
  152. package/es/components/viewer3d/libs/first-person-controls.js +67 -0
  153. package/es/components/viewer3d/libs/helvetiker_regular.typeface.js +1281 -0
  154. package/es/components/viewer3d/libs/mtl-loader.js +357 -0
  155. package/es/components/viewer3d/libs/obj-loader.js +462 -0
  156. package/es/components/viewer3d/libs/orbit-controls.js +699 -0
  157. package/es/components/viewer3d/libs/pointer-lock-controls.js +46 -0
  158. package/es/components/viewer3d/lrm.js +305 -0
  159. package/es/components/viewer3d/model.js +708 -0
  160. package/es/components/viewer3d/pointer-lock-navigation.js +115 -0
  161. package/es/components/viewer3d/ruler-utils/itemRect.js +61 -0
  162. package/es/components/viewer3d/ruler-utils/layer3D.js +495 -0
  163. package/es/components/viewer3d/ruler-utils/ruler3D.js +227 -0
  164. package/es/components/viewer3d/ruler-utils/scene3D.js +60 -0
  165. package/es/components/viewer3d/ruler-utils/state3D.js +18 -0
  166. package/es/components/viewer3d/scene-creator.js +3608 -0
  167. package/es/components/viewer3d/three-memory-cleaner.js +51 -0
  168. package/es/components/viewer3d/viewer3d-first-person.js +315 -0
  169. package/es/components/viewer3d/viewer3d.js +2527 -0
  170. package/es/constants.js +636 -0
  171. package/es/index.js +16 -0
  172. package/es/models.js +510 -0
  173. package/es/plugins/SVGLoader.js +1412 -0
  174. package/es/plugins/autosave.js +33 -0
  175. package/es/plugins/console-debugger.js +37 -0
  176. package/es/plugins/export.js +9 -0
  177. package/es/plugins/keyboard.js +101 -0
  178. package/es/reducers/areas-reducer.js +12 -0
  179. package/es/reducers/export.js +25 -0
  180. package/es/reducers/groups-reducer.js +38 -0
  181. package/es/reducers/holes-reducer.js +62 -0
  182. package/es/reducers/items-reducer.js +140 -0
  183. package/es/reducers/lines-reducer.js +45 -0
  184. package/es/reducers/project-reducer.js +129 -0
  185. package/es/reducers/reducer.js +19 -0
  186. package/es/reducers/scene-reducer.js +28 -0
  187. package/es/reducers/user-reducer.js +40 -0
  188. package/es/reducers/vertices-reducer.js +19 -0
  189. package/es/reducers/viewer2d-reducer.js +75 -0
  190. package/es/reducers/viewer3d-reducer.js +56 -0
  191. package/es/shared-style.js +66 -0
  192. package/es/styles/export.js +5 -0
  193. package/es/styles/tabs.css +40 -0
  194. package/es/translator/en.js +104 -0
  195. package/es/translator/it.js +79 -0
  196. package/es/translator/ru.js +79 -0
  197. package/es/translator/translator.js +84 -0
  198. package/es/utils/browser.js +33 -0
  199. package/es/utils/email-validator.js +4 -0
  200. package/es/utils/export.js +25 -0
  201. package/es/utils/geometry.js +2420 -0
  202. package/es/utils/get-edges-of-subgraphs.js +27 -0
  203. package/es/utils/graph-cycles.js +237 -0
  204. package/es/utils/graph-inner-cycles.js +46 -0
  205. package/es/utils/graph.js +150 -0
  206. package/es/utils/helper.js +268 -0
  207. package/es/utils/history.js +29 -0
  208. package/es/utils/id-broker.js +19 -0
  209. package/es/utils/logger.js +8 -0
  210. package/es/utils/math.js +50 -0
  211. package/es/utils/molding.js +871 -0
  212. package/es/utils/name-generator.js +18 -0
  213. package/es/utils/objects-utils.js +50 -0
  214. package/es/utils/phone-validator.js +4 -0
  215. package/es/utils/process-black-list.js +18 -0
  216. package/es/utils/react-if.js +18 -0
  217. package/es/utils/snap-scene.js +99 -0
  218. package/es/utils/snap.js +237 -0
  219. package/es/utils/summarizeCart.js +24 -0
  220. package/es/utils/threeCSG.es6.js +498 -0
  221. package/es/version.js +2 -0
  222. package/lib/catalog/properties/property-string.js +55 -0
  223. package/lib/catalog/properties/property-toggle.js +46 -0
  224. package/lib/catalog/properties/shared-property-style.js +20 -0
  225. package/lib/catalog/utils/FuseUtils.js +88 -0
  226. package/lib/catalog/utils/exporter.js +155 -0
  227. package/lib/catalog/utils/geom-utils.js +205 -0
  228. package/lib/catalog/utils/item-loader.js +1533 -0
  229. package/lib/catalog/utils/load-obj.js +99 -0
  230. package/lib/catalog/utils/mtl-loader.js +363 -0
  231. package/lib/catalog/utils/obj-loader.js +482 -0
  232. package/lib/class/FuseUtils.js +88 -0
  233. package/lib/class/area.js +150 -0
  234. package/lib/class/export.js +96 -0
  235. package/lib/class/group.js +445 -0
  236. package/lib/class/guide.js +67 -0
  237. package/lib/class/hole.js +934 -0
  238. package/lib/class/item.js +1889 -0
  239. package/lib/class/layer.js +672 -0
  240. package/lib/class/line.js +1186 -0
  241. package/lib/class/project.js +799 -0
  242. package/lib/class/vertex.js +207 -0
  243. package/lib/components/content.js +116 -0
  244. package/lib/components/disclaimer/disclaimer.js +105 -0
  245. package/lib/components/export.js +33 -0
  246. package/lib/components/style/button.js +120 -0
  247. package/lib/components/style/cancel-button.js +29 -0
  248. package/lib/components/style/content-container.js +40 -0
  249. package/lib/components/style/content-title.js +37 -0
  250. package/lib/components/style/delete-button.js +34 -0
  251. package/lib/components/style/export.js +121 -0
  252. package/lib/components/style/form-block.js +31 -0
  253. package/lib/components/style/form-color-input.js +34 -0
  254. package/lib/components/style/form-label.js +33 -0
  255. package/lib/components/style/form-number-input.js +220 -0
  256. package/lib/components/style/form-number-input_2.js +213 -0
  257. package/lib/components/style/form-select.js +75 -0
  258. package/lib/components/style/form-slider.js +68 -0
  259. package/lib/components/style/form-submit-button.js +35 -0
  260. package/lib/components/style/form-text-input.js +101 -0
  261. package/lib/components/viewer2d/area.js +88 -0
  262. package/lib/components/viewer2d/export.js +121 -0
  263. package/lib/components/viewer2d/grids/grid-horizontal-streak.js +44 -0
  264. package/lib/components/viewer2d/grids/grid-streak.js +44 -0
  265. package/lib/components/viewer2d/grids/grid-vertical-streak.js +44 -0
  266. package/lib/components/viewer2d/grids/grids.js +44 -0
  267. package/lib/components/viewer2d/group.js +62 -0
  268. package/lib/components/viewer2d/item.js +521 -0
  269. package/lib/components/viewer2d/layer.js +171 -0
  270. package/lib/components/viewer2d/line.js +892 -0
  271. package/lib/components/viewer2d/ruler.js +107 -0
  272. package/lib/components/viewer2d/rulerDist.js +153 -0
  273. package/lib/components/viewer2d/rulerX.js +158 -0
  274. package/lib/components/viewer2d/rulerY.js +160 -0
  275. package/lib/components/viewer2d/scene.js +147 -0
  276. package/lib/components/viewer2d/snap.js +83 -0
  277. package/lib/components/viewer2d/state.js +87 -0
  278. package/lib/components/viewer2d/utils.js +210 -0
  279. package/lib/components/viewer2d/vertex.js +74 -0
  280. package/lib/components/viewer2d/viewer2d.js +1405 -0
  281. package/lib/components/viewer3d/camera-controls-module/camera-controls.module.js +2597 -0
  282. package/lib/components/viewer3d/dcm.js +407 -0
  283. package/lib/components/viewer3d/fbm.js +420 -0
  284. package/lib/components/viewer3d/front3D.js +75 -0
  285. package/lib/components/viewer3d/grid-creator.js +34 -0
  286. package/lib/components/viewer3d/grids/grid-horizontal-streak.js +44 -0
  287. package/lib/components/viewer3d/grids/grid-streak.js +35 -0
  288. package/lib/components/viewer3d/grids/grid-vertical-streak.js +44 -0
  289. package/lib/components/viewer3d/libs/first-person-controls.js +74 -0
  290. package/lib/components/viewer3d/libs/helvetiker_regular.typeface.js +1287 -0
  291. package/lib/components/viewer3d/libs/mtl-loader.js +363 -0
  292. package/lib/components/viewer3d/libs/obj-loader.js +468 -0
  293. package/lib/components/viewer3d/libs/orbit-controls.js +705 -0
  294. package/lib/components/viewer3d/libs/pointer-lock-controls.js +52 -0
  295. package/lib/components/viewer3d/lrm.js +311 -0
  296. package/lib/components/viewer3d/model.js +714 -0
  297. package/lib/components/viewer3d/pointer-lock-navigation.js +122 -0
  298. package/lib/components/viewer3d/ruler-utils/itemRect.js +68 -0
  299. package/lib/components/viewer3d/ruler-utils/layer3D.js +502 -0
  300. package/lib/components/viewer3d/ruler-utils/ruler3D.js +234 -0
  301. package/lib/components/viewer3d/ruler-utils/scene3D.js +68 -0
  302. package/lib/components/viewer3d/ruler-utils/state3D.js +25 -0
  303. package/lib/components/viewer3d/scene-creator.js +3642 -0
  304. package/lib/components/viewer3d/three-memory-cleaner.js +60 -0
  305. package/lib/components/viewer3d/viewer3d-first-person.js +320 -0
  306. package/lib/components/viewer3d/viewer3d.js +2532 -0
  307. package/lib/constants.js +645 -0
  308. package/lib/index.js +96 -0
  309. package/lib/models.js +517 -0
  310. package/lib/plugins/SVGLoader.js +1417 -0
  311. package/lib/plugins/autosave.js +39 -0
  312. package/lib/plugins/console-debugger.js +44 -0
  313. package/lib/plugins/export.js +33 -0
  314. package/lib/plugins/keyboard.js +107 -0
  315. package/lib/reducers/areas-reducer.js +18 -0
  316. package/lib/reducers/export.js +97 -0
  317. package/lib/reducers/groups-reducer.js +44 -0
  318. package/lib/reducers/holes-reducer.js +68 -0
  319. package/lib/reducers/items-reducer.js +146 -0
  320. package/lib/reducers/lines-reducer.js +51 -0
  321. package/lib/reducers/project-reducer.js +135 -0
  322. package/lib/reducers/reducer.js +26 -0
  323. package/lib/reducers/scene-reducer.js +34 -0
  324. package/lib/reducers/user-reducer.js +46 -0
  325. package/lib/reducers/vertices-reducer.js +25 -0
  326. package/lib/reducers/viewer2d-reducer.js +82 -0
  327. package/lib/reducers/viewer3d-reducer.js +63 -0
  328. package/lib/shared-style.js +72 -0
  329. package/lib/styles/export.js +13 -0
  330. package/lib/translator/en.js +110 -0
  331. package/lib/translator/it.js +85 -0
  332. package/lib/translator/ru.js +85 -0
  333. package/lib/translator/translator.js +90 -0
  334. package/lib/utils/browser.js +40 -0
  335. package/lib/utils/email-validator.js +10 -0
  336. package/lib/utils/export.js +56 -0
  337. package/lib/utils/geometry.js +2516 -0
  338. package/lib/utils/get-edges-of-subgraphs.js +34 -0
  339. package/lib/utils/graph-cycles.js +240 -0
  340. package/lib/utils/graph-inner-cycles.js +54 -0
  341. package/lib/utils/graph.js +157 -0
  342. package/lib/utils/helper.js +291 -0
  343. package/lib/utils/history.js +36 -0
  344. package/lib/utils/id-broker.js +25 -0
  345. package/lib/utils/logger.js +14 -0
  346. package/lib/utils/math.js +57 -0
  347. package/lib/utils/molding.js +895 -0
  348. package/lib/utils/name-generator.js +23 -0
  349. package/lib/utils/objects-utils.js +60 -0
  350. package/lib/utils/phone-validator.js +10 -0
  351. package/lib/utils/process-black-list.js +24 -0
  352. package/lib/utils/react-if.js +24 -0
  353. package/lib/utils/snap-scene.js +105 -0
  354. package/lib/utils/snap.js +249 -0
  355. package/lib/utils/summarizeCart.js +30 -0
  356. package/lib/utils/threeCSG.es6.js +503 -0
  357. package/lib/version.js +8 -0
  358. package/package.json +3 -3
@@ -0,0 +1,463 @@
1
+ import React from 'react';
2
+ import * as Three from 'three';
3
+ var black = new Three.MeshLambertMaterial({
4
+ color: 0x000000
5
+ });
6
+ var green = new Three.MeshLambertMaterial({
7
+ color: 0x348781
8
+ });
9
+ var red = new Three.MeshLambertMaterial({
10
+ color: 0xff0000
11
+ });
12
+ var turquoise = new Three.MeshLambertMaterial({
13
+ color: 0x43c6db,
14
+ opacity: 0.7,
15
+ transparent: true
16
+ });
17
+ var metalBlue = new Three.MeshLambertMaterial({
18
+ color: 0xb7ceec
19
+ });
20
+ var darkGrey = new Three.MeshLambertMaterial({
21
+ color: 0x313131
22
+ });
23
+ var darkGrey2 = new Three.MeshLambertMaterial({
24
+ color: 0x212121
25
+ });
26
+ var metalBlueGrey = new Three.MeshLambertMaterial({
27
+ color: 0x566d7e
28
+ });
29
+ function makePanicDoor() {
30
+ var panicDoorDouble = new Three.Mesh();
31
+ var doorLeft = makeDoorStructure();
32
+ var doorRight = makeDoorStructure();
33
+ var handle = makeHandle();
34
+ var doorLeftPivot = makePivot();
35
+ var doorRightPivot = makePivot();
36
+ var safetyHandleLeft = makeSafetyHandle();
37
+ var safetyHandleRight = makeSafetyHandle();
38
+ var lock = makeLock();
39
+ var doorLockLeft = makeDoorLock();
40
+ var doorLockRight = makeDoorLock();
41
+ lock.position.set(-0.05, -0.02, 0.03);
42
+ handle.position.set(-0.47 / 2, 0.85 / 2, -0.03);
43
+ doorLeftPivot.position.set(0.595 / 2, 0, -0.06 / 2);
44
+ doorRightPivot.position.set(0.6 / 2, 0, 0.077 / 2);
45
+ doorRight.rotation.y = Math.PI;
46
+ doorRight.position.set(-0.35 / 2 - 0.084, 0, 0.0043);
47
+ doorLeft.position.set(0.35 / 2 + 0.084, 0, -0.0043);
48
+ safetyHandleLeft.position.set(0, 0.4, 0.06 / 2);
49
+ safetyHandleRight.position.set(0, 0.4, -0.062 / 2);
50
+ handle.add(lock);
51
+ doorLeft.add(handle);
52
+ doorLeft.add(safetyHandleLeft);
53
+ doorRight.add(safetyHandleRight);
54
+ doorLeft.add(doorLeftPivot);
55
+ panicDoorDouble.add(doorLeft);
56
+ doorRight.add(doorRightPivot);
57
+ doorLeft.add(doorLockLeft);
58
+ doorRight.add(doorLockRight);
59
+ panicDoorDouble.add(doorRight);
60
+ return panicDoorDouble;
61
+ }
62
+ function makeDoorLock() {
63
+ var block = new Three.Object3D();
64
+ var DoorLockGeometry1 = new Three.CylinderGeometry(0.012, 0.012, 1.905, Math.round(32));
65
+ var DoorLockGeometry2 = new Three.CylinderGeometry(0.007, 0.007, 1.907, Math.round(32));
66
+ var DoorLock1 = new Three.Mesh(DoorLockGeometry1, metalBlue);
67
+ var DoorLock2 = new Three.Mesh(DoorLockGeometry2, metalBlueGrey);
68
+ block.position.set(-0.275, 0.7 / 2, 0);
69
+ block.scale.x = 1 / 1.3;
70
+ DoorLock1.add(DoorLock2);
71
+ block.add(DoorLock1);
72
+ return block;
73
+ }
74
+ function makeLock() {
75
+ var mechanism = new Three.Object3D();
76
+ var BaseGeometry = new Three.BoxGeometry(0.01, 0.1, 0.02);
77
+ var FirstBlockGeometry = new Three.BoxGeometry(0.01, 0.02, 0.01);
78
+ var SecondBlockGeometry = new Three.BoxGeometry(0.006, 0.04, 0.008);
79
+ var base = new Three.Mesh(BaseGeometry, metalBlue);
80
+ var FirstBlock = new Three.Mesh(FirstBlockGeometry, metalBlueGrey);
81
+ var SecondBlock = new Three.Mesh(SecondBlockGeometry, metalBlueGrey);
82
+ FirstBlock.position.set(-0.008 / 2, 0.03, 0);
83
+ SecondBlock.position.y = -0.05;
84
+ FirstBlock.add(SecondBlock);
85
+ base.add(FirstBlock);
86
+ mechanism.add(base);
87
+ return mechanism;
88
+ }
89
+ function makeSafetyHandle() {
90
+ var handle = new Three.Object3D();
91
+ var handleSupportGeometry = new Three.BoxGeometry(0.5, 0.1, 0.005);
92
+ var PushButtonGeometry = new Three.CylinderGeometry(0.04, 0.04, 0.48, Math.round(32));
93
+ var PushButtonCoverGeometry = new Three.CylinderGeometry(0.042, 0.042, 0.01, Math.round(32));
94
+ var handleSupport = new Three.Mesh(handleSupportGeometry, black);
95
+ var pushButton = new Three.Mesh(PushButtonGeometry, red);
96
+ var pushButtonCover1 = new Three.Mesh(PushButtonCoverGeometry, black);
97
+ var pushButtonCover2 = new Three.Mesh(PushButtonCoverGeometry, black);
98
+ handleSupport.position.z = 0.005 / 2;
99
+ pushButton.rotation.z = Math.PI / 2;
100
+ pushButtonCover1.position.y = 0.48 / 2 + 0.01 / 2;
101
+ pushButtonCover2.position.y = -0.48 / 2 - 0.01 / 2;
102
+ pushButton.add(pushButtonCover1);
103
+ pushButton.add(pushButtonCover2);
104
+ handleSupport.add(pushButton);
105
+ handle.add(handleSupport);
106
+ return handle;
107
+ }
108
+ function makePivot() {
109
+ var DoorPivot = new Three.Object3D();
110
+ var DownPivotGeometry = new Three.CylinderGeometry(0.009, 0.009, 0.04, Math.round(32));
111
+ var UpPivotGeometry = new Three.CylinderGeometry(0.01, 0.01, 0.04, Math.round(32));
112
+ var downPivot1 = new Three.Mesh(DownPivotGeometry, green);
113
+ var upPivot1 = new Three.Mesh(UpPivotGeometry, green);
114
+ var downPivot2 = new Three.Mesh(DownPivotGeometry, green);
115
+ var upPivot2 = new Three.Mesh(UpPivotGeometry, green);
116
+ downPivot1.position.y = -0.4;
117
+ upPivot1.position.y = 0.04;
118
+ downPivot2.position.y = 1;
119
+ upPivot2.position.y = 0.04;
120
+ downPivot2.add(upPivot2);
121
+ downPivot1.add(upPivot1);
122
+ DoorPivot.add(downPivot2);
123
+ DoorPivot.add(downPivot1);
124
+ return DoorPivot;
125
+ }
126
+ function makeHandle() {
127
+ var handle = new Three.Object3D();
128
+ var handleBase = makeHandleBase();
129
+ var hilt = makeHilt();
130
+ hilt.rotation.x = Math.PI / 2;
131
+ hilt.position.set(0, 0.04, -0.03 / 2 - 0.01 / 2);
132
+ handle.add(handleBase);
133
+ handle.add(hilt);
134
+ handle.scale.set(1.1, 1.1, 1.1);
135
+ return handle;
136
+ }
137
+ function makeHilt() {
138
+ var hilt = new Three.Object3D();
139
+ var GeometryPiece1 = new Three.CylinderGeometry(0.01, 0.01, 0.03, Math.round(32));
140
+ var GeometryPiece2 = new Three.SphereGeometry(0.01, Math.round(32), Math.round(32));
141
+ var GeometryPiece3 = new Three.CylinderGeometry(0.01, 0.01, 0.07, Math.round(32));
142
+ var piece1 = new Three.Mesh(GeometryPiece1, black);
143
+ var piece2 = new Three.Mesh(GeometryPiece2, black);
144
+ var piece3 = new Three.Mesh(GeometryPiece3, black);
145
+ var piece4 = new Three.Mesh(GeometryPiece2, black);
146
+ piece3.rotation.z = Math.PI / 2;
147
+ piece3.position.x = 0.07 / 2;
148
+ piece2.position.y = -0.03 / 2;
149
+ piece4.position.y = -0.07 / 2;
150
+ piece3.add(piece4);
151
+ piece2.add(piece3);
152
+ piece1.add(piece2);
153
+ hilt.add(piece1);
154
+ return hilt;
155
+ }
156
+ function makeHandleBase() {
157
+ var base = new Three.Object3D();
158
+ var BaseGeometry1 = new Three.BoxGeometry(0.038, 0.14, 0.01);
159
+ var BaseGeometry2 = new Three.CylinderGeometry(0.023, 0.023, 0.01, Math.round(32));
160
+ var lock = makeLockKey();
161
+ var base1 = new Three.Mesh(BaseGeometry1, black);
162
+ var base2 = new Three.Mesh(BaseGeometry2, black);
163
+ lock.rotation.x = Math.PI / 2;
164
+ lock.position.y = -0.03;
165
+ base2.rotation.x = Math.PI / 2;
166
+ base2.position.y = -0.033;
167
+ base2.scale.z = 1.5;
168
+ base1.add(lock);
169
+ base1.add(base2);
170
+ base.add(base1);
171
+ return base;
172
+ }
173
+ function makeLockKey() {
174
+ var lock = new Three.Object3D();
175
+ var geometryLock1 = new Three.CylinderGeometry(0.005, 0.005, 0.02, Math.round(32));
176
+ var geometryLock2 = new Three.BoxGeometry(0.008, 0.02, 0.02);
177
+ var geometryLock3 = new Three.BoxGeometry(0.007, 0.0203, 0.0018);
178
+ var lockPiece1 = new Three.Mesh(geometryLock1, metalBlue);
179
+ var lockPiece2 = new Three.Mesh(geometryLock2, metalBlue);
180
+ var lockPiece3 = new Three.Mesh(geometryLock3, metalBlueGrey);
181
+ lockPiece2.position.z = 0.01;
182
+ lockPiece1.add(lockPiece2);
183
+ lockPiece1.add(lockPiece3);
184
+ lock.add(lockPiece1);
185
+ return lock;
186
+ }
187
+ function makeDoorStructure() {
188
+ var door = new Three.Object3D();
189
+ var lowBaseDoorGeometry = new Three.BoxGeometry(0.6, 1.2, 0.01);
190
+ var middleBaseDoorGeometry = new Three.BoxGeometry(0.2, 0.7, 0.01);
191
+ var highBaseDoorGeometry = new Three.BoxGeometry(0.2, 0.2, 0.01);
192
+ var BorderCoverDoorGeometry1 = new Three.CylinderGeometry(0.005, 0.005, 1.9, Math.round(32));
193
+ var BorderCoverDoorGeometry2 = new Three.BoxGeometry(0.03, 1.9, 0.01);
194
+ var MiddleDoorGeometry2 = new Three.BoxGeometry(0.2, 0.7, 0.06);
195
+ var MiddleDoorGeometry1 = new Three.BoxGeometry(0.19, 0.7, 0.06);
196
+ var HighDoorGeometry = new Three.BoxGeometry(0.2, 0.2, 0.06);
197
+ var glassGeometry = new Three.BoxGeometry(0.2, 0.5, 0.05);
198
+ var LowDoorGeometry = new Three.BoxGeometry(0.59, 1.2, 0.06);
199
+ var glassCoverVertical = new Three.BoxGeometry(0.01, 0.52, 0.064);
200
+ var glassCoverHorizontal = new Three.BoxGeometry(0.224, 0.01, 0.064);
201
+ var lowCoverDoor = new Three.Mesh(lowBaseDoorGeometry, green);
202
+ var middleDoor1 = new Three.Mesh(MiddleDoorGeometry1, green);
203
+ var middleDoor2 = new Three.Mesh(MiddleDoorGeometry2, green);
204
+ var baseDoor = new Three.Mesh(LowDoorGeometry, green);
205
+ var middleCoverDoor1 = new Three.Mesh(middleBaseDoorGeometry, green);
206
+ var middleCoverDoor2 = new Three.Mesh(middleBaseDoorGeometry, green);
207
+ var highCoverDoor = new Three.Mesh(highBaseDoorGeometry, green);
208
+ var highDoor = new Three.Mesh(HighDoorGeometry, green);
209
+ var borderCoverDoor1 = new Three.Mesh(BorderCoverDoorGeometry1, green);
210
+ var borderCoverDoor2 = new Three.Mesh(BorderCoverDoorGeometry2, green);
211
+ var glass = new Three.Mesh(glassGeometry, turquoise);
212
+ var glassVerticalCover1 = new Three.Mesh(glassCoverVertical, green);
213
+ var glassVerticalCover2 = new Three.Mesh(glassCoverVertical, green);
214
+ var glassHorizontalCover1 = new Three.Mesh(glassCoverHorizontal, green);
215
+ var glassHorizontalCover2 = new Three.Mesh(glassCoverHorizontal, green);
216
+ lowCoverDoor.position.set(-(0.6 - 0.59) / 2, 0, -0.05 / 2);
217
+ middleCoverDoor1.position.set(-0.2, 1.2 / 2 + 0.7 / 2, 0);
218
+ middleCoverDoor2.position.set(0.2, 1.2 / 2 + 0.7 / 2, 0);
219
+ highCoverDoor.position.set(0, (0.5 + 0.2) / 2, -0.05 / 2);
220
+ highDoor.position.set(0, (0.5 + 0.2) / 2, -0.05 / 2 + 0.05 / 2);
221
+ glass.position.set(-0.01 / 2, 1.2 / 2 + 0.5 / 2, 0);
222
+ middleDoor2.position.z = 0.05 / 2;
223
+ middleDoor1.position.set(0.005, 0, 0.05 / 2);
224
+ borderCoverDoor1.position.set(-0.6 / 2, 0.7 / 2, 0);
225
+ glassVerticalCover1.position.x = 0.2 / 2 + 0.014 / 2;
226
+ glassVerticalCover2.position.x = -0.2 / 2 - 0.014 / 2;
227
+ glassHorizontalCover1.position.y = 0.5 / 2 + 0.014 / 2;
228
+ glassHorizontalCover2.position.y = -0.5 / 2 - 0.014 / 2;
229
+ borderCoverDoor2.position.set(0.02 / 2, 0, -0.01 / 2);
230
+ borderCoverDoor1.add(borderCoverDoor2);
231
+ glass.add(highCoverDoor);
232
+ glass.add(glassVerticalCover1);
233
+ glass.add(glassVerticalCover2);
234
+ glass.add(glassHorizontalCover1);
235
+ glass.add(glassHorizontalCover2);
236
+ glass.add(highCoverDoor);
237
+ glass.add(highDoor);
238
+ baseDoor.add(glass);
239
+ middleCoverDoor1.add(middleDoor1);
240
+ middleCoverDoor2.add(middleDoor2);
241
+ lowCoverDoor.add(borderCoverDoor1);
242
+ lowCoverDoor.add(middleCoverDoor1);
243
+ lowCoverDoor.add(middleCoverDoor2);
244
+ baseDoor.add(lowCoverDoor);
245
+ door.add(baseDoor);
246
+ door.scale.x = 0.9;
247
+ return door;
248
+ }
249
+ export default {
250
+ name: 'Double Panic Door',
251
+ prototype: 'holes',
252
+ info: {
253
+ tag: ['door'],
254
+ title: 'Double Panic Door',
255
+ description: 'iron door',
256
+ image: '/assets/img/svg/doors_closet.svg'
257
+ },
258
+ properties: {
259
+ width: {
260
+ label: 'width',
261
+ type: 'length-measure',
262
+ defaultValue: {
263
+ length: 200,
264
+ unit: 'cm'
265
+ }
266
+ },
267
+ height: {
268
+ label: 'height',
269
+ type: 'length-measure',
270
+ defaultValue: {
271
+ length: 215,
272
+ unit: 'cm'
273
+ }
274
+ },
275
+ thickness: {
276
+ label: 'thickness',
277
+ type: 'length-measure',
278
+ defaultValue: {
279
+ length: 6,
280
+ unit: 'cm'
281
+ }
282
+ },
283
+ altitude: {
284
+ label: 'altitude',
285
+ type: 'length-measure',
286
+ defaultValue: {
287
+ length: 0,
288
+ unit: 'cm'
289
+ }
290
+ },
291
+ flip_horizontal: {
292
+ label: 'flip',
293
+ type: 'checkbox',
294
+ defaultValue: false,
295
+ values: {
296
+ none: false,
297
+ yes: true
298
+ }
299
+ }
300
+ },
301
+ render2D: function render2D(element, layer, scene) {
302
+ var STYLE_HOLE_BASE = {
303
+ stroke: 'rgb(73, 73, 73)',
304
+ strokeWidth: '1px',
305
+ strokeDasharray: '9,5',
306
+ fill: 'rgb(73, 73, 73)'
307
+ };
308
+ var STYLE_HOLE_SELECTED = {
309
+ stroke: '#0096fd',
310
+ strokeWidth: '1px',
311
+ strokeDasharray: '9,5',
312
+ fill: '#0096fd',
313
+ cursor: 'move'
314
+ };
315
+ var STYLE_ARC_BASE = {
316
+ stroke: 'rgb(73, 73, 73)',
317
+ strokeWidth: '1px',
318
+ strokeDasharray: '9,5',
319
+ fill: 'none'
320
+ };
321
+ var STYLE_ARC_SELECTED = {
322
+ stroke: '#0096fd',
323
+ strokeWidth: '1px',
324
+ strokeDasharray: '9,5',
325
+ fill: 'none',
326
+ cursor: 'move'
327
+ };
328
+ var STYLE_STR0 = {
329
+ fill: 'rgb(185, 185, 185)',
330
+ stroke: '#494949',
331
+ strokeWidth: '1',
332
+ strokeMiterlimit: '2.61313'
333
+ };
334
+ var STYLE_STR0_S = {
335
+ fill: 'rgb(185, 185, 185)',
336
+ stroke: '#0096fd',
337
+ strokeWidth: '1',
338
+ strokeMiterlimit: '2.61313'
339
+ };
340
+ var STYLE_STR1 = {
341
+ fill: 'none',
342
+ stroke: '#494949',
343
+ strokeWidth: '1',
344
+ strokeLinecap: 'round',
345
+ strokeLinejoin: 'round',
346
+ strokeMiterlimit: '2.61313',
347
+ strokeDasharray: '23.860041 11.930021'
348
+ };
349
+ var STYLE_FILL2 = {
350
+ fill: '#1183B7'
351
+ };
352
+ var STYLE_FNT0 = {
353
+ fill: 'white',
354
+ fontWeight: 'normal',
355
+ fontSize: '13px',
356
+ fontFamily: 'Proxima Nova Rg'
357
+ };
358
+ var epsilon = 3;
359
+ var lineWidth = 15;
360
+ var flip = element.properties.get('flip_horizontal');
361
+ var holeWidth = element.properties.get('width').get('length');
362
+ var holePath = "M".concat(0, " ", -epsilon, " L").concat(holeWidth, " ").concat(-epsilon, " L").concat(holeWidth, " ").concat(epsilon, " L", 0, " ").concat(epsilon, " z");
363
+ var arcPath = "M".concat(0, ",", 0, " A", holeWidth / 2, ",").concat(holeWidth / 2, " 0 0,1 ").concat(holeWidth / 2, ",").concat(holeWidth / 2);
364
+ var arcPath2 = "M".concat(0, ",", 0, " A", holeWidth / 2, ",").concat(holeWidth / 2, " 0 0,0 ").concat(holeWidth / 2, ",").concat(holeWidth / 2);
365
+ var holeStyle = element.selected ? STYLE_HOLE_SELECTED : STYLE_HOLE_BASE;
366
+ var arcStyle = element.selected ? STYLE_ARC_SELECTED : STYLE_ARC_BASE;
367
+ var rectStyle = element.selected ? STYLE_STR0_S : STYLE_STR0;
368
+ var length = element.properties.get('width').get('length');
369
+ if (flip) {
370
+ return /*#__PURE__*/React.createElement("g", {
371
+ transform: "translate(".concat(-element.properties.get('width').get('length') / 2, ", 0)")
372
+ }, /*#__PURE__*/React.createElement("path", {
373
+ key: "1",
374
+ d: arcPath,
375
+ style: arcStyle,
376
+ transform: "translate(".concat(0, ",", -holeWidth / 2, ")")
377
+ }), /*#__PURE__*/React.createElement("line", {
378
+ key: "2",
379
+ x1: 0,
380
+ y1: 0 - epsilon,
381
+ x2: 0,
382
+ y2: -holeWidth / 2 - epsilon,
383
+ style: holeStyle
384
+ }), /*#__PURE__*/React.createElement("path", {
385
+ key: "3",
386
+ d: arcPath2,
387
+ style: arcStyle,
388
+ transform: "translate(".concat(holeWidth, ",").concat(-holeWidth / 2, ") rotate(90)")
389
+ }), /*#__PURE__*/React.createElement("line", {
390
+ key: "4",
391
+ x1: holeWidth,
392
+ y1: 0 - epsilon,
393
+ x2: holeWidth,
394
+ y2: -holeWidth / 2 - epsilon,
395
+ style: holeStyle
396
+ }), /*#__PURE__*/React.createElement("rect", {
397
+ style: rectStyle,
398
+ x: "0",
399
+ y: -lineWidth / 2,
400
+ width: holeWidth,
401
+ height: lineWidth
402
+ }));
403
+ } else {
404
+ return /*#__PURE__*/React.createElement("g", {
405
+ transform: "translate(".concat(-element.properties.get('width').get('length') / 2, ", 0)")
406
+ }, /*#__PURE__*/React.createElement("path", {
407
+ key: "1",
408
+ d: arcPath,
409
+ style: arcStyle,
410
+ transform: "translate(".concat(holeWidth, ",").concat(holeWidth / 2, ") rotate(180)")
411
+ }), /*#__PURE__*/React.createElement("line", {
412
+ key: "2",
413
+ x1: 0,
414
+ y1: 0 - epsilon,
415
+ x2: 0,
416
+ y2: holeWidth / 2 - epsilon,
417
+ style: holeStyle
418
+ }), /*#__PURE__*/React.createElement("path", {
419
+ key: "3",
420
+ d: arcPath2,
421
+ style: arcStyle,
422
+ transform: "translate(".concat(0, ",", holeWidth / 2, ") rotate(270)")
423
+ }), /*#__PURE__*/React.createElement("line", {
424
+ key: "4",
425
+ x1: holeWidth,
426
+ y1: 0 - epsilon,
427
+ x2: holeWidth,
428
+ y2: holeWidth / 2 - epsilon,
429
+ style: holeStyle
430
+ }), /*#__PURE__*/React.createElement("rect", {
431
+ style: rectStyle,
432
+ x: "0",
433
+ y: -lineWidth / 2,
434
+ width: holeWidth,
435
+ height: lineWidth
436
+ }));
437
+ }
438
+ },
439
+ render3D: function render3D(element, layer, scene) {
440
+ var flip = element.properties.get('flip_horizontal');
441
+ var width = element.properties.get('width').get('length');
442
+ var height = element.properties.get('height').get('length');
443
+ var thickness = element.properties.get('thickness').get('length');
444
+ var newAltitude = element.properties.get('altitude').get('length');
445
+ var panicDoorDouble = new Three.Object3D();
446
+ panicDoorDouble.add(makePanicDoor().clone());
447
+ var valuePosition = new Three.Box3().setFromObject(panicDoorDouble);
448
+ var deltaX = Math.abs(valuePosition.max.x - valuePosition.min.x);
449
+ var deltaY = Math.abs(valuePosition.max.y - valuePosition.min.y);
450
+ var deltaZ = Math.abs(valuePosition.max.z - valuePosition.min.z);
451
+ if (element.selected) {
452
+ var boundingBox = new Three.BoxHelper(panicDoorDouble, 0x99c3fb);
453
+ boundingBox.material.linewidth = 5;
454
+ boundingBox.renderOrder = 1000;
455
+ boundingBox.material.depthTest = false;
456
+ panicDoorDouble.add(boundingBox);
457
+ }
458
+ if (flip) panicDoorDouble.rotation.y += Math.PI;
459
+ panicDoorDouble.position.y += newAltitude;
460
+ panicDoorDouble.scale.set(width / deltaX, height / deltaY, thickness / deltaZ);
461
+ return Promise.resolve(panicDoorDouble);
462
+ }
463
+ };
@@ -0,0 +1,225 @@
1
+ import React from 'react';
2
+ import * as Three from 'three';
3
+
4
+ // const grey = new Three.MeshLambertMaterial({color: 0x3f3f3f});
5
+ // const white = new Three.MeshLambertMaterial({color: 0xffffff, transparent:true, opacity:0.5});
6
+ // const black = new Three.MeshLambertMaterial({color: 0x000000});
7
+ import { loadGLTF } from "../../utils/load-obj";
8
+ import { OBJTYPE_MESH } from "../../../constants";
9
+ var cached3DDoor = null;
10
+ export default {
11
+ name: 'Sliding',
12
+ prototype: 'holes',
13
+ info: {
14
+ tag: ['door'],
15
+ title: 'Sliding',
16
+ description: 'Sliding',
17
+ // image: "/assets/img/svg/doors_patio.svg",
18
+ image: '/assets/img/svg/door/Sliding.svg',
19
+ url: '/assets/gltf/door_sliding.gltf'
20
+ },
21
+ properties: {
22
+ width: {
23
+ label: 'width',
24
+ type: 'length-measure',
25
+ defaultValue: {
26
+ length: 200,
27
+ unit: 'cm'
28
+ },
29
+ length: 200
30
+ },
31
+ height: {
32
+ label: 'height',
33
+ type: 'length-measure',
34
+ defaultValue: {
35
+ length: 215,
36
+ unit: 'cm'
37
+ },
38
+ length: 215
39
+ },
40
+ thickness: {
41
+ label: 'thickness',
42
+ type: 'length-measure',
43
+ defaultValue: {
44
+ length: 6,
45
+ unit: 'cm'
46
+ }
47
+ },
48
+ altitude: {
49
+ label: 'altitude',
50
+ type: 'length-measure',
51
+ defaultValue: {
52
+ length: 0,
53
+ unit: 'cm'
54
+ }
55
+ },
56
+ flip_horizontal: {
57
+ label: 'horizontal flip',
58
+ type: 'checkbox',
59
+ defaultValue: 'none',
60
+ values: {
61
+ none: 'none',
62
+ yes: 'yes'
63
+ }
64
+ },
65
+ flip_vertical: {
66
+ label: 'vertical flip',
67
+ type: 'checkbox',
68
+ defaultValue: 'right',
69
+ values: {
70
+ right: 'right',
71
+ left: 'left'
72
+ }
73
+ }
74
+ },
75
+ render2D: function render2D(element, layer, scene) {
76
+ var STYLE_HOLE_BASE = {
77
+ stroke: 'rgb(73, 73, 73)',
78
+ strokeWidth: '1px',
79
+ strokeDasharray: '9,5',
80
+ fill: 'rgb(73, 73, 73)'
81
+ };
82
+ var STYLE_HOLE_SELECTED = {
83
+ stroke: '#0096fd',
84
+ strokeWidth: '1px',
85
+ strokeDasharray: '9,5',
86
+ fill: '#0096fd',
87
+ cursor: 'move'
88
+ };
89
+ var STYLE_STR0 = {
90
+ fill: 'rgb(185, 185, 185)',
91
+ stroke: '#494949',
92
+ strokeWidth: '1',
93
+ strokeMiterlimit: '2.61313'
94
+ };
95
+ var STYLE_STR0_S = {
96
+ fill: 'rgb(185, 185, 185)',
97
+ stroke: '#0096fd',
98
+ strokeWidth: '1',
99
+ strokeMiterlimit: '2.61313'
100
+ };
101
+ var epsilon = 2;
102
+ var lineWidth = 6;
103
+ var flip = element.properties.get('flip_horizontal');
104
+ var handleSide = element.properties.get('flip_vertical');
105
+ var holeWidth = element.properties.get('width').get('length');
106
+ var holeStyle = element.selected ? STYLE_HOLE_SELECTED : STYLE_HOLE_BASE;
107
+ var rectStyle = element.selected ? STYLE_STR0_S : STYLE_STR0;
108
+ var scaleX = 1,
109
+ scaleY = 1;
110
+ scaleX = flip == handleSide ? 1 : -1;
111
+ scaleY = flip ? -1 : 1;
112
+ return /*#__PURE__*/React.createElement("g", {
113
+ transform: "scale(".concat(scaleX, ",").concat(scaleY, ")")
114
+ }, /*#__PURE__*/React.createElement("rect", {
115
+ key: "1",
116
+ style: rectStyle,
117
+ x: -holeWidth / 2,
118
+ y: -lineWidth / 2,
119
+ width: holeWidth,
120
+ height: lineWidth
121
+ }), /*#__PURE__*/React.createElement("rect", {
122
+ key: "2",
123
+ style: rectStyle,
124
+ x: -holeWidth / 2,
125
+ y: -lineWidth / 4,
126
+ width: holeWidth / 2,
127
+ height: lineWidth / 2
128
+ }), /*#__PURE__*/React.createElement("line", {
129
+ key: "3",
130
+ x1: 0 + epsilon,
131
+ y1: "0",
132
+ x2: holeWidth / 2,
133
+ y2: "0",
134
+ style: holeStyle
135
+ }), /*#__PURE__*/React.createElement("line", {
136
+ key: "4",
137
+ x1: 0 + epsilon,
138
+ y1: "0",
139
+ x2: epsilon + lineWidth / 2,
140
+ y2: lineWidth / 3,
141
+ style: holeStyle
142
+ }), /*#__PURE__*/React.createElement("line", {
143
+ key: "5",
144
+ x1: 0 + epsilon,
145
+ y1: "0",
146
+ x2: epsilon + lineWidth / 2,
147
+ y2: -lineWidth / 3,
148
+ style: holeStyle
149
+ }), /*#__PURE__*/React.createElement("line", {
150
+ key: "6",
151
+ x1: holeWidth / 2 - epsilon,
152
+ y1: "0",
153
+ x2: holeWidth / 2 - epsilon - lineWidth / 2,
154
+ y2: lineWidth / 3,
155
+ style: holeStyle
156
+ }), /*#__PURE__*/React.createElement("line", {
157
+ key: "7",
158
+ x1: holeWidth / 2 - epsilon,
159
+ y1: "0",
160
+ x2: holeWidth / 2 - epsilon - lineWidth / 2,
161
+ y2: -lineWidth / 3,
162
+ style: holeStyle
163
+ }), /*#__PURE__*/React.createElement("rect", {
164
+ key: "8",
165
+ style: rectStyle,
166
+ x: -lineWidth,
167
+ y: lineWidth / 4,
168
+ width: lineWidth,
169
+ height: lineWidth / 2
170
+ }));
171
+ },
172
+ render3D: function render3D(element, layer, scene) {
173
+ var onLoadItem = function onLoadItem(object) {
174
+ var flip = element.properties.get('flip_horizontal');
175
+ var handleSide = element.properties.get('flip_vertical');
176
+ var width = element.properties.get('width').get('length');
177
+ var height = element.properties.get('height').get('length');
178
+ var thickness = element.properties.get('thickness').get('length');
179
+ var newAltitude = element.properties.get('altitude').get('length');
180
+ flip ? flip = 'yes' : flip = 'none';
181
+ handleSide ? handleSide = 'right' : handleSide = 'left';
182
+ var valuePosition = new Three.Box3().setFromObject(object);
183
+ var deltaX = Math.abs(valuePosition.max.x - valuePosition.min.x);
184
+ var deltaY = Math.abs(valuePosition.max.y - valuePosition.min.y);
185
+ var deltaZ = Math.abs(valuePosition.max.z - valuePosition.min.z);
186
+ if (element.selected) {
187
+ var boundingBox = new Three.BoxHelper(object, 0x99c3fb);
188
+ boundingBox.material.linewidth = 5;
189
+ boundingBox.renderOrder = 1000;
190
+ boundingBox.material.depthTest = false;
191
+ object.add(boundingBox);
192
+ }
193
+ var params = {
194
+ envMap: 'HDR',
195
+ roughness: 0.9,
196
+ metalness: 0.1,
197
+ exposure: 1.0
198
+ };
199
+ var examplecolor = new Three.Color(0xffffff);
200
+ var mat2 = new Three.MeshStandardMaterial({
201
+ color: examplecolor,
202
+ metalness: params.metalness,
203
+ roughness: params.roughness
204
+ });
205
+ // mat2.envMap = textureCube;
206
+ for (var j = 0; j < object.children.length; j++) {
207
+ if (object.children[j].type === OBJTYPE_MESH) {
208
+ object.children[j].material = mat2;
209
+ object.children[j].receiveShadow = true;
210
+ }
211
+ }
212
+ if (flip === 'yes') object.rotation.y += Math.PI;
213
+ object.position.y += newAltitude;
214
+ object.scale.set(width / deltaX, height / deltaY, thickness / deltaZ);
215
+ return object;
216
+ };
217
+ if (cached3DDoor) {
218
+ return Promise.resolve(onLoadItem(cached3DDoor.clone()));
219
+ }
220
+ return loadGLTF(element.url).then(function (object) {
221
+ cached3DDoor = object;
222
+ return onLoadItem(cached3DDoor.clone());
223
+ });
224
+ }
225
+ };