kitchen-simulator 4.1.0-react-18 → 4.1.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 +162 -111
- package/es/LiteRenderer.js +161 -129
- package/es/actions/export.js +25 -12
- 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 +222 -213
- package/es/class/hole.js +0 -2
- package/es/class/item.js +89 -70
- package/es/class/layer.js +1 -1
- package/es/class/line.js +4 -8
- package/es/class/project.js +97 -80
- package/es/components/content.js +5 -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 -27
- 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 -52
- 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 +56 -87
- package/es/components/viewer3d/ruler-utils/scene3D.js +1 -1
- package/es/components/viewer3d/scene-creator.js +255 -58
- package/es/components/viewer3d/viewer3d-first-person.js +24 -26
- package/es/components/viewer3d/viewer3d.js +103 -124
- package/es/constants.js +7 -2
- package/es/devLiteRenderer.js +491 -150
- package/es/index.js +590 -21
- 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 +3 -0
- 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 +827 -607
- package/es/utils/molding.js +459 -11
- package/es/utils/ruler.js +58 -0
- package/lib/AppContext.js +1 -1
- package/lib/LiteKitchenConfigurator.js +161 -111
- package/lib/LiteRenderer.js +160 -129
- package/lib/actions/export.js +35 -39
- 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 +219 -210
- package/lib/class/hole.js +0 -2
- package/lib/class/item.js +87 -68
- package/lib/class/layer.js +1 -1
- package/lib/class/line.js +3 -7
- package/lib/class/project.js +97 -80
- package/lib/components/content.js +5 -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 -27
- 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 -52
- 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 +54 -84
- package/lib/components/viewer3d/ruler-utils/scene3D.js +1 -1
- package/lib/components/viewer3d/scene-creator.js +252 -55
- package/lib/components/viewer3d/viewer3d-first-person.js +24 -26
- package/lib/components/viewer3d/viewer3d.js +100 -120
- package/lib/constants.js +12 -7
- package/lib/devLiteRenderer.js +489 -148
- package/lib/index.js +592 -21
- 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 +3 -0
- 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 +827 -606
- package/lib/utils/molding.js +460 -9
- package/lib/utils/ruler.js +63 -0
- package/package.json +20 -15
- 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,34 @@ 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
|
-
|
|
1002
|
+
var _layer$toJS;
|
|
1003
|
+
var normalMap = doorStyles.get('base') || INITIAL_NORMAL_MAP;
|
|
1004
|
+
if (isEmpty(counterTop.uri)) {
|
|
996
1005
|
try {
|
|
997
1006
|
counterTop = counterTop.toJS();
|
|
998
1007
|
} catch (error) {
|
|
999
1008
|
//@todo THIS IS A TEMPORARY FIX FOR COUNTERTOP TEXTURE UNDEFINED ISSUE
|
|
1000
|
-
counterTop.uri =
|
|
1009
|
+
counterTop.uri = 'https://media.test.diydesignspace.com/uploads/CountTop/202105074107_5/texture/Unique_Calcatta_texture.jpg';
|
|
1001
1010
|
console.log(error);
|
|
1002
1011
|
}
|
|
1003
1012
|
}
|
|
1004
|
-
if (counterTop.uri ===
|
|
1013
|
+
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
1014
|
counterTop.uri = layer.toJS().counterTop.uri;
|
|
1006
1015
|
}
|
|
1007
1016
|
var countTopMap = counterTop.uri;
|
|
1008
|
-
var interiorMap = doorStyles.get(
|
|
1017
|
+
var interiorMap = doorStyles.get('interior');
|
|
1009
1018
|
var countT = loadTexture(countTopMap);
|
|
1010
1019
|
countT.wrapS = Three.RepeatWrapping;
|
|
1011
1020
|
countT.wrapT = Three.RepeatWrapping;
|
|
@@ -1014,7 +1023,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
1014
1023
|
var mat2 = null,
|
|
1015
1024
|
mat3 = null,
|
|
1016
1025
|
mat4 = null;
|
|
1017
|
-
if (normalMap ===
|
|
1026
|
+
if (normalMap === '') {
|
|
1018
1027
|
mat2 = new Three.MeshStandardMaterial({
|
|
1019
1028
|
color: examplecolor,
|
|
1020
1029
|
metalness: glossness === 1 ? params.metalness : params.metalness_glossy,
|
|
@@ -1031,11 +1040,11 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
1031
1040
|
}
|
|
1032
1041
|
// mat2.envMap = textureCube;
|
|
1033
1042
|
|
|
1034
|
-
if (normalMap !==
|
|
1043
|
+
if (normalMap !== '') {
|
|
1035
1044
|
var t = loadTexture(normalMap);
|
|
1036
1045
|
mat2.map = t;
|
|
1037
1046
|
}
|
|
1038
|
-
if (normalMap ===
|
|
1047
|
+
if (normalMap === '') {
|
|
1039
1048
|
mat3 = new Three.MeshStandardMaterial({
|
|
1040
1049
|
// color: examplecolor,
|
|
1041
1050
|
metalness: counterTop.metalness,
|
|
@@ -1057,13 +1066,13 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
1057
1066
|
});
|
|
1058
1067
|
mat4.map = loadTexture(interiorMap);
|
|
1059
1068
|
for (var j = 0; j < object.children.length; j++) {
|
|
1060
|
-
if (object.children[j].name.includes(
|
|
1061
|
-
if (object.children[j].name.includes(
|
|
1069
|
+
if (object.children[j].name.includes('main')) {}
|
|
1070
|
+
if (object.children[j].name.includes('countertop')) {
|
|
1062
1071
|
object.children[j].material = mat3;
|
|
1063
1072
|
object.children[j].receiveShadow = true;
|
|
1064
1073
|
object.children[j].castShadow = true;
|
|
1065
1074
|
addEdgesToMesh(object.children[j]);
|
|
1066
|
-
} else if (object.children[j].name.includes(
|
|
1075
|
+
} else if (object.children[j].name.includes('_interior_')) {
|
|
1067
1076
|
object.children[j].material = mat4;
|
|
1068
1077
|
} else if (object.children[j].type === OBJTYPE_MESH) {
|
|
1069
1078
|
object.children[j].material = mat2;
|
|
@@ -1073,7 +1082,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
1073
1082
|
}
|
|
1074
1083
|
}
|
|
1075
1084
|
}, function (reason) {
|
|
1076
|
-
console.log(
|
|
1085
|
+
console.log('loadGLTF failed for reason:', reason);
|
|
1077
1086
|
objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);
|
|
1078
1087
|
}).then(function () {
|
|
1079
1088
|
return _loadGLTFs(0);
|
|
@@ -1087,18 +1096,18 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1087
1096
|
var applianceMaterial = element.applianceMaterial;
|
|
1088
1097
|
if (applianceMaterial.metalness == undefined) applianceMaterial = applianceMaterial.toJS();
|
|
1089
1098
|
var onLoadItem = function onLoadItem(object) {
|
|
1090
|
-
var newAltitude = element.properties.get(
|
|
1091
|
-
var newUnit = element.properties.get(
|
|
1099
|
+
var newAltitude = element.properties.get('altitude').get('_length');
|
|
1100
|
+
var newUnit = element.properties.get('altitude').get('_unit') || 'in';
|
|
1092
1101
|
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(
|
|
1102
|
+
var newWidth = element.properties.get('width').get('_length');
|
|
1103
|
+
var newWidthUnit = element.properties.get('width').get('_unit') || 'in';
|
|
1104
|
+
newWidth = convert(newWidth).from(newWidthUnit).to('in');
|
|
1105
|
+
var newHeight = element.properties.get('height').get('_length');
|
|
1106
|
+
var newHeightUnit = element.properties.get('height').get('_unit') || 'in';
|
|
1107
|
+
newHeight = convert(newHeight).from(newHeightUnit).to('in');
|
|
1108
|
+
var newDepth = element.properties.get('depth').get('_length');
|
|
1109
|
+
var newDepthUnit = element.properties.get('depth').get('_unit') || 'in';
|
|
1110
|
+
newDepth = convert(newDepth).from(newDepthUnit).to('in');
|
|
1102
1111
|
object.scale.set(100 * newWidth / sizeinfo.width, 100 * newHeight / sizeinfo.height, 100 * newDepth / sizeinfo.depth);
|
|
1103
1112
|
// Normalize the origin of the object
|
|
1104
1113
|
var boundingBox = new Three.Box3().setFromObject(object);
|
|
@@ -1113,16 +1122,16 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1113
1122
|
var name = obj.name;
|
|
1114
1123
|
var texture,
|
|
1115
1124
|
textureLoader = new Three.TextureLoader();
|
|
1116
|
-
if (name.includes(
|
|
1125
|
+
if (name.includes('_black')) {
|
|
1117
1126
|
obj.material.roughness = 0.4;
|
|
1118
1127
|
obj.material.metalness = 1.0;
|
|
1119
1128
|
obj.material.color = new Three.Color(0, 0, 0);
|
|
1120
1129
|
obj.castShadow = true;
|
|
1121
1130
|
obj.receiveShadow = true;
|
|
1122
1131
|
return object;
|
|
1123
|
-
} else if (name.includes(
|
|
1124
|
-
texture = loadTexture(
|
|
1125
|
-
} else if (name.includes(
|
|
1132
|
+
} else if (name.includes('_wood')) {
|
|
1133
|
+
texture = loadTexture('/assets/img/texture/wood.jpg');
|
|
1134
|
+
} else if (name.includes('_glass')) {
|
|
1126
1135
|
// texture = loadTexture('/assets/img/texture/glass.jpg');
|
|
1127
1136
|
var material = new Three.MeshPhysicalMaterial({
|
|
1128
1137
|
transparent: true,
|
|
@@ -1137,7 +1146,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1137
1146
|
obj.castShadow = true;
|
|
1138
1147
|
obj.receiveShadow = true;
|
|
1139
1148
|
return object;
|
|
1140
|
-
} else if (name.includes(
|
|
1149
|
+
} else if (name.includes('_steel')) {
|
|
1141
1150
|
// texture = loadTexture('/assets/img/texture/steel.jpg');
|
|
1142
1151
|
var _material2 = new Three.MeshPhysicalMaterial({
|
|
1143
1152
|
roughness: 0.2,
|
|
@@ -1187,16 +1196,16 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1187
1196
|
// vertical line - 4 lines around object//////////////////////////
|
|
1188
1197
|
var vLineGeom = new Three.BufferGeometry();
|
|
1189
1198
|
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(
|
|
1199
|
+
vLineGeom.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices), 3));
|
|
1191
1200
|
var vLineGeom1 = new Three.BufferGeometry();
|
|
1192
1201
|
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(
|
|
1202
|
+
vLineGeom1.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices1), 3));
|
|
1194
1203
|
var vLineGeom2 = new Three.BufferGeometry();
|
|
1195
1204
|
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(
|
|
1205
|
+
vLineGeom1.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices2), 3));
|
|
1197
1206
|
var vLineGeom3 = new Three.BufferGeometry();
|
|
1198
1207
|
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(
|
|
1208
|
+
vLineGeom1.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices3), 3));
|
|
1200
1209
|
// ///////////////////////////////////////
|
|
1201
1210
|
|
|
1202
1211
|
// set names of transform object
|
|
@@ -1209,12 +1218,12 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1209
1218
|
color: 0xffffff,
|
|
1210
1219
|
colorWrite: true
|
|
1211
1220
|
}));
|
|
1212
|
-
rotFillObj.name =
|
|
1221
|
+
rotFillObj.name = 'rotate';
|
|
1213
1222
|
var upObj = new Three.Mesh(upwardsGeom, new Three.MeshBasicMaterial({
|
|
1214
1223
|
color: 0xffffff,
|
|
1215
1224
|
side: Three.DoubleSide
|
|
1216
1225
|
}));
|
|
1217
|
-
upObj.name =
|
|
1226
|
+
upObj.name = 'transUp';
|
|
1218
1227
|
var mBox = new Three.Mesh(moveBox, new Three.MeshBasicMaterial({
|
|
1219
1228
|
color: new Three.Color(0xdd6699).convertLinearToSRGB(),
|
|
1220
1229
|
side: Three.DoubleSide,
|
|
@@ -1254,7 +1263,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1254
1263
|
vLine3.translateY(0.1);
|
|
1255
1264
|
upObj.translateOnAxis(uVec, 1);
|
|
1256
1265
|
upObj.translateY(max.y - min.y + 0.05);
|
|
1257
|
-
mBox.name =
|
|
1266
|
+
mBox.name = 'TransformBox';
|
|
1258
1267
|
mBox.translateOnAxis(new Three.Vector3(uVec.x, uVec.y + (max.y - min.y) / 2, uVec.z), 1);
|
|
1259
1268
|
mBox.scale.set(1.01, 1.01, 1.01);
|
|
1260
1269
|
|
|
@@ -1282,7 +1291,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1282
1291
|
asrtObj.add(mBox);
|
|
1283
1292
|
asrtObj.scale.set(1 / object.scale.x, object.scale.y, 1 / object.scale.z);
|
|
1284
1293
|
// asrtObj.translateY(newAltitude / scalevec.y);
|
|
1285
|
-
asrtObj.name =
|
|
1294
|
+
asrtObj.name = 'TransformGizmo';
|
|
1286
1295
|
// add assets Objects Group
|
|
1287
1296
|
object.add(asrtObj);
|
|
1288
1297
|
|
|
@@ -1312,7 +1321,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1312
1321
|
cachedObject[element.type] = objGroup.clone(); //register to cachedObject
|
|
1313
1322
|
return onLoadItem(cachedObject[element.type].clone());
|
|
1314
1323
|
}
|
|
1315
|
-
if (keys[i] ===
|
|
1324
|
+
if (keys[i] === 'base') {
|
|
1316
1325
|
// if base Objects
|
|
1317
1326
|
i++;
|
|
1318
1327
|
return _loadGLTFs2(i);
|
|
@@ -1321,13 +1330,13 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1321
1330
|
|
|
1322
1331
|
// load base to start //
|
|
1323
1332
|
// return loadGLTF(dirName + structure["base"])
|
|
1324
|
-
return loadGLTF(structure[
|
|
1333
|
+
return loadGLTF(structure['base']).then(function (object) {
|
|
1325
1334
|
// let textureURL = `${API_SERVER_URL}/uploads/assets/default/steel.jpg`;
|
|
1326
1335
|
// let texture = loadTexture(textureURL);
|
|
1327
1336
|
// texture.wrapS = Three.MirroredRepeatWrapping;
|
|
1328
1337
|
// texture.wrapT = Three.MirroredRepeatWrapping;
|
|
1329
1338
|
|
|
1330
|
-
object.name =
|
|
1339
|
+
object.name = 'MainObject';
|
|
1331
1340
|
// NOTE: changed appliance emissive color to black
|
|
1332
1341
|
var mat2 = new Three.MeshStandardMaterial({
|
|
1333
1342
|
emissive: new Three.Color(0x0d0d0d).convertLinearToSRGB(),
|
|
@@ -1345,7 +1354,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1345
1354
|
}
|
|
1346
1355
|
objGroup = object;
|
|
1347
1356
|
}, function (reason) {
|
|
1348
|
-
console.log(
|
|
1357
|
+
console.log('loadGLTF failed for reason:', reason);
|
|
1349
1358
|
objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);
|
|
1350
1359
|
}).then(function () {
|
|
1351
1360
|
return _loadGLTFs2(0);
|
|
@@ -1358,21 +1367,21 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1358
1367
|
var onLoadItem = function onLoadItem(object) {
|
|
1359
1368
|
var width = {
|
|
1360
1369
|
length: sizeinfo.width,
|
|
1361
|
-
unit:
|
|
1370
|
+
unit: 'in'
|
|
1362
1371
|
};
|
|
1363
1372
|
var depth = {
|
|
1364
1373
|
length: sizeinfo.depth,
|
|
1365
|
-
unit:
|
|
1374
|
+
unit: 'in'
|
|
1366
1375
|
};
|
|
1367
1376
|
var height = {
|
|
1368
1377
|
length: sizeinfo.height,
|
|
1369
|
-
unit:
|
|
1378
|
+
unit: 'in'
|
|
1370
1379
|
};
|
|
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(
|
|
1380
|
+
var newWidth = convert(width.length).from(width.unit).to('cm');
|
|
1381
|
+
var newDepth = convert(depth.length).from(depth.unit).to('cm');
|
|
1382
|
+
var newHeight = convert(height.length).from(height.unit).to('cm');
|
|
1383
|
+
var newAltitude = element.properties.get('altitude').get('_length');
|
|
1384
|
+
var newUnit = element.properties.get('altitude').get('_unit') || 'in';
|
|
1376
1385
|
newAltitude = convert(newAltitude).from(newUnit).to(scene.unit);
|
|
1377
1386
|
|
|
1378
1387
|
//object.scale.set(newWidth, newHeight, newDepth);
|
|
@@ -1419,16 +1428,16 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1419
1428
|
// vertical line - 4 lines around object//////////////////////////
|
|
1420
1429
|
var vLineGeom = new Three.BufferGeometry();
|
|
1421
1430
|
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(
|
|
1431
|
+
vLineGeom.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices), 3));
|
|
1423
1432
|
var vLineGeom1 = new Three.BufferGeometry();
|
|
1424
1433
|
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(
|
|
1434
|
+
vLineGeom1.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices1), 3));
|
|
1426
1435
|
var vLineGeom2 = new Three.BufferGeometry();
|
|
1427
1436
|
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(
|
|
1437
|
+
vLineGeom2.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices2), 3));
|
|
1429
1438
|
var vLineGeom3 = new Three.BufferGeometry();
|
|
1430
1439
|
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(
|
|
1440
|
+
vLineGeom3.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices3), 3));
|
|
1432
1441
|
// ///////////////////////////////////////
|
|
1433
1442
|
|
|
1434
1443
|
// set names of transform object
|
|
@@ -1441,12 +1450,12 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1441
1450
|
color: 0xffffff,
|
|
1442
1451
|
colorWrite: true
|
|
1443
1452
|
}));
|
|
1444
|
-
rotFillObj.name =
|
|
1453
|
+
rotFillObj.name = 'rotate';
|
|
1445
1454
|
var upObj = new Three.Mesh(upwardsGeom, new Three.MeshBasicMaterial({
|
|
1446
1455
|
color: 0xffffff,
|
|
1447
1456
|
side: Three.DoubleSide
|
|
1448
1457
|
}));
|
|
1449
|
-
upObj.name =
|
|
1458
|
+
upObj.name = 'transUp';
|
|
1450
1459
|
var mBox = new Three.Mesh(moveBox, new Three.MeshBasicMaterial({
|
|
1451
1460
|
color: 0xdd6699,
|
|
1452
1461
|
side: Three.DoubleSide,
|
|
@@ -1488,7 +1497,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1488
1497
|
//rotObj.translateOnAxis(uVec, 1);
|
|
1489
1498
|
upObj.translateOnAxis(uVec, 1);
|
|
1490
1499
|
upObj.translateY(max.y - min.y);
|
|
1491
|
-
mBox.name =
|
|
1500
|
+
mBox.name = 'TransformBox';
|
|
1492
1501
|
mBox.translateOnAxis(new Three.Vector3(uVec.x, uVec.y + (max.y - min.y) / 2, uVec.z), 1);
|
|
1493
1502
|
mBox.scale.set(1.01, 1.01, 1.01);
|
|
1494
1503
|
|
|
@@ -1517,7 +1526,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1517
1526
|
asrtObj.add(mBox);
|
|
1518
1527
|
asrtObj.scale.set(1, 1, 1);
|
|
1519
1528
|
//asrtObj.translateY(newAltitude / scalevec.y);
|
|
1520
|
-
asrtObj.name =
|
|
1529
|
+
asrtObj.name = 'TransformGizmo';
|
|
1521
1530
|
// add assets Objects Group
|
|
1522
1531
|
object.add(asrtObj);
|
|
1523
1532
|
|
|
@@ -1550,7 +1559,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1550
1559
|
cachedObject[element.type] = objGroup.clone(); //register to cachedObject
|
|
1551
1560
|
return onLoadItem(cachedObject[element.type].clone());
|
|
1552
1561
|
}
|
|
1553
|
-
if (keys[i] ===
|
|
1562
|
+
if (keys[i] === 'base') {
|
|
1554
1563
|
// if base Objects
|
|
1555
1564
|
i++;
|
|
1556
1565
|
return _loadGLTFs3(i);
|
|
@@ -1559,13 +1568,13 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1559
1568
|
|
|
1560
1569
|
// load base to start //
|
|
1561
1570
|
// return loadGLTF(dirName + structure["base"])
|
|
1562
|
-
return loadGLTF(structure[
|
|
1571
|
+
return loadGLTF(structure['base']).then(function (object) {
|
|
1563
1572
|
// let textureURL = `${API_SERVER_URL}/uploads/assets/default/steel.jpg`;
|
|
1564
1573
|
// let texture = loadTexture(textureURL);
|
|
1565
1574
|
// texture.wrapS = Three.MirroredRepeatWrapping;
|
|
1566
1575
|
// texture.wrapT = Three.MirroredRepeatWrapping;
|
|
1567
1576
|
|
|
1568
|
-
object.name =
|
|
1577
|
+
object.name = 'MainObject';
|
|
1569
1578
|
var mat2 = new Three.MeshStandardMaterial({
|
|
1570
1579
|
emissive: new Three.Color(0x666666).convertLinearToSRGB(),
|
|
1571
1580
|
metalness: 0.7,
|
|
@@ -1581,7 +1590,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1581
1590
|
}
|
|
1582
1591
|
objGroup = object;
|
|
1583
1592
|
}, function (reason) {
|
|
1584
|
-
console.log(
|
|
1593
|
+
console.log('loadGLTF failed for reason:', reason);
|
|
1585
1594
|
objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);
|
|
1586
1595
|
}).then(function () {
|
|
1587
1596
|
return _loadGLTFs3(0);
|