kitchen-simulator 5.0.0-test.4 → 5.0.0-test.6
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.
- package/package.json +23 -41
- package/es/@history.js +0 -3
- package/es/@history.js.map +0 -1
- package/es/AppContext.js +0 -4
- package/es/AppContext.js.map +0 -1
- package/es/KitchenConfigurator.js +0 -1345
- package/es/KitchenConfigurator.js.map +0 -1
- package/es/KitchenConfiguratorApp.js +0 -532
- package/es/KitchenConfiguratorApp.js.map +0 -1
- package/es/actions/area-actions.js +0 -15
- package/es/actions/area-actions.js.map +0 -1
- package/es/actions/export.js +0 -26
- package/es/actions/export.js.map +0 -1
- package/es/actions/groups-actions.js +0 -90
- package/es/actions/groups-actions.js.map +0 -1
- package/es/actions/holes-actions.js +0 -120
- package/es/actions/holes-actions.js.map +0 -1
- package/es/actions/items-actions.js +0 -314
- package/es/actions/items-actions.js.map +0 -1
- package/es/actions/lines-actions.js +0 -83
- package/es/actions/lines-actions.js.map +0 -1
- package/es/actions/project-actions.js +0 -282
- package/es/actions/project-actions.js.map +0 -1
- package/es/actions/scene-actions.js +0 -34
- package/es/actions/scene-actions.js.map +0 -1
- package/es/actions/user-actions.js +0 -59
- package/es/actions/user-actions.js.map +0 -1
- package/es/actions/vertices-actions.js +0 -28
- package/es/actions/vertices-actions.js.map +0 -1
- package/es/actions/viewer2d-actions.js +0 -59
- package/es/actions/viewer2d-actions.js.map +0 -1
- package/es/actions/viewer3d-actions.js +0 -24
- package/es/actions/viewer3d-actions.js.map +0 -1
- package/es/catalog/areas/area/planner-element.js +0 -41
- package/es/catalog/areas/area/planner-element.js.map +0 -1
- package/es/catalog/areas/area/textures/ceramic-tile.jpg +0 -0
- package/es/catalog/areas/area/textures/grass.jpg +0 -0
- package/es/catalog/areas/area/textures/parquet.jpg +0 -0
- package/es/catalog/areas/area/textures/strand-porcelain.jpg +0 -0
- package/es/catalog/areas/area/textures/tile1.jpg +0 -0
- package/es/catalog/back.png +0 -0
- package/es/catalog/catalog.js +0 -278
- package/es/catalog/catalog.js.map +0 -1
- package/es/catalog/doors.png +0 -0
- package/es/catalog/doorways.png +0 -0
- package/es/catalog/envMap/nx.hdr +0 -0
- package/es/catalog/envMap/ny.hdr +0 -0
- package/es/catalog/envMap/nz.hdr +0 -0
- package/es/catalog/envMap/px.hdr +0 -0
- package/es/catalog/envMap/py.hdr +0 -0
- package/es/catalog/envMap/pz.hdr +0 -0
- package/es/catalog/factories/area-factory-3d.js +0 -183
- package/es/catalog/factories/area-factory-3d.js.map +0 -1
- package/es/catalog/factories/area-factory.js +0 -82
- package/es/catalog/factories/area-factory.js.map +0 -1
- package/es/catalog/factories/export.js +0 -8
- package/es/catalog/factories/export.js.map +0 -1
- package/es/catalog/factories/wall-factory-3d.js +0 -203
- package/es/catalog/factories/wall-factory-3d.js.map +0 -1
- package/es/catalog/factories/wall-factory.js +0 -269
- package/es/catalog/factories/wall-factory.js.map +0 -1
- package/es/catalog/holes/door-closet/planner-element.js +0 -223
- package/es/catalog/holes/door-closet/planner-element.js.map +0 -1
- package/es/catalog/holes/door-double/door_double.png +0 -0
- package/es/catalog/holes/door-double/planner-element.js +0 -316
- package/es/catalog/holes/door-double/planner-element.js.map +0 -1
- package/es/catalog/holes/door-exterior/planner-element.js +0 -216
- package/es/catalog/holes/door-exterior/planner-element.js.map +0 -1
- package/es/catalog/holes/door-interior/planner-element.js +0 -228
- package/es/catalog/holes/door-interior/planner-element.js.map +0 -1
- package/es/catalog/holes/door-panic/panicDoor.png +0 -0
- package/es/catalog/holes/door-panic/planner-element.js +0 -504
- package/es/catalog/holes/door-panic/planner-element.js.map +0 -1
- package/es/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
- package/es/catalog/holes/door-panic-double/planner-element.js +0 -464
- package/es/catalog/holes/door-panic-double/planner-element.js.map +0 -1
- package/es/catalog/holes/door-sliding/planner-element.js +0 -226
- package/es/catalog/holes/door-sliding/planner-element.js.map +0 -1
- package/es/catalog/holes/doorway-framed/planner-element.js +0 -146
- package/es/catalog/holes/doorway-framed/planner-element.js.map +0 -1
- package/es/catalog/holes/doorway-frameless/planner-element.js +0 -105
- package/es/catalog/holes/doorway-frameless/planner-element.js.map +0 -1
- package/es/catalog/holes/gate/gate.jpg +0 -0
- package/es/catalog/holes/window-clear/planner-element.js +0 -167
- package/es/catalog/holes/window-clear/planner-element.js.map +0 -1
- package/es/catalog/holes/window-clear/texture.png +0 -0
- package/es/catalog/holes/window-cross/planner-element.js +0 -166
- package/es/catalog/holes/window-cross/planner-element.js.map +0 -1
- package/es/catalog/holes/window-cross/texture.png +0 -0
- package/es/catalog/holes/window-double-hung/planner-element.js +0 -304
- package/es/catalog/holes/window-double-hung/planner-element.js.map +0 -1
- package/es/catalog/holes/window-double-hung/texture.png +0 -0
- package/es/catalog/holes/window-vertical/planner-element.js +0 -277
- package/es/catalog/holes/window-vertical/planner-element.js.map +0 -1
- package/es/catalog/holes/window-vertical/texture.png +0 -0
- package/es/catalog/lines/wall/planner-element.js +0 -71
- package/es/catalog/lines/wall/planner-element.js.map +0 -1
- package/es/catalog/lines/wall/textures/bricks-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks-normal2.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks2.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks3.jpg +0 -0
- package/es/catalog/lines/wall/textures/morden-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/morden.jpg +0 -0
- package/es/catalog/lines/wall/textures/painted-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/painted.jpg +0 -0
- package/es/catalog/lines/wall/textures/plaster-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/plaster.jpg +0 -0
- package/es/catalog/lines/wall/wall.png +0 -0
- package/es/catalog/molding/molding-dcm/planner-element.js +0 -30
- package/es/catalog/molding/molding-dcm/planner-element.js.map +0 -1
- package/es/catalog/molding/molding-dcm/texture.png +0 -0
- package/es/catalog/molding/molding-fbm/planner-element.js +0 -30
- package/es/catalog/molding/molding-fbm/planner-element.js.map +0 -1
- package/es/catalog/molding/molding-fbm/texture.png +0 -0
- package/es/catalog/molding/molding-lrm/planner-element.js +0 -30
- package/es/catalog/molding/molding-lrm/planner-element.js.map +0 -1
- package/es/catalog/molding/molding-lrm/texture.png +0 -0
- package/es/catalog/properties/export.js +0 -22
- package/es/catalog/properties/export.js.map +0 -1
- package/es/catalog/properties/property-checkbox.js +0 -72
- package/es/catalog/properties/property-checkbox.js.map +0 -1
- package/es/catalog/properties/property-color.js +0 -40
- package/es/catalog/properties/property-color.js.map +0 -1
- package/es/catalog/properties/property-enum.js +0 -56
- package/es/catalog/properties/property-enum.js.map +0 -1
- package/es/catalog/properties/property-hidden.js +0 -20
- package/es/catalog/properties/property-hidden.js.map +0 -1
- package/es/catalog/properties/property-lenght-measure.js +0 -102
- package/es/catalog/properties/property-lenght-measure.js.map +0 -1
- package/es/catalog/properties/property-length-measure.js +0 -86
- package/es/catalog/properties/property-length-measure.js.map +0 -1
- package/es/catalog/properties/property-length-measure_hole.js +0 -102
- package/es/catalog/properties/property-length-measure_hole.js.map +0 -1
- package/es/catalog/properties/property-number.js +0 -49
- package/es/catalog/properties/property-number.js.map +0 -1
- package/es/catalog/properties/property-read-only.js +0 -27
- package/es/catalog/properties/property-read-only.js.map +0 -1
- package/es/catalog/properties/property-string.js +0 -49
- package/es/catalog/properties/property-string.js.map +0 -1
- package/es/catalog/properties/property-toggle.js +0 -40
- package/es/catalog/properties/property-toggle.js.map +0 -1
- package/es/catalog/properties/shared-property-style.js +0 -15
- package/es/catalog/properties/shared-property-style.js.map +0 -1
- package/es/catalog/utils/FuseUtils.js +0 -83
- package/es/catalog/utils/FuseUtils.js.map +0 -1
- package/es/catalog/utils/exporter.js +0 -149
- package/es/catalog/utils/exporter.js.map +0 -1
- package/es/catalog/utils/geom-utils.js +0 -190
- package/es/catalog/utils/geom-utils.js.map +0 -1
- package/es/catalog/utils/item-loader.js +0 -1522
- package/es/catalog/utils/item-loader.js.map +0 -1
- package/es/catalog/utils/load-obj.js +0 -92
- package/es/catalog/utils/load-obj.js.map +0 -1
- package/es/catalog/utils/mtl-loader.js +0 -358
- package/es/catalog/utils/mtl-loader.js.map +0 -1
- package/es/catalog/utils/obj-loader.js +0 -477
- package/es/catalog/utils/obj-loader.js.map +0 -1
- package/es/catalog/windows.png +0 -0
- package/es/class/FuseUtils.js +0 -83
- package/es/class/FuseUtils.js.map +0 -1
- package/es/class/area.js +0 -146
- package/es/class/area.js.map +0 -1
- package/es/class/export.js +0 -25
- package/es/class/export.js.map +0 -1
- package/es/class/group.js +0 -441
- package/es/class/group.js.map +0 -1
- package/es/class/guide.js +0 -63
- package/es/class/guide.js.map +0 -1
- package/es/class/hole.js +0 -931
- package/es/class/hole.js.map +0 -1
- package/es/class/item.js +0 -1888
- package/es/class/item.js.map +0 -1
- package/es/class/layer.js +0 -668
- package/es/class/layer.js.map +0 -1
- package/es/class/line.js +0 -1290
- package/es/class/line.js.map +0 -1
- package/es/class/project.js +0 -823
- package/es/class/project.js.map +0 -1
- package/es/class/vertex.js +0 -267
- package/es/class/vertex.js.map +0 -1
- package/es/components/atoms/Snackbar/index.js +0 -50
- package/es/components/atoms/Snackbar/index.js.map +0 -1
- package/es/components/atoms/radio-button/index.js +0 -26
- package/es/components/atoms/radio-button/index.js.map +0 -1
- package/es/components/atoms/radio-button/styles.js +0 -5
- package/es/components/atoms/radio-button/styles.js.map +0 -1
- package/es/components/button/MainButton.js +0 -92
- package/es/components/button/MainButton.js.map +0 -1
- package/es/components/button/ToggleMeasureButton.js +0 -56
- package/es/components/button/ToggleMeasureButton.js.map +0 -1
- package/es/components/catalog-view/catalog-breadcrumb.js +0 -53
- package/es/components/catalog-view/catalog-breadcrumb.js.map +0 -1
- package/es/components/catalog-view/catalog-item.js +0 -226
- package/es/components/catalog-view/catalog-item.js.map +0 -1
- package/es/components/catalog-view/catalog-list.js +0 -182
- package/es/components/catalog-view/catalog-list.js.map +0 -1
- package/es/components/catalog-view/catalog-page-item.js +0 -130
- package/es/components/catalog-view/catalog-page-item.js.map +0 -1
- package/es/components/catalog-view/catalog-turn-back-page-item.js +0 -106
- package/es/components/catalog-view/catalog-turn-back-page-item.js.map +0 -1
- package/es/components/configurator/custom-configurator.js +0 -94
- package/es/components/configurator/custom-configurator.js.map +0 -1
- package/es/components/configurator/project-configurator.js +0 -131
- package/es/components/configurator/project-configurator.js.map +0 -1
- package/es/components/content.js +0 -123
- package/es/components/content.js.map +0 -1
- package/es/components/export.js +0 -24
- package/es/components/export.js.map +0 -1
- package/es/components/firstsetting/button/styles.js +0 -27
- package/es/components/firstsetting/button/styles.js.map +0 -1
- package/es/components/firstsetting/export.js +0 -9
- package/es/components/firstsetting/export.js.map +0 -1
- package/es/components/firstsetting/firstsetting-content-button.js +0 -217
- package/es/components/firstsetting/firstsetting-content-button.js.map +0 -1
- package/es/components/firstsetting/firstsetting-toggle-button.js +0 -126
- package/es/components/firstsetting/firstsetting-toggle-button.js.map +0 -1
- package/es/components/firstsetting/firstsetting.js +0 -626
- package/es/components/firstsetting/firstsetting.js.map +0 -1
- package/es/components/footerbar/button/ControlButton.js +0 -72
- package/es/components/footerbar/button/ControlButton.js.map +0 -1
- package/es/components/footerbar/button/DirectionButton.js +0 -69
- package/es/components/footerbar/button/DirectionButton.js.map +0 -1
- package/es/components/footerbar/button/DirectionPanSpinButton.js +0 -50
- package/es/components/footerbar/button/DirectionPanSpinButton.js.map +0 -1
- package/es/components/footerbar/button/ToggleButton.js +0 -76
- package/es/components/footerbar/button/ToggleButton.js.map +0 -1
- package/es/components/footerbar/button/ToggleConvertButton.js +0 -73
- package/es/components/footerbar/button/ToggleConvertButton.js.map +0 -1
- package/es/components/footerbar/button/ToggleMeasureButton.js +0 -52
- package/es/components/footerbar/button/ToggleMeasureButton.js.map +0 -1
- package/es/components/footerbar/button/styles.js +0 -22
- package/es/components/footerbar/button/styles.js.map +0 -1
- package/es/components/footerbar/export.js +0 -9
- package/es/components/footerbar/export.js.map +0 -1
- package/es/components/footerbar/footer-content-button.js +0 -217
- package/es/components/footerbar/footer-content-button.js.map +0 -1
- package/es/components/footerbar/footer-toggle-button.js +0 -126
- package/es/components/footerbar/footer-toggle-button.js.map +0 -1
- package/es/components/footerbar/footerbar.js +0 -801
- package/es/components/footerbar/footerbar.js.map +0 -1
- package/es/components/footerbar/styles.js +0 -34
- package/es/components/footerbar/styles.js.map +0 -1
- package/es/components/header/button/MenuButton.js +0 -70
- package/es/components/header/button/MenuButton.js.map +0 -1
- package/es/components/header/button/SaveButton.js +0 -48
- package/es/components/header/button/SaveButton.js.map +0 -1
- package/es/components/header/button/styles.js +0 -59
- package/es/components/header/button/styles.js.map +0 -1
- package/es/components/header/export.js +0 -5
- package/es/components/header/export.js.map +0 -1
- package/es/components/header/header.js +0 -550
- package/es/components/header/header.js.map +0 -1
- package/es/components/header/header.style.css +0 -47
- package/es/components/header/styles.js +0 -41
- package/es/components/header/styles.js.map +0 -1
- package/es/components/login/Login.js +0 -86
- package/es/components/login/Login.js.map +0 -1
- package/es/components/login/LoginForm/index.js +0 -132
- package/es/components/login/LoginForm/index.js.map +0 -1
- package/es/components/login/Register.js +0 -96
- package/es/components/login/Register.js.map +0 -1
- package/es/components/login/RegisterForm/index.js +0 -230
- package/es/components/login/RegisterForm/index.js.map +0 -1
- package/es/components/login/jwtService.js +0 -232
- package/es/components/login/jwtService.js.map +0 -1
- package/es/components/login/style.css +0 -158
- package/es/components/login/style.scss +0 -260
- package/es/components/molecules/slider/index.js +0 -13
- package/es/components/molecules/slider/index.js.map +0 -1
- package/es/components/molecules/slider/styles.js +0 -2
- package/es/components/molecules/slider/styles.js.map +0 -1
- package/es/components/molecules/slider/styles.scss +0 -3
- package/es/components/myprojects/export.js +0 -5
- package/es/components/myprojects/export.js.map +0 -1
- package/es/components/myprojects/index.js +0 -446
- package/es/components/myprojects/index.js.map +0 -1
- package/es/components/myprojects/styles.js +0 -24
- package/es/components/myprojects/styles.js.map +0 -1
- package/es/components/sidebar/custom-accordion.js +0 -38
- package/es/components/sidebar/custom-accordion.js.map +0 -1
- package/es/components/sidebar/export.js +0 -14
- package/es/components/sidebar/export.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js +0 -65
- package/es/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js +0 -116
- package/es/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js +0 -126
- package/es/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js +0 -251
- package/es/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js +0 -75
- package/es/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/element-editor.js +0 -878
- package/es/components/sidebar/panel-element-editor/element-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/multi-elements-editor.js +0 -2
- package/es/components/sidebar/panel-element-editor/multi-elements-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/panel-element-editor.js +0 -49
- package/es/components/sidebar/panel-element-editor/panel-element-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/panel-multi-elements-editor.js +0 -118
- package/es/components/sidebar/panel-element-editor/panel-multi-elements-editor.js.map +0 -1
- package/es/components/sidebar/panel-group-editor.js +0 -211
- package/es/components/sidebar/panel-group-editor.js.map +0 -1
- package/es/components/sidebar/panel-groups.js +0 -267
- package/es/components/sidebar/panel-groups.js.map +0 -1
- package/es/components/sidebar/panel-guides.js +0 -185
- package/es/components/sidebar/panel-guides.js.map +0 -1
- package/es/components/sidebar/panel-layer-elements.js +0 -251
- package/es/components/sidebar/panel-layer-elements.js.map +0 -1
- package/es/components/sidebar/panel-layers.js +0 -340
- package/es/components/sidebar/panel-layers.js.map +0 -1
- package/es/components/sidebar/panel.js +0 -103
- package/es/components/sidebar/panel.js.map +0 -1
- package/es/components/sidebar/sidebar.js +0 -109
- package/es/components/sidebar/sidebar.js.map +0 -1
- package/es/components/sidebar/toolbar-panel.js +0 -164
- package/es/components/sidebar/toolbar-panel.js.map +0 -1
- package/es/components/sign/export.js +0 -6
- package/es/components/sign/export.js.map +0 -1
- package/es/components/sign/main/index.js +0 -560
- package/es/components/sign/main/index.js.map +0 -1
- package/es/components/sign/main/styles.js +0 -20
- package/es/components/sign/main/styles.js.map +0 -1
- package/es/components/style/button.js +0 -114
- package/es/components/style/button.js.map +0 -1
- package/es/components/style/cancel-button.js +0 -23
- package/es/components/style/cancel-button.js.map +0 -1
- package/es/components/style/content-container.js +0 -34
- package/es/components/style/content-container.js.map +0 -1
- package/es/components/style/content-title.js +0 -30
- package/es/components/style/content-title.js.map +0 -1
- package/es/components/style/delete-button.js +0 -26
- package/es/components/style/delete-button.js.map +0 -1
- package/es/components/style/export.js +0 -32
- package/es/components/style/export.js.map +0 -1
- package/es/components/style/form-block.js +0 -25
- package/es/components/style/form-block.js.map +0 -1
- package/es/components/style/form-color-input.js +0 -28
- package/es/components/style/form-color-input.js.map +0 -1
- package/es/components/style/form-label.js +0 -27
- package/es/components/style/form-label.js.map +0 -1
- package/es/components/style/form-number-input.js +0 -190
- package/es/components/style/form-number-input.js.map +0 -1
- package/es/components/style/form-number-input_2.js +0 -207
- package/es/components/style/form-number-input_2.js.map +0 -1
- package/es/components/style/form-select.js +0 -21
- package/es/components/style/form-select.js.map +0 -1
- package/es/components/style/form-slider.js +0 -46
- package/es/components/style/form-slider.js.map +0 -1
- package/es/components/style/form-submit-button.js +0 -27
- package/es/components/style/form-submit-button.js.map +0 -1
- package/es/components/style/form-text-input.js +0 -77
- package/es/components/style/form-text-input.js.map +0 -1
- package/es/components/toolbar/button/ControlButton.js +0 -69
- package/es/components/toolbar/button/ControlButton.js.map +0 -1
- package/es/components/toolbar/button/DirectionButton.js +0 -50
- package/es/components/toolbar/button/DirectionButton.js.map +0 -1
- package/es/components/toolbar/button/RightButton.js +0 -133
- package/es/components/toolbar/button/RightButton.js.map +0 -1
- package/es/components/toolbar/button/ToggleButton.js +0 -59
- package/es/components/toolbar/button/ToggleButton.js.map +0 -1
- package/es/components/toolbar/button/index.js +0 -88
- package/es/components/toolbar/button/index.js.map +0 -1
- package/es/components/toolbar/button/styles.js +0 -14
- package/es/components/toolbar/button/styles.js.map +0 -1
- package/es/components/toolbar/components/DoorStyleMenu.js +0 -105
- package/es/components/toolbar/components/DoorStyleMenu.js.map +0 -1
- package/es/components/toolbar/components/Pricing.js +0 -101
- package/es/components/toolbar/components/Pricing.js.map +0 -1
- package/es/components/toolbar/components/ReviewForQuote.js +0 -476
- package/es/components/toolbar/components/ReviewForQuote.js.map +0 -1
- package/es/components/toolbar/export.js +0 -14
- package/es/components/toolbar/export.js.map +0 -1
- package/es/components/toolbar/main/Alert.js +0 -125
- package/es/components/toolbar/main/Alert.js.map +0 -1
- package/es/components/toolbar/main/TakePictureModal.js +0 -100
- package/es/components/toolbar/main/TakePictureModal.js.map +0 -1
- package/es/components/toolbar/main/confirm-popup.js +0 -88
- package/es/components/toolbar/main/confirm-popup.js.map +0 -1
- package/es/components/toolbar/main/index.js +0 -4612
- package/es/components/toolbar/main/index.js.map +0 -1
- package/es/components/toolbar/main/lShaped.json +0 -311
- package/es/components/toolbar/main/longNarrow.json +0 -238
- package/es/components/toolbar/main/myComponents.js +0 -118
- package/es/components/toolbar/main/myComponents.js.map +0 -1
- package/es/components/toolbar/main/oRectangle.json +0 -220
- package/es/components/toolbar/main/rectangle.json +0 -238
- package/es/components/toolbar/main/style.css +0 -107
- package/es/components/toolbar/main/styles.js +0 -64
- package/es/components/toolbar/main/styles.js.map +0 -1
- package/es/components/toolbar/plugin-item.js +0 -150
- package/es/components/toolbar/plugin-item.js.map +0 -1
- package/es/components/toolbar/popup/appliance/appliance-category/index.js +0 -77
- package/es/components/toolbar/popup/appliance/appliance-category/index.js.map +0 -1
- package/es/components/toolbar/popup/appliance/choose-appliance/index.js +0 -76
- package/es/components/toolbar/popup/appliance/choose-appliance/index.js.map +0 -1
- package/es/components/toolbar/popup/appliance/index.js +0 -81
- package/es/components/toolbar/popup/appliance/index.js.map +0 -1
- package/es/components/toolbar/popup/autosaveprompt/index.js +0 -91
- package/es/components/toolbar/popup/autosaveprompt/index.js.map +0 -1
- package/es/components/toolbar/popup/autosaveprompt/styles.css +0 -64
- package/es/components/toolbar/popup/autosaveprompt/styles.js +0 -9
- package/es/components/toolbar/popup/autosaveprompt/styles.js.map +0 -1
- package/es/components/toolbar/popup/cabinet/cabinet-category/index.js +0 -77
- package/es/components/toolbar/popup/cabinet/cabinet-category/index.js.map +0 -1
- package/es/components/toolbar/popup/cabinet/choose-product/index.js +0 -98
- package/es/components/toolbar/popup/cabinet/choose-product/index.js.map +0 -1
- package/es/components/toolbar/popup/cabinet/index.js +0 -83
- package/es/components/toolbar/popup/cabinet/index.js.map +0 -1
- package/es/components/toolbar/popup/doorStyle/choose-style/index.js +0 -50
- package/es/components/toolbar/popup/doorStyle/choose-style/index.js.map +0 -1
- package/es/components/toolbar/popup/doorStyle/index.js +0 -61
- package/es/components/toolbar/popup/doorStyle/index.js.map +0 -1
- package/es/components/toolbar/popup/doorStyle/style-category/index.js +0 -143
- package/es/components/toolbar/popup/doorStyle/style-category/index.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +0 -3
- package/es/components/toolbar/popup/downloadsummary/downloadSummaryContext.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js +0 -119
- package/es/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/index.js +0 -564
- package/es/components/toolbar/popup/downloadsummary/index.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/show2D/show2DView.js +0 -51
- package/es/components/toolbar/popup/downloadsummary/show2D/show2DView.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js +0 -191
- package/es/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/show3D/show3DView.js +0 -245
- package/es/components/toolbar/popup/downloadsummary/show3D/show3DView.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js +0 -1758
- package/es/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showCabinetInfo.js +0 -87
- package/es/components/toolbar/popup/downloadsummary/showCabinetInfo.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js +0 -116
- package/es/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js +0 -1710
- package/es/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js +0 -175
- package/es/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showWarranty.js +0 -106
- package/es/components/toolbar/popup/downloadsummary/showWarranty.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/styles.css +0 -177
- package/es/components/toolbar/popup/downloadsummary/styles.js +0 -40
- package/es/components/toolbar/popup/downloadsummary/styles.js.map +0 -1
- package/es/components/toolbar/popup/finishingtouch/category/index.js +0 -35
- package/es/components/toolbar/popup/finishingtouch/category/index.js.map +0 -1
- package/es/components/toolbar/popup/finishingtouch/index.js +0 -47
- package/es/components/toolbar/popup/finishingtouch/index.js.map +0 -1
- package/es/components/toolbar/popup/finishingtouch/material-edit.js +0 -156
- package/es/components/toolbar/popup/finishingtouch/material-edit.js.map +0 -1
- package/es/components/toolbar/popup/finishingtouch/product/index.js +0 -56
- package/es/components/toolbar/popup/finishingtouch/product/index.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js +0 -116
- package/es/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/choose-floor/index.js +0 -246
- package/es/components/toolbar/popup/floorplan/choose-floor/index.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/choose-floor/lShaped.json +0 -311
- package/es/components/toolbar/popup/floorplan/choose-floor/longNarrow.json +0 -238
- package/es/components/toolbar/popup/floorplan/choose-floor/oRectangle.json +0 -220
- package/es/components/toolbar/popup/floorplan/choose-floor/rectangle.json +0 -238
- package/es/components/toolbar/popup/floorplan/choose-floor/styles.js +0 -11
- package/es/components/toolbar/popup/floorplan/choose-floor/styles.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/floor-category/index.js +0 -90
- package/es/components/toolbar/popup/floorplan/floor-category/index.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/index.js +0 -49
- package/es/components/toolbar/popup/floorplan/index.js.map +0 -1
- package/es/components/toolbar/popup/index.js +0 -188
- package/es/components/toolbar/popup/index.js.map +0 -1
- package/es/components/toolbar/popup/newproject/index.js +0 -67
- package/es/components/toolbar/popup/newproject/index.js.map +0 -1
- package/es/components/toolbar/popup/newproject/styles.css +0 -64
- package/es/components/toolbar/popup/newproject/styles.js +0 -9
- package/es/components/toolbar/popup/newproject/styles.js.map +0 -1
- package/es/components/toolbar/popup/product/appliance.js +0 -65
- package/es/components/toolbar/popup/product/appliance.js.map +0 -1
- package/es/components/toolbar/popup/product/cabinetproduct.js +0 -25
- package/es/components/toolbar/popup/product/cabinetproduct.js.map +0 -1
- package/es/components/toolbar/popup/product/doorstyle.js +0 -50
- package/es/components/toolbar/popup/product/doorstyle.js.map +0 -1
- package/es/components/toolbar/popup/product/doorstyleproduct.js +0 -51
- package/es/components/toolbar/popup/product/doorstyleproduct.js.map +0 -1
- package/es/components/toolbar/popup/product/floor.js +0 -52
- package/es/components/toolbar/popup/product/floor.js.map +0 -1
- package/es/components/toolbar/popup/product/floorproduct.js +0 -61
- package/es/components/toolbar/popup/product/floorproduct.js.map +0 -1
- package/es/components/toolbar/popup/product/index.js +0 -52
- package/es/components/toolbar/popup/product/index.js.map +0 -1
- package/es/components/toolbar/popup/product/primary.js +0 -63
- package/es/components/toolbar/popup/product/primary.js.map +0 -1
- package/es/components/toolbar/popup/product/productline.js +0 -120
- package/es/components/toolbar/popup/product/productline.js.map +0 -1
- package/es/components/toolbar/popup/product/reviewItem.js +0 -338
- package/es/components/toolbar/popup/product/reviewItem.js.map +0 -1
- package/es/components/toolbar/popup/product/reviewMolding.js +0 -282
- package/es/components/toolbar/popup/product/reviewMolding.js.map +0 -1
- package/es/components/toolbar/popup/product/style.css +0 -54
- package/es/components/toolbar/popup/product/styles.js +0 -71
- package/es/components/toolbar/popup/product/styles.js.map +0 -1
- package/es/components/toolbar/popup/savedesign/FullPictureForm.js +0 -161
- package/es/components/toolbar/popup/savedesign/FullPictureForm.js.map +0 -1
- package/es/components/toolbar/popup/savedesign/index.js +0 -508
- package/es/components/toolbar/popup/savedesign/index.js.map +0 -1
- package/es/components/toolbar/popup/savedesign/savedesign.style.css +0 -16
- package/es/components/toolbar/popup/savedesign/styles.js +0 -19
- package/es/components/toolbar/popup/savedesign/styles.js.map +0 -1
- package/es/components/toolbar/popup/setDoorStyleOption/index.js +0 -57
- package/es/components/toolbar/popup/setDoorStyleOption/index.js.map +0 -1
- package/es/components/toolbar/popup/styles.js +0 -98
- package/es/components/toolbar/popup/styles.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/AddToCartOptions.js +0 -157
- package/es/components/toolbar/popup/submitforquote/AddToCartOptions.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/CustomerRequestsForm.js +0 -85
- package/es/components/toolbar/popup/submitforquote/CustomerRequestsForm.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/SkipDesignerReview.js +0 -36
- package/es/components/toolbar/popup/submitforquote/SkipDesignerReview.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/StepDots.js +0 -33
- package/es/components/toolbar/popup/submitforquote/StepDots.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/cart-choice.js +0 -132
- package/es/components/toolbar/popup/submitforquote/cart-choice.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/doorstyle-menus.js +0 -43
- package/es/components/toolbar/popup/submitforquote/doorstyle-menus.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/index.js +0 -690
- package/es/components/toolbar/popup/submitforquote/index.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/styles.css +0 -105
- package/es/components/toolbar/popup/submitforquote/styles.js +0 -31
- package/es/components/toolbar/popup/submitforquote/styles.js.map +0 -1
- package/es/components/toolbar/popup/submitprompt/index.js +0 -71
- package/es/components/toolbar/popup/submitprompt/index.js.map +0 -1
- package/es/components/toolbar/popup/submitprompt/styles.css +0 -64
- package/es/components/toolbar/popup/submitprompt/styles.js +0 -9
- package/es/components/toolbar/popup/submitprompt/styles.js.map +0 -1
- package/es/components/toolbar/toolbar-button.js +0 -105
- package/es/components/toolbar/toolbar-button.js.map +0 -1
- package/es/components/toolbar/toolbar-load-button.js +0 -29
- package/es/components/toolbar/toolbar-load-button.js.map +0 -1
- package/es/components/toolbar/toolbar-save-button.js +0 -27
- package/es/components/toolbar/toolbar-save-button.js.map +0 -1
- package/es/components/tutorial-view/Modal.js +0 -498
- package/es/components/tutorial-view/Modal.js.map +0 -1
- package/es/components/tutorial-view/style.css +0 -111
- package/es/components/tutorial-view/styles.js +0 -6
- package/es/components/tutorial-view/styles.js.map +0 -1
- package/es/components/viewer2d/area.js +0 -83
- package/es/components/viewer2d/area.js.map +0 -1
- package/es/components/viewer2d/export.js +0 -32
- package/es/components/viewer2d/export.js.map +0 -1
- package/es/components/viewer2d/grids/grid-horizontal-streak.js +0 -38
- package/es/components/viewer2d/grids/grid-horizontal-streak.js.map +0 -1
- package/es/components/viewer2d/grids/grid-streak.js +0 -38
- package/es/components/viewer2d/grids/grid-streak.js.map +0 -1
- package/es/components/viewer2d/grids/grid-vertical-streak.js +0 -38
- package/es/components/viewer2d/grids/grid-vertical-streak.js.map +0 -1
- package/es/components/viewer2d/grids/grids.js +0 -36
- package/es/components/viewer2d/grids/grids.js.map +0 -1
- package/es/components/viewer2d/group.js +0 -54
- package/es/components/viewer2d/group.js.map +0 -1
- package/es/components/viewer2d/item.js +0 -514
- package/es/components/viewer2d/item.js.map +0 -1
- package/es/components/viewer2d/layer.js +0 -165
- package/es/components/viewer2d/layer.js.map +0 -1
- package/es/components/viewer2d/line.js +0 -889
- package/es/components/viewer2d/line.js.map +0 -1
- package/es/components/viewer2d/ruler.js +0 -101
- package/es/components/viewer2d/ruler.js.map +0 -1
- package/es/components/viewer2d/rulerDist.js +0 -147
- package/es/components/viewer2d/rulerDist.js.map +0 -1
- package/es/components/viewer2d/rulerX.js +0 -152
- package/es/components/viewer2d/rulerX.js.map +0 -1
- package/es/components/viewer2d/rulerY.js +0 -154
- package/es/components/viewer2d/rulerY.js.map +0 -1
- package/es/components/viewer2d/scene.js +0 -141
- package/es/components/viewer2d/scene.js.map +0 -1
- package/es/components/viewer2d/snap.js +0 -75
- package/es/components/viewer2d/snap.js.map +0 -1
- package/es/components/viewer2d/state.js +0 -79
- package/es/components/viewer2d/state.js.map +0 -1
- package/es/components/viewer2d/utils.js +0 -163
- package/es/components/viewer2d/utils.js.map +0 -1
- package/es/components/viewer2d/vertex.js +0 -67
- package/es/components/viewer2d/vertex.js.map +0 -1
- package/es/components/viewer2d/viewer2d.js +0 -1402
- package/es/components/viewer2d/viewer2d.js.map +0 -1
- package/es/components/viewer3d/camera-controls-module/camera-controls.module.js +0 -2593
- package/es/components/viewer3d/camera-controls-module/camera-controls.module.js.map +0 -1
- package/es/components/viewer3d/dcm.js +0 -402
- package/es/components/viewer3d/dcm.js.map +0 -1
- package/es/components/viewer3d/fbm.js +0 -415
- package/es/components/viewer3d/fbm.js.map +0 -1
- package/es/components/viewer3d/front3D.js +0 -67
- package/es/components/viewer3d/front3D.js.map +0 -1
- package/es/components/viewer3d/grid-creator.js +0 -26
- package/es/components/viewer3d/grid-creator.js.map +0 -1
- package/es/components/viewer3d/grids/grid-horizontal-streak.js +0 -37
- package/es/components/viewer3d/grids/grid-horizontal-streak.js.map +0 -1
- package/es/components/viewer3d/grids/grid-streak.js +0 -28
- package/es/components/viewer3d/grids/grid-streak.js.map +0 -1
- package/es/components/viewer3d/grids/grid-vertical-streak.js +0 -37
- package/es/components/viewer3d/grids/grid-vertical-streak.js.map +0 -1
- package/es/components/viewer3d/libs/first-person-controls.js +0 -68
- package/es/components/viewer3d/libs/first-person-controls.js.map +0 -1
- package/es/components/viewer3d/libs/helvetiker_regular.typeface.js +0 -1282
- package/es/components/viewer3d/libs/helvetiker_regular.typeface.js.map +0 -1
- package/es/components/viewer3d/libs/mtl-loader.js +0 -358
- package/es/components/viewer3d/libs/mtl-loader.js.map +0 -1
- package/es/components/viewer3d/libs/obj-loader.js +0 -463
- package/es/components/viewer3d/libs/obj-loader.js.map +0 -1
- package/es/components/viewer3d/libs/orbit-controls.js +0 -699
- package/es/components/viewer3d/libs/orbit-controls.js.map +0 -1
- package/es/components/viewer3d/libs/pointer-lock-controls.js +0 -46
- package/es/components/viewer3d/libs/pointer-lock-controls.js.map +0 -1
- package/es/components/viewer3d/lrm.js +0 -306
- package/es/components/viewer3d/lrm.js.map +0 -1
- package/es/components/viewer3d/model.js +0 -709
- package/es/components/viewer3d/model.js.map +0 -1
- package/es/components/viewer3d/pointer-lock-navigation.js +0 -116
- package/es/components/viewer3d/pointer-lock-navigation.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/itemRect.js +0 -62
- package/es/components/viewer3d/ruler-utils/itemRect.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/layer3D.js +0 -496
- package/es/components/viewer3d/ruler-utils/layer3D.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/ruler3D.js +0 -228
- package/es/components/viewer3d/ruler-utils/ruler3D.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/scene3D.js +0 -62
- package/es/components/viewer3d/ruler-utils/scene3D.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/state3D.js +0 -19
- package/es/components/viewer3d/ruler-utils/state3D.js.map +0 -1
- package/es/components/viewer3d/scene-creator.js +0 -3607
- package/es/components/viewer3d/scene-creator.js.map +0 -1
- package/es/components/viewer3d/three-memory-cleaner.js +0 -52
- package/es/components/viewer3d/three-memory-cleaner.js.map +0 -1
- package/es/components/viewer3d/viewer3d-first-person.js +0 -316
- package/es/components/viewer3d/viewer3d-first-person.js.map +0 -1
- package/es/components/viewer3d/viewer3d.js +0 -2504
- package/es/components/viewer3d/viewer3d.js.map +0 -1
- package/es/components/wizardstep/button/styles.js +0 -60
- package/es/components/wizardstep/button/styles.js.map +0 -1
- package/es/components/wizardstep/export.js +0 -5
- package/es/components/wizardstep/export.js.map +0 -1
- package/es/components/wizardstep/index.js +0 -971
- package/es/components/wizardstep/index.js.map +0 -1
- package/es/components/wizardstep/styles.js +0 -61
- package/es/components/wizardstep/styles.js.map +0 -1
- package/es/components/wizardstep/wizardstep-content-button.js +0 -217
- package/es/components/wizardstep/wizardstep-content-button.js.map +0 -1
- package/es/components/wizardstep/wizardstep-toggle-button.js +0 -126
- package/es/components/wizardstep/wizardstep-toggle-button.js.map +0 -1
- package/es/constants.js +0 -637
- package/es/constants.js.map +0 -1
- package/es/hooks/useCheckCart.js +0 -53
- package/es/hooks/useCheckCart.js.map +0 -1
- package/es/hooks/useGetPricesBySku.js +0 -74
- package/es/hooks/useGetPricesBySku.js.map +0 -1
- package/es/hooks/useValidateToken.js +0 -201
- package/es/hooks/useValidateToken.js.map +0 -1
- package/es/index.js +0 -17
- package/es/index.js.map +0 -1
- package/es/models.js +0 -511
- package/es/models.js.map +0 -1
- package/es/plugins/SVGLoader.js +0 -1413
- package/es/plugins/SVGLoader.js.map +0 -1
- package/es/plugins/autosave.js +0 -34
- package/es/plugins/autosave.js.map +0 -1
- package/es/plugins/console-debugger.js +0 -38
- package/es/plugins/console-debugger.js.map +0 -1
- package/es/plugins/export.js +0 -10
- package/es/plugins/export.js.map +0 -1
- package/es/plugins/keyboard.js +0 -102
- package/es/plugins/keyboard.js.map +0 -1
- package/es/reducers/areas-reducer.js +0 -13
- package/es/reducers/areas-reducer.js.map +0 -1
- package/es/reducers/export.js +0 -26
- package/es/reducers/export.js.map +0 -1
- package/es/reducers/groups-reducer.js +0 -39
- package/es/reducers/groups-reducer.js.map +0 -1
- package/es/reducers/holes-reducer.js +0 -63
- package/es/reducers/holes-reducer.js.map +0 -1
- package/es/reducers/items-reducer.js +0 -144
- package/es/reducers/items-reducer.js.map +0 -1
- package/es/reducers/lines-reducer.js +0 -46
- package/es/reducers/lines-reducer.js.map +0 -1
- package/es/reducers/project-reducer.js +0 -130
- package/es/reducers/project-reducer.js.map +0 -1
- package/es/reducers/reducer.js +0 -20
- package/es/reducers/reducer.js.map +0 -1
- package/es/reducers/scene-reducer.js +0 -29
- package/es/reducers/scene-reducer.js.map +0 -1
- package/es/reducers/user-reducer.js +0 -42
- package/es/reducers/user-reducer.js.map +0 -1
- package/es/reducers/vertices-reducer.js +0 -20
- package/es/reducers/vertices-reducer.js.map +0 -1
- package/es/reducers/viewer2d-reducer.js +0 -76
- package/es/reducers/viewer2d-reducer.js.map +0 -1
- package/es/reducers/viewer3d-reducer.js +0 -57
- package/es/reducers/viewer3d-reducer.js.map +0 -1
- package/es/shared-style.js +0 -67
- package/es/shared-style.js.map +0 -1
- package/es/styles/export.js +0 -6
- package/es/styles/export.js.map +0 -1
- package/es/styles/tabs.css +0 -40
- package/es/translator/en.js +0 -105
- package/es/translator/en.js.map +0 -1
- package/es/translator/it.js +0 -80
- package/es/translator/it.js.map +0 -1
- package/es/translator/ru.js +0 -80
- package/es/translator/ru.js.map +0 -1
- package/es/translator/translator.js +0 -85
- package/es/translator/translator.js.map +0 -1
- package/es/utils/browser.js +0 -34
- package/es/utils/browser.js.map +0 -1
- package/es/utils/email-validator.js +0 -5
- package/es/utils/email-validator.js.map +0 -1
- package/es/utils/export.js +0 -26
- package/es/utils/export.js.map +0 -1
- package/es/utils/geometry.js +0 -2237
- package/es/utils/geometry.js.map +0 -1
- package/es/utils/get-edges-of-subgraphs.js +0 -27
- package/es/utils/get-edges-of-subgraphs.js.map +0 -1
- package/es/utils/graph-cycles.js +0 -239
- package/es/utils/graph-cycles.js.map +0 -1
- package/es/utils/graph-inner-cycles.js +0 -47
- package/es/utils/graph-inner-cycles.js.map +0 -1
- package/es/utils/graph.js +0 -150
- package/es/utils/graph.js.map +0 -1
- package/es/utils/helper.js +0 -337
- package/es/utils/helper.js.map +0 -1
- package/es/utils/history.js +0 -30
- package/es/utils/history.js.map +0 -1
- package/es/utils/id-broker.js +0 -20
- package/es/utils/id-broker.js.map +0 -1
- package/es/utils/logger.js +0 -9
- package/es/utils/logger.js.map +0 -1
- package/es/utils/math.js +0 -51
- package/es/utils/math.js.map +0 -1
- package/es/utils/molding.js +0 -840
- package/es/utils/molding.js.map +0 -1
- package/es/utils/name-generator.js +0 -19
- package/es/utils/name-generator.js.map +0 -1
- package/es/utils/objects-utils.js +0 -51
- package/es/utils/objects-utils.js.map +0 -1
- package/es/utils/phone-validator.js +0 -5
- package/es/utils/phone-validator.js.map +0 -1
- package/es/utils/process-black-list.js +0 -19
- package/es/utils/process-black-list.js.map +0 -1
- package/es/utils/react-if.js +0 -19
- package/es/utils/react-if.js.map +0 -1
- package/es/utils/snap-scene.js +0 -100
- package/es/utils/snap-scene.js.map +0 -1
- package/es/utils/snap.js +0 -238
- package/es/utils/snap.js.map +0 -1
- package/es/utils/threeCSG.es6.js +0 -499
- package/es/utils/threeCSG.es6.js.map +0 -1
- package/es/version.js +0 -2
- package/es/version.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mtl-loader.js","names":["THREE","window","require","MTLLoader","manager","undefined","DefaultLoadingManager","Object","assign","prototype","EventDispatcher","load","url","onLoad","onProgress","onError","scope","loader","XHRLoader","setPath","path","text","parse","setTexturePath","texturePath","setBaseUrl","console","warn","setCrossOrigin","value","crossOrigin","setMaterialOptions","materialOptions","lines","split","info","delimiter_pattern","materialsInfo","i","length","line","trim","charAt","pos","indexOf","key","substring","toLowerCase","name","ss","parseFloat","materialCreator","MaterialCreator","setManager","setMaterials","baseUrl","options","materials","materialsArray","nameLookup","side","FrontSide","wrap","RepeatWrapping","constructor","convert","converted","mn","mat","covmat","prop","save","lprop","normalizeRGB","ignoreZeroRGBs","preload","create","getIndex","materialName","getAsArray","index","createMaterial_","params","resolveURL","test","color","Color","fromArray","specular","map","texParams","getTextureParams","loadTexture","repeat","copy","scale","offset","wrapS","wrapT","specularMap","shininess","opacity","transparent","bumpMap","MeshPhongMaterial","matParams","Vector2","items","bumpScale","splice","set","join","mapping","texture","Loader","Handlers","get","TextureLoader","module","exports"],"sources":["../../../../src/components/viewer3d/libs/mtl-loader.js"],"sourcesContent":["/**\r\n * Loads a Wavefront .mtl file specifying materials\r\n *\r\n * @author angelxuanchang\r\n */\r\n\r\nlet THREE = window.THREE || require('three');\r\nlet MTLLoader;\r\n\r\nMTLLoader = function (manager) {\r\n this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;\r\n};\r\n\r\nObject.assign(MTLLoader.prototype, THREE.EventDispatcher.prototype, {\r\n /**\r\n * Loads and parses a MTL asset from a URL.\r\n *\r\n * @param {String} url - URL to the MTL file.\r\n * @param {Function} [onLoad] - Callback invoked with the loaded object.\r\n * @param {Function} [onProgress] - Callback for download progress.\r\n * @param {Function} [onError] - Callback for download errors.\r\n *\r\n * @see setPath setTexturePath\r\n *\r\n * @note In order for relative texture references to resolve correctly\r\n * you must call setPath and/or setTexturePath explicitly prior to load.\r\n */\r\n load: function (url, onLoad, onProgress, onError) {\r\n let scope = this;\r\n\r\n let loader = new THREE.XHRLoader(this.manager);\r\n loader.setPath(this.path);\r\n loader.load(\r\n url,\r\n function (text) {\r\n onLoad(scope.parse(text));\r\n },\r\n onProgress,\r\n onError\r\n );\r\n },\r\n\r\n /**\r\n * Set base path for resolving references.\r\n * If set this path will be prepended to each loaded and found reference.\r\n *\r\n * @see setTexturePath\r\n * @param {String} path\r\n *\r\n * @example\r\n * mtlLoader.setPath( '/assets/obj/' );\r\n * mtlLoader.load( 'my.mtl', ... );\r\n */\r\n setPath: function (path) {\r\n this.path = path;\r\n },\r\n\r\n /**\r\n * Set base path for resolving texture references.\r\n * If set this path will be prepended found texture reference.\r\n * If not set and setPath is, it will be used as texture base path.\r\n *\r\n * @see setPath\r\n * @param {String} path\r\n *\r\n * @example\r\n * mtlLoader.setPath( '/assets/obj/' );\r\n * mtlLoader.setTexturePath( '/assets/textures/' );\r\n * mtlLoader.load( 'my.mtl', ... );\r\n */\r\n setTexturePath: function (path) {\r\n this.texturePath = path;\r\n },\r\n\r\n setBaseUrl: function (path) {\r\n console.warn(\r\n 'THREE.MTLLoader: .setBaseUrl() is deprecated. Use .setTexturePath( path ) for texture path or .setPath( path ) for general base path instead.'\r\n );\r\n\r\n this.setTexturePath(path);\r\n },\r\n\r\n setCrossOrigin: function (value) {\r\n this.crossOrigin = value;\r\n },\r\n\r\n setMaterialOptions: function (value) {\r\n this.materialOptions = value;\r\n },\r\n\r\n /**\r\n * Parses a MTL file.\r\n *\r\n * @param {String} text - Content of MTL file\r\n * @return {THREE.MTLLoader.MaterialCreator}\r\n *\r\n * @see setPath setTexturePath\r\n *\r\n * @note In order for relative texture references to resolve correctly\r\n * you must call setPath and/or setTexturePath explicitly prior to parse.\r\n */\r\n parse: function (text) {\r\n let lines = text.split('\\n');\r\n let info = {};\r\n let delimiter_pattern = /\\s+/;\r\n let materialsInfo = {};\r\n\r\n for (let i = 0; i < lines.length; i++) {\r\n let line = lines[i];\r\n line = line.trim();\r\n\r\n if (line.length === 0 || line.charAt(0) === '#') {\r\n // Blank line or comment ignore\r\n continue;\r\n }\r\n\r\n let pos = line.indexOf(' ');\r\n\r\n let key = pos >= 0 ? line.substring(0, pos) : line;\r\n key = key.toLowerCase();\r\n\r\n let value = pos >= 0 ? line.substring(pos + 1) : '';\r\n value = value.trim();\r\n\r\n if (key === 'newmtl') {\r\n // New material\r\n\r\n info = { name: value };\r\n materialsInfo[value] = info;\r\n } else if (info) {\r\n if (key === 'ka' || key === 'kd' || key === 'ks') {\r\n let ss = value.split(delimiter_pattern, 3);\r\n info[key] = [parseFloat(ss[0]), parseFloat(ss[1]), parseFloat(ss[2])];\r\n } else {\r\n info[key] = value;\r\n }\r\n }\r\n }\r\n\r\n let materialCreator = new MTLLoader.MaterialCreator(\r\n this.texturePath || this.path,\r\n this.materialOptions\r\n );\r\n materialCreator.setCrossOrigin(this.crossOrigin);\r\n materialCreator.setManager(this.manager);\r\n materialCreator.setMaterials(materialsInfo);\r\n return materialCreator;\r\n }\r\n});\r\n\r\n/**\r\n * Create a new THREE-MTLLoader.MaterialCreator\r\n * @param baseUrl - Url relative to which textures are loaded\r\n * @param options - Set of options on how to construct the materials\r\n * side: Which side to apply the material\r\n * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide\r\n * wrap: What type of wrapping to apply for textures\r\n * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping\r\n * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255\r\n * Default: false, assumed to be already normalized\r\n * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's\r\n * Default: false\r\n * @constructor\r\n */\r\n\r\nMTLLoader.MaterialCreator = function (baseUrl, options) {\r\n this.baseUrl = baseUrl || '';\r\n this.options = options;\r\n this.materialsInfo = {};\r\n this.materials = {};\r\n this.materialsArray = [];\r\n this.nameLookup = {};\r\n\r\n this.side =\r\n this.options && this.options.side ? this.options.side : THREE.FrontSide;\r\n this.wrap =\r\n this.options && this.options.wrap\r\n ? this.options.wrap\r\n : THREE.RepeatWrapping;\r\n};\r\n\r\nMTLLoader.MaterialCreator.prototype = {\r\n constructor: MTLLoader.MaterialCreator,\r\n\r\n setCrossOrigin: function (value) {\r\n this.crossOrigin = value;\r\n },\r\n\r\n setManager: function (value) {\r\n this.manager = value;\r\n },\r\n\r\n setMaterials: function (materialsInfo) {\r\n this.materialsInfo = this.convert(materialsInfo);\r\n this.materials = {};\r\n this.materialsArray = [];\r\n this.nameLookup = {};\r\n },\r\n\r\n convert: function (materialsInfo) {\r\n if (!this.options) return materialsInfo;\r\n\r\n let converted = {};\r\n\r\n for (let mn in materialsInfo) {\r\n // Convert materials info into normalized form based on options\r\n\r\n let mat = materialsInfo[mn];\r\n\r\n let covmat = {};\r\n\r\n converted[mn] = covmat;\r\n\r\n for (let prop in mat) {\r\n let save = true;\r\n let value = mat[prop];\r\n let lprop = prop.toLowerCase();\r\n\r\n switch (lprop) {\r\n case 'kd':\r\n case 'ka':\r\n case 'ks':\r\n // Diffuse color (color under white light) using RGB values\r\n\r\n if (this.options && this.options.normalizeRGB) {\r\n value = [value[0] / 255, value[1] / 255, value[2] / 255];\r\n }\r\n\r\n if (this.options && this.options.ignoreZeroRGBs) {\r\n if (value[0] === 0 && value[1] === 0 && value[2] === 0) {\r\n // ignore\r\n\r\n save = false;\r\n }\r\n }\r\n\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n if (save) {\r\n covmat[lprop] = value;\r\n }\r\n }\r\n }\r\n\r\n return converted;\r\n },\r\n\r\n preload: function () {\r\n for (let mn in this.materialsInfo) {\r\n this.create(mn);\r\n }\r\n },\r\n\r\n getIndex: function (materialName) {\r\n return this.nameLookup[materialName];\r\n },\r\n\r\n getAsArray: function () {\r\n let index = 0;\r\n\r\n for (let mn in this.materialsInfo) {\r\n this.materialsArray[index] = this.create(mn);\r\n this.nameLookup[mn] = index;\r\n index++;\r\n }\r\n\r\n return this.materialsArray;\r\n },\r\n\r\n create: function (materialName) {\r\n if (this.materials[materialName] === undefined) {\r\n this.createMaterial_(materialName);\r\n }\r\n\r\n return this.materials[materialName];\r\n },\r\n\r\n createMaterial_: function (materialName) {\r\n // Create material\r\n\r\n let mat = this.materialsInfo[materialName];\r\n let params = {\r\n name: materialName,\r\n side: this.side\r\n };\r\n\r\n let resolveURL = function (baseUrl, url) {\r\n if (typeof url !== 'string' || url === '') return '';\r\n\r\n // Absolute URL\r\n if (/^https?:\\/\\//i.test(url)) {\r\n return url;\r\n }\r\n\r\n return baseUrl + url;\r\n };\r\n\r\n for (let prop in mat) {\r\n let value = mat[prop];\r\n\r\n if (value === '') continue;\r\n\r\n switch (prop.toLowerCase()) {\r\n // Ns is material specular exponent\r\n\r\n case 'kd':\r\n // Diffuse color (color under white light) using RGB values\r\n\r\n params.color = new THREE.Color().fromArray(value);\r\n\r\n break;\r\n\r\n case 'ks':\r\n // Specular color (color when light is reflected from shiny surface) using RGB values\r\n params.specular = new THREE.Color().fromArray(value);\r\n\r\n break;\r\n\r\n case 'map_kd':\r\n // Diffuse texture map\r\n\r\n if (params.map) break; // Keep the first encountered texture\r\n\r\n var texParams = this.getTextureParams(value, params);\r\n\r\n params.map = this.loadTexture(\r\n resolveURL(this.baseUrl, texParams.url)\r\n );\r\n params.map.repeat.copy(texParams.scale);\r\n params.map.offset.copy(texParams.offset);\r\n\r\n params.map.wrapS = this.wrap;\r\n params.map.wrapT = this.wrap;\r\n\r\n break;\r\n\r\n case 'map_ks':\r\n // Specular map\r\n\r\n if (params.specularMap) break; // Keep the first encountered texture\r\n\r\n params.specularMap = this.loadTexture(\r\n resolveURL(this.baseUrl, value)\r\n );\r\n params.specularMap.wrapS = this.wrap;\r\n params.specularMap.wrapT = this.wrap;\r\n\r\n break;\r\n\r\n case 'ns':\r\n // The specular exponent (defines the focus of the specular highlight)\r\n // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000.\r\n\r\n params.shininess = parseFloat(value);\r\n\r\n break;\r\n\r\n case 'd':\r\n if (value < 1) {\r\n params.opacity = value;\r\n params.transparent = true;\r\n }\r\n\r\n break;\r\n\r\n case 'Tr':\r\n if (value > 0) {\r\n params.opacity = 1 - value;\r\n params.transparent = true;\r\n }\r\n\r\n break;\r\n\r\n case 'map_bump':\r\n case 'bump':\r\n // Bump texture map\r\n\r\n if (params.bumpMap) break; // Keep the first encountered texture\r\n\r\n var texParams = this.getTextureParams(value, params);\r\n\r\n params.bumpMap = this.loadTexture(\r\n resolveURL(this.baseUrl, texParams.url)\r\n );\r\n params.bumpMap.repeat.copy(texParams.scale);\r\n params.bumpMap.offset.copy(texParams.offset);\r\n\r\n params.bumpMap.wrapS = this.wrap;\r\n params.bumpMap.wrapT = this.wrap;\r\n\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n this.materials[materialName] = new THREE.MeshPhongMaterial(params);\r\n return this.materials[materialName];\r\n },\r\n\r\n getTextureParams: function (value, matParams) {\r\n let texParams = {\r\n scale: new THREE.Vector2(1, 1),\r\n offset: new THREE.Vector2(0, 0)\r\n };\r\n\r\n let items = value.split(/\\s+/);\r\n let pos;\r\n\r\n pos = items.indexOf('-bm');\r\n if (pos >= 0) {\r\n matParams.bumpScale = parseFloat(items[pos + 1]);\r\n items.splice(pos, 2);\r\n }\r\n\r\n pos = items.indexOf('-s');\r\n if (pos >= 0) {\r\n texParams.scale.set(\r\n parseFloat(items[pos + 1]),\r\n parseFloat(items[pos + 2])\r\n );\r\n items.splice(pos, 4); // we expect 3 parameters here!\r\n }\r\n\r\n pos = items.indexOf('-o');\r\n if (pos >= 0) {\r\n texParams.offset.set(\r\n parseFloat(items[pos + 1]),\r\n parseFloat(items[pos + 2])\r\n );\r\n items.splice(pos, 4); // we expect 3 parameters here!\r\n }\r\n\r\n texParams.url = items.join(' ').trim();\r\n return texParams;\r\n },\r\n\r\n loadTexture: function (url, mapping, onLoad, onProgress, onError) {\r\n let texture;\r\n let loader = THREE.Loader.Handlers.get(url);\r\n let manager =\r\n this.manager !== undefined ? this.manager : THREE.DefaultLoadingManager;\r\n\r\n if (loader === null) {\r\n loader = new THREE.TextureLoader(manager);\r\n }\r\n\r\n if (loader.setCrossOrigin) loader.setCrossOrigin(this.crossOrigin);\r\n texture = loader.load(url, onLoad, onProgress, onError);\r\n\r\n if (mapping !== undefined) texture.mapping = mapping;\r\n\r\n return texture;\r\n }\r\n};\r\n\r\nmodule.exports = MTLLoader;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,463 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author mrdoob / http://mrdoob.com/
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
var THREE = window.THREE || require('three');
|
|
6
|
-
var OBJLoader;
|
|
7
|
-
OBJLoader = function OBJLoader(manager) {
|
|
8
|
-
this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;
|
|
9
|
-
this.materials = null;
|
|
10
|
-
this.regexp = {
|
|
11
|
-
// v float float float
|
|
12
|
-
vertex_pattern: /^v\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,
|
|
13
|
-
// vn float float float
|
|
14
|
-
normal_pattern: /^vn\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,
|
|
15
|
-
// vt float float
|
|
16
|
-
uv_pattern: /^vt\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,
|
|
17
|
-
// f vertex vertex vertex
|
|
18
|
-
face_vertex: /^f\s+(-?\d+)\s+(-?\d+)\s+(-?\d+)(?:\s+(-?\d+))?/,
|
|
19
|
-
// f vertex/uv vertex/uv vertex/uv
|
|
20
|
-
face_vertex_uv: /^f\s+(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)(?:\s+(-?\d+)\/(-?\d+))?/,
|
|
21
|
-
// f vertex/uv/normal vertex/uv/normal vertex/uv/normal
|
|
22
|
-
face_vertex_uv_normal: /^f\s+(-?\d+)\/(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\/(-?\d+)(?:\s+(-?\d+)\/(-?\d+)\/(-?\d+))?/,
|
|
23
|
-
// f vertex//normal vertex//normal vertex//normal
|
|
24
|
-
face_vertex_normal: /^f\s+(-?\d+)\/\/(-?\d+)\s+(-?\d+)\/\/(-?\d+)\s+(-?\d+)\/\/(-?\d+)(?:\s+(-?\d+)\/\/(-?\d+))?/,
|
|
25
|
-
// o object_name | g group_name
|
|
26
|
-
object_pattern: /^[og]\s*(.+)?/,
|
|
27
|
-
// s boolean
|
|
28
|
-
smoothing_pattern: /^s\s+(\d+|on|off)/,
|
|
29
|
-
// mtllib file_reference
|
|
30
|
-
material_library_pattern: /^mtllib /,
|
|
31
|
-
// usemtl material_name
|
|
32
|
-
material_use_pattern: /^usemtl /
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
OBJLoader.prototype = {
|
|
36
|
-
constructor: OBJLoader,
|
|
37
|
-
load: function load(url, onLoad, onProgress, onError) {
|
|
38
|
-
var scope = this;
|
|
39
|
-
var loader = new THREE.XHRLoader(scope.manager);
|
|
40
|
-
loader.setPath(this.path);
|
|
41
|
-
loader.load(url, function (text) {
|
|
42
|
-
onLoad(scope.parse(text));
|
|
43
|
-
}, onProgress, onError);
|
|
44
|
-
},
|
|
45
|
-
setPath: function setPath(value) {
|
|
46
|
-
this.path = value;
|
|
47
|
-
},
|
|
48
|
-
setMaterials: function setMaterials(materials) {
|
|
49
|
-
this.materials = materials;
|
|
50
|
-
},
|
|
51
|
-
_createParserState: function _createParserState() {
|
|
52
|
-
var state = {
|
|
53
|
-
objects: [],
|
|
54
|
-
object: {},
|
|
55
|
-
vertices: [],
|
|
56
|
-
normals: [],
|
|
57
|
-
uvs: [],
|
|
58
|
-
materialLibraries: [],
|
|
59
|
-
startObject: function startObject(name, fromDeclaration) {
|
|
60
|
-
// If the current object (initial from reset) is not from a g/o declaration in the parsed
|
|
61
|
-
// file. We need to use it for the first parsed g/o to keep things in sync.
|
|
62
|
-
if (this.object && this.object.fromDeclaration === false) {
|
|
63
|
-
this.object.name = name;
|
|
64
|
-
this.object.fromDeclaration = fromDeclaration !== false;
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
if (this.object && typeof this.object._finalize === 'function') {
|
|
68
|
-
this.object._finalize();
|
|
69
|
-
}
|
|
70
|
-
var previousMaterial = this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined;
|
|
71
|
-
this.object = {
|
|
72
|
-
name: name || '',
|
|
73
|
-
fromDeclaration: fromDeclaration !== false,
|
|
74
|
-
geometry: {
|
|
75
|
-
vertices: [],
|
|
76
|
-
normals: [],
|
|
77
|
-
uvs: []
|
|
78
|
-
},
|
|
79
|
-
materials: [],
|
|
80
|
-
smooth: true,
|
|
81
|
-
startMaterial: function startMaterial(name, libraries) {
|
|
82
|
-
var previous = this._finalize(false);
|
|
83
|
-
|
|
84
|
-
// New usemtl declaration overwrites an inherited material, except if faces were declared
|
|
85
|
-
// after the material, then it must be preserved for proper MultiMaterial continuation.
|
|
86
|
-
if (previous && (previous.inherited || previous.groupCount <= 0)) {
|
|
87
|
-
this.materials.splice(previous.index, 1);
|
|
88
|
-
}
|
|
89
|
-
var material = {
|
|
90
|
-
index: this.materials.length,
|
|
91
|
-
name: name || '',
|
|
92
|
-
mtllib: Array.isArray(libraries) && libraries.length > 0 ? libraries[libraries.length - 1] : '',
|
|
93
|
-
smooth: previous !== undefined ? previous.smooth : this.smooth,
|
|
94
|
-
groupStart: previous !== undefined ? previous.groupEnd : 0,
|
|
95
|
-
groupEnd: -1,
|
|
96
|
-
groupCount: -1,
|
|
97
|
-
inherited: false,
|
|
98
|
-
clone: function clone(index) {
|
|
99
|
-
return {
|
|
100
|
-
index: typeof index === 'number' ? index : this.index,
|
|
101
|
-
name: this.name,
|
|
102
|
-
mtllib: this.mtllib,
|
|
103
|
-
smooth: this.smooth,
|
|
104
|
-
groupStart: this.groupEnd,
|
|
105
|
-
groupEnd: -1,
|
|
106
|
-
groupCount: -1,
|
|
107
|
-
inherited: false
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
this.materials.push(material);
|
|
112
|
-
return material;
|
|
113
|
-
},
|
|
114
|
-
currentMaterial: function currentMaterial() {
|
|
115
|
-
if (this.materials.length > 0) {
|
|
116
|
-
return this.materials[this.materials.length - 1];
|
|
117
|
-
}
|
|
118
|
-
return undefined;
|
|
119
|
-
},
|
|
120
|
-
_finalize: function _finalize(end) {
|
|
121
|
-
var lastMultiMaterial = this.currentMaterial();
|
|
122
|
-
if (lastMultiMaterial && lastMultiMaterial.groupEnd === -1) {
|
|
123
|
-
lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3;
|
|
124
|
-
lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart;
|
|
125
|
-
lastMultiMaterial.inherited = false;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// Guarantee at least one empty material, this makes the creation later more straight forward.
|
|
129
|
-
if (end !== false && this.materials.length === 0) {
|
|
130
|
-
this.materials.push({
|
|
131
|
-
name: '',
|
|
132
|
-
smooth: this.smooth
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
return lastMultiMaterial;
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
// Inherit previous objects material.
|
|
140
|
-
// Spec tells us that a declared material must be set to all objects until a new material is declared.
|
|
141
|
-
// If a usemtl declaration is encountered while this new object is being parsed, it will
|
|
142
|
-
// overwrite the inherited material. Exception being that there was already face declarations
|
|
143
|
-
// to the inherited material, then it will be preserved for proper MultiMaterial continuation.
|
|
144
|
-
|
|
145
|
-
if (previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function') {
|
|
146
|
-
var declared = previousMaterial.clone(0);
|
|
147
|
-
declared.inherited = true;
|
|
148
|
-
this.object.materials.push(declared);
|
|
149
|
-
}
|
|
150
|
-
this.objects.push(this.object);
|
|
151
|
-
},
|
|
152
|
-
finalize: function finalize() {
|
|
153
|
-
if (this.object && typeof this.object._finalize === 'function') {
|
|
154
|
-
this.object._finalize();
|
|
155
|
-
}
|
|
156
|
-
},
|
|
157
|
-
parseVertexIndex: function parseVertexIndex(value, len) {
|
|
158
|
-
var index = parseInt(value, 10);
|
|
159
|
-
return (index >= 0 ? index - 1 : index + len / 3) * 3;
|
|
160
|
-
},
|
|
161
|
-
parseNormalIndex: function parseNormalIndex(value, len) {
|
|
162
|
-
var index = parseInt(value, 10);
|
|
163
|
-
return (index >= 0 ? index - 1 : index + len / 3) * 3;
|
|
164
|
-
},
|
|
165
|
-
parseUVIndex: function parseUVIndex(value, len) {
|
|
166
|
-
var index = parseInt(value, 10);
|
|
167
|
-
return (index >= 0 ? index - 1 : index + len / 2) * 2;
|
|
168
|
-
},
|
|
169
|
-
addVertex: function addVertex(a, b, c) {
|
|
170
|
-
var src = this.vertices;
|
|
171
|
-
var dst = this.object.geometry.vertices;
|
|
172
|
-
dst.push(src[a + 0]);
|
|
173
|
-
dst.push(src[a + 1]);
|
|
174
|
-
dst.push(src[a + 2]);
|
|
175
|
-
dst.push(src[b + 0]);
|
|
176
|
-
dst.push(src[b + 1]);
|
|
177
|
-
dst.push(src[b + 2]);
|
|
178
|
-
dst.push(src[c + 0]);
|
|
179
|
-
dst.push(src[c + 1]);
|
|
180
|
-
dst.push(src[c + 2]);
|
|
181
|
-
},
|
|
182
|
-
addVertexLine: function addVertexLine(a) {
|
|
183
|
-
var src = this.vertices;
|
|
184
|
-
var dst = this.object.geometry.vertices;
|
|
185
|
-
dst.push(src[a + 0]);
|
|
186
|
-
dst.push(src[a + 1]);
|
|
187
|
-
dst.push(src[a + 2]);
|
|
188
|
-
},
|
|
189
|
-
addNormal: function addNormal(a, b, c) {
|
|
190
|
-
var src = this.normals;
|
|
191
|
-
var dst = this.object.geometry.normals;
|
|
192
|
-
dst.push(src[a + 0]);
|
|
193
|
-
dst.push(src[a + 1]);
|
|
194
|
-
dst.push(src[a + 2]);
|
|
195
|
-
dst.push(src[b + 0]);
|
|
196
|
-
dst.push(src[b + 1]);
|
|
197
|
-
dst.push(src[b + 2]);
|
|
198
|
-
dst.push(src[c + 0]);
|
|
199
|
-
dst.push(src[c + 1]);
|
|
200
|
-
dst.push(src[c + 2]);
|
|
201
|
-
},
|
|
202
|
-
addUV: function addUV(a, b, c) {
|
|
203
|
-
var src = this.uvs;
|
|
204
|
-
var dst = this.object.geometry.uvs;
|
|
205
|
-
dst.push(src[a + 0]);
|
|
206
|
-
dst.push(src[a + 1]);
|
|
207
|
-
dst.push(src[b + 0]);
|
|
208
|
-
dst.push(src[b + 1]);
|
|
209
|
-
dst.push(src[c + 0]);
|
|
210
|
-
dst.push(src[c + 1]);
|
|
211
|
-
},
|
|
212
|
-
addUVLine: function addUVLine(a) {
|
|
213
|
-
var src = this.uvs;
|
|
214
|
-
var dst = this.object.geometry.uvs;
|
|
215
|
-
dst.push(src[a + 0]);
|
|
216
|
-
dst.push(src[a + 1]);
|
|
217
|
-
},
|
|
218
|
-
addFace: function addFace(a, b, c, d, ua, ub, uc, ud, na, nb, nc, nd) {
|
|
219
|
-
var vLen = this.vertices.length;
|
|
220
|
-
var ia = this.parseVertexIndex(a, vLen);
|
|
221
|
-
var ib = this.parseVertexIndex(b, vLen);
|
|
222
|
-
var ic = this.parseVertexIndex(c, vLen);
|
|
223
|
-
var id;
|
|
224
|
-
if (d === undefined) {
|
|
225
|
-
this.addVertex(ia, ib, ic);
|
|
226
|
-
} else {
|
|
227
|
-
id = this.parseVertexIndex(d, vLen);
|
|
228
|
-
this.addVertex(ia, ib, id);
|
|
229
|
-
this.addVertex(ib, ic, id);
|
|
230
|
-
}
|
|
231
|
-
if (ua !== undefined) {
|
|
232
|
-
var uvLen = this.uvs.length;
|
|
233
|
-
ia = this.parseUVIndex(ua, uvLen);
|
|
234
|
-
ib = this.parseUVIndex(ub, uvLen);
|
|
235
|
-
ic = this.parseUVIndex(uc, uvLen);
|
|
236
|
-
if (d === undefined) {
|
|
237
|
-
this.addUV(ia, ib, ic);
|
|
238
|
-
} else {
|
|
239
|
-
id = this.parseUVIndex(ud, uvLen);
|
|
240
|
-
this.addUV(ia, ib, id);
|
|
241
|
-
this.addUV(ib, ic, id);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
if (na !== undefined) {
|
|
245
|
-
// Normals are many times the same. If so, skip function call and parseInt.
|
|
246
|
-
var nLen = this.normals.length;
|
|
247
|
-
ia = this.parseNormalIndex(na, nLen);
|
|
248
|
-
ib = na === nb ? ia : this.parseNormalIndex(nb, nLen);
|
|
249
|
-
ic = na === nc ? ia : this.parseNormalIndex(nc, nLen);
|
|
250
|
-
if (d === undefined) {
|
|
251
|
-
this.addNormal(ia, ib, ic);
|
|
252
|
-
} else {
|
|
253
|
-
id = this.parseNormalIndex(nd, nLen);
|
|
254
|
-
this.addNormal(ia, ib, id);
|
|
255
|
-
this.addNormal(ib, ic, id);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
},
|
|
259
|
-
addLineGeometry: function addLineGeometry(vertices, uvs) {
|
|
260
|
-
this.object.geometry.type = 'Line';
|
|
261
|
-
var vLen = this.vertices.length;
|
|
262
|
-
var uvLen = this.uvs.length;
|
|
263
|
-
for (var vi = 0, l = vertices.length; vi < l; vi++) {
|
|
264
|
-
this.addVertexLine(this.parseVertexIndex(vertices[vi], vLen));
|
|
265
|
-
}
|
|
266
|
-
for (var uvi = 0, _l = uvs.length; uvi < _l; uvi++) {
|
|
267
|
-
this.addUVLine(this.parseUVIndex(uvs[uvi], uvLen));
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
};
|
|
271
|
-
state.startObject('', false);
|
|
272
|
-
return state;
|
|
273
|
-
},
|
|
274
|
-
parse: function parse(text) {
|
|
275
|
-
var state = this._createParserState();
|
|
276
|
-
if (text.indexOf('\r\n') !== -1) {
|
|
277
|
-
// This is faster than String.split with regex that splits on both
|
|
278
|
-
text = text.replace('\r\n', '\n');
|
|
279
|
-
}
|
|
280
|
-
var lines = text.split('\n');
|
|
281
|
-
var line = '',
|
|
282
|
-
lineFirstChar = '',
|
|
283
|
-
lineSecondChar = '';
|
|
284
|
-
var lineLength = 0;
|
|
285
|
-
var result = [];
|
|
286
|
-
|
|
287
|
-
// Faster to just trim left side of the line. Use if available.
|
|
288
|
-
var trimLeft = typeof ''.trimLeft === 'function';
|
|
289
|
-
for (var i = 0, l = lines.length; i < l; i++) {
|
|
290
|
-
line = lines[i];
|
|
291
|
-
line = trimLeft ? line.trimLeft() : line.trim();
|
|
292
|
-
lineLength = line.length;
|
|
293
|
-
if (lineLength === 0) continue;
|
|
294
|
-
lineFirstChar = line.charAt(0);
|
|
295
|
-
|
|
296
|
-
// @todo invoke passed in handler if any
|
|
297
|
-
if (lineFirstChar === '#') continue;
|
|
298
|
-
if (lineFirstChar === 'v') {
|
|
299
|
-
lineSecondChar = line.charAt(1);
|
|
300
|
-
if (lineSecondChar === ' ' && (result = this.regexp.vertex_pattern.exec(line)) !== null) {
|
|
301
|
-
// 0 1 2 3
|
|
302
|
-
// ["v 1.0 2.0 3.0", "1.0", "2.0", "3.0"]
|
|
303
|
-
|
|
304
|
-
state.vertices.push(parseFloat(result[1]), parseFloat(result[2]), parseFloat(result[3]));
|
|
305
|
-
} else if (lineSecondChar === 'n' && (result = this.regexp.normal_pattern.exec(line)) !== null) {
|
|
306
|
-
// 0 1 2 3
|
|
307
|
-
// ["vn 1.0 2.0 3.0", "1.0", "2.0", "3.0"]
|
|
308
|
-
|
|
309
|
-
state.normals.push(parseFloat(result[1]), parseFloat(result[2]), parseFloat(result[3]));
|
|
310
|
-
} else if (lineSecondChar === 't' && (result = this.regexp.uv_pattern.exec(line)) !== null) {
|
|
311
|
-
// 0 1 2
|
|
312
|
-
// ["vt 0.1 0.2", "0.1", "0.2"]
|
|
313
|
-
|
|
314
|
-
state.uvs.push(parseFloat(result[1]), parseFloat(result[2]));
|
|
315
|
-
} else {
|
|
316
|
-
throw new Error("Unexpected vertex/normal/uv line: '" + line + "'");
|
|
317
|
-
}
|
|
318
|
-
} else if (lineFirstChar === 'f') {
|
|
319
|
-
if ((result = this.regexp.face_vertex_uv_normal.exec(line)) !== null) {
|
|
320
|
-
// f vertex/uv/normal vertex/uv/normal vertex/uv/normal
|
|
321
|
-
// 0 1 2 3 4 5 6 7 8 9 10 11 12
|
|
322
|
-
// ["f 1/1/1 2/2/2 3/3/3", "1", "1", "1", "2", "2", "2", "3", "3", "3", undefined, undefined, undefined]
|
|
323
|
-
|
|
324
|
-
state.addFace(result[1], result[4], result[7], result[10], result[2], result[5], result[8], result[11], result[3], result[6], result[9], result[12]);
|
|
325
|
-
} else if ((result = this.regexp.face_vertex_uv.exec(line)) !== null) {
|
|
326
|
-
// f vertex/uv vertex/uv vertex/uv
|
|
327
|
-
// 0 1 2 3 4 5 6 7 8
|
|
328
|
-
// ["f 1/1 2/2 3/3", "1", "1", "2", "2", "3", "3", undefined, undefined]
|
|
329
|
-
|
|
330
|
-
state.addFace(result[1], result[3], result[5], result[7], result[2], result[4], result[6], result[8]);
|
|
331
|
-
} else if ((result = this.regexp.face_vertex_normal.exec(line)) !== null) {
|
|
332
|
-
// f vertex//normal vertex//normal vertex//normal
|
|
333
|
-
// 0 1 2 3 4 5 6 7 8
|
|
334
|
-
// ["f 1//1 2//2 3//3", "1", "1", "2", "2", "3", "3", undefined, undefined]
|
|
335
|
-
|
|
336
|
-
state.addFace(result[1], result[3], result[5], result[7], undefined, undefined, undefined, undefined, result[2], result[4], result[6], result[8]);
|
|
337
|
-
} else if ((result = this.regexp.face_vertex.exec(line)) !== null) {
|
|
338
|
-
// f vertex vertex vertex
|
|
339
|
-
// 0 1 2 3 4
|
|
340
|
-
// ["f 1 2 3", "1", "2", "3", undefined]
|
|
341
|
-
|
|
342
|
-
state.addFace(result[1], result[2], result[3], result[4]);
|
|
343
|
-
} else {
|
|
344
|
-
throw new Error("Unexpected face line: '" + line + "'");
|
|
345
|
-
}
|
|
346
|
-
} else if (lineFirstChar === 'l') {
|
|
347
|
-
var lineParts = line.substring(1).trim().split(' ');
|
|
348
|
-
var lineVertices = [],
|
|
349
|
-
lineUVs = [];
|
|
350
|
-
if (line.indexOf('/') === -1) {
|
|
351
|
-
lineVertices = lineParts;
|
|
352
|
-
} else {
|
|
353
|
-
for (var li = 0, llen = lineParts.length; li < llen; li++) {
|
|
354
|
-
var parts = lineParts[li].split('/');
|
|
355
|
-
if (parts[0] !== '') lineVertices.push(parts[0]);
|
|
356
|
-
if (parts[1] !== '') lineUVs.push(parts[1]);
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
state.addLineGeometry(lineVertices, lineUVs);
|
|
360
|
-
} else if ((result = this.regexp.object_pattern.exec(line)) !== null) {
|
|
361
|
-
// o object_name
|
|
362
|
-
// or
|
|
363
|
-
// g group_name
|
|
364
|
-
|
|
365
|
-
var name = result[0].substr(1).trim();
|
|
366
|
-
state.startObject(name);
|
|
367
|
-
} else if (this.regexp.material_use_pattern.test(line)) {
|
|
368
|
-
// material
|
|
369
|
-
|
|
370
|
-
state.object.startMaterial(line.substring(7).trim(), state.materialLibraries);
|
|
371
|
-
} else if (this.regexp.material_library_pattern.test(line)) {
|
|
372
|
-
// mtl file
|
|
373
|
-
|
|
374
|
-
state.materialLibraries.push(line.substring(7).trim());
|
|
375
|
-
} else if ((result = this.regexp.smoothing_pattern.exec(line)) !== null) {
|
|
376
|
-
// smooth shading
|
|
377
|
-
|
|
378
|
-
// @todo Handle files that have varying smooth values for a set of faces inside one geometry,
|
|
379
|
-
// but does not define a usemtl for each face set.
|
|
380
|
-
// This should be detected and a dummy material created (later MultiMaterial and geometry groups).
|
|
381
|
-
// This requires some care to not create extra material on each smooth value for "normal" obj files.
|
|
382
|
-
// where explicit usemtl defines geometry groups.
|
|
383
|
-
// Example asset: examples/models/obj/cerberus/Cerberus.obj
|
|
384
|
-
|
|
385
|
-
var value = result[1].trim().toLowerCase();
|
|
386
|
-
state.object.smooth = value === '1' || value === 'on';
|
|
387
|
-
var material = state.object.currentMaterial();
|
|
388
|
-
if (material) {
|
|
389
|
-
material.smooth = state.object.smooth;
|
|
390
|
-
}
|
|
391
|
-
} else {
|
|
392
|
-
// Handle null terminated files without exception
|
|
393
|
-
if (line === '\0') continue;
|
|
394
|
-
throw new Error("Unexpected line: '" + line + "'");
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
state.finalize();
|
|
398
|
-
var container = new THREE.Group();
|
|
399
|
-
container.materialLibraries = [].concat(state.materialLibraries);
|
|
400
|
-
for (var _i = 0, _l2 = state.objects.length; _i < _l2; _i++) {
|
|
401
|
-
var object = state.objects[_i];
|
|
402
|
-
var geometry = object.geometry;
|
|
403
|
-
var materials = object.materials;
|
|
404
|
-
var isLine = geometry.type === 'Line';
|
|
405
|
-
|
|
406
|
-
// Skip o/g line declarations that did not follow with any faces
|
|
407
|
-
if (geometry.vertices.length === 0) continue;
|
|
408
|
-
var buffergeometry = new THREE.BufferGeometry();
|
|
409
|
-
buffergeometry.addAttribute('position', new THREE.BufferAttribute(new Float32Array(geometry.vertices), 3));
|
|
410
|
-
if (geometry.normals.length > 0) {
|
|
411
|
-
buffergeometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(geometry.normals), 3));
|
|
412
|
-
} else {
|
|
413
|
-
buffergeometry.computeVertexNormals();
|
|
414
|
-
}
|
|
415
|
-
if (geometry.uvs.length > 0) {
|
|
416
|
-
buffergeometry.addAttribute('uv', new THREE.BufferAttribute(new Float32Array(geometry.uvs), 2));
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
// Create materials
|
|
420
|
-
|
|
421
|
-
var createdMaterials = [];
|
|
422
|
-
for (var mi = 0, miLen = materials.length; mi < miLen; mi++) {
|
|
423
|
-
var sourceMaterial = materials[mi];
|
|
424
|
-
var _material = undefined;
|
|
425
|
-
if (this.materials !== null) {
|
|
426
|
-
_material = this.materials.create(sourceMaterial.name);
|
|
427
|
-
|
|
428
|
-
// mtl etc. loaders probably can't create line materials correctly, copy properties to a line material.
|
|
429
|
-
if (isLine && _material && !(_material instanceof THREE.LineBasicMaterial)) {
|
|
430
|
-
var materialLine = new THREE.LineBasicMaterial();
|
|
431
|
-
materialLine.copy(_material);
|
|
432
|
-
_material = materialLine;
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
if (!_material) {
|
|
436
|
-
_material = !isLine ? new THREE.MeshPhongMaterial() : new THREE.LineBasicMaterial();
|
|
437
|
-
_material.name = sourceMaterial.name;
|
|
438
|
-
}
|
|
439
|
-
if (!sourceMaterial.smooth) _material.flatShading = true;
|
|
440
|
-
createdMaterials.push(_material);
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
// Create mesh
|
|
444
|
-
|
|
445
|
-
var mesh = void 0;
|
|
446
|
-
if (createdMaterials.length > 1) {
|
|
447
|
-
for (var _mi = 0, _miLen = materials.length; _mi < _miLen; _mi++) {
|
|
448
|
-
var _sourceMaterial = materials[_mi];
|
|
449
|
-
buffergeometry.addGroup(_sourceMaterial.groupStart, _sourceMaterial.groupCount, _mi);
|
|
450
|
-
}
|
|
451
|
-
var multiMaterial = new THREE.MultiMaterial(createdMaterials);
|
|
452
|
-
mesh = !isLine ? new THREE.Mesh(buffergeometry, multiMaterial) : new THREE.Line(buffergeometry, multiMaterial);
|
|
453
|
-
} else {
|
|
454
|
-
mesh = !isLine ? new THREE.Mesh(buffergeometry, createdMaterials[0]) : new THREE.Line(buffergeometry, createdMaterials[0]);
|
|
455
|
-
}
|
|
456
|
-
mesh.name = object.name;
|
|
457
|
-
container.add(mesh);
|
|
458
|
-
}
|
|
459
|
-
return container;
|
|
460
|
-
}
|
|
461
|
-
};
|
|
462
|
-
module.exports = OBJLoader;
|
|
463
|
-
//# sourceMappingURL=obj-loader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"obj-loader.js","names":["THREE","window","require","OBJLoader","manager","undefined","DefaultLoadingManager","materials","regexp","vertex_pattern","normal_pattern","uv_pattern","face_vertex","face_vertex_uv","face_vertex_uv_normal","face_vertex_normal","object_pattern","smoothing_pattern","material_library_pattern","material_use_pattern","prototype","constructor","load","url","onLoad","onProgress","onError","scope","loader","XHRLoader","setPath","path","text","parse","value","setMaterials","_createParserState","state","objects","object","vertices","normals","uvs","materialLibraries","startObject","name","fromDeclaration","_finalize","previousMaterial","currentMaterial","geometry","smooth","startMaterial","libraries","previous","inherited","groupCount","splice","index","material","length","mtllib","Array","isArray","groupStart","groupEnd","clone","push","end","lastMultiMaterial","declared","finalize","parseVertexIndex","len","parseInt","parseNormalIndex","parseUVIndex","addVertex","a","b","c","src","dst","addVertexLine","addNormal","addUV","addUVLine","addFace","d","ua","ub","uc","ud","na","nb","nc","nd","vLen","ia","ib","ic","id","uvLen","nLen","addLineGeometry","type","vi","l","uvi","indexOf","replace","lines","split","line","lineFirstChar","lineSecondChar","lineLength","result","trimLeft","i","trim","charAt","exec","parseFloat","Error","lineParts","substring","lineVertices","lineUVs","li","llen","parts","substr","test","toLowerCase","container","Group","concat","isLine","buffergeometry","BufferGeometry","addAttribute","BufferAttribute","Float32Array","computeVertexNormals","createdMaterials","mi","miLen","sourceMaterial","create","LineBasicMaterial","materialLine","copy","MeshPhongMaterial","flatShading","mesh","addGroup","multiMaterial","MultiMaterial","Mesh","Line","add","module","exports"],"sources":["../../../../src/components/viewer3d/libs/obj-loader.js"],"sourcesContent":["/**\r\n * @author mrdoob / http://mrdoob.com/\r\n */\r\n\r\nlet THREE = window.THREE || require('three');\r\nlet OBJLoader;\r\n\r\nOBJLoader = function (manager) {\r\n this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;\r\n\r\n this.materials = null;\r\n\r\n this.regexp = {\r\n // v float float float\r\n vertex_pattern:\r\n /^v\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)/,\r\n // vn float float float\r\n normal_pattern:\r\n /^vn\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)/,\r\n // vt float float\r\n uv_pattern: /^vt\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)/,\r\n // f vertex vertex vertex\r\n face_vertex: /^f\\s+(-?\\d+)\\s+(-?\\d+)\\s+(-?\\d+)(?:\\s+(-?\\d+))?/,\r\n // f vertex/uv vertex/uv vertex/uv\r\n face_vertex_uv:\r\n /^f\\s+(-?\\d+)\\/(-?\\d+)\\s+(-?\\d+)\\/(-?\\d+)\\s+(-?\\d+)\\/(-?\\d+)(?:\\s+(-?\\d+)\\/(-?\\d+))?/,\r\n // f vertex/uv/normal vertex/uv/normal vertex/uv/normal\r\n face_vertex_uv_normal:\r\n /^f\\s+(-?\\d+)\\/(-?\\d+)\\/(-?\\d+)\\s+(-?\\d+)\\/(-?\\d+)\\/(-?\\d+)\\s+(-?\\d+)\\/(-?\\d+)\\/(-?\\d+)(?:\\s+(-?\\d+)\\/(-?\\d+)\\/(-?\\d+))?/,\r\n // f vertex//normal vertex//normal vertex//normal\r\n face_vertex_normal:\r\n /^f\\s+(-?\\d+)\\/\\/(-?\\d+)\\s+(-?\\d+)\\/\\/(-?\\d+)\\s+(-?\\d+)\\/\\/(-?\\d+)(?:\\s+(-?\\d+)\\/\\/(-?\\d+))?/,\r\n // o object_name | g group_name\r\n object_pattern: /^[og]\\s*(.+)?/,\r\n // s boolean\r\n smoothing_pattern: /^s\\s+(\\d+|on|off)/,\r\n // mtllib file_reference\r\n material_library_pattern: /^mtllib /,\r\n // usemtl material_name\r\n material_use_pattern: /^usemtl /\r\n };\r\n};\r\n\r\nOBJLoader.prototype = {\r\n constructor: OBJLoader,\r\n\r\n load: function (url, onLoad, onProgress, onError) {\r\n let scope = this;\r\n\r\n let loader = new THREE.XHRLoader(scope.manager);\r\n loader.setPath(this.path);\r\n loader.load(\r\n url,\r\n function (text) {\r\n onLoad(scope.parse(text));\r\n },\r\n onProgress,\r\n onError\r\n );\r\n },\r\n\r\n setPath: function (value) {\r\n this.path = value;\r\n },\r\n\r\n setMaterials: function (materials) {\r\n this.materials = materials;\r\n },\r\n\r\n _createParserState: function () {\r\n let state = {\r\n objects: [],\r\n object: {},\r\n\r\n vertices: [],\r\n normals: [],\r\n uvs: [],\r\n\r\n materialLibraries: [],\r\n\r\n startObject: function (name, fromDeclaration) {\r\n // If the current object (initial from reset) is not from a g/o declaration in the parsed\r\n // file. We need to use it for the first parsed g/o to keep things in sync.\r\n if (this.object && this.object.fromDeclaration === false) {\r\n this.object.name = name;\r\n this.object.fromDeclaration = fromDeclaration !== false;\r\n return;\r\n }\r\n\r\n if (this.object && typeof this.object._finalize === 'function') {\r\n this.object._finalize();\r\n }\r\n\r\n let previousMaterial =\r\n this.object && typeof this.object.currentMaterial === 'function'\r\n ? this.object.currentMaterial()\r\n : undefined;\r\n\r\n this.object = {\r\n name: name || '',\r\n fromDeclaration: fromDeclaration !== false,\r\n\r\n geometry: {\r\n vertices: [],\r\n normals: [],\r\n uvs: []\r\n },\r\n materials: [],\r\n smooth: true,\r\n\r\n startMaterial: function (name, libraries) {\r\n let previous = this._finalize(false);\r\n\r\n // New usemtl declaration overwrites an inherited material, except if faces were declared\r\n // after the material, then it must be preserved for proper MultiMaterial continuation.\r\n if (previous && (previous.inherited || previous.groupCount <= 0)) {\r\n this.materials.splice(previous.index, 1);\r\n }\r\n\r\n let material = {\r\n index: this.materials.length,\r\n name: name || '',\r\n mtllib:\r\n Array.isArray(libraries) && libraries.length > 0\r\n ? libraries[libraries.length - 1]\r\n : '',\r\n smooth: previous !== undefined ? previous.smooth : this.smooth,\r\n groupStart: previous !== undefined ? previous.groupEnd : 0,\r\n groupEnd: -1,\r\n groupCount: -1,\r\n inherited: false,\r\n\r\n clone: function (index) {\r\n return {\r\n index: typeof index === 'number' ? index : this.index,\r\n name: this.name,\r\n mtllib: this.mtllib,\r\n smooth: this.smooth,\r\n groupStart: this.groupEnd,\r\n groupEnd: -1,\r\n groupCount: -1,\r\n inherited: false\r\n };\r\n }\r\n };\r\n\r\n this.materials.push(material);\r\n\r\n return material;\r\n },\r\n\r\n currentMaterial: function () {\r\n if (this.materials.length > 0) {\r\n return this.materials[this.materials.length - 1];\r\n }\r\n\r\n return undefined;\r\n },\r\n\r\n _finalize: function (end) {\r\n let lastMultiMaterial = this.currentMaterial();\r\n if (lastMultiMaterial && lastMultiMaterial.groupEnd === -1) {\r\n lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3;\r\n lastMultiMaterial.groupCount =\r\n lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart;\r\n lastMultiMaterial.inherited = false;\r\n }\r\n\r\n // Guarantee at least one empty material, this makes the creation later more straight forward.\r\n if (end !== false && this.materials.length === 0) {\r\n this.materials.push({\r\n name: '',\r\n smooth: this.smooth\r\n });\r\n }\r\n\r\n return lastMultiMaterial;\r\n }\r\n };\r\n\r\n // Inherit previous objects material.\r\n // Spec tells us that a declared material must be set to all objects until a new material is declared.\r\n // If a usemtl declaration is encountered while this new object is being parsed, it will\r\n // overwrite the inherited material. Exception being that there was already face declarations\r\n // to the inherited material, then it will be preserved for proper MultiMaterial continuation.\r\n\r\n if (\r\n previousMaterial &&\r\n previousMaterial.name &&\r\n typeof previousMaterial.clone === 'function'\r\n ) {\r\n let declared = previousMaterial.clone(0);\r\n declared.inherited = true;\r\n this.object.materials.push(declared);\r\n }\r\n\r\n this.objects.push(this.object);\r\n },\r\n\r\n finalize: function () {\r\n if (this.object && typeof this.object._finalize === 'function') {\r\n this.object._finalize();\r\n }\r\n },\r\n\r\n parseVertexIndex: function (value, len) {\r\n let index = parseInt(value, 10);\r\n return (index >= 0 ? index - 1 : index + len / 3) * 3;\r\n },\r\n\r\n parseNormalIndex: function (value, len) {\r\n let index = parseInt(value, 10);\r\n return (index >= 0 ? index - 1 : index + len / 3) * 3;\r\n },\r\n\r\n parseUVIndex: function (value, len) {\r\n let index = parseInt(value, 10);\r\n return (index >= 0 ? index - 1 : index + len / 2) * 2;\r\n },\r\n\r\n addVertex: function (a, b, c) {\r\n let src = this.vertices;\r\n let dst = this.object.geometry.vertices;\r\n\r\n dst.push(src[a + 0]);\r\n dst.push(src[a + 1]);\r\n dst.push(src[a + 2]);\r\n dst.push(src[b + 0]);\r\n dst.push(src[b + 1]);\r\n dst.push(src[b + 2]);\r\n dst.push(src[c + 0]);\r\n dst.push(src[c + 1]);\r\n dst.push(src[c + 2]);\r\n },\r\n\r\n addVertexLine: function (a) {\r\n let src = this.vertices;\r\n let dst = this.object.geometry.vertices;\r\n\r\n dst.push(src[a + 0]);\r\n dst.push(src[a + 1]);\r\n dst.push(src[a + 2]);\r\n },\r\n\r\n addNormal: function (a, b, c) {\r\n let src = this.normals;\r\n let dst = this.object.geometry.normals;\r\n\r\n dst.push(src[a + 0]);\r\n dst.push(src[a + 1]);\r\n dst.push(src[a + 2]);\r\n dst.push(src[b + 0]);\r\n dst.push(src[b + 1]);\r\n dst.push(src[b + 2]);\r\n dst.push(src[c + 0]);\r\n dst.push(src[c + 1]);\r\n dst.push(src[c + 2]);\r\n },\r\n\r\n addUV: function (a, b, c) {\r\n let src = this.uvs;\r\n let dst = this.object.geometry.uvs;\r\n\r\n dst.push(src[a + 0]);\r\n dst.push(src[a + 1]);\r\n dst.push(src[b + 0]);\r\n dst.push(src[b + 1]);\r\n dst.push(src[c + 0]);\r\n dst.push(src[c + 1]);\r\n },\r\n\r\n addUVLine: function (a) {\r\n let src = this.uvs;\r\n let dst = this.object.geometry.uvs;\r\n\r\n dst.push(src[a + 0]);\r\n dst.push(src[a + 1]);\r\n },\r\n\r\n addFace: function (a, b, c, d, ua, ub, uc, ud, na, nb, nc, nd) {\r\n let vLen = this.vertices.length;\r\n\r\n let ia = this.parseVertexIndex(a, vLen);\r\n let ib = this.parseVertexIndex(b, vLen);\r\n let ic = this.parseVertexIndex(c, vLen);\r\n let id;\r\n\r\n if (d === undefined) {\r\n this.addVertex(ia, ib, ic);\r\n } else {\r\n id = this.parseVertexIndex(d, vLen);\r\n\r\n this.addVertex(ia, ib, id);\r\n this.addVertex(ib, ic, id);\r\n }\r\n\r\n if (ua !== undefined) {\r\n let uvLen = this.uvs.length;\r\n\r\n ia = this.parseUVIndex(ua, uvLen);\r\n ib = this.parseUVIndex(ub, uvLen);\r\n ic = this.parseUVIndex(uc, uvLen);\r\n\r\n if (d === undefined) {\r\n this.addUV(ia, ib, ic);\r\n } else {\r\n id = this.parseUVIndex(ud, uvLen);\r\n\r\n this.addUV(ia, ib, id);\r\n this.addUV(ib, ic, id);\r\n }\r\n }\r\n\r\n if (na !== undefined) {\r\n // Normals are many times the same. If so, skip function call and parseInt.\r\n let nLen = this.normals.length;\r\n ia = this.parseNormalIndex(na, nLen);\r\n\r\n ib = na === nb ? ia : this.parseNormalIndex(nb, nLen);\r\n ic = na === nc ? ia : this.parseNormalIndex(nc, nLen);\r\n\r\n if (d === undefined) {\r\n this.addNormal(ia, ib, ic);\r\n } else {\r\n id = this.parseNormalIndex(nd, nLen);\r\n\r\n this.addNormal(ia, ib, id);\r\n this.addNormal(ib, ic, id);\r\n }\r\n }\r\n },\r\n\r\n addLineGeometry: function (vertices, uvs) {\r\n this.object.geometry.type = 'Line';\r\n\r\n let vLen = this.vertices.length;\r\n let uvLen = this.uvs.length;\r\n\r\n for (let vi = 0, l = vertices.length; vi < l; vi++) {\r\n this.addVertexLine(this.parseVertexIndex(vertices[vi], vLen));\r\n }\r\n\r\n for (let uvi = 0, l = uvs.length; uvi < l; uvi++) {\r\n this.addUVLine(this.parseUVIndex(uvs[uvi], uvLen));\r\n }\r\n }\r\n };\r\n\r\n state.startObject('', false);\r\n\r\n return state;\r\n },\r\n\r\n parse: function (text) {\r\n let state = this._createParserState();\r\n\r\n if (text.indexOf('\\r\\n') !== -1) {\r\n // This is faster than String.split with regex that splits on both\r\n text = text.replace('\\r\\n', '\\n');\r\n }\r\n\r\n let lines = text.split('\\n');\r\n let line = '',\r\n lineFirstChar = '',\r\n lineSecondChar = '';\r\n let lineLength = 0;\r\n let result = [];\r\n\r\n // Faster to just trim left side of the line. Use if available.\r\n let trimLeft = typeof ''.trimLeft === 'function';\r\n\r\n for (let i = 0, l = lines.length; i < l; i++) {\r\n line = lines[i];\r\n\r\n line = trimLeft ? line.trimLeft() : line.trim();\r\n\r\n lineLength = line.length;\r\n\r\n if (lineLength === 0) continue;\r\n\r\n lineFirstChar = line.charAt(0);\r\n\r\n // @todo invoke passed in handler if any\r\n if (lineFirstChar === '#') continue;\r\n\r\n if (lineFirstChar === 'v') {\r\n lineSecondChar = line.charAt(1);\r\n\r\n if (\r\n lineSecondChar === ' ' &&\r\n (result = this.regexp.vertex_pattern.exec(line)) !== null\r\n ) {\r\n // 0 1 2 3\r\n // [\"v 1.0 2.0 3.0\", \"1.0\", \"2.0\", \"3.0\"]\r\n\r\n state.vertices.push(\r\n parseFloat(result[1]),\r\n parseFloat(result[2]),\r\n parseFloat(result[3])\r\n );\r\n } else if (\r\n lineSecondChar === 'n' &&\r\n (result = this.regexp.normal_pattern.exec(line)) !== null\r\n ) {\r\n // 0 1 2 3\r\n // [\"vn 1.0 2.0 3.0\", \"1.0\", \"2.0\", \"3.0\"]\r\n\r\n state.normals.push(\r\n parseFloat(result[1]),\r\n parseFloat(result[2]),\r\n parseFloat(result[3])\r\n );\r\n } else if (\r\n lineSecondChar === 't' &&\r\n (result = this.regexp.uv_pattern.exec(line)) !== null\r\n ) {\r\n // 0 1 2\r\n // [\"vt 0.1 0.2\", \"0.1\", \"0.2\"]\r\n\r\n state.uvs.push(parseFloat(result[1]), parseFloat(result[2]));\r\n } else {\r\n throw new Error(\"Unexpected vertex/normal/uv line: '\" + line + \"'\");\r\n }\r\n } else if (lineFirstChar === 'f') {\r\n if ((result = this.regexp.face_vertex_uv_normal.exec(line)) !== null) {\r\n // f vertex/uv/normal vertex/uv/normal vertex/uv/normal\r\n // 0 1 2 3 4 5 6 7 8 9 10 11 12\r\n // [\"f 1/1/1 2/2/2 3/3/3\", \"1\", \"1\", \"1\", \"2\", \"2\", \"2\", \"3\", \"3\", \"3\", undefined, undefined, undefined]\r\n\r\n state.addFace(\r\n result[1],\r\n result[4],\r\n result[7],\r\n result[10],\r\n result[2],\r\n result[5],\r\n result[8],\r\n result[11],\r\n result[3],\r\n result[6],\r\n result[9],\r\n result[12]\r\n );\r\n } else if ((result = this.regexp.face_vertex_uv.exec(line)) !== null) {\r\n // f vertex/uv vertex/uv vertex/uv\r\n // 0 1 2 3 4 5 6 7 8\r\n // [\"f 1/1 2/2 3/3\", \"1\", \"1\", \"2\", \"2\", \"3\", \"3\", undefined, undefined]\r\n\r\n state.addFace(\r\n result[1],\r\n result[3],\r\n result[5],\r\n result[7],\r\n result[2],\r\n result[4],\r\n result[6],\r\n result[8]\r\n );\r\n } else if (\r\n (result = this.regexp.face_vertex_normal.exec(line)) !== null\r\n ) {\r\n // f vertex//normal vertex//normal vertex//normal\r\n // 0 1 2 3 4 5 6 7 8\r\n // [\"f 1//1 2//2 3//3\", \"1\", \"1\", \"2\", \"2\", \"3\", \"3\", undefined, undefined]\r\n\r\n state.addFace(\r\n result[1],\r\n result[3],\r\n result[5],\r\n result[7],\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n result[2],\r\n result[4],\r\n result[6],\r\n result[8]\r\n );\r\n } else if ((result = this.regexp.face_vertex.exec(line)) !== null) {\r\n // f vertex vertex vertex\r\n // 0 1 2 3 4\r\n // [\"f 1 2 3\", \"1\", \"2\", \"3\", undefined]\r\n\r\n state.addFace(result[1], result[2], result[3], result[4]);\r\n } else {\r\n throw new Error(\"Unexpected face line: '\" + line + \"'\");\r\n }\r\n } else if (lineFirstChar === 'l') {\r\n let lineParts = line.substring(1).trim().split(' ');\r\n let lineVertices = [],\r\n lineUVs = [];\r\n\r\n if (line.indexOf('/') === -1) {\r\n lineVertices = lineParts;\r\n } else {\r\n for (let li = 0, llen = lineParts.length; li < llen; li++) {\r\n let parts = lineParts[li].split('/');\r\n\r\n if (parts[0] !== '') lineVertices.push(parts[0]);\r\n if (parts[1] !== '') lineUVs.push(parts[1]);\r\n }\r\n }\r\n state.addLineGeometry(lineVertices, lineUVs);\r\n } else if ((result = this.regexp.object_pattern.exec(line)) !== null) {\r\n // o object_name\r\n // or\r\n // g group_name\r\n\r\n let name = result[0].substr(1).trim();\r\n state.startObject(name);\r\n } else if (this.regexp.material_use_pattern.test(line)) {\r\n // material\r\n\r\n state.object.startMaterial(\r\n line.substring(7).trim(),\r\n state.materialLibraries\r\n );\r\n } else if (this.regexp.material_library_pattern.test(line)) {\r\n // mtl file\r\n\r\n state.materialLibraries.push(line.substring(7).trim());\r\n } else if ((result = this.regexp.smoothing_pattern.exec(line)) !== null) {\r\n // smooth shading\r\n\r\n // @todo Handle files that have varying smooth values for a set of faces inside one geometry,\r\n // but does not define a usemtl for each face set.\r\n // This should be detected and a dummy material created (later MultiMaterial and geometry groups).\r\n // This requires some care to not create extra material on each smooth value for \"normal\" obj files.\r\n // where explicit usemtl defines geometry groups.\r\n // Example asset: examples/models/obj/cerberus/Cerberus.obj\r\n\r\n let value = result[1].trim().toLowerCase();\r\n state.object.smooth = value === '1' || value === 'on';\r\n\r\n let material = state.object.currentMaterial();\r\n if (material) {\r\n material.smooth = state.object.smooth;\r\n }\r\n } else {\r\n // Handle null terminated files without exception\r\n if (line === '\\0') continue;\r\n\r\n throw new Error(\"Unexpected line: '\" + line + \"'\");\r\n }\r\n }\r\n\r\n state.finalize();\r\n\r\n let container = new THREE.Group();\r\n container.materialLibraries = [].concat(state.materialLibraries);\r\n\r\n for (let i = 0, l = state.objects.length; i < l; i++) {\r\n let object = state.objects[i];\r\n let geometry = object.geometry;\r\n let materials = object.materials;\r\n let isLine = geometry.type === 'Line';\r\n\r\n // Skip o/g line declarations that did not follow with any faces\r\n if (geometry.vertices.length === 0) continue;\r\n\r\n let buffergeometry = new THREE.BufferGeometry();\r\n\r\n buffergeometry.addAttribute(\r\n 'position',\r\n new THREE.BufferAttribute(new Float32Array(geometry.vertices), 3)\r\n );\r\n\r\n if (geometry.normals.length > 0) {\r\n buffergeometry.addAttribute(\r\n 'normal',\r\n new THREE.BufferAttribute(new Float32Array(geometry.normals), 3)\r\n );\r\n } else {\r\n buffergeometry.computeVertexNormals();\r\n }\r\n\r\n if (geometry.uvs.length > 0) {\r\n buffergeometry.addAttribute(\r\n 'uv',\r\n new THREE.BufferAttribute(new Float32Array(geometry.uvs), 2)\r\n );\r\n }\r\n\r\n // Create materials\r\n\r\n let createdMaterials = [];\r\n\r\n for (let mi = 0, miLen = materials.length; mi < miLen; mi++) {\r\n let sourceMaterial = materials[mi];\r\n let material = undefined;\r\n\r\n if (this.materials !== null) {\r\n material = this.materials.create(sourceMaterial.name);\r\n\r\n // mtl etc. loaders probably can't create line materials correctly, copy properties to a line material.\r\n if (\r\n isLine &&\r\n material &&\r\n !(material instanceof THREE.LineBasicMaterial)\r\n ) {\r\n let materialLine = new THREE.LineBasicMaterial();\r\n materialLine.copy(material);\r\n material = materialLine;\r\n }\r\n }\r\n\r\n if (!material) {\r\n material = !isLine\r\n ? new THREE.MeshPhongMaterial()\r\n : new THREE.LineBasicMaterial();\r\n material.name = sourceMaterial.name;\r\n }\r\n\r\n if (!sourceMaterial.smooth) material.flatShading = true;\r\n\r\n createdMaterials.push(material);\r\n }\r\n\r\n // Create mesh\r\n\r\n let mesh;\r\n\r\n if (createdMaterials.length > 1) {\r\n for (let mi = 0, miLen = materials.length; mi < miLen; mi++) {\r\n let sourceMaterial = materials[mi];\r\n buffergeometry.addGroup(\r\n sourceMaterial.groupStart,\r\n sourceMaterial.groupCount,\r\n mi\r\n );\r\n }\r\n\r\n let multiMaterial = new THREE.MultiMaterial(createdMaterials);\r\n mesh = !isLine\r\n ? new THREE.Mesh(buffergeometry, multiMaterial)\r\n : new THREE.Line(buffergeometry, multiMaterial);\r\n } else {\r\n mesh = !isLine\r\n ? new THREE.Mesh(buffergeometry, createdMaterials[0])\r\n : new THREE.Line(buffergeometry, createdMaterials[0]);\r\n }\r\n\r\n mesh.name = object.name;\r\n\r\n container.add(mesh);\r\n }\r\n\r\n return container;\r\n }\r\n};\r\n\r\nmodule.exports = OBJLoader;\r\n"],"mappings":"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","ignoreList":[]}
|