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,363 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ /**
8
+ * Loads a Wavefront .mtl file specifying materials
9
+ *
10
+ * @author angelxuanchang
11
+ */
12
+
13
+ var THREE = window.THREE;
14
+ var MTLLoader;
15
+ MTLLoader = function MTLLoader(manager) {
16
+ this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;
17
+ };
18
+ Object.assign(MTLLoader.prototype, THREE.EventDispatcher.prototype, {
19
+ /**
20
+ * Loads and parses a MTL asset from a URL.
21
+ *
22
+ * @param {String} url - URL to the MTL file.
23
+ * @param {Function} [onLoad] - Callback invoked with the loaded object.
24
+ * @param {Function} [onProgress] - Callback for download progress.
25
+ * @param {Function} [onError] - Callback for download errors.
26
+ *
27
+ * @see setPath setTexturePath
28
+ *
29
+ * @note In order for relative texture references to resolve correctly
30
+ * you must call setPath and/or setTexturePath explicitly prior to load.
31
+ */
32
+ load: function load(url, onLoad, onProgress, onError) {
33
+ var scope = this;
34
+ var loader = new THREE.XHRLoader(this.manager);
35
+ loader.setPath(this.path);
36
+ loader.load(url, function (text) {
37
+ onLoad(scope.parse(text));
38
+ }, onProgress, onError);
39
+ },
40
+ /**
41
+ * Set base path for resolving references.
42
+ * If set this path will be prepended to each loaded and found reference.
43
+ *
44
+ * @see setTexturePath
45
+ * @param {String} path
46
+ *
47
+ * @example
48
+ * mtlLoader.setPath( '/assets/obj/' );
49
+ * mtlLoader.load( 'my.mtl', ... );
50
+ */
51
+ setPath: function setPath(path) {
52
+ this.path = path;
53
+ },
54
+ /**
55
+ * Set base path for resolving texture references.
56
+ * If set this path will be prepended found texture reference.
57
+ * If not set and setPath is, it will be used as texture base path.
58
+ *
59
+ * @see setPath
60
+ * @param {String} path
61
+ *
62
+ * @example
63
+ * mtlLoader.setPath( '/assets/obj/' );
64
+ * mtlLoader.setTexturePath( '/assets/textures/' );
65
+ * mtlLoader.load( 'my.mtl', ... );
66
+ */
67
+ setTexturePath: function setTexturePath(path) {
68
+ this.texturePath = path;
69
+ },
70
+ setBaseUrl: function setBaseUrl(path) {
71
+ console.warn('THREE.MTLLoader: .setBaseUrl() is deprecated. Use .setTexturePath( path ) for texture path or .setPath( path ) for general base path instead.');
72
+ this.setTexturePath(path);
73
+ },
74
+ setCrossOrigin: function setCrossOrigin(value) {
75
+ this.crossOrigin = value;
76
+ },
77
+ setMaterialOptions: function setMaterialOptions(value) {
78
+ this.materialOptions = value;
79
+ },
80
+ /**
81
+ * Parses a MTL file.
82
+ *
83
+ * @param {String} text - Content of MTL file
84
+ * @return {THREE.MTLLoader.MaterialCreator}
85
+ *
86
+ * @see setPath setTexturePath
87
+ *
88
+ * @note In order for relative texture references to resolve correctly
89
+ * you must call setPath and/or setTexturePath explicitly prior to parse.
90
+ */
91
+ parse: function parse(text) {
92
+ var lines = text.split('\n');
93
+ var info = {};
94
+ var delimiter_pattern = /\s+/;
95
+ var materialsInfo = {};
96
+ for (var i = 0; i < lines.length; i++) {
97
+ var line = lines[i];
98
+ line = line.trim();
99
+ if (line.length === 0 || line.charAt(0) === '#') {
100
+ // Blank line or comment ignore
101
+ continue;
102
+ }
103
+ var pos = line.indexOf(' ');
104
+ var key = pos >= 0 ? line.substring(0, pos) : line;
105
+ key = key.toLowerCase();
106
+ var value = pos >= 0 ? line.substring(pos + 1) : '';
107
+ value = value.trim();
108
+ if (key === 'newmtl') {
109
+ // New material
110
+
111
+ info = {
112
+ name: value
113
+ };
114
+ materialsInfo[value] = info;
115
+ } else if (info) {
116
+ if (key === 'ka' || key === 'kd' || key === 'ks') {
117
+ var ss = value.split(delimiter_pattern, 3);
118
+ info[key] = [parseFloat(ss[0]), parseFloat(ss[1]), parseFloat(ss[2])];
119
+ } else {
120
+ info[key] = value;
121
+ }
122
+ }
123
+ }
124
+ var materialCreator = new MTLLoader.MaterialCreator(this.texturePath || this.path, this.materialOptions);
125
+ materialCreator.setCrossOrigin(this.crossOrigin);
126
+ materialCreator.setManager(this.manager);
127
+ materialCreator.setMaterials(materialsInfo);
128
+ return materialCreator;
129
+ }
130
+ });
131
+
132
+ /**
133
+ * Create a new THREE-MTLLoader.MaterialCreator
134
+ * @param baseUrl - Url relative to which textures are loaded
135
+ * @param options - Set of options on how to construct the materials
136
+ * side: Which side to apply the material
137
+ * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide
138
+ * wrap: What type of wrapping to apply for textures
139
+ * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping
140
+ * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255
141
+ * Default: false, assumed to be already normalized
142
+ * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's
143
+ * Default: false
144
+ * @constructor
145
+ */
146
+
147
+ MTLLoader.MaterialCreator = function (baseUrl, options) {
148
+ this.baseUrl = baseUrl || '';
149
+ this.options = options;
150
+ this.materialsInfo = {};
151
+ this.materials = {};
152
+ this.materialsArray = [];
153
+ this.nameLookup = {};
154
+ this.side = this.options && this.options.side ? this.options.side : THREE.FrontSide;
155
+ this.wrap = this.options && this.options.wrap ? this.options.wrap : THREE.RepeatWrapping;
156
+ };
157
+ MTLLoader.MaterialCreator.prototype = {
158
+ constructor: MTLLoader.MaterialCreator,
159
+ setCrossOrigin: function setCrossOrigin(value) {
160
+ this.crossOrigin = value;
161
+ },
162
+ setManager: function setManager(value) {
163
+ this.manager = value;
164
+ },
165
+ setMaterials: function setMaterials(materialsInfo) {
166
+ this.materialsInfo = this.convert(materialsInfo);
167
+ this.materials = {};
168
+ this.materialsArray = [];
169
+ this.nameLookup = {};
170
+ },
171
+ convert: function convert(materialsInfo) {
172
+ if (!this.options) return materialsInfo;
173
+ var converted = {};
174
+ for (var mn in materialsInfo) {
175
+ // Convert materials info into normalized form based on options
176
+
177
+ var mat = materialsInfo[mn];
178
+ var covmat = {};
179
+ converted[mn] = covmat;
180
+ for (var prop in mat) {
181
+ var save = true;
182
+ var value = mat[prop];
183
+ var lprop = prop.toLowerCase();
184
+ switch (lprop) {
185
+ case 'kd':
186
+ case 'ka':
187
+ case 'ks':
188
+ // Diffuse color (color under white light) using RGB values
189
+
190
+ if (this.options && this.options.normalizeRGB) {
191
+ value = [value[0] / 255, value[1] / 255, value[2] / 255];
192
+ }
193
+ if (this.options && this.options.ignoreZeroRGBs) {
194
+ if (value[0] === 0 && value[1] === 0 && value[2] === 0) {
195
+ // ignore
196
+
197
+ save = false;
198
+ }
199
+ }
200
+ break;
201
+ default:
202
+ break;
203
+ }
204
+ if (save) {
205
+ covmat[lprop] = value;
206
+ }
207
+ }
208
+ }
209
+ return converted;
210
+ },
211
+ preload: function preload() {
212
+ for (var mn in this.materialsInfo) {
213
+ this.create(mn);
214
+ }
215
+ },
216
+ getIndex: function getIndex(materialName) {
217
+ return this.nameLookup[materialName];
218
+ },
219
+ getAsArray: function getAsArray() {
220
+ var index = 0;
221
+ for (var mn in this.materialsInfo) {
222
+ this.materialsArray[index] = this.create(mn);
223
+ this.nameLookup[mn] = index;
224
+ index++;
225
+ }
226
+ return this.materialsArray;
227
+ },
228
+ create: function create(materialName) {
229
+ if (this.materials[materialName] === undefined) {
230
+ this.createMaterial_(materialName);
231
+ }
232
+ return this.materials[materialName];
233
+ },
234
+ createMaterial_: function createMaterial_(materialName) {
235
+ // Create material
236
+
237
+ var mat = this.materialsInfo[materialName];
238
+ var params = {
239
+ name: materialName,
240
+ side: this.side
241
+ };
242
+ var resolveURL = function resolveURL(baseUrl, url) {
243
+ if (typeof url !== 'string' || url === '') return '';
244
+
245
+ // Absolute URL
246
+ if (/^https?:\/\//i.test(url)) {
247
+ return url;
248
+ }
249
+ return baseUrl + url;
250
+ };
251
+ for (var prop in mat) {
252
+ var value = mat[prop];
253
+ if (value === '') continue;
254
+ switch (prop.toLowerCase()) {
255
+ // Ns is material specular exponent
256
+
257
+ case 'kd':
258
+ // Diffuse color (color under white light) using RGB values
259
+
260
+ params.color = new THREE.Color().fromArray(value);
261
+ break;
262
+ case 'ks':
263
+ // Specular color (color when light is reflected from shiny surface) using RGB values
264
+ params.specular = new THREE.Color().fromArray(value);
265
+ break;
266
+ case 'map_kd':
267
+ // Diffuse texture map
268
+
269
+ if (params.map) break; // Keep the first encountered texture
270
+
271
+ var texParams = this.getTextureParams(value, params);
272
+ params.map = this.loadTexture(resolveURL(this.baseUrl, texParams.url));
273
+ params.map.repeat.copy(texParams.scale);
274
+ params.map.offset.copy(texParams.offset);
275
+ params.map.wrapS = this.wrap;
276
+ params.map.wrapT = this.wrap;
277
+ break;
278
+ case 'map_ks':
279
+ // Specular map
280
+
281
+ if (params.specularMap) break; // Keep the first encountered texture
282
+
283
+ params.specularMap = this.loadTexture(resolveURL(this.baseUrl, value));
284
+ params.specularMap.wrapS = this.wrap;
285
+ params.specularMap.wrapT = this.wrap;
286
+ break;
287
+ case 'ns':
288
+ // The specular exponent (defines the focus of the specular highlight)
289
+ // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000.
290
+
291
+ params.shininess = parseFloat(value);
292
+ break;
293
+ case 'd':
294
+ if (value < 1) {
295
+ params.opacity = value;
296
+ params.transparent = true;
297
+ }
298
+ break;
299
+ case 'Tr':
300
+ if (value > 0) {
301
+ params.opacity = 1 - value;
302
+ params.transparent = true;
303
+ }
304
+ break;
305
+ case 'map_bump':
306
+ case 'bump':
307
+ // Bump texture map
308
+
309
+ if (params.bumpMap) break; // Keep the first encountered texture
310
+
311
+ var texParams = this.getTextureParams(value, params);
312
+ params.bumpMap = this.loadTexture(resolveURL(this.baseUrl, texParams.url));
313
+ params.bumpMap.repeat.copy(texParams.scale);
314
+ params.bumpMap.offset.copy(texParams.offset);
315
+ params.bumpMap.wrapS = this.wrap;
316
+ params.bumpMap.wrapT = this.wrap;
317
+ break;
318
+ default:
319
+ break;
320
+ }
321
+ }
322
+ this.materials[materialName] = new THREE.MeshPhongMaterial(params);
323
+ return this.materials[materialName];
324
+ },
325
+ getTextureParams: function getTextureParams(value, matParams) {
326
+ var texParams = {
327
+ scale: new THREE.Vector2(1, 1),
328
+ offset: new THREE.Vector2(0, 0)
329
+ };
330
+ var items = value.split(/\s+/);
331
+ var pos;
332
+ pos = items.indexOf('-bm');
333
+ if (pos >= 0) {
334
+ matParams.bumpScale = parseFloat(items[pos + 1]);
335
+ items.splice(pos, 2);
336
+ }
337
+ pos = items.indexOf('-s');
338
+ if (pos >= 0) {
339
+ texParams.scale.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2]));
340
+ items.splice(pos, 4); // we expect 3 parameters here!
341
+ }
342
+ pos = items.indexOf('-o');
343
+ if (pos >= 0) {
344
+ texParams.offset.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2]));
345
+ items.splice(pos, 4); // we expect 3 parameters here!
346
+ }
347
+ texParams.url = items.join(' ').trim();
348
+ return texParams;
349
+ },
350
+ loadTexture: function loadTexture(url, mapping, onLoad, onProgress, onError) {
351
+ var texture;
352
+ var loader = THREE.Loader.Handlers.get(url);
353
+ var manager = this.manager !== undefined ? this.manager : THREE.DefaultLoadingManager;
354
+ if (loader === null) {
355
+ loader = new THREE.TextureLoader(manager);
356
+ }
357
+ if (loader.setCrossOrigin) loader.setCrossOrigin(this.crossOrigin);
358
+ texture = loader.load(url, onLoad, onProgress, onError);
359
+ if (mapping !== undefined) texture.mapping = mapping;
360
+ return texture;
361
+ }
362
+ };
363
+ var _default = exports["default"] = MTLLoader;