kitchen-simulator 4.1.7-react-18 → 4.2.1
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/README.md +3 -0
- package/es/AppContext.js +1 -1
- package/es/LiteKitchenConfigurator.js +171 -111
- package/es/LiteRenderer.js +161 -129
- package/es/actions/export.js +25 -12
- package/es/actions/project-actions.js +2 -1
- package/es/assets/gltf/door_sliding.bin +0 -0
- package/es/assets/img/svg/bottombar/elevation.svg +12 -5
- package/es/catalog/catalog.js +21 -5
- package/es/catalog/factories/area-factory-3d.js +17 -17
- package/es/catalog/factories/wall-factory.js +1 -1
- package/es/catalog/holes/window-clear/planner-element.js +2 -2
- package/es/catalog/properties/export.js +21 -0
- package/es/catalog/properties/property-checkbox.js +68 -0
- package/es/catalog/properties/property-color.js +39 -0
- package/es/catalog/properties/property-enum.js +50 -0
- package/es/catalog/properties/property-hidden.js +19 -0
- package/es/catalog/properties/property-lenght-measure.js +100 -0
- package/es/catalog/properties/property-length-measure.js +84 -0
- package/es/catalog/properties/property-length-measure_hole.js +100 -0
- package/es/catalog/properties/property-number.js +48 -0
- package/es/catalog/properties/property-read-only.js +26 -0
- package/es/catalog/properties/property-string.js +48 -0
- package/es/catalog/properties/property-toggle.js +39 -0
- package/es/catalog/properties/shared-property-style.js +14 -0
- package/es/catalog/utils/exporter.js +24 -11
- package/es/catalog/utils/item-loader.js +224 -220
- package/es/class/hole.js +0 -2
- package/es/class/item.js +92 -70
- package/es/class/layer.js +1 -1
- package/es/class/line.js +4 -8
- package/es/class/project.js +96 -81
- package/es/components/content.js +10 -93
- package/es/components/export.js +4 -6
- package/es/components/style/button.js +106 -0
- package/es/components/style/cancel-button.js +21 -0
- package/es/components/style/content-container.js +30 -0
- package/es/components/style/content-title.js +25 -0
- package/es/components/style/delete-button.js +24 -0
- package/es/components/style/export.js +28 -2
- package/es/components/style/form-block.js +20 -0
- package/es/components/style/form-color-input.js +26 -0
- package/es/components/style/form-label.js +22 -0
- package/es/components/style/form-number-input.js +29 -29
- package/es/components/style/form-number-input_2.js +200 -0
- package/es/components/style/form-select.js +19 -0
- package/es/components/style/form-slider.js +60 -0
- package/es/components/style/form-submit-button.js +25 -0
- package/es/components/style/form-text-input.js +69 -0
- package/es/components/viewer2d/grids/grid-streak.js +1 -1
- package/es/components/viewer2d/group.js +5 -4
- package/es/components/viewer2d/item.js +155 -359
- package/es/components/viewer2d/layer.js +1 -1
- package/es/components/viewer2d/line.js +22 -54
- package/es/components/viewer2d/ruler.js +16 -11
- package/es/components/viewer2d/rulerDist.js +38 -51
- package/es/components/viewer2d/rulerX.js +4 -2
- package/es/components/viewer2d/rulerY.js +3 -0
- package/es/components/viewer2d/scene.js +17 -12
- package/es/components/viewer2d/state.js +1 -1
- package/es/components/viewer2d/utils.js +2 -2
- package/es/components/viewer2d/vertex.js +3 -2
- package/es/components/viewer2d/viewer2d.js +81 -118
- package/es/components/viewer3d/front3D.js +13 -1
- package/es/components/viewer3d/ruler-utils/scene3D.js +1 -1
- package/es/components/viewer3d/scene-creator.js +270 -69
- package/es/components/viewer3d/viewer3d-first-person.js +26 -32
- package/es/components/viewer3d/viewer3d.js +110 -130
- package/es/constants.js +7 -2
- package/es/devLiteRenderer.js +491 -150
- package/es/index.js +589 -62
- package/es/models.js +13 -8
- package/es/plugins/SVGLoader.js +1414 -0
- package/es/plugins/console-debugger.js +34 -0
- package/es/plugins/export.js +7 -0
- package/es/plugins/keyboard.js +110 -0
- package/es/reducers/project-reducer.js +4 -1
- package/es/reducers/viewer2d-reducer.js +3 -1
- package/es/reducers/viewer3d-reducer.js +3 -1
- package/es/styles/export.js +5 -0
- package/es/styles/tabs.css +40 -0
- package/es/utils/geometry.js +77 -119
- package/es/utils/helper.js +38 -1
- package/es/utils/isolate-event-handler.js +829 -609
- package/es/utils/molding.js +459 -11
- package/es/utils/ruler.js +58 -0
- package/lib/AppContext.js +1 -1
- package/lib/LiteKitchenConfigurator.js +170 -111
- package/lib/LiteRenderer.js +160 -129
- package/lib/actions/export.js +35 -39
- package/lib/actions/project-actions.js +2 -1
- package/lib/assets/gltf/door_sliding.bin +0 -0
- package/lib/assets/img/svg/bottombar/elevation.svg +12 -5
- package/lib/catalog/catalog.js +20 -4
- package/lib/catalog/factories/area-factory-3d.js +14 -14
- package/lib/catalog/factories/wall-factory.js +1 -1
- package/lib/catalog/holes/window-clear/planner-element.js +2 -2
- package/lib/catalog/properties/export.js +81 -0
- package/lib/catalog/properties/property-checkbox.js +76 -0
- package/lib/catalog/properties/property-color.js +47 -0
- package/lib/catalog/properties/property-enum.js +58 -0
- package/lib/catalog/properties/property-hidden.js +27 -0
- package/lib/catalog/properties/property-lenght-measure.js +108 -0
- package/lib/catalog/properties/property-length-measure.js +92 -0
- package/lib/catalog/properties/property-length-measure_hole.js +108 -0
- package/lib/catalog/properties/property-number.js +56 -0
- package/lib/catalog/properties/property-read-only.js +34 -0
- package/lib/catalog/properties/property-string.js +56 -0
- package/lib/catalog/properties/property-toggle.js +47 -0
- package/lib/catalog/properties/shared-property-style.js +21 -0
- package/lib/catalog/utils/exporter.js +24 -11
- package/lib/catalog/utils/item-loader.js +221 -217
- package/lib/class/hole.js +0 -2
- package/lib/class/item.js +90 -68
- package/lib/class/layer.js +1 -1
- package/lib/class/line.js +3 -7
- package/lib/class/project.js +96 -81
- package/lib/components/content.js +10 -93
- package/lib/components/export.js +6 -26
- package/lib/components/style/button.js +115 -0
- package/lib/components/style/cancel-button.js +29 -0
- package/lib/components/style/content-container.js +38 -0
- package/lib/components/style/content-title.js +35 -0
- package/lib/components/style/delete-button.js +34 -0
- package/lib/components/style/export.js +105 -1
- package/lib/components/style/form-block.js +28 -0
- package/lib/components/style/form-color-input.js +34 -0
- package/lib/components/style/form-label.js +30 -0
- package/lib/components/style/form-number-input.js +29 -29
- package/lib/components/style/form-number-input_2.js +209 -0
- package/lib/components/style/form-select.js +29 -0
- package/lib/components/style/form-slider.js +68 -0
- package/lib/components/style/form-submit-button.js +35 -0
- package/lib/components/style/form-text-input.js +78 -0
- package/lib/components/viewer2d/grids/grid-streak.js +1 -1
- package/lib/components/viewer2d/group.js +5 -4
- package/lib/components/viewer2d/item.js +152 -356
- package/lib/components/viewer2d/layer.js +1 -1
- package/lib/components/viewer2d/line.js +22 -54
- package/lib/components/viewer2d/ruler.js +15 -10
- package/lib/components/viewer2d/rulerDist.js +38 -51
- package/lib/components/viewer2d/rulerX.js +4 -2
- package/lib/components/viewer2d/rulerY.js +3 -0
- package/lib/components/viewer2d/scene.js +17 -12
- package/lib/components/viewer2d/state.js +1 -1
- package/lib/components/viewer2d/utils.js +2 -2
- package/lib/components/viewer2d/vertex.js +3 -2
- package/lib/components/viewer2d/viewer2d.js +79 -115
- package/lib/components/viewer3d/front3D.js +13 -1
- package/lib/components/viewer3d/ruler-utils/scene3D.js +1 -1
- package/lib/components/viewer3d/scene-creator.js +267 -66
- package/lib/components/viewer3d/viewer3d-first-person.js +26 -32
- package/lib/components/viewer3d/viewer3d.js +107 -126
- package/lib/constants.js +12 -7
- package/lib/devLiteRenderer.js +489 -148
- package/lib/index.js +591 -62
- package/lib/models.js +13 -8
- package/lib/plugins/SVGLoader.js +1419 -0
- package/lib/plugins/console-debugger.js +42 -0
- package/lib/plugins/export.js +25 -0
- package/lib/plugins/keyboard.js +117 -0
- package/lib/reducers/project-reducer.js +4 -1
- package/lib/reducers/viewer2d-reducer.js +3 -1
- package/lib/reducers/viewer3d-reducer.js +3 -1
- package/lib/styles/export.js +13 -0
- package/lib/styles/tabs.css +40 -0
- package/lib/utils/geometry.js +77 -119
- package/lib/utils/helper.js +40 -1
- package/lib/utils/isolate-event-handler.js +829 -608
- package/lib/utils/molding.js +460 -9
- package/lib/utils/ruler.js +63 -0
- package/package.json +21 -20
- package/es/mocks/appliancePayload.json +0 -27
- package/es/mocks/cabinetPayload.json +0 -1914
- package/es/mocks/cabinetPayload2.json +0 -76
- package/es/mocks/dataBundle2.json +0 -4
- package/es/mocks/distancePayload.json +0 -6
- package/es/mocks/doorStylePayload2.json +0 -84
- package/es/mocks/furnishingPayload.json +0 -23
- package/es/mocks/itemCDSPayload.json +0 -27
- package/es/mocks/lightingPayload.json +0 -23
- package/es/mocks/mockProps.json +0 -43
- package/es/mocks/mockProps2.json +0 -9
- package/es/mocks/moldingPayload.json +0 -19
- package/es/mocks/projectItemsCatalog.json +0 -133
- package/es/mocks/rectangleShape.json +0 -238
- package/es/mocks/replaceCabinetPayload.json +0 -81
- package/es/mocks/roomShapePayload.json +0 -5
- package/es/useAppContext.js +0 -8
- package/lib/mocks/appliancePayload.json +0 -27
- package/lib/mocks/cabinetPayload.json +0 -1914
- package/lib/mocks/cabinetPayload2.json +0 -76
- package/lib/mocks/dataBundle2.json +0 -4
- package/lib/mocks/distancePayload.json +0 -6
- package/lib/mocks/doorStylePayload2.json +0 -84
- package/lib/mocks/furnishingPayload.json +0 -23
- package/lib/mocks/itemCDSPayload.json +0 -27
- package/lib/mocks/lightingPayload.json +0 -23
- package/lib/mocks/mockProps.json +0 -43
- package/lib/mocks/mockProps2.json +0 -9
- package/lib/mocks/moldingPayload.json +0 -19
- package/lib/mocks/projectItemsCatalog.json +0 -133
- package/lib/mocks/rectangleShape.json +0 -238
- package/lib/mocks/replaceCabinetPayload.json +0 -81
- package/lib/mocks/roomShapePayload.json +0 -5
- package/lib/useAppContext.js +0 -16
|
@@ -4,9 +4,9 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
|
4
4
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
5
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6
6
|
import { convert } from "../../utils/convert-units-lite";
|
|
7
|
-
import { fromJS, Map } from
|
|
8
|
-
import React, { useState } from
|
|
9
|
-
import * as Three from
|
|
7
|
+
import { fromJS, Map } from 'immutable';
|
|
8
|
+
import React, { useState } from 'react';
|
|
9
|
+
import * as Three from 'three';
|
|
10
10
|
import * as SceneCreator from "../../components/viewer3d/scene-creator";
|
|
11
11
|
import { ARROW_COLOR, BASE_CABINET_LAYOUTPOS, OBJTYPE_GROUP, OBJTYPE_MESH, SHADE_DARK_PURPLE_COLOR, SHAPE_SVG_DEPTH, SHAPE_SVG_PADDING, SHAPE_SVG_WIDTH, STATUS_WARNING_COLOR, STATUS_WARNING_LIGHT_COLOR, TALL_CABINET_LAYOUTPOS, UNIT_CENTIMETER, UNIT_INCH, WALL_CABINET_LAYOUTPOS } from "../../constants";
|
|
12
12
|
import { Item } from "../../models";
|
|
@@ -14,18 +14,18 @@ import * as GeomUtils from "./geom-utils";
|
|
|
14
14
|
import { loadGLTF } from "./load-obj";
|
|
15
15
|
import { animateDoor, isEmpty, translateDrawer } from "../../utils/helper";
|
|
16
16
|
import { isWarningItem } from "../../components/viewer2d/utils";
|
|
17
|
-
var INITIAL_NORMAL_MAP =
|
|
17
|
+
var INITIAL_NORMAL_MAP = '';
|
|
18
18
|
|
|
19
19
|
// env Map ///////////////
|
|
20
20
|
var paramsCounter = {
|
|
21
|
-
envMap:
|
|
21
|
+
envMap: 'HDR',
|
|
22
22
|
roughness: 0.6,
|
|
23
23
|
metalness: 0.3,
|
|
24
24
|
exposure: 1
|
|
25
25
|
// debug: true
|
|
26
26
|
};
|
|
27
27
|
var params = {
|
|
28
|
-
envMap:
|
|
28
|
+
envMap: 'HDR',
|
|
29
29
|
roughness: 0.9,
|
|
30
30
|
metalness: 0.1,
|
|
31
31
|
metalness_glossy: 0.2,
|
|
@@ -33,18 +33,18 @@ var params = {
|
|
|
33
33
|
// debug: false
|
|
34
34
|
};
|
|
35
35
|
var paramsModel = {
|
|
36
|
-
envMap:
|
|
36
|
+
envMap: 'HDR',
|
|
37
37
|
roughness: 0.9,
|
|
38
38
|
metalness: 0.2,
|
|
39
39
|
exposure: 1.0
|
|
40
40
|
// debug: false
|
|
41
41
|
};
|
|
42
42
|
var buttons = [{
|
|
43
|
-
name:
|
|
44
|
-
thumbnail:
|
|
43
|
+
name: 'Edit',
|
|
44
|
+
thumbnail: '/assets/img/svg/3d_item_warning_edit.svg'
|
|
45
45
|
}, {
|
|
46
|
-
name:
|
|
47
|
-
thumbnail:
|
|
46
|
+
name: 'Info',
|
|
47
|
+
thumbnail: '/assets/img/svg/3d_item_warning_info.svg'
|
|
48
48
|
}];
|
|
49
49
|
|
|
50
50
|
// /////////////////////////
|
|
@@ -60,7 +60,7 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
60
60
|
var x = element.x,
|
|
61
61
|
y = element.y,
|
|
62
62
|
rotation = element.rotation;
|
|
63
|
-
var el_DSN =
|
|
63
|
+
var el_DSN = 'el_DSN',
|
|
64
64
|
doorStylesKeys = [];
|
|
65
65
|
var _element = element.toJS();
|
|
66
66
|
if (_element.doorStyle !== undefined) {
|
|
@@ -68,10 +68,10 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
68
68
|
doorStylesKeys = Object.keys(_element.doorStyle.doorStyles);
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
-
if ((doorStylesKeys.includes(
|
|
71
|
+
if ((doorStylesKeys.includes('euro_length') || doorStylesKeys.includes('euro_width') || doorStylesKeys.includes('euro_shape_svg')) && _element.doorStyle.doorStyles.is_euro_cds) {
|
|
72
72
|
el_DSN = _element.doorStyle.door_style_name;
|
|
73
73
|
} else {
|
|
74
|
-
el_DSN =
|
|
74
|
+
el_DSN = 'el_DSN';
|
|
75
75
|
}
|
|
76
76
|
var width, depth, el_euro_length, el_euro_width, el_euro_length_unit, el_euro_width_unit, el_is_euro_cds, el_euro_shape_svg;
|
|
77
77
|
if (doorStylesKeys.length > 0) {
|
|
@@ -80,42 +80,42 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
80
80
|
el_is_euro_cds = _element.doorStyle.doorStyles.is_euro_cds;
|
|
81
81
|
el_euro_shape_svg = _element.doorStyle.doorStyles.euro_shape_svg;
|
|
82
82
|
}
|
|
83
|
-
if (el_euro_length
|
|
84
|
-
el_DSN =
|
|
83
|
+
if (isEmpty(el_euro_length) && isEmpty(el_euro_width)) {
|
|
84
|
+
el_DSN = 'el_DSN';
|
|
85
85
|
}
|
|
86
|
-
if (el_DSN ===
|
|
86
|
+
if (el_DSN === 'Euro & Frameless') {
|
|
87
87
|
// sizeinfo["depth"] = el_euro_length;
|
|
88
88
|
// sizeinfo["width"] = el_euro_width;
|
|
89
89
|
}
|
|
90
|
-
var tempWidth = element.properties.get(
|
|
91
|
-
var tempDepth = element.properties.get(
|
|
90
|
+
var tempWidth = element.properties.get('width');
|
|
91
|
+
var tempDepth = element.properties.get('depth');
|
|
92
92
|
width = tempWidth && {
|
|
93
|
-
length: tempWidth.get(
|
|
94
|
-
unit: tempWidth.get(
|
|
93
|
+
length: tempWidth.get('_length'),
|
|
94
|
+
unit: tempWidth.get('_unit')
|
|
95
95
|
};
|
|
96
96
|
depth = tempDepth && {
|
|
97
|
-
length: tempDepth.get(
|
|
98
|
-
unit: tempDepth.get(
|
|
97
|
+
length: tempDepth.get('_length'),
|
|
98
|
+
unit: tempDepth.get('_unit')
|
|
99
99
|
};
|
|
100
|
-
var originalWidth = convert(sizeinfo.width).from(
|
|
101
|
-
var originalDepth = convert(sizeinfo.depth).from(
|
|
102
|
-
var newWidth = convert(width.length).from(width.unit).to(
|
|
103
|
-
var newDepth = convert(depth.length).from(depth.unit).to(
|
|
100
|
+
var originalWidth = convert(sizeinfo.width).from('in').to('cm');
|
|
101
|
+
var originalDepth = convert(sizeinfo.depth).from('in').to('cm');
|
|
102
|
+
var newWidth = convert(width.length).from(width.unit).to('cm');
|
|
103
|
+
var newDepth = convert(depth.length).from(depth.unit).to('cm');
|
|
104
104
|
var padding = convert(SHAPE_SVG_PADDING).from(UNIT_INCH).to(UNIT_CENTIMETER);
|
|
105
105
|
var angle = element.rotation + 90;
|
|
106
106
|
var textRotation = 0;
|
|
107
107
|
if (Math.sin(angle * Math.PI / 180) < 0) {
|
|
108
108
|
textRotation = 180;
|
|
109
109
|
}
|
|
110
|
-
var color =
|
|
110
|
+
var color = '#eee';
|
|
111
111
|
if (layoutpos == BASE_CABINET_LAYOUTPOS) {
|
|
112
|
-
color =
|
|
112
|
+
color = '#3f8db3';
|
|
113
113
|
}
|
|
114
114
|
if (layoutpos == TALL_CABINET_LAYOUTPOS) {
|
|
115
|
-
color =
|
|
115
|
+
color = '#93b3be';
|
|
116
116
|
}
|
|
117
117
|
if (layoutpos == WALL_CABINET_LAYOUTPOS) {
|
|
118
|
-
color =
|
|
118
|
+
color = '#48b08dcc';
|
|
119
119
|
}
|
|
120
120
|
var splitStr = [];
|
|
121
121
|
var txtContent = [];
|
|
@@ -129,7 +129,7 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
129
129
|
var dcId,
|
|
130
130
|
doorStyle = element.doorStyle;
|
|
131
131
|
if (doorStyle instanceof Map) {
|
|
132
|
-
dcId = doorStyle.get(
|
|
132
|
+
dcId = doorStyle.get('id');
|
|
133
133
|
} else {
|
|
134
134
|
dcId = doorStyle.id;
|
|
135
135
|
}
|
|
@@ -148,7 +148,7 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
148
148
|
splitStr.push(type.slice(lineCount * rowCount));
|
|
149
149
|
splitStr.forEach(function (el, key) {
|
|
150
150
|
txtContent.push(/*#__PURE__*/React.createElement("text", {
|
|
151
|
-
key:
|
|
151
|
+
key: 'text' + key,
|
|
152
152
|
x: "0",
|
|
153
153
|
y: newDepth / 2 - 12,
|
|
154
154
|
dy: 16 * key,
|
|
@@ -158,16 +158,16 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
158
158
|
,
|
|
159
159
|
style: {
|
|
160
160
|
fontWeight: 500,
|
|
161
|
-
fontSize:
|
|
162
|
-
textAnchor:
|
|
163
|
-
fill:
|
|
164
|
-
display:
|
|
161
|
+
fontSize: '7px',
|
|
162
|
+
textAnchor: 'middle',
|
|
163
|
+
fill: '#FFF',
|
|
164
|
+
display: 'block'
|
|
165
165
|
}
|
|
166
166
|
}, el));
|
|
167
167
|
});
|
|
168
168
|
var style = {
|
|
169
|
-
stroke: element.selected ?
|
|
170
|
-
strokeWidth:
|
|
169
|
+
stroke: element.selected ? '#565658' : '#565658',
|
|
170
|
+
strokeWidth: '2px',
|
|
171
171
|
fill: color
|
|
172
172
|
};
|
|
173
173
|
// let arrow_style = { stroke: element.selected ? '#0096fd' : null, strokeWidth: "2px", fill: "#84e1ce" };
|
|
@@ -175,8 +175,8 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
175
175
|
var rendered = null;
|
|
176
176
|
var svg_url, svg_width, svg_depth;
|
|
177
177
|
if (shape_svg || el_euro_shape_svg) {
|
|
178
|
-
if (typeof shape_svg ==
|
|
179
|
-
if (el_DSN ===
|
|
178
|
+
if (typeof shape_svg == 'string' || typeof el_euro_shape_svg == 'string') {
|
|
179
|
+
if (el_DSN === 'Euro & Frameless' && el_is_euro_cds) {
|
|
180
180
|
svg_url = el_euro_shape_svg;
|
|
181
181
|
svg_width = newWidth;
|
|
182
182
|
svg_depth = newDepth;
|
|
@@ -203,20 +203,25 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
203
203
|
var warning_buttons = /*#__PURE__*/React.createElement("g", null, /*#__PURE__*/React.createElement("g", {
|
|
204
204
|
id: "warning_info_2d",
|
|
205
205
|
style: {
|
|
206
|
-
cursor:
|
|
206
|
+
cursor: 'pointer',
|
|
207
207
|
transform: "translate(".concat(-transX, "px, ").concat(-transY, "px)")
|
|
208
208
|
},
|
|
209
209
|
onMouseEnter: function onMouseEnter(event) {
|
|
210
|
-
var
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
210
|
+
var target = event.currentTarget;
|
|
211
|
+
var tooltip = document.getElementById('warning_box_2d');
|
|
212
|
+
var parent = document.querySelector('#kitchen-simulator-container');
|
|
213
|
+
if (!tooltip || !parent) return;
|
|
214
|
+
var targetRect = target.getBoundingClientRect();
|
|
215
|
+
var parentRect = parent.getBoundingClientRect();
|
|
216
|
+
var left = targetRect.left - parentRect.left;
|
|
217
|
+
var top = targetRect.top - parentRect.top;
|
|
218
|
+
tooltip.style.display = 'flex';
|
|
219
|
+
tooltip.style.left = "".concat(left, "px");
|
|
220
|
+
tooltip.style.top = "".concat(top - 60, "px");
|
|
216
221
|
},
|
|
217
222
|
onMouseLeave: function onMouseLeave() {
|
|
218
|
-
if (document.getElementById(
|
|
219
|
-
document.getElementById(
|
|
223
|
+
if (document.getElementById('warning_box_2d')) {
|
|
224
|
+
document.getElementById('warning_box_2d').style.display = 'none';
|
|
220
225
|
}
|
|
221
226
|
}
|
|
222
227
|
}, /*#__PURE__*/React.createElement("circle", {
|
|
@@ -235,7 +240,7 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
235
240
|
href: buttons[1].thumbnail
|
|
236
241
|
})), /*#__PURE__*/React.createElement("g", {
|
|
237
242
|
style: {
|
|
238
|
-
cursor:
|
|
243
|
+
cursor: 'pointer',
|
|
239
244
|
transform: "translate(".concat(transX, "px, ").concat(transY, "px)")
|
|
240
245
|
},
|
|
241
246
|
"data-element-root": true,
|
|
@@ -281,7 +286,7 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
281
286
|
}, /*#__PURE__*/React.createElement("image", {
|
|
282
287
|
preserveAspectRatio: "none",
|
|
283
288
|
style: {
|
|
284
|
-
pointerEvents:
|
|
289
|
+
pointerEvents: 'none'
|
|
285
290
|
},
|
|
286
291
|
href: svg_url,
|
|
287
292
|
width: "".concat(newWidth + 2 * padding_width),
|
|
@@ -294,16 +299,16 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
294
299
|
y: "".concat(padding_depth),
|
|
295
300
|
width: "".concat(newWidth),
|
|
296
301
|
height: "".concat(newDepth),
|
|
297
|
-
visibility:
|
|
302
|
+
visibility: 'hidden',
|
|
298
303
|
style: {
|
|
299
|
-
pointerEvents:
|
|
304
|
+
pointerEvents: 'all',
|
|
300
305
|
opacity: 0.7,
|
|
301
|
-
postion:
|
|
306
|
+
postion: 'relative'
|
|
302
307
|
}
|
|
303
308
|
}), /*#__PURE__*/React.createElement("g", {
|
|
304
309
|
transform: "translate(".concat(padding_width, ",").concat(padding_depth, ")")
|
|
305
|
-
}, txtContent)), element.category ===
|
|
306
|
-
visibility: isWarningItem(element) ?
|
|
310
|
+
}, txtContent)), element.category === 'cabinet' && /*#__PURE__*/React.createElement("g", {
|
|
311
|
+
visibility: isWarningItem(element) ? 'visible' : 'hidden'
|
|
307
312
|
}, warning_buttons)));
|
|
308
313
|
} else {
|
|
309
314
|
rendered = /*#__PURE__*/React.createElement("g", {
|
|
@@ -390,38 +395,38 @@ var assignUVs = function assignUVs(geometry) {
|
|
|
390
395
|
export function render3DItem(element, layer, scene, sizeinfo, structure_json, is_corner) {
|
|
391
396
|
var mode = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
|
|
392
397
|
if (element.doorStyle.constructor !== Map) {
|
|
393
|
-
element = element.set(
|
|
398
|
+
element = element.set('doorStyle', fromJS(element.doorStyle));
|
|
394
399
|
}
|
|
395
|
-
if (element.doorStyle.toJS().handle_gltf !==
|
|
400
|
+
if (element.doorStyle.toJS().handle_gltf !== '') {
|
|
396
401
|
// Check element has doorHandle
|
|
397
402
|
for (var i = 1; i < 10; i++) {
|
|
398
|
-
element = element.setIn([
|
|
399
|
-
element = element.setIn([
|
|
400
|
-
element = element.setIn([
|
|
403
|
+
element = element.setIn(['doorStyle', 'doorStyles', 'door_handle_' + i + '_gltf'], element.doorStyle.toJS().handle_gltf);
|
|
404
|
+
element = element.setIn(['doorStyle', 'doorStyles', 'fixed_drawer_door_handle_' + i + '_gltf'], element.doorStyle.toJS().handle_gltf);
|
|
405
|
+
element = element.setIn(['doorStyle', 'doorStyles', 'drawer_door_handle_' + i + '_gltf'], element.doorStyle.toJS().handle_gltf);
|
|
401
406
|
}
|
|
402
407
|
}
|
|
403
408
|
var width = {
|
|
404
409
|
length: sizeinfo.width,
|
|
405
|
-
unit:
|
|
410
|
+
unit: 'in'
|
|
406
411
|
};
|
|
407
412
|
var depth = {
|
|
408
413
|
length: sizeinfo.depth,
|
|
409
|
-
unit:
|
|
414
|
+
unit: 'in'
|
|
410
415
|
};
|
|
411
416
|
var height = {
|
|
412
417
|
length: sizeinfo.height,
|
|
413
|
-
unit:
|
|
418
|
+
unit: 'in'
|
|
414
419
|
};
|
|
415
|
-
var newWidth = convert(width.length).from(width.unit).to(
|
|
416
|
-
var newDepth = convert(depth.length).from(depth.unit).to(
|
|
417
|
-
var newHeight = convert(height.length).from(height.unit).to(
|
|
418
|
-
var mainName =
|
|
419
|
-
if (element.properties.get(
|
|
420
|
-
if (element.properties.get(
|
|
421
|
-
if (element.properties.get(
|
|
420
|
+
var newWidth = convert(width.length).from(width.unit).to('in');
|
|
421
|
+
var newDepth = convert(depth.length).from(depth.unit).to('in');
|
|
422
|
+
var newHeight = convert(height.length).from(height.unit).to('in');
|
|
423
|
+
var mainName = ''; // to get name structure//
|
|
424
|
+
if (element.properties.get('width')) newWidth = element.getIn(['properties', 'width', '_length']);
|
|
425
|
+
if (element.properties.get('depth')) newDepth = element.getIn(['properties', 'depth', '_length']);
|
|
426
|
+
if (element.properties.get('height')) newHeight = element.getIn(['properties', 'height', '_length']);
|
|
422
427
|
var structure = structure_json;
|
|
423
428
|
// structure.push({name:'model', url: '/assets/model/DCM.gltf'});
|
|
424
|
-
structure.model =
|
|
429
|
+
structure.model = '/assets/model/DCM.gltf';
|
|
425
430
|
var placeholders = structure.placeholders;
|
|
426
431
|
var doorStyles = null;
|
|
427
432
|
var color = 0xffffff,
|
|
@@ -431,26 +436,29 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
431
436
|
if (layer.toJS().counterTop.uri) {
|
|
432
437
|
counterTop.uri = layer.toJS().counterTop.uri;
|
|
433
438
|
}
|
|
434
|
-
if (
|
|
439
|
+
if ('name' in element.doorStyle) {
|
|
440
|
+
var _element2, _element3, _element4, _element5;
|
|
435
441
|
doorStyles = new Map(element.doorStyle.doorStyles);
|
|
436
|
-
color = element.doorStyle.color;
|
|
437
|
-
glossness = element.doorStyle.glossness;
|
|
438
|
-
handleMaterial.metalness = element.doorStyle.metalness;
|
|
439
|
-
handleMaterial.roughness = element.doorStyle.roughness;
|
|
442
|
+
color = (_element2 = element) === null || _element2 === void 0 || (_element2 = _element2.doorStyle) === null || _element2 === void 0 ? void 0 : _element2.color;
|
|
443
|
+
glossness = (_element3 = element) === null || _element3 === void 0 || (_element3 = _element3.doorStyle) === null || _element3 === void 0 ? void 0 : _element3.glossness;
|
|
444
|
+
handleMaterial.metalness = (_element4 = element) === null || _element4 === void 0 || (_element4 = _element4.doorStyle) === null || _element4 === void 0 ? void 0 : _element4.metalness;
|
|
445
|
+
handleMaterial.roughness = (_element5 = element) === null || _element5 === void 0 || (_element5 = _element5.doorStyle) === null || _element5 === void 0 ? void 0 : _element5.roughness;
|
|
440
446
|
} else if (element.doorStyle != null && element.doorStyle) {
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
handleMaterial.
|
|
447
|
+
var _element6, _element7, _element8, _element9, _element0;
|
|
448
|
+
doorStyles = (_element6 = element) === null || _element6 === void 0 || (_element6 = _element6.doorStyle) === null || _element6 === void 0 ? void 0 : _element6.get('doorStyles');
|
|
449
|
+
color = (_element7 = element) === null || _element7 === void 0 || (_element7 = _element7.doorStyle) === null || _element7 === void 0 ? void 0 : _element7.get('color');
|
|
450
|
+
glossness = (_element8 = element) === null || _element8 === void 0 || (_element8 = _element8.doorStyle) === null || _element8 === void 0 ? void 0 : _element8.get('glossness');
|
|
451
|
+
handleMaterial.metalness = (_element9 = element) === null || _element9 === void 0 || (_element9 = _element9.doorStyle) === null || _element9 === void 0 ? void 0 : _element9.get('metalness');
|
|
452
|
+
handleMaterial.roughness = (_element0 = element) === null || _element0 === void 0 || (_element0 = _element0.doorStyle) === null || _element0 === void 0 ? void 0 : _element0.get('roughness');
|
|
446
453
|
}
|
|
447
|
-
if (color
|
|
448
|
-
if (glossness
|
|
454
|
+
if (isEmpty(color)) color = '#ffffff';
|
|
455
|
+
if (isEmpty(glossness)) glossness = 1;
|
|
449
456
|
var tempDoorStyles = doorStyles.toJS();
|
|
450
457
|
var tempPlaceholders = structure.tempPlaceholders;
|
|
451
458
|
var tPlaceholders = tempPlaceholders.find(function (el) {
|
|
452
|
-
|
|
453
|
-
|
|
459
|
+
var _tempDoorStyles$cds, _tempDoorStyles$cds$;
|
|
460
|
+
if (tempDoorStyles !== null && tempDoorStyles !== void 0 && tempDoorStyles.cabinet_door_style_id) return el.id === (tempDoorStyles === null || tempDoorStyles === void 0 ? void 0 : tempDoorStyles.cabinet_door_style_id);else if ((tempDoorStyles === null || tempDoorStyles === void 0 || (_tempDoorStyles$cds = tempDoorStyles.cds) === null || _tempDoorStyles$cds === void 0 ? void 0 : _tempDoorStyles$cds.length) > 0) return el.id === (tempDoorStyles === null || tempDoorStyles === void 0 || (_tempDoorStyles$cds$ = tempDoorStyles.cds[0]) === null || _tempDoorStyles$cds$ === void 0 ? void 0 : _tempDoorStyles$cds$.cabinet_door_style_id);
|
|
461
|
+
return false;
|
|
454
462
|
});
|
|
455
463
|
if (tPlaceholders !== undefined) {
|
|
456
464
|
placeholders = tPlaceholders.placeholders;
|
|
@@ -469,13 +477,13 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
469
477
|
areaMaterial.side = Three.DoubleSide;
|
|
470
478
|
// areaMaterial.envMap = textureCube;
|
|
471
479
|
if (isEmpty(doorStyles)) {
|
|
472
|
-
var normalMap = doorStyles.get(
|
|
480
|
+
var normalMap = doorStyles.get('base') || INITIAL_NORMAL_MAP;
|
|
473
481
|
var interiortexture = loadTexture(normalMap);
|
|
474
482
|
applyTexture(areaMaterial, interiortexture, 100, 100);
|
|
475
483
|
}
|
|
476
484
|
var object1 = object;
|
|
477
|
-
var newAltitude = element.properties.get(
|
|
478
|
-
var newUnit = element.properties.get(
|
|
485
|
+
var newAltitude = element.properties.get('altitude').get('_length');
|
|
486
|
+
var newUnit = element.properties.get('altitude').get('_unit') || 'in';
|
|
479
487
|
newAltitude = convert(newAltitude).from(newUnit).to(scene.unit);
|
|
480
488
|
var _element = element.toJS();
|
|
481
489
|
if (!_element.doorStyle.doorStyles.is_euro_cds) {
|
|
@@ -492,27 +500,27 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
492
500
|
var door_match = child.name.match(matchStr);
|
|
493
501
|
if (door_match && door_match.length > 2) {
|
|
494
502
|
var _child$children$;
|
|
495
|
-
var rotate_match_text = element.properties.toJS().flip_doorhandle ?
|
|
496
|
-
if (door_match[2] ===
|
|
497
|
-
rotate_match_text = element.properties.toJS().flip_doorhandle ?
|
|
503
|
+
var rotate_match_text = element.properties.toJS().flip_doorhandle ? 'rotate_L' : 'rotate_R';
|
|
504
|
+
if (door_match[2] === '_L') {
|
|
505
|
+
rotate_match_text = element.properties.toJS().flip_doorhandle ? 'rotate_R' : 'rotate_L';
|
|
498
506
|
}
|
|
499
507
|
var isDoubleDoor = door_match && door_match[2] !== undefined;
|
|
500
508
|
(_child$children$ = child.children[0]) === null || _child$children$ === void 0 || _child$children$.children.forEach(function (it) {
|
|
501
509
|
var _it$name, _it$children;
|
|
502
|
-
if (it !== null && it !== void 0 && (_it$name = it.name) !== null && _it$name !== void 0 && _it$name.includes(
|
|
510
|
+
if (it !== null && it !== void 0 && (_it$name = it.name) !== null && _it$name !== void 0 && _it$name.includes('handle') && (_it$children = it.children) !== null && _it$children !== void 0 && _it$children.length && is_corner === 1 && isDoubleDoor) {
|
|
503
511
|
var _child$name, _child$name2, _object1$children, _t0$name, _t0$children;
|
|
504
|
-
var tname = child !== null && child !== void 0 && (_child$name = child.name) !== null && _child$name !== void 0 && _child$name.endsWith(
|
|
512
|
+
var tname = child !== null && child !== void 0 && (_child$name = child.name) !== null && _child$name !== void 0 && _child$name.endsWith('_L') ? child.name.replace('_L', '_R') : child === null || child === void 0 || (_child$name2 = child.name) === null || _child$name2 === void 0 ? void 0 : _child$name2.replace('_R', '_L');
|
|
505
513
|
var tmp = (object1 === null || object1 === void 0 || (_object1$children = object1.children) === null || _object1$children === void 0 ? void 0 : _object1$children.filter(function (item) {
|
|
506
514
|
return (item === null || item === void 0 ? void 0 : item.name) === tname;
|
|
507
515
|
})) || [];
|
|
508
516
|
var t0 = tmp[0];
|
|
509
|
-
var filterStr = t0 !== null && t0 !== void 0 && (_t0$name = t0.name) !== null && _t0$name !== void 0 && _t0$name.endsWith(
|
|
517
|
+
var filterStr = t0 !== null && t0 !== void 0 && (_t0$name = t0.name) !== null && _t0$name !== void 0 && _t0$name.endsWith('_L') ? 'rotate_L' : 'rotate_R';
|
|
510
518
|
var tposArr = (t0 === null || t0 === void 0 || (_t0$children = t0.children) === null || _t0$children === void 0 || (_t0$children = _t0$children[0]) === null || _t0$children === void 0 || (_t0$children = _t0$children.children) === null || _t0$children === void 0 ? void 0 : _t0$children.filter(function (item) {
|
|
511
519
|
var _item$name;
|
|
512
520
|
return item === null || item === void 0 || (_item$name = item.name) === null || _item$name === void 0 ? void 0 : _item$name.endsWith(filterStr);
|
|
513
521
|
})) || [];
|
|
514
522
|
var tpos0 = tposArr[0];
|
|
515
|
-
if (it.name.includes(
|
|
523
|
+
if (it.name.includes('base_end')) {
|
|
516
524
|
var _it$position$x, _it$position, _it$position$y, _it$position2, _tpos0$position$x, _tpos0$position;
|
|
517
525
|
door_animate_offset[child.name] = {
|
|
518
526
|
x: -2 * ((_it$position$x = (_it$position = it.position) === null || _it$position === void 0 ? void 0 : _it$position.x) !== null && _it$position$x !== void 0 ? _it$position$x : 0) - 0.12,
|
|
@@ -580,16 +588,16 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
580
588
|
// vertical line - 4 lines around object//////////////////////////
|
|
581
589
|
var vLineGeom = new Three.BufferGeometry();
|
|
582
590
|
var vertices = [(max.x - min.x) / 2 + min.x, 0, max.z, (max.x - min.x) / 2 + min.x, 0, max.z + 1.3];
|
|
583
|
-
vLineGeom.setAttribute(
|
|
591
|
+
vLineGeom.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices), 3));
|
|
584
592
|
var vLineGeom1 = new Three.BufferGeometry();
|
|
585
593
|
var vertices1 = [(max.x - min.x) / 2 + min.x, 0, min.z, (max.x - min.x) / 2 + min.x, 0, min.z - 1.3];
|
|
586
|
-
vLineGeom1.setAttribute(
|
|
594
|
+
vLineGeom1.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices1), 3));
|
|
587
595
|
var vLineGeom2 = new Three.BufferGeometry();
|
|
588
596
|
var vertices2 = [max.x, 0, max.z - (max.z - min.z) / 2, max.x + 1.3, 0, max.z - (max.z - min.z) / 2];
|
|
589
|
-
vLineGeom2.setAttribute(
|
|
597
|
+
vLineGeom2.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices2), 3));
|
|
590
598
|
var vLineGeom3 = new Three.BufferGeometry();
|
|
591
599
|
var vertices3 = [min.x, 0, max.z - (max.z - min.z) / 2, min.x - 1.3, 0, max.z - (max.z - min.z) / 2];
|
|
592
|
-
vLineGeom3.setAttribute(
|
|
600
|
+
vLineGeom3.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices3), 3));
|
|
593
601
|
// ///////////////////////////////////////
|
|
594
602
|
|
|
595
603
|
// set names of transform object
|
|
@@ -602,12 +610,12 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
602
610
|
color: new Three.Color(0xffffff).convertLinearToSRGB(),
|
|
603
611
|
colorWrite: true
|
|
604
612
|
}));
|
|
605
|
-
rotFillObj.name =
|
|
613
|
+
rotFillObj.name = 'rotate';
|
|
606
614
|
var upObj = new Three.Mesh(upwardsGeom, new Three.MeshBasicMaterial({
|
|
607
615
|
color: new Three.Color(0xffffff).convertLinearToSRGB(),
|
|
608
616
|
side: Three.DoubleSide
|
|
609
617
|
}));
|
|
610
|
-
upObj.name =
|
|
618
|
+
upObj.name = 'transUp';
|
|
611
619
|
var mBox = new Three.Mesh(moveBox, new Three.MeshBasicMaterial({
|
|
612
620
|
color: new Three.Color(0xdd6699).convertLinearToSRGB(),
|
|
613
621
|
side: Three.DoubleSide,
|
|
@@ -641,15 +649,15 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
641
649
|
vLine3.material.depthTest = false;
|
|
642
650
|
// translate vector to center of object
|
|
643
651
|
var uVec = new Three.Vector3(-posVec.x / scalevec.x, -posVec.y / scalevec.y, -posVec.z / scalevec.z);
|
|
644
|
-
vLine.translateY(0.1);
|
|
645
|
-
vLine1.translateY(0.1);
|
|
646
|
-
vLine2.translateY(0.1);
|
|
647
|
-
vLine3.translateY(0.1);
|
|
652
|
+
vLine.translateY(_boundingBox.min.y + 0.1);
|
|
653
|
+
vLine1.translateY(_boundingBox.min.y + 0.1);
|
|
654
|
+
vLine2.translateY(_boundingBox.min.y + 0.1);
|
|
655
|
+
vLine3.translateY(_boundingBox.min.y + 0.1);
|
|
648
656
|
|
|
649
657
|
//rotObj.translateOnAxis(uVec, 1);
|
|
650
658
|
upObj.translateOnAxis(uVec, 1);
|
|
651
659
|
upObj.translateY(max.y - min.y);
|
|
652
|
-
mBox.name =
|
|
660
|
+
mBox.name = 'TransformBox';
|
|
653
661
|
mBox.translateOnAxis(new Three.Vector3(uVec.x, uVec.y + (max.y - min.y) / 2, uVec.z), 1);
|
|
654
662
|
mBox.scale.set(1.01, 1.01, 1.01);
|
|
655
663
|
|
|
@@ -678,7 +686,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
678
686
|
asrtObj.add(mBox);
|
|
679
687
|
asrtObj.scale.set(1 / object.scale.x, object.scale.y, 1 / object.scale.z);
|
|
680
688
|
//asrtObj.translateY(newAltitude / scalevec.y);
|
|
681
|
-
asrtObj.name =
|
|
689
|
+
asrtObj.name = 'TransformGizmo';
|
|
682
690
|
// add assets Objects Group
|
|
683
691
|
object1.add(asrtObj);
|
|
684
692
|
|
|
@@ -691,7 +699,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
691
699
|
SceneCreator.getDistances(layer);
|
|
692
700
|
}, 100);
|
|
693
701
|
}
|
|
694
|
-
var flip_doorhandle = element.properties.get(
|
|
702
|
+
var flip_doorhandle = element.properties.get('flip_doorhandle');
|
|
695
703
|
if (flip_doorhandle) {
|
|
696
704
|
SceneCreator.updateDoorHandleMesh(element, object1, true);
|
|
697
705
|
}
|
|
@@ -707,14 +715,14 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
707
715
|
transparency: 0.8
|
|
708
716
|
});
|
|
709
717
|
obj.material = material;
|
|
710
|
-
} else if (name.startsWith(
|
|
718
|
+
} else if (name.startsWith('sink_')) {
|
|
711
719
|
// texture = loadTexture('/assets/img/texture/steel.jpg');
|
|
712
720
|
|
|
713
721
|
var _material;
|
|
714
722
|
// Get color from name
|
|
715
|
-
if (name.includes(
|
|
723
|
+
if (name.includes('black') || name.includes('white')) {
|
|
716
724
|
var _color2;
|
|
717
|
-
if (name.includes(
|
|
725
|
+
if (name.includes('black')) {
|
|
718
726
|
_color2 = new Three.Color(0x555555).convertLinearToSRGB();
|
|
719
727
|
} else {
|
|
720
728
|
_color2 = 0xffffff;
|
|
@@ -747,14 +755,14 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
747
755
|
var open_doors = element.toJS().properties.open_doors;
|
|
748
756
|
var object_match = obj.name.match(/\d_(interior_drawer[^LR1-9]*)(_[LR1-9])?$/) || obj.name.match(matchStr);
|
|
749
757
|
if (object_match && object_match.length > 2) {
|
|
750
|
-
var isDoor = object_match[1] ===
|
|
758
|
+
var isDoor = object_match[1] === 'door';
|
|
751
759
|
if (isDoor) {
|
|
752
760
|
var offsetData = object1.userData.door_animate_offset[obj.name];
|
|
753
761
|
// Open Door
|
|
754
|
-
animateDoor(offsetData, obj, open_doors, element.toJS(), is_corner,
|
|
762
|
+
animateDoor(offsetData, obj, open_doors, element.toJS(), is_corner, 'Opened2D');
|
|
755
763
|
} else {
|
|
756
764
|
// Open Drawer
|
|
757
|
-
translateDrawer(element.toJS(), obj, open_doors,
|
|
765
|
+
translateDrawer(element.toJS(), obj, open_doors, 'Opened2D');
|
|
758
766
|
}
|
|
759
767
|
}
|
|
760
768
|
}
|
|
@@ -764,30 +772,30 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
764
772
|
// keys in structure
|
|
765
773
|
var keys = Object.keys(structure);
|
|
766
774
|
// if exist in cached Objects
|
|
767
|
-
if (element.type + color +
|
|
768
|
-
var _objGroup = cachedObject[element.type + color +
|
|
775
|
+
if (element.type + color + 'doorStyle' + JSON.stringify(doorStyles.toJS()) + element.counterTop.uri in cachedObject) {
|
|
776
|
+
var _objGroup = cachedObject[element.type + color + 'doorStyle' + JSON.stringify(doorStyles.toJS())].clone();
|
|
769
777
|
return Promise.resolve(onLoadItem(_objGroup.clone()));
|
|
770
778
|
}
|
|
771
779
|
|
|
772
780
|
// base Object/////
|
|
773
781
|
var objGroup = null;
|
|
774
782
|
var _loadGLTFs = function loadGLTFs(i) {
|
|
775
|
-
if (keys[i] ===
|
|
783
|
+
if (keys[i] === 'animation') {
|
|
776
784
|
// if animation info
|
|
777
785
|
i++;
|
|
778
786
|
return _loadGLTFs(i);
|
|
779
787
|
}
|
|
780
|
-
if (keys[i] ===
|
|
788
|
+
if (keys[i] === 'placeholders') {
|
|
781
789
|
// if placeholders group
|
|
782
790
|
i++;
|
|
783
791
|
return _loadGLTFs(i);
|
|
784
792
|
}
|
|
785
793
|
if (i === keys.length) {
|
|
786
794
|
// if end of keys
|
|
787
|
-
cachedObject[element.type + color +
|
|
788
|
-
return onLoadItem(cachedObject[element.type + color +
|
|
795
|
+
cachedObject[element.type + color + 'doorStyle' + JSON.stringify(doorStyles.toJS())] = objGroup.clone(); //register to cachedObject
|
|
796
|
+
return onLoadItem(cachedObject[element.type + color + 'doorStyle' + JSON.stringify(doorStyles.toJS())].clone());
|
|
789
797
|
}
|
|
790
|
-
if (keys[i] ===
|
|
798
|
+
if (keys[i] === 'base') {
|
|
791
799
|
// if base Objects
|
|
792
800
|
i++;
|
|
793
801
|
return _loadGLTFs(i);
|
|
@@ -800,15 +808,15 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
800
808
|
}
|
|
801
809
|
for (var j = 0; j < placeholderStructure.length; j++) {
|
|
802
810
|
var phData = placeholderStructure[j];
|
|
803
|
-
var phs = phData.split(
|
|
804
|
-
var temp = phData.split(
|
|
811
|
+
var phs = phData.split('/');
|
|
812
|
+
var temp = phData.split('/');
|
|
805
813
|
// placeholder remake////////////////
|
|
806
814
|
for (var k = 0; k < phs.length; k++) {
|
|
807
815
|
if (phs[k] in placeholders) {
|
|
808
816
|
var placeholderphs = placeholders[phs[k]];
|
|
809
817
|
var key = placeholderStructure.length / placeholderphs.length;
|
|
810
818
|
phs[k] = placeholderphs[Math.floor(j / key)];
|
|
811
|
-
var splitedData = phs[k].split(
|
|
819
|
+
var splitedData = phs[k].split('/');
|
|
812
820
|
if (splitedData.length > 1) {
|
|
813
821
|
phs[k] = splitedData[splitedData.length - 1];
|
|
814
822
|
for (var m = splitedData.length - 2; m >= 0; m--) {
|
|
@@ -819,41 +827,41 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
819
827
|
k = -1;
|
|
820
828
|
continue;
|
|
821
829
|
}
|
|
822
|
-
if (phs[k].indexOf(
|
|
830
|
+
if (phs[k].indexOf('ph') == -1) {
|
|
823
831
|
var _url = structure[temp[k - 1]];
|
|
824
|
-
if (temp[k - 1] +
|
|
825
|
-
if (structure[temp[k - 1] +
|
|
826
|
-
_url = structure[temp[k - 1] +
|
|
832
|
+
if (temp[k - 1] + '_doorStyle' + element.type + 'doorStyle' + JSON.stringify(doorStyles.toJS()) in structure) {
|
|
833
|
+
if (structure[temp[k - 1] + '_doorStyle' + element.type + 'doorStyle' + JSON.stringify(doorStyles.toJS())] != null) {
|
|
834
|
+
_url = structure[temp[k - 1] + '_doorStyle' + element.type + 'doorStyle' + JSON.stringify(doorStyles.toJS())];
|
|
827
835
|
}
|
|
828
836
|
}
|
|
829
837
|
if (_typeof(_url) == Array) _url = _url[0];
|
|
830
|
-
var uData = _url.split(
|
|
838
|
+
var uData = _url.split('/');
|
|
831
839
|
uData = uData[uData.length - 1];
|
|
832
840
|
uData = uData.slice(0, -5);
|
|
833
|
-
var datas = uData.split(
|
|
841
|
+
var datas = uData.split('_');
|
|
834
842
|
uData = datas[1];
|
|
835
843
|
for (var _i = 2; _i < datas.length; _i++) {
|
|
836
|
-
uData +=
|
|
844
|
+
uData += '_';
|
|
837
845
|
uData += datas[_i];
|
|
838
846
|
}
|
|
839
|
-
uData = mainName.replace(
|
|
840
|
-
phs[k] =
|
|
847
|
+
uData = mainName.replace('main', uData);
|
|
848
|
+
phs[k] = 'ph_' + uData + '_' + phs[k];
|
|
841
849
|
}
|
|
842
850
|
}
|
|
843
851
|
phsArray.push(phs);
|
|
844
852
|
}
|
|
845
853
|
var url = structure[keys[i]];
|
|
846
|
-
var normalMap =
|
|
847
|
-
var urlData = url.split(
|
|
854
|
+
var normalMap = '';
|
|
855
|
+
var urlData = url.split('/');
|
|
848
856
|
for (var _j = 0; _j < element.submodule.size; _j++) {
|
|
849
|
-
var replaceUrlData = element.submodule.get(_j).split(
|
|
857
|
+
var replaceUrlData = element.submodule.get(_j).split('/');
|
|
850
858
|
if (urlData.includes(replaceUrlData[replaceUrlData.length - 2])) {
|
|
851
859
|
url = element.submodule.get(_j);
|
|
852
860
|
break;
|
|
853
861
|
}
|
|
854
862
|
}
|
|
855
863
|
for (var _j2 = 0; _j2 < element.normalMap.size; _j2++) {
|
|
856
|
-
var normalMapData = element.normalMap.get(_j2).split(
|
|
864
|
+
var normalMapData = element.normalMap.get(_j2).split('/');
|
|
857
865
|
if (urlData.includes(normalMapData[normalMapData.length - 2])) {
|
|
858
866
|
normalMap = element.normalMap.get(_j2);
|
|
859
867
|
break;
|
|
@@ -865,15 +873,15 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
865
873
|
if (phsArray.length > 0) {
|
|
866
874
|
// let loadUrl = dirName + url;
|
|
867
875
|
var loadUrl = url;
|
|
868
|
-
if (doorStyles.get(keys[i] +
|
|
869
|
-
loadUrl = doorStyles.get(keys[i] +
|
|
870
|
-
structure[keys[i] +
|
|
876
|
+
if (doorStyles.get(keys[i] + '_gltf') != undefined) {
|
|
877
|
+
loadUrl = doorStyles.get(keys[i] + '_gltf');
|
|
878
|
+
structure[keys[i] + '_doorStyle' + element.type + 'doorStyle' + JSON.stringify(doorStyles.toJS())] = loadUrl;
|
|
871
879
|
} else {
|
|
872
|
-
structure[keys[i] +
|
|
880
|
+
structure[keys[i] + '_doorStyle' + element.type + 'doorStyle' + JSON.stringify(doorStyles.toJS())] = null;
|
|
873
881
|
}
|
|
874
882
|
return loadGLTF(loadUrl).then(function (object) {
|
|
875
|
-
if (normalMap !==
|
|
876
|
-
var normalUrl = normalMap.split(
|
|
883
|
+
if (normalMap !== '') {
|
|
884
|
+
var normalUrl = normalMap.split('.')[0] + '-normal.' + normalMap.split('.')[1];
|
|
877
885
|
var t = loadTexture(normalMap);
|
|
878
886
|
var _m = loadTexture(normalUrl);
|
|
879
887
|
var mat2 = new Three.MeshStandardMaterial({
|
|
@@ -897,7 +905,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
897
905
|
// let normalMap = "catalog/items/doorstyle/" + doorStyles.get(keys[i]);
|
|
898
906
|
var _normalMap = doorStyles.get(keys[i]) || INITIAL_NORMAL_MAP;
|
|
899
907
|
var _mat;
|
|
900
|
-
if (_normalMap ===
|
|
908
|
+
if (_normalMap === '') {
|
|
901
909
|
var examplecolor = new Three.Color(parseInt(color.slice(1), 16)).convertLinearToSRGB();
|
|
902
910
|
_mat = new Three.MeshStandardMaterial({
|
|
903
911
|
color: examplecolor,
|
|
@@ -921,8 +929,8 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
921
929
|
object.children[_j4].material = _mat;
|
|
922
930
|
object.children[_j4].receiveShadow = true;
|
|
923
931
|
object.children[_j4].castShadow = true;
|
|
924
|
-
!object.children[_j4].name.includes(
|
|
925
|
-
} else if (!object.children[_j4].name.startsWith(
|
|
932
|
+
!object.children[_j4].name.includes('handle') && addEdgesToMesh(object.children[_j4]);
|
|
933
|
+
} else if (!object.children[_j4].name.startsWith('ph_') && object.children[_j4].type === OBJTYPE_GROUP) {
|
|
926
934
|
object.children[_j4].traverse(function (prim) {
|
|
927
935
|
prim.material = _mat;
|
|
928
936
|
prim.receiveShadow = true;
|
|
@@ -962,10 +970,10 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
962
970
|
} else {
|
|
963
971
|
if (parent.children[_k].name == placeholder) {
|
|
964
972
|
var tmp = object.clone();
|
|
965
|
-
if (placeholder.includes(
|
|
973
|
+
if (placeholder.includes('drawer_door') && placeholder.includes('_handle')) {
|
|
966
974
|
tmp.rotateZ(Math.PI / 2);
|
|
967
975
|
}
|
|
968
|
-
if (placeholder.includes(
|
|
976
|
+
if (placeholder.includes('_handle') && tmp.children[0].type === OBJTYPE_MESH) {
|
|
969
977
|
// NOTE: change metalness of handle
|
|
970
978
|
tmp.children[0].material.metalness = 1;
|
|
971
979
|
// handleMaterial.metalness || 0.2;
|
|
@@ -979,33 +987,29 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
979
987
|
}
|
|
980
988
|
}
|
|
981
989
|
}, function (reason) {
|
|
982
|
-
console.log(
|
|
990
|
+
console.log('loadGLTF failed for reason:', reason);
|
|
983
991
|
}).then(function () {
|
|
984
992
|
i++;
|
|
985
993
|
return _loadGLTFs(i);
|
|
986
994
|
});
|
|
987
995
|
}
|
|
988
996
|
};
|
|
989
|
-
return loadGLTF(structure[
|
|
990
|
-
object.name =
|
|
997
|
+
return loadGLTF(structure['base']).then(function (object) {
|
|
998
|
+
object.name = 'MainObject';
|
|
991
999
|
object.receiveShadow = true;
|
|
992
1000
|
objGroup = object;
|
|
993
1001
|
if (!isEmpty(doorStyles)) {
|
|
994
|
-
var
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
counterTop = counterTop.toJS();
|
|
998
|
-
} catch (error) {
|
|
999
|
-
//@todo THIS IS A TEMPORARY FIX FOR COUNTERTOP TEXTURE UNDEFINED ISSUE
|
|
1000
|
-
counterTop.uri = "https://media.test.diydesignspace.com/uploads/CountTop/202105074107_5/texture/Unique_Calcatta_texture.jpg";
|
|
1001
|
-
console.log(error);
|
|
1002
|
-
}
|
|
1003
|
-
}
|
|
1004
|
-
if (counterTop.uri === undefined && layer.toJS().counterTop.uri !== undefined) {
|
|
1002
|
+
var _layer$toJS;
|
|
1003
|
+
var normalMap = doorStyles.get('base') || INITIAL_NORMAL_MAP;
|
|
1004
|
+
if (isEmpty(counterTop.uri) && !isEmpty(layer === null || layer === void 0 || (_layer$toJS = layer.toJS()) === null || _layer$toJS === void 0 ? void 0 : _layer$toJS.counterTop.uri)) {
|
|
1005
1005
|
counterTop.uri = layer.toJS().counterTop.uri;
|
|
1006
1006
|
}
|
|
1007
|
+
if (isEmpty(counterTop.uri)) {
|
|
1008
|
+
//@todo THIS IS A TEMPORARY FIX FOR COUNTERTOP TEXTURE UNDEFINED ISSUE
|
|
1009
|
+
counterTop.uri = 'https://media.test.diydesignspace.com/uploads/CountTop/202105074107_5/texture/Unique_Calcatta_texture.jpg';
|
|
1010
|
+
}
|
|
1007
1011
|
var countTopMap = counterTop.uri;
|
|
1008
|
-
var interiorMap = doorStyles.get(
|
|
1012
|
+
var interiorMap = doorStyles.get('interior');
|
|
1009
1013
|
var countT = loadTexture(countTopMap);
|
|
1010
1014
|
countT.wrapS = Three.RepeatWrapping;
|
|
1011
1015
|
countT.wrapT = Three.RepeatWrapping;
|
|
@@ -1014,7 +1018,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
1014
1018
|
var mat2 = null,
|
|
1015
1019
|
mat3 = null,
|
|
1016
1020
|
mat4 = null;
|
|
1017
|
-
if (normalMap ===
|
|
1021
|
+
if (normalMap === '') {
|
|
1018
1022
|
mat2 = new Three.MeshStandardMaterial({
|
|
1019
1023
|
color: examplecolor,
|
|
1020
1024
|
metalness: glossness === 1 ? params.metalness : params.metalness_glossy,
|
|
@@ -1031,11 +1035,11 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
1031
1035
|
}
|
|
1032
1036
|
// mat2.envMap = textureCube;
|
|
1033
1037
|
|
|
1034
|
-
if (normalMap !==
|
|
1038
|
+
if (normalMap !== '') {
|
|
1035
1039
|
var t = loadTexture(normalMap);
|
|
1036
1040
|
mat2.map = t;
|
|
1037
1041
|
}
|
|
1038
|
-
if (normalMap ===
|
|
1042
|
+
if (normalMap === '') {
|
|
1039
1043
|
mat3 = new Three.MeshStandardMaterial({
|
|
1040
1044
|
// color: examplecolor,
|
|
1041
1045
|
metalness: counterTop.metalness,
|
|
@@ -1057,13 +1061,13 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
1057
1061
|
});
|
|
1058
1062
|
mat4.map = loadTexture(interiorMap);
|
|
1059
1063
|
for (var j = 0; j < object.children.length; j++) {
|
|
1060
|
-
if (object.children[j].name.includes(
|
|
1061
|
-
if (object.children[j].name.includes(
|
|
1064
|
+
if (object.children[j].name.includes('main')) {}
|
|
1065
|
+
if (object.children[j].name.includes('countertop')) {
|
|
1062
1066
|
object.children[j].material = mat3;
|
|
1063
1067
|
object.children[j].receiveShadow = true;
|
|
1064
1068
|
object.children[j].castShadow = true;
|
|
1065
1069
|
addEdgesToMesh(object.children[j]);
|
|
1066
|
-
} else if (object.children[j].name.includes(
|
|
1070
|
+
} else if (object.children[j].name.includes('_interior_')) {
|
|
1067
1071
|
object.children[j].material = mat4;
|
|
1068
1072
|
} else if (object.children[j].type === OBJTYPE_MESH) {
|
|
1069
1073
|
object.children[j].material = mat2;
|
|
@@ -1073,7 +1077,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
1073
1077
|
}
|
|
1074
1078
|
}
|
|
1075
1079
|
}, function (reason) {
|
|
1076
|
-
console.log(
|
|
1080
|
+
console.log('loadGLTF failed for reason:', reason);
|
|
1077
1081
|
objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);
|
|
1078
1082
|
}).then(function () {
|
|
1079
1083
|
return _loadGLTFs(0);
|
|
@@ -1087,18 +1091,18 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1087
1091
|
var applianceMaterial = element.applianceMaterial;
|
|
1088
1092
|
if (applianceMaterial.metalness == undefined) applianceMaterial = applianceMaterial.toJS();
|
|
1089
1093
|
var onLoadItem = function onLoadItem(object) {
|
|
1090
|
-
var newAltitude = element.properties.get(
|
|
1091
|
-
var newUnit = element.properties.get(
|
|
1094
|
+
var newAltitude = element.properties.get('altitude').get('_length');
|
|
1095
|
+
var newUnit = element.properties.get('altitude').get('_unit') || 'in';
|
|
1092
1096
|
newAltitude = convert(newAltitude).from(newUnit).to(scene.unit);
|
|
1093
|
-
var newWidth = element.properties.get(
|
|
1094
|
-
var newWidthUnit = element.properties.get(
|
|
1095
|
-
newWidth = convert(newWidth).from(newWidthUnit).to(
|
|
1096
|
-
var newHeight = element.properties.get(
|
|
1097
|
-
var newHeightUnit = element.properties.get(
|
|
1098
|
-
newHeight = convert(newHeight).from(newHeightUnit).to(
|
|
1099
|
-
var newDepth = element.properties.get(
|
|
1100
|
-
var newDepthUnit = element.properties.get(
|
|
1101
|
-
newDepth = convert(newDepth).from(newDepthUnit).to(
|
|
1097
|
+
var newWidth = element.properties.get('width').get('_length');
|
|
1098
|
+
var newWidthUnit = element.properties.get('width').get('_unit') || 'in';
|
|
1099
|
+
newWidth = convert(newWidth).from(newWidthUnit).to('in');
|
|
1100
|
+
var newHeight = element.properties.get('height').get('_length');
|
|
1101
|
+
var newHeightUnit = element.properties.get('height').get('_unit') || 'in';
|
|
1102
|
+
newHeight = convert(newHeight).from(newHeightUnit).to('in');
|
|
1103
|
+
var newDepth = element.properties.get('depth').get('_length');
|
|
1104
|
+
var newDepthUnit = element.properties.get('depth').get('_unit') || 'in';
|
|
1105
|
+
newDepth = convert(newDepth).from(newDepthUnit).to('in');
|
|
1102
1106
|
object.scale.set(100 * newWidth / sizeinfo.width, 100 * newHeight / sizeinfo.height, 100 * newDepth / sizeinfo.depth);
|
|
1103
1107
|
// Normalize the origin of the object
|
|
1104
1108
|
var boundingBox = new Three.Box3().setFromObject(object);
|
|
@@ -1113,16 +1117,16 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1113
1117
|
var name = obj.name;
|
|
1114
1118
|
var texture,
|
|
1115
1119
|
textureLoader = new Three.TextureLoader();
|
|
1116
|
-
if (name.includes(
|
|
1120
|
+
if (name.includes('_black')) {
|
|
1117
1121
|
obj.material.roughness = 0.4;
|
|
1118
1122
|
obj.material.metalness = 1.0;
|
|
1119
1123
|
obj.material.color = new Three.Color(0, 0, 0);
|
|
1120
1124
|
obj.castShadow = true;
|
|
1121
1125
|
obj.receiveShadow = true;
|
|
1122
1126
|
return object;
|
|
1123
|
-
} else if (name.includes(
|
|
1124
|
-
texture = loadTexture(
|
|
1125
|
-
} else if (name.includes(
|
|
1127
|
+
} else if (name.includes('_wood')) {
|
|
1128
|
+
texture = loadTexture('/assets/img/texture/wood.jpg');
|
|
1129
|
+
} else if (name.includes('_glass')) {
|
|
1126
1130
|
// texture = loadTexture('/assets/img/texture/glass.jpg');
|
|
1127
1131
|
var material = new Three.MeshPhysicalMaterial({
|
|
1128
1132
|
transparent: true,
|
|
@@ -1137,7 +1141,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1137
1141
|
obj.castShadow = true;
|
|
1138
1142
|
obj.receiveShadow = true;
|
|
1139
1143
|
return object;
|
|
1140
|
-
} else if (name.includes(
|
|
1144
|
+
} else if (name.includes('_steel')) {
|
|
1141
1145
|
// texture = loadTexture('/assets/img/texture/steel.jpg');
|
|
1142
1146
|
var _material2 = new Three.MeshPhysicalMaterial({
|
|
1143
1147
|
roughness: 0.2,
|
|
@@ -1187,16 +1191,16 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1187
1191
|
// vertical line - 4 lines around object//////////////////////////
|
|
1188
1192
|
var vLineGeom = new Three.BufferGeometry();
|
|
1189
1193
|
var vertices = [(max.x - min.x) / 2 + min.x, 0, min.z, (max.x - min.x) / 2 + min.x, 0, min.z + 1.3];
|
|
1190
|
-
vLineGeom.setAttribute(
|
|
1194
|
+
vLineGeom.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices), 3));
|
|
1191
1195
|
var vLineGeom1 = new Three.BufferGeometry();
|
|
1192
1196
|
var vertices1 = [(max.x - min.x) / 2 + min.x, 0, min.z, (max.x - min.x) / 2 + min.x, 0, min.z - 1.3];
|
|
1193
|
-
vLineGeom1.setAttribute(
|
|
1197
|
+
vLineGeom1.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices1), 3));
|
|
1194
1198
|
var vLineGeom2 = new Three.BufferGeometry();
|
|
1195
1199
|
var vertices2 = [max.x, 0, max.z - (max.z - min.z) / 2, max.x + 1.3, 0, max.z - (max.z - min.z) / 2];
|
|
1196
|
-
vLineGeom1.setAttribute(
|
|
1200
|
+
vLineGeom1.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices2), 3));
|
|
1197
1201
|
var vLineGeom3 = new Three.BufferGeometry();
|
|
1198
1202
|
var vertices3 = [min.x, 0, max.z - (max.z - min.z) / 2, min.x - 1.3, 0, max.z - (max.z - min.z) / 2];
|
|
1199
|
-
vLineGeom1.setAttribute(
|
|
1203
|
+
vLineGeom1.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices3), 3));
|
|
1200
1204
|
// ///////////////////////////////////////
|
|
1201
1205
|
|
|
1202
1206
|
// set names of transform object
|
|
@@ -1209,12 +1213,12 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1209
1213
|
color: 0xffffff,
|
|
1210
1214
|
colorWrite: true
|
|
1211
1215
|
}));
|
|
1212
|
-
rotFillObj.name =
|
|
1216
|
+
rotFillObj.name = 'rotate';
|
|
1213
1217
|
var upObj = new Three.Mesh(upwardsGeom, new Three.MeshBasicMaterial({
|
|
1214
1218
|
color: 0xffffff,
|
|
1215
1219
|
side: Three.DoubleSide
|
|
1216
1220
|
}));
|
|
1217
|
-
upObj.name =
|
|
1221
|
+
upObj.name = 'transUp';
|
|
1218
1222
|
var mBox = new Three.Mesh(moveBox, new Three.MeshBasicMaterial({
|
|
1219
1223
|
color: new Three.Color(0xdd6699).convertLinearToSRGB(),
|
|
1220
1224
|
side: Three.DoubleSide,
|
|
@@ -1254,7 +1258,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1254
1258
|
vLine3.translateY(0.1);
|
|
1255
1259
|
upObj.translateOnAxis(uVec, 1);
|
|
1256
1260
|
upObj.translateY(max.y - min.y + 0.05);
|
|
1257
|
-
mBox.name =
|
|
1261
|
+
mBox.name = 'TransformBox';
|
|
1258
1262
|
mBox.translateOnAxis(new Three.Vector3(uVec.x, uVec.y + (max.y - min.y) / 2, uVec.z), 1);
|
|
1259
1263
|
mBox.scale.set(1.01, 1.01, 1.01);
|
|
1260
1264
|
|
|
@@ -1282,7 +1286,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1282
1286
|
asrtObj.add(mBox);
|
|
1283
1287
|
asrtObj.scale.set(1 / object.scale.x, object.scale.y, 1 / object.scale.z);
|
|
1284
1288
|
// asrtObj.translateY(newAltitude / scalevec.y);
|
|
1285
|
-
asrtObj.name =
|
|
1289
|
+
asrtObj.name = 'TransformGizmo';
|
|
1286
1290
|
// add assets Objects Group
|
|
1287
1291
|
object.add(asrtObj);
|
|
1288
1292
|
|
|
@@ -1312,7 +1316,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1312
1316
|
cachedObject[element.type] = objGroup.clone(); //register to cachedObject
|
|
1313
1317
|
return onLoadItem(cachedObject[element.type].clone());
|
|
1314
1318
|
}
|
|
1315
|
-
if (keys[i] ===
|
|
1319
|
+
if (keys[i] === 'base') {
|
|
1316
1320
|
// if base Objects
|
|
1317
1321
|
i++;
|
|
1318
1322
|
return _loadGLTFs2(i);
|
|
@@ -1321,13 +1325,13 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1321
1325
|
|
|
1322
1326
|
// load base to start //
|
|
1323
1327
|
// return loadGLTF(dirName + structure["base"])
|
|
1324
|
-
return loadGLTF(structure[
|
|
1328
|
+
return loadGLTF(structure['base']).then(function (object) {
|
|
1325
1329
|
// let textureURL = `${API_SERVER_URL}/uploads/assets/default/steel.jpg`;
|
|
1326
1330
|
// let texture = loadTexture(textureURL);
|
|
1327
1331
|
// texture.wrapS = Three.MirroredRepeatWrapping;
|
|
1328
1332
|
// texture.wrapT = Three.MirroredRepeatWrapping;
|
|
1329
1333
|
|
|
1330
|
-
object.name =
|
|
1334
|
+
object.name = 'MainObject';
|
|
1331
1335
|
// NOTE: changed appliance emissive color to black
|
|
1332
1336
|
var mat2 = new Three.MeshStandardMaterial({
|
|
1333
1337
|
emissive: new Three.Color(0x0d0d0d).convertLinearToSRGB(),
|
|
@@ -1345,7 +1349,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1345
1349
|
}
|
|
1346
1350
|
objGroup = object;
|
|
1347
1351
|
}, function (reason) {
|
|
1348
|
-
console.log(
|
|
1352
|
+
console.log('loadGLTF failed for reason:', reason);
|
|
1349
1353
|
objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);
|
|
1350
1354
|
}).then(function () {
|
|
1351
1355
|
return _loadGLTFs2(0);
|
|
@@ -1358,21 +1362,21 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1358
1362
|
var onLoadItem = function onLoadItem(object) {
|
|
1359
1363
|
var width = {
|
|
1360
1364
|
length: sizeinfo.width,
|
|
1361
|
-
unit:
|
|
1365
|
+
unit: 'in'
|
|
1362
1366
|
};
|
|
1363
1367
|
var depth = {
|
|
1364
1368
|
length: sizeinfo.depth,
|
|
1365
|
-
unit:
|
|
1369
|
+
unit: 'in'
|
|
1366
1370
|
};
|
|
1367
1371
|
var height = {
|
|
1368
1372
|
length: sizeinfo.height,
|
|
1369
|
-
unit:
|
|
1373
|
+
unit: 'in'
|
|
1370
1374
|
};
|
|
1371
|
-
var newWidth = convert(width.length).from(width.unit).to(
|
|
1372
|
-
var newDepth = convert(depth.length).from(depth.unit).to(
|
|
1373
|
-
var newHeight = convert(height.length).from(height.unit).to(
|
|
1374
|
-
var newAltitude = element.properties.get(
|
|
1375
|
-
var newUnit = element.properties.get(
|
|
1375
|
+
var newWidth = convert(width.length).from(width.unit).to('cm');
|
|
1376
|
+
var newDepth = convert(depth.length).from(depth.unit).to('cm');
|
|
1377
|
+
var newHeight = convert(height.length).from(height.unit).to('cm');
|
|
1378
|
+
var newAltitude = element.properties.get('altitude').get('_length');
|
|
1379
|
+
var newUnit = element.properties.get('altitude').get('_unit') || 'in';
|
|
1376
1380
|
newAltitude = convert(newAltitude).from(newUnit).to(scene.unit);
|
|
1377
1381
|
|
|
1378
1382
|
//object.scale.set(newWidth, newHeight, newDepth);
|
|
@@ -1419,16 +1423,16 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1419
1423
|
// vertical line - 4 lines around object//////////////////////////
|
|
1420
1424
|
var vLineGeom = new Three.BufferGeometry();
|
|
1421
1425
|
var vertices = [(max.x - min.x) / 2 + min.x, 0, min.z, (max.x - min.x) / 2 + min.x, 0, min.z + 1.3];
|
|
1422
|
-
vLineGeom.setAttribute(
|
|
1426
|
+
vLineGeom.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices), 3));
|
|
1423
1427
|
var vLineGeom1 = new Three.BufferGeometry();
|
|
1424
1428
|
var vertices1 = [(max.x - min.x) / 2 + min.x, 0, min.z, (max.x - min.x) / 2 + min.x, 0, min.z - 1.3];
|
|
1425
|
-
vLineGeom1.setAttribute(
|
|
1429
|
+
vLineGeom1.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices1), 3));
|
|
1426
1430
|
var vLineGeom2 = new Three.BufferGeometry();
|
|
1427
1431
|
var vertices2 = [min.x, 0, max.z - (max.z - min.z) / 2, min.x + 1.3, 0, max.z - (max.z - min.z) / 2];
|
|
1428
|
-
vLineGeom2.setAttribute(
|
|
1432
|
+
vLineGeom2.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices2), 3));
|
|
1429
1433
|
var vLineGeom3 = new Three.BufferGeometry();
|
|
1430
1434
|
var vertices3 = [min.x, 0, max.z - (max.z - min.z) / 2, min.x - 1.3, 0, max.z - (max.z - min.z) / 2];
|
|
1431
|
-
vLineGeom3.setAttribute(
|
|
1435
|
+
vLineGeom3.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices3), 3));
|
|
1432
1436
|
// ///////////////////////////////////////
|
|
1433
1437
|
|
|
1434
1438
|
// set names of transform object
|
|
@@ -1441,12 +1445,12 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1441
1445
|
color: 0xffffff,
|
|
1442
1446
|
colorWrite: true
|
|
1443
1447
|
}));
|
|
1444
|
-
rotFillObj.name =
|
|
1448
|
+
rotFillObj.name = 'rotate';
|
|
1445
1449
|
var upObj = new Three.Mesh(upwardsGeom, new Three.MeshBasicMaterial({
|
|
1446
1450
|
color: 0xffffff,
|
|
1447
1451
|
side: Three.DoubleSide
|
|
1448
1452
|
}));
|
|
1449
|
-
upObj.name =
|
|
1453
|
+
upObj.name = 'transUp';
|
|
1450
1454
|
var mBox = new Three.Mesh(moveBox, new Three.MeshBasicMaterial({
|
|
1451
1455
|
color: 0xdd6699,
|
|
1452
1456
|
side: Three.DoubleSide,
|
|
@@ -1488,7 +1492,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1488
1492
|
//rotObj.translateOnAxis(uVec, 1);
|
|
1489
1493
|
upObj.translateOnAxis(uVec, 1);
|
|
1490
1494
|
upObj.translateY(max.y - min.y);
|
|
1491
|
-
mBox.name =
|
|
1495
|
+
mBox.name = 'TransformBox';
|
|
1492
1496
|
mBox.translateOnAxis(new Three.Vector3(uVec.x, uVec.y + (max.y - min.y) / 2, uVec.z), 1);
|
|
1493
1497
|
mBox.scale.set(1.01, 1.01, 1.01);
|
|
1494
1498
|
|
|
@@ -1517,7 +1521,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1517
1521
|
asrtObj.add(mBox);
|
|
1518
1522
|
asrtObj.scale.set(1, 1, 1);
|
|
1519
1523
|
//asrtObj.translateY(newAltitude / scalevec.y);
|
|
1520
|
-
asrtObj.name =
|
|
1524
|
+
asrtObj.name = 'TransformGizmo';
|
|
1521
1525
|
// add assets Objects Group
|
|
1522
1526
|
object.add(asrtObj);
|
|
1523
1527
|
|
|
@@ -1550,7 +1554,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1550
1554
|
cachedObject[element.type] = objGroup.clone(); //register to cachedObject
|
|
1551
1555
|
return onLoadItem(cachedObject[element.type].clone());
|
|
1552
1556
|
}
|
|
1553
|
-
if (keys[i] ===
|
|
1557
|
+
if (keys[i] === 'base') {
|
|
1554
1558
|
// if base Objects
|
|
1555
1559
|
i++;
|
|
1556
1560
|
return _loadGLTFs3(i);
|
|
@@ -1559,13 +1563,13 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1559
1563
|
|
|
1560
1564
|
// load base to start //
|
|
1561
1565
|
// return loadGLTF(dirName + structure["base"])
|
|
1562
|
-
return loadGLTF(structure[
|
|
1566
|
+
return loadGLTF(structure['base']).then(function (object) {
|
|
1563
1567
|
// let textureURL = `${API_SERVER_URL}/uploads/assets/default/steel.jpg`;
|
|
1564
1568
|
// let texture = loadTexture(textureURL);
|
|
1565
1569
|
// texture.wrapS = Three.MirroredRepeatWrapping;
|
|
1566
1570
|
// texture.wrapT = Three.MirroredRepeatWrapping;
|
|
1567
1571
|
|
|
1568
|
-
object.name =
|
|
1572
|
+
object.name = 'MainObject';
|
|
1569
1573
|
var mat2 = new Three.MeshStandardMaterial({
|
|
1570
1574
|
emissive: new Three.Color(0x666666).convertLinearToSRGB(),
|
|
1571
1575
|
metalness: 0.7,
|
|
@@ -1581,7 +1585,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1581
1585
|
}
|
|
1582
1586
|
objGroup = object;
|
|
1583
1587
|
}, function (reason) {
|
|
1584
|
-
console.log(
|
|
1588
|
+
console.log('loadGLTF failed for reason:', reason);
|
|
1585
1589
|
objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);
|
|
1586
1590
|
}).then(function () {
|
|
1587
1591
|
return _loadGLTFs3(0);
|