kitchen-simulator 4.0.11-react-18 → 4.1.0-react-18
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/es/LiteKitchenConfigurator.js +14 -4
- package/es/assets/img/png/helper/video_preview_start.png +0 -0
- package/es/catalog/factories/area-factory-3d.js +17 -17
- package/es/catalog/utils/item-loader.js +197 -197
- package/es/class/item.js +7 -0
- package/es/components/viewer2d/viewer2d.js +7 -7
- package/es/components/viewer3d/viewer3d.js +28 -12
- package/lib/LiteKitchenConfigurator.js +14 -4
- package/lib/assets/img/png/helper/video_preview_start.png +0 -0
- package/lib/catalog/factories/area-factory-3d.js +14 -14
- package/lib/catalog/utils/item-loader.js +194 -194
- package/lib/class/item.js +7 -0
- package/lib/components/viewer2d/viewer2d.js +7 -7
- package/lib/components/viewer3d/viewer3d.js +28 -12
- package/package.json +1 -1
|
@@ -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) {
|
|
@@ -81,41 +81,41 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
81
81
|
el_euro_shape_svg = _element.doorStyle.doorStyles.euro_shape_svg;
|
|
82
82
|
}
|
|
83
83
|
if (el_euro_length === undefined && el_euro_width === undefined) {
|
|
84
|
-
el_DSN =
|
|
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,20 @@ 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
210
|
var bbox = event.target.getBoundingClientRect();
|
|
211
|
-
if (document.getElementById(
|
|
212
|
-
document.getElementById(
|
|
213
|
-
document.getElementById(
|
|
214
|
-
document.getElementById(
|
|
211
|
+
if (document.getElementById("warning_box_2d")) {
|
|
212
|
+
document.getElementById("warning_box_2d").style.display = "flex";
|
|
213
|
+
document.getElementById("warning_box_2d").style.top = "".concat(bbox.top - 60, "px");
|
|
214
|
+
document.getElementById("warning_box_2d").style.left = "".concat(bbox.left, "px");
|
|
215
215
|
}
|
|
216
216
|
},
|
|
217
217
|
onMouseLeave: function onMouseLeave() {
|
|
218
|
-
if (document.getElementById(
|
|
219
|
-
document.getElementById(
|
|
218
|
+
if (document.getElementById("warning_box_2d")) {
|
|
219
|
+
document.getElementById("warning_box_2d").style.display = "none";
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
222
|
}, /*#__PURE__*/React.createElement("circle", {
|
|
@@ -235,7 +235,7 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
235
235
|
href: buttons[1].thumbnail
|
|
236
236
|
})), /*#__PURE__*/React.createElement("g", {
|
|
237
237
|
style: {
|
|
238
|
-
cursor:
|
|
238
|
+
cursor: "pointer",
|
|
239
239
|
transform: "translate(".concat(transX, "px, ").concat(transY, "px)")
|
|
240
240
|
},
|
|
241
241
|
"data-element-root": true,
|
|
@@ -281,7 +281,7 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
281
281
|
}, /*#__PURE__*/React.createElement("image", {
|
|
282
282
|
preserveAspectRatio: "none",
|
|
283
283
|
style: {
|
|
284
|
-
pointerEvents:
|
|
284
|
+
pointerEvents: "none"
|
|
285
285
|
},
|
|
286
286
|
href: svg_url,
|
|
287
287
|
width: "".concat(newWidth + 2 * padding_width),
|
|
@@ -294,16 +294,16 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
|
|
|
294
294
|
y: "".concat(padding_depth),
|
|
295
295
|
width: "".concat(newWidth),
|
|
296
296
|
height: "".concat(newDepth),
|
|
297
|
-
visibility:
|
|
297
|
+
visibility: "hidden",
|
|
298
298
|
style: {
|
|
299
|
-
pointerEvents:
|
|
299
|
+
pointerEvents: "all",
|
|
300
300
|
opacity: 0.7,
|
|
301
|
-
postion:
|
|
301
|
+
postion: "relative"
|
|
302
302
|
}
|
|
303
303
|
}), /*#__PURE__*/React.createElement("g", {
|
|
304
304
|
transform: "translate(".concat(padding_width, ",").concat(padding_depth, ")")
|
|
305
|
-
}, txtContent)), element.category ===
|
|
306
|
-
visibility: isWarningItem(element) ?
|
|
305
|
+
}, txtContent)), element.category === "cabinet" && /*#__PURE__*/React.createElement("g", {
|
|
306
|
+
visibility: isWarningItem(element) ? "visible" : "hidden"
|
|
307
307
|
}, warning_buttons)));
|
|
308
308
|
} else {
|
|
309
309
|
rendered = /*#__PURE__*/React.createElement("g", {
|
|
@@ -390,38 +390,38 @@ var assignUVs = function assignUVs(geometry) {
|
|
|
390
390
|
export function render3DItem(element, layer, scene, sizeinfo, structure_json, is_corner) {
|
|
391
391
|
var mode = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
|
|
392
392
|
if (element.doorStyle.constructor !== Map) {
|
|
393
|
-
element = element.set(
|
|
393
|
+
element = element.set("doorStyle", fromJS(element.doorStyle));
|
|
394
394
|
}
|
|
395
|
-
if (element.doorStyle.toJS().handle_gltf !==
|
|
395
|
+
if (element.doorStyle.toJS().handle_gltf !== "") {
|
|
396
396
|
// Check element has doorHandle
|
|
397
397
|
for (var i = 1; i < 10; i++) {
|
|
398
|
-
element = element.setIn([
|
|
399
|
-
element = element.setIn([
|
|
400
|
-
element = element.setIn([
|
|
398
|
+
element = element.setIn(["doorStyle", "doorStyles", "door_handle_" + i + "_gltf"], element.doorStyle.toJS().handle_gltf);
|
|
399
|
+
element = element.setIn(["doorStyle", "doorStyles", "fixed_drawer_door_handle_" + i + "_gltf"], element.doorStyle.toJS().handle_gltf);
|
|
400
|
+
element = element.setIn(["doorStyle", "doorStyles", "drawer_door_handle_" + i + "_gltf"], element.doorStyle.toJS().handle_gltf);
|
|
401
401
|
}
|
|
402
402
|
}
|
|
403
403
|
var width = {
|
|
404
404
|
length: sizeinfo.width,
|
|
405
|
-
unit:
|
|
405
|
+
unit: "in"
|
|
406
406
|
};
|
|
407
407
|
var depth = {
|
|
408
408
|
length: sizeinfo.depth,
|
|
409
|
-
unit:
|
|
409
|
+
unit: "in"
|
|
410
410
|
};
|
|
411
411
|
var height = {
|
|
412
412
|
length: sizeinfo.height,
|
|
413
|
-
unit:
|
|
413
|
+
unit: "in"
|
|
414
414
|
};
|
|
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(
|
|
415
|
+
var newWidth = convert(width.length).from(width.unit).to("in");
|
|
416
|
+
var newDepth = convert(depth.length).from(depth.unit).to("in");
|
|
417
|
+
var newHeight = convert(height.length).from(height.unit).to("in");
|
|
418
|
+
var mainName = ""; // to get name structure//
|
|
419
|
+
if (element.properties.get("width")) newWidth = element.getIn(["properties", "width", "_length"]);
|
|
420
|
+
if (element.properties.get("depth")) newDepth = element.getIn(["properties", "depth", "_length"]);
|
|
421
|
+
if (element.properties.get("height")) newHeight = element.getIn(["properties", "height", "_length"]);
|
|
422
422
|
var structure = structure_json;
|
|
423
423
|
// structure.push({name:'model', url: '/assets/model/DCM.gltf'});
|
|
424
|
-
structure.model =
|
|
424
|
+
structure.model = "/assets/model/DCM.gltf";
|
|
425
425
|
var placeholders = structure.placeholders;
|
|
426
426
|
var doorStyles = null;
|
|
427
427
|
var color = 0xffffff,
|
|
@@ -431,20 +431,20 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
431
431
|
if (layer.toJS().counterTop.uri) {
|
|
432
432
|
counterTop.uri = layer.toJS().counterTop.uri;
|
|
433
433
|
}
|
|
434
|
-
if (
|
|
434
|
+
if ("name" in element.doorStyle) {
|
|
435
435
|
doorStyles = new Map(element.doorStyle.doorStyles);
|
|
436
436
|
color = element.doorStyle.color;
|
|
437
437
|
glossness = element.doorStyle.glossness;
|
|
438
438
|
handleMaterial.metalness = element.doorStyle.metalness;
|
|
439
439
|
handleMaterial.roughness = element.doorStyle.roughness;
|
|
440
440
|
} else if (element.doorStyle != null && element.doorStyle) {
|
|
441
|
-
doorStyles = element.doorStyle.get(
|
|
442
|
-
color = element.doorStyle.get(
|
|
443
|
-
glossness = element.doorStyle.get(
|
|
444
|
-
handleMaterial.metalness = element.doorStyle.get(
|
|
445
|
-
handleMaterial.roughness = element.doorStyle.get(
|
|
441
|
+
doorStyles = element.doorStyle.get("doorStyles");
|
|
442
|
+
color = element.doorStyle.get("color");
|
|
443
|
+
glossness = element.doorStyle.get("glossness");
|
|
444
|
+
handleMaterial.metalness = element.doorStyle.get("metalness");
|
|
445
|
+
handleMaterial.roughness = element.doorStyle.get("roughness");
|
|
446
446
|
}
|
|
447
|
-
if (color === undefined) color =
|
|
447
|
+
if (color === undefined) color = "#ffffff";
|
|
448
448
|
if (glossness === undefined) glossness = 1;
|
|
449
449
|
var tempDoorStyles = doorStyles.toJS();
|
|
450
450
|
var tempPlaceholders = structure.tempPlaceholders;
|
|
@@ -469,13 +469,13 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
469
469
|
areaMaterial.side = Three.DoubleSide;
|
|
470
470
|
// areaMaterial.envMap = textureCube;
|
|
471
471
|
if (isEmpty(doorStyles)) {
|
|
472
|
-
var normalMap = doorStyles.get(
|
|
472
|
+
var normalMap = doorStyles.get("base") || INITIAL_NORMAL_MAP;
|
|
473
473
|
var interiortexture = loadTexture(normalMap);
|
|
474
474
|
applyTexture(areaMaterial, interiortexture, 100, 100);
|
|
475
475
|
}
|
|
476
476
|
var object1 = object;
|
|
477
|
-
var newAltitude = element.properties.get(
|
|
478
|
-
var newUnit = element.properties.get(
|
|
477
|
+
var newAltitude = element.properties.get("altitude").get("_length");
|
|
478
|
+
var newUnit = element.properties.get("altitude").get("_unit") || "in";
|
|
479
479
|
newAltitude = convert(newAltitude).from(newUnit).to(scene.unit);
|
|
480
480
|
var _element = element.toJS();
|
|
481
481
|
if (!_element.doorStyle.doorStyles.is_euro_cds) {
|
|
@@ -492,27 +492,27 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
492
492
|
var door_match = child.name.match(matchStr);
|
|
493
493
|
if (door_match && door_match.length > 2) {
|
|
494
494
|
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 ?
|
|
495
|
+
var rotate_match_text = element.properties.toJS().flip_doorhandle ? "rotate_L" : "rotate_R";
|
|
496
|
+
if (door_match[2] === "_L") {
|
|
497
|
+
rotate_match_text = element.properties.toJS().flip_doorhandle ? "rotate_R" : "rotate_L";
|
|
498
498
|
}
|
|
499
499
|
var isDoubleDoor = door_match && door_match[2] !== undefined;
|
|
500
500
|
(_child$children$ = child.children[0]) === null || _child$children$ === void 0 || _child$children$.children.forEach(function (it) {
|
|
501
501
|
var _it$name, _it$children;
|
|
502
|
-
if (it !== null && it !== void 0 && (_it$name = it.name) !== null && _it$name !== void 0 && _it$name.includes(
|
|
502
|
+
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
503
|
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(
|
|
504
|
+
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
505
|
var tmp = (object1 === null || object1 === void 0 || (_object1$children = object1.children) === null || _object1$children === void 0 ? void 0 : _object1$children.filter(function (item) {
|
|
506
506
|
return (item === null || item === void 0 ? void 0 : item.name) === tname;
|
|
507
507
|
})) || [];
|
|
508
508
|
var t0 = tmp[0];
|
|
509
|
-
var filterStr = t0 !== null && t0 !== void 0 && (_t0$name = t0.name) !== null && _t0$name !== void 0 && _t0$name.endsWith(
|
|
509
|
+
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
510
|
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
511
|
var _item$name;
|
|
512
512
|
return item === null || item === void 0 || (_item$name = item.name) === null || _item$name === void 0 ? void 0 : _item$name.endsWith(filterStr);
|
|
513
513
|
})) || [];
|
|
514
514
|
var tpos0 = tposArr[0];
|
|
515
|
-
if (it.name.includes(
|
|
515
|
+
if (it.name.includes("base_end")) {
|
|
516
516
|
var _it$position$x, _it$position, _it$position$y, _it$position2, _tpos0$position$x, _tpos0$position;
|
|
517
517
|
door_animate_offset[child.name] = {
|
|
518
518
|
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 +580,16 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
580
580
|
// vertical line - 4 lines around object//////////////////////////
|
|
581
581
|
var vLineGeom = new Three.BufferGeometry();
|
|
582
582
|
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(
|
|
583
|
+
vLineGeom.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices), 3));
|
|
584
584
|
var vLineGeom1 = new Three.BufferGeometry();
|
|
585
585
|
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(
|
|
586
|
+
vLineGeom1.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices1), 3));
|
|
587
587
|
var vLineGeom2 = new Three.BufferGeometry();
|
|
588
588
|
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(
|
|
589
|
+
vLineGeom2.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices2), 3));
|
|
590
590
|
var vLineGeom3 = new Three.BufferGeometry();
|
|
591
591
|
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(
|
|
592
|
+
vLineGeom3.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices3), 3));
|
|
593
593
|
// ///////////////////////////////////////
|
|
594
594
|
|
|
595
595
|
// set names of transform object
|
|
@@ -602,12 +602,12 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
602
602
|
color: new Three.Color(0xffffff).convertLinearToSRGB(),
|
|
603
603
|
colorWrite: true
|
|
604
604
|
}));
|
|
605
|
-
rotFillObj.name =
|
|
605
|
+
rotFillObj.name = "rotate";
|
|
606
606
|
var upObj = new Three.Mesh(upwardsGeom, new Three.MeshBasicMaterial({
|
|
607
607
|
color: new Three.Color(0xffffff).convertLinearToSRGB(),
|
|
608
608
|
side: Three.DoubleSide
|
|
609
609
|
}));
|
|
610
|
-
upObj.name =
|
|
610
|
+
upObj.name = "transUp";
|
|
611
611
|
var mBox = new Three.Mesh(moveBox, new Three.MeshBasicMaterial({
|
|
612
612
|
color: new Three.Color(0xdd6699).convertLinearToSRGB(),
|
|
613
613
|
side: Three.DoubleSide,
|
|
@@ -649,7 +649,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
649
649
|
//rotObj.translateOnAxis(uVec, 1);
|
|
650
650
|
upObj.translateOnAxis(uVec, 1);
|
|
651
651
|
upObj.translateY(max.y - min.y);
|
|
652
|
-
mBox.name =
|
|
652
|
+
mBox.name = "TransformBox";
|
|
653
653
|
mBox.translateOnAxis(new Three.Vector3(uVec.x, uVec.y + (max.y - min.y) / 2, uVec.z), 1);
|
|
654
654
|
mBox.scale.set(1.01, 1.01, 1.01);
|
|
655
655
|
|
|
@@ -678,7 +678,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
678
678
|
asrtObj.add(mBox);
|
|
679
679
|
asrtObj.scale.set(1 / object.scale.x, object.scale.y, 1 / object.scale.z);
|
|
680
680
|
//asrtObj.translateY(newAltitude / scalevec.y);
|
|
681
|
-
asrtObj.name =
|
|
681
|
+
asrtObj.name = "TransformGizmo";
|
|
682
682
|
// add assets Objects Group
|
|
683
683
|
object1.add(asrtObj);
|
|
684
684
|
|
|
@@ -691,7 +691,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
691
691
|
SceneCreator.getDistances(layer);
|
|
692
692
|
}, 100);
|
|
693
693
|
}
|
|
694
|
-
var flip_doorhandle = element.properties.get(
|
|
694
|
+
var flip_doorhandle = element.properties.get("flip_doorhandle");
|
|
695
695
|
if (flip_doorhandle) {
|
|
696
696
|
SceneCreator.updateDoorHandleMesh(element, object1, true);
|
|
697
697
|
}
|
|
@@ -707,14 +707,14 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
707
707
|
transparency: 0.8
|
|
708
708
|
});
|
|
709
709
|
obj.material = material;
|
|
710
|
-
} else if (name.startsWith(
|
|
710
|
+
} else if (name.startsWith("sink_")) {
|
|
711
711
|
// texture = loadTexture('/assets/img/texture/steel.jpg');
|
|
712
712
|
|
|
713
713
|
var _material;
|
|
714
714
|
// Get color from name
|
|
715
|
-
if (name.includes(
|
|
715
|
+
if (name.includes("black") || name.includes("white")) {
|
|
716
716
|
var _color2;
|
|
717
|
-
if (name.includes(
|
|
717
|
+
if (name.includes("black")) {
|
|
718
718
|
_color2 = new Three.Color(0x555555).convertLinearToSRGB();
|
|
719
719
|
} else {
|
|
720
720
|
_color2 = 0xffffff;
|
|
@@ -747,14 +747,14 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
747
747
|
var open_doors = element.toJS().properties.open_doors;
|
|
748
748
|
var object_match = obj.name.match(/\d_(interior_drawer[^LR1-9]*)(_[LR1-9])?$/) || obj.name.match(matchStr);
|
|
749
749
|
if (object_match && object_match.length > 2) {
|
|
750
|
-
var isDoor = object_match[1] ===
|
|
750
|
+
var isDoor = object_match[1] === "door";
|
|
751
751
|
if (isDoor) {
|
|
752
752
|
var offsetData = object1.userData.door_animate_offset[obj.name];
|
|
753
753
|
// Open Door
|
|
754
|
-
animateDoor(offsetData, obj, open_doors, element.toJS(), is_corner,
|
|
754
|
+
animateDoor(offsetData, obj, open_doors, element.toJS(), is_corner, "Opened2D");
|
|
755
755
|
} else {
|
|
756
756
|
// Open Drawer
|
|
757
|
-
translateDrawer(element.toJS(), obj, open_doors,
|
|
757
|
+
translateDrawer(element.toJS(), obj, open_doors, "Opened2D");
|
|
758
758
|
}
|
|
759
759
|
}
|
|
760
760
|
}
|
|
@@ -764,30 +764,30 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
764
764
|
// keys in structure
|
|
765
765
|
var keys = Object.keys(structure);
|
|
766
766
|
// if exist in cached Objects
|
|
767
|
-
if (element.type + color +
|
|
768
|
-
var _objGroup = cachedObject[element.type + color +
|
|
767
|
+
if (element.type + color + "doorStyle" + JSON.stringify(doorStyles.toJS()) + element.counterTop.uri in cachedObject) {
|
|
768
|
+
var _objGroup = cachedObject[element.type + color + "doorStyle" + JSON.stringify(doorStyles.toJS())].clone();
|
|
769
769
|
return Promise.resolve(onLoadItem(_objGroup.clone()));
|
|
770
770
|
}
|
|
771
771
|
|
|
772
772
|
// base Object/////
|
|
773
773
|
var objGroup = null;
|
|
774
774
|
var _loadGLTFs = function loadGLTFs(i) {
|
|
775
|
-
if (keys[i] ===
|
|
775
|
+
if (keys[i] === "animation") {
|
|
776
776
|
// if animation info
|
|
777
777
|
i++;
|
|
778
778
|
return _loadGLTFs(i);
|
|
779
779
|
}
|
|
780
|
-
if (keys[i] ===
|
|
780
|
+
if (keys[i] === "placeholders") {
|
|
781
781
|
// if placeholders group
|
|
782
782
|
i++;
|
|
783
783
|
return _loadGLTFs(i);
|
|
784
784
|
}
|
|
785
785
|
if (i === keys.length) {
|
|
786
786
|
// if end of keys
|
|
787
|
-
cachedObject[element.type + color +
|
|
788
|
-
return onLoadItem(cachedObject[element.type + color +
|
|
787
|
+
cachedObject[element.type + color + "doorStyle" + JSON.stringify(doorStyles.toJS())] = objGroup.clone(); //register to cachedObject
|
|
788
|
+
return onLoadItem(cachedObject[element.type + color + "doorStyle" + JSON.stringify(doorStyles.toJS())].clone());
|
|
789
789
|
}
|
|
790
|
-
if (keys[i] ===
|
|
790
|
+
if (keys[i] === "base") {
|
|
791
791
|
// if base Objects
|
|
792
792
|
i++;
|
|
793
793
|
return _loadGLTFs(i);
|
|
@@ -800,15 +800,15 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
800
800
|
}
|
|
801
801
|
for (var j = 0; j < placeholderStructure.length; j++) {
|
|
802
802
|
var phData = placeholderStructure[j];
|
|
803
|
-
var phs = phData.split(
|
|
804
|
-
var temp = phData.split(
|
|
803
|
+
var phs = phData.split("/");
|
|
804
|
+
var temp = phData.split("/");
|
|
805
805
|
// placeholder remake////////////////
|
|
806
806
|
for (var k = 0; k < phs.length; k++) {
|
|
807
807
|
if (phs[k] in placeholders) {
|
|
808
808
|
var placeholderphs = placeholders[phs[k]];
|
|
809
809
|
var key = placeholderStructure.length / placeholderphs.length;
|
|
810
810
|
phs[k] = placeholderphs[Math.floor(j / key)];
|
|
811
|
-
var splitedData = phs[k].split(
|
|
811
|
+
var splitedData = phs[k].split("/");
|
|
812
812
|
if (splitedData.length > 1) {
|
|
813
813
|
phs[k] = splitedData[splitedData.length - 1];
|
|
814
814
|
for (var m = splitedData.length - 2; m >= 0; m--) {
|
|
@@ -819,41 +819,41 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
819
819
|
k = -1;
|
|
820
820
|
continue;
|
|
821
821
|
}
|
|
822
|
-
if (phs[k].indexOf(
|
|
822
|
+
if (phs[k].indexOf("ph") == -1) {
|
|
823
823
|
var _url = structure[temp[k - 1]];
|
|
824
|
-
if (temp[k - 1] +
|
|
825
|
-
if (structure[temp[k - 1] +
|
|
826
|
-
_url = structure[temp[k - 1] +
|
|
824
|
+
if (temp[k - 1] + "_doorStyle" + element.type + "doorStyle" + JSON.stringify(doorStyles.toJS()) in structure) {
|
|
825
|
+
if (structure[temp[k - 1] + "_doorStyle" + element.type + "doorStyle" + JSON.stringify(doorStyles.toJS())] != null) {
|
|
826
|
+
_url = structure[temp[k - 1] + "_doorStyle" + element.type + "doorStyle" + JSON.stringify(doorStyles.toJS())];
|
|
827
827
|
}
|
|
828
828
|
}
|
|
829
829
|
if (_typeof(_url) == Array) _url = _url[0];
|
|
830
|
-
var uData = _url.split(
|
|
830
|
+
var uData = _url.split("/");
|
|
831
831
|
uData = uData[uData.length - 1];
|
|
832
832
|
uData = uData.slice(0, -5);
|
|
833
|
-
var datas = uData.split(
|
|
833
|
+
var datas = uData.split("_");
|
|
834
834
|
uData = datas[1];
|
|
835
835
|
for (var _i = 2; _i < datas.length; _i++) {
|
|
836
|
-
uData +=
|
|
836
|
+
uData += "_";
|
|
837
837
|
uData += datas[_i];
|
|
838
838
|
}
|
|
839
|
-
uData = mainName.replace(
|
|
840
|
-
phs[k] =
|
|
839
|
+
uData = mainName.replace("main", uData);
|
|
840
|
+
phs[k] = "ph_" + uData + "_" + phs[k];
|
|
841
841
|
}
|
|
842
842
|
}
|
|
843
843
|
phsArray.push(phs);
|
|
844
844
|
}
|
|
845
845
|
var url = structure[keys[i]];
|
|
846
|
-
var normalMap =
|
|
847
|
-
var urlData = url.split(
|
|
846
|
+
var normalMap = "";
|
|
847
|
+
var urlData = url.split("/");
|
|
848
848
|
for (var _j = 0; _j < element.submodule.size; _j++) {
|
|
849
|
-
var replaceUrlData = element.submodule.get(_j).split(
|
|
849
|
+
var replaceUrlData = element.submodule.get(_j).split("/");
|
|
850
850
|
if (urlData.includes(replaceUrlData[replaceUrlData.length - 2])) {
|
|
851
851
|
url = element.submodule.get(_j);
|
|
852
852
|
break;
|
|
853
853
|
}
|
|
854
854
|
}
|
|
855
855
|
for (var _j2 = 0; _j2 < element.normalMap.size; _j2++) {
|
|
856
|
-
var normalMapData = element.normalMap.get(_j2).split(
|
|
856
|
+
var normalMapData = element.normalMap.get(_j2).split("/");
|
|
857
857
|
if (urlData.includes(normalMapData[normalMapData.length - 2])) {
|
|
858
858
|
normalMap = element.normalMap.get(_j2);
|
|
859
859
|
break;
|
|
@@ -865,15 +865,15 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
865
865
|
if (phsArray.length > 0) {
|
|
866
866
|
// let loadUrl = dirName + url;
|
|
867
867
|
var loadUrl = url;
|
|
868
|
-
if (doorStyles.get(keys[i] +
|
|
869
|
-
loadUrl = doorStyles.get(keys[i] +
|
|
870
|
-
structure[keys[i] +
|
|
868
|
+
if (doorStyles.get(keys[i] + "_gltf") != undefined) {
|
|
869
|
+
loadUrl = doorStyles.get(keys[i] + "_gltf");
|
|
870
|
+
structure[keys[i] + "_doorStyle" + element.type + "doorStyle" + JSON.stringify(doorStyles.toJS())] = loadUrl;
|
|
871
871
|
} else {
|
|
872
|
-
structure[keys[i] +
|
|
872
|
+
structure[keys[i] + "_doorStyle" + element.type + "doorStyle" + JSON.stringify(doorStyles.toJS())] = null;
|
|
873
873
|
}
|
|
874
874
|
return loadGLTF(loadUrl).then(function (object) {
|
|
875
|
-
if (normalMap !==
|
|
876
|
-
var normalUrl = normalMap.split(
|
|
875
|
+
if (normalMap !== "") {
|
|
876
|
+
var normalUrl = normalMap.split(".")[0] + "-normal." + normalMap.split(".")[1];
|
|
877
877
|
var t = loadTexture(normalMap);
|
|
878
878
|
var _m = loadTexture(normalUrl);
|
|
879
879
|
var mat2 = new Three.MeshStandardMaterial({
|
|
@@ -897,7 +897,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
897
897
|
// let normalMap = "catalog/items/doorstyle/" + doorStyles.get(keys[i]);
|
|
898
898
|
var _normalMap = doorStyles.get(keys[i]) || INITIAL_NORMAL_MAP;
|
|
899
899
|
var _mat;
|
|
900
|
-
if (_normalMap ===
|
|
900
|
+
if (_normalMap === "") {
|
|
901
901
|
var examplecolor = new Three.Color(parseInt(color.slice(1), 16)).convertLinearToSRGB();
|
|
902
902
|
_mat = new Three.MeshStandardMaterial({
|
|
903
903
|
color: examplecolor,
|
|
@@ -921,8 +921,8 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
921
921
|
object.children[_j4].material = _mat;
|
|
922
922
|
object.children[_j4].receiveShadow = true;
|
|
923
923
|
object.children[_j4].castShadow = true;
|
|
924
|
-
!object.children[_j4].name.includes(
|
|
925
|
-
} else if (!object.children[_j4].name.startsWith(
|
|
924
|
+
!object.children[_j4].name.includes("handle") && addEdgesToMesh(object.children[_j4]);
|
|
925
|
+
} else if (!object.children[_j4].name.startsWith("ph_") && object.children[_j4].type === OBJTYPE_GROUP) {
|
|
926
926
|
object.children[_j4].traverse(function (prim) {
|
|
927
927
|
prim.material = _mat;
|
|
928
928
|
prim.receiveShadow = true;
|
|
@@ -962,10 +962,10 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
962
962
|
} else {
|
|
963
963
|
if (parent.children[_k].name == placeholder) {
|
|
964
964
|
var tmp = object.clone();
|
|
965
|
-
if (placeholder.includes(
|
|
965
|
+
if (placeholder.includes("drawer_door") && placeholder.includes("_handle")) {
|
|
966
966
|
tmp.rotateZ(Math.PI / 2);
|
|
967
967
|
}
|
|
968
|
-
if (placeholder.includes(
|
|
968
|
+
if (placeholder.includes("_handle") && tmp.children[0].type === OBJTYPE_MESH) {
|
|
969
969
|
// NOTE: change metalness of handle
|
|
970
970
|
tmp.children[0].material.metalness = 1;
|
|
971
971
|
// handleMaterial.metalness || 0.2;
|
|
@@ -979,25 +979,25 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
979
979
|
}
|
|
980
980
|
}
|
|
981
981
|
}, function (reason) {
|
|
982
|
-
console.log(
|
|
982
|
+
console.log("loadGLTF failed for reason:", reason);
|
|
983
983
|
}).then(function () {
|
|
984
984
|
i++;
|
|
985
985
|
return _loadGLTFs(i);
|
|
986
986
|
});
|
|
987
987
|
}
|
|
988
988
|
};
|
|
989
|
-
return loadGLTF(structure[
|
|
990
|
-
object.name =
|
|
989
|
+
return loadGLTF(structure["base"]).then(function (object) {
|
|
990
|
+
object.name = "MainObject";
|
|
991
991
|
object.receiveShadow = true;
|
|
992
992
|
objGroup = object;
|
|
993
993
|
if (!isEmpty(doorStyles)) {
|
|
994
|
-
var normalMap = doorStyles.get(
|
|
994
|
+
var normalMap = doorStyles.get("base") || INITIAL_NORMAL_MAP;
|
|
995
995
|
if (counterTop.uri === undefined) {
|
|
996
996
|
try {
|
|
997
997
|
counterTop = counterTop.toJS();
|
|
998
998
|
} catch (error) {
|
|
999
999
|
//@todo THIS IS A TEMPORARY FIX FOR COUNTERTOP TEXTURE UNDEFINED ISSUE
|
|
1000
|
-
counterTop.uri =
|
|
1000
|
+
counterTop.uri = "https://media.test.diydesignspace.com/uploads/CountTop/202105074107_5/texture/Unique_Calcatta_texture.jpg";
|
|
1001
1001
|
console.log(error);
|
|
1002
1002
|
}
|
|
1003
1003
|
}
|
|
@@ -1005,7 +1005,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
1005
1005
|
counterTop.uri = layer.toJS().counterTop.uri;
|
|
1006
1006
|
}
|
|
1007
1007
|
var countTopMap = counterTop.uri;
|
|
1008
|
-
var interiorMap = doorStyles.get(
|
|
1008
|
+
var interiorMap = doorStyles.get("interior");
|
|
1009
1009
|
var countT = loadTexture(countTopMap);
|
|
1010
1010
|
countT.wrapS = Three.RepeatWrapping;
|
|
1011
1011
|
countT.wrapT = Three.RepeatWrapping;
|
|
@@ -1014,7 +1014,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
1014
1014
|
var mat2 = null,
|
|
1015
1015
|
mat3 = null,
|
|
1016
1016
|
mat4 = null;
|
|
1017
|
-
if (normalMap ===
|
|
1017
|
+
if (normalMap === "") {
|
|
1018
1018
|
mat2 = new Three.MeshStandardMaterial({
|
|
1019
1019
|
color: examplecolor,
|
|
1020
1020
|
metalness: glossness === 1 ? params.metalness : params.metalness_glossy,
|
|
@@ -1031,11 +1031,11 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
1031
1031
|
}
|
|
1032
1032
|
// mat2.envMap = textureCube;
|
|
1033
1033
|
|
|
1034
|
-
if (normalMap !==
|
|
1034
|
+
if (normalMap !== "") {
|
|
1035
1035
|
var t = loadTexture(normalMap);
|
|
1036
1036
|
mat2.map = t;
|
|
1037
1037
|
}
|
|
1038
|
-
if (normalMap ===
|
|
1038
|
+
if (normalMap === "") {
|
|
1039
1039
|
mat3 = new Three.MeshStandardMaterial({
|
|
1040
1040
|
// color: examplecolor,
|
|
1041
1041
|
metalness: counterTop.metalness,
|
|
@@ -1057,13 +1057,13 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
1057
1057
|
});
|
|
1058
1058
|
mat4.map = loadTexture(interiorMap);
|
|
1059
1059
|
for (var j = 0; j < object.children.length; j++) {
|
|
1060
|
-
if (object.children[j].name.includes(
|
|
1061
|
-
if (object.children[j].name.includes(
|
|
1060
|
+
if (object.children[j].name.includes("main")) {}
|
|
1061
|
+
if (object.children[j].name.includes("countertop")) {
|
|
1062
1062
|
object.children[j].material = mat3;
|
|
1063
1063
|
object.children[j].receiveShadow = true;
|
|
1064
1064
|
object.children[j].castShadow = true;
|
|
1065
1065
|
addEdgesToMesh(object.children[j]);
|
|
1066
|
-
} else if (object.children[j].name.includes(
|
|
1066
|
+
} else if (object.children[j].name.includes("_interior_")) {
|
|
1067
1067
|
object.children[j].material = mat4;
|
|
1068
1068
|
} else if (object.children[j].type === OBJTYPE_MESH) {
|
|
1069
1069
|
object.children[j].material = mat2;
|
|
@@ -1073,7 +1073,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
|
|
|
1073
1073
|
}
|
|
1074
1074
|
}
|
|
1075
1075
|
}, function (reason) {
|
|
1076
|
-
console.log(
|
|
1076
|
+
console.log("loadGLTF failed for reason:", reason);
|
|
1077
1077
|
objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);
|
|
1078
1078
|
}).then(function () {
|
|
1079
1079
|
return _loadGLTFs(0);
|
|
@@ -1087,18 +1087,18 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1087
1087
|
var applianceMaterial = element.applianceMaterial;
|
|
1088
1088
|
if (applianceMaterial.metalness == undefined) applianceMaterial = applianceMaterial.toJS();
|
|
1089
1089
|
var onLoadItem = function onLoadItem(object) {
|
|
1090
|
-
var newAltitude = element.properties.get(
|
|
1091
|
-
var newUnit = element.properties.get(
|
|
1090
|
+
var newAltitude = element.properties.get("altitude").get("_length");
|
|
1091
|
+
var newUnit = element.properties.get("altitude").get("_unit") || "in";
|
|
1092
1092
|
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(
|
|
1093
|
+
var newWidth = element.properties.get("width").get("_length");
|
|
1094
|
+
var newWidthUnit = element.properties.get("width").get("_unit") || "in";
|
|
1095
|
+
newWidth = convert(newWidth).from(newWidthUnit).to("in");
|
|
1096
|
+
var newHeight = element.properties.get("height").get("_length");
|
|
1097
|
+
var newHeightUnit = element.properties.get("height").get("_unit") || "in";
|
|
1098
|
+
newHeight = convert(newHeight).from(newHeightUnit).to("in");
|
|
1099
|
+
var newDepth = element.properties.get("depth").get("_length");
|
|
1100
|
+
var newDepthUnit = element.properties.get("depth").get("_unit") || "in";
|
|
1101
|
+
newDepth = convert(newDepth).from(newDepthUnit).to("in");
|
|
1102
1102
|
object.scale.set(100 * newWidth / sizeinfo.width, 100 * newHeight / sizeinfo.height, 100 * newDepth / sizeinfo.depth);
|
|
1103
1103
|
// Normalize the origin of the object
|
|
1104
1104
|
var boundingBox = new Three.Box3().setFromObject(object);
|
|
@@ -1113,16 +1113,16 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1113
1113
|
var name = obj.name;
|
|
1114
1114
|
var texture,
|
|
1115
1115
|
textureLoader = new Three.TextureLoader();
|
|
1116
|
-
if (name.includes(
|
|
1116
|
+
if (name.includes("_black")) {
|
|
1117
1117
|
obj.material.roughness = 0.4;
|
|
1118
1118
|
obj.material.metalness = 1.0;
|
|
1119
1119
|
obj.material.color = new Three.Color(0, 0, 0);
|
|
1120
1120
|
obj.castShadow = true;
|
|
1121
1121
|
obj.receiveShadow = true;
|
|
1122
1122
|
return object;
|
|
1123
|
-
} else if (name.includes(
|
|
1124
|
-
texture = loadTexture(
|
|
1125
|
-
} else if (name.includes(
|
|
1123
|
+
} else if (name.includes("_wood")) {
|
|
1124
|
+
texture = loadTexture("/assets/img/texture/wood.jpg");
|
|
1125
|
+
} else if (name.includes("_glass")) {
|
|
1126
1126
|
// texture = loadTexture('/assets/img/texture/glass.jpg');
|
|
1127
1127
|
var material = new Three.MeshPhysicalMaterial({
|
|
1128
1128
|
transparent: true,
|
|
@@ -1137,7 +1137,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1137
1137
|
obj.castShadow = true;
|
|
1138
1138
|
obj.receiveShadow = true;
|
|
1139
1139
|
return object;
|
|
1140
|
-
} else if (name.includes(
|
|
1140
|
+
} else if (name.includes("_steel")) {
|
|
1141
1141
|
// texture = loadTexture('/assets/img/texture/steel.jpg');
|
|
1142
1142
|
var _material2 = new Three.MeshPhysicalMaterial({
|
|
1143
1143
|
roughness: 0.2,
|
|
@@ -1187,16 +1187,16 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1187
1187
|
// vertical line - 4 lines around object//////////////////////////
|
|
1188
1188
|
var vLineGeom = new Three.BufferGeometry();
|
|
1189
1189
|
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(
|
|
1190
|
+
vLineGeom.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices), 3));
|
|
1191
1191
|
var vLineGeom1 = new Three.BufferGeometry();
|
|
1192
1192
|
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(
|
|
1193
|
+
vLineGeom1.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices1), 3));
|
|
1194
1194
|
var vLineGeom2 = new Three.BufferGeometry();
|
|
1195
1195
|
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(
|
|
1196
|
+
vLineGeom1.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices2), 3));
|
|
1197
1197
|
var vLineGeom3 = new Three.BufferGeometry();
|
|
1198
1198
|
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(
|
|
1199
|
+
vLineGeom1.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices3), 3));
|
|
1200
1200
|
// ///////////////////////////////////////
|
|
1201
1201
|
|
|
1202
1202
|
// set names of transform object
|
|
@@ -1209,12 +1209,12 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1209
1209
|
color: 0xffffff,
|
|
1210
1210
|
colorWrite: true
|
|
1211
1211
|
}));
|
|
1212
|
-
rotFillObj.name =
|
|
1212
|
+
rotFillObj.name = "rotate";
|
|
1213
1213
|
var upObj = new Three.Mesh(upwardsGeom, new Three.MeshBasicMaterial({
|
|
1214
1214
|
color: 0xffffff,
|
|
1215
1215
|
side: Three.DoubleSide
|
|
1216
1216
|
}));
|
|
1217
|
-
upObj.name =
|
|
1217
|
+
upObj.name = "transUp";
|
|
1218
1218
|
var mBox = new Three.Mesh(moveBox, new Three.MeshBasicMaterial({
|
|
1219
1219
|
color: new Three.Color(0xdd6699).convertLinearToSRGB(),
|
|
1220
1220
|
side: Three.DoubleSide,
|
|
@@ -1254,7 +1254,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1254
1254
|
vLine3.translateY(0.1);
|
|
1255
1255
|
upObj.translateOnAxis(uVec, 1);
|
|
1256
1256
|
upObj.translateY(max.y - min.y + 0.05);
|
|
1257
|
-
mBox.name =
|
|
1257
|
+
mBox.name = "TransformBox";
|
|
1258
1258
|
mBox.translateOnAxis(new Three.Vector3(uVec.x, uVec.y + (max.y - min.y) / 2, uVec.z), 1);
|
|
1259
1259
|
mBox.scale.set(1.01, 1.01, 1.01);
|
|
1260
1260
|
|
|
@@ -1282,7 +1282,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1282
1282
|
asrtObj.add(mBox);
|
|
1283
1283
|
asrtObj.scale.set(1 / object.scale.x, object.scale.y, 1 / object.scale.z);
|
|
1284
1284
|
// asrtObj.translateY(newAltitude / scalevec.y);
|
|
1285
|
-
asrtObj.name =
|
|
1285
|
+
asrtObj.name = "TransformGizmo";
|
|
1286
1286
|
// add assets Objects Group
|
|
1287
1287
|
object.add(asrtObj);
|
|
1288
1288
|
|
|
@@ -1312,7 +1312,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1312
1312
|
cachedObject[element.type] = objGroup.clone(); //register to cachedObject
|
|
1313
1313
|
return onLoadItem(cachedObject[element.type].clone());
|
|
1314
1314
|
}
|
|
1315
|
-
if (keys[i] ===
|
|
1315
|
+
if (keys[i] === "base") {
|
|
1316
1316
|
// if base Objects
|
|
1317
1317
|
i++;
|
|
1318
1318
|
return _loadGLTFs2(i);
|
|
@@ -1321,13 +1321,13 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1321
1321
|
|
|
1322
1322
|
// load base to start //
|
|
1323
1323
|
// return loadGLTF(dirName + structure["base"])
|
|
1324
|
-
return loadGLTF(structure[
|
|
1324
|
+
return loadGLTF(structure["base"]).then(function (object) {
|
|
1325
1325
|
// let textureURL = `${API_SERVER_URL}/uploads/assets/default/steel.jpg`;
|
|
1326
1326
|
// let texture = loadTexture(textureURL);
|
|
1327
1327
|
// texture.wrapS = Three.MirroredRepeatWrapping;
|
|
1328
1328
|
// texture.wrapT = Three.MirroredRepeatWrapping;
|
|
1329
1329
|
|
|
1330
|
-
object.name =
|
|
1330
|
+
object.name = "MainObject";
|
|
1331
1331
|
// NOTE: changed appliance emissive color to black
|
|
1332
1332
|
var mat2 = new Three.MeshStandardMaterial({
|
|
1333
1333
|
emissive: new Three.Color(0x0d0d0d).convertLinearToSRGB(),
|
|
@@ -1345,7 +1345,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
|
|
|
1345
1345
|
}
|
|
1346
1346
|
objGroup = object;
|
|
1347
1347
|
}, function (reason) {
|
|
1348
|
-
console.log(
|
|
1348
|
+
console.log("loadGLTF failed for reason:", reason);
|
|
1349
1349
|
objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);
|
|
1350
1350
|
}).then(function () {
|
|
1351
1351
|
return _loadGLTFs2(0);
|
|
@@ -1358,21 +1358,21 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1358
1358
|
var onLoadItem = function onLoadItem(object) {
|
|
1359
1359
|
var width = {
|
|
1360
1360
|
length: sizeinfo.width,
|
|
1361
|
-
unit:
|
|
1361
|
+
unit: "in"
|
|
1362
1362
|
};
|
|
1363
1363
|
var depth = {
|
|
1364
1364
|
length: sizeinfo.depth,
|
|
1365
|
-
unit:
|
|
1365
|
+
unit: "in"
|
|
1366
1366
|
};
|
|
1367
1367
|
var height = {
|
|
1368
1368
|
length: sizeinfo.height,
|
|
1369
|
-
unit:
|
|
1369
|
+
unit: "in"
|
|
1370
1370
|
};
|
|
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(
|
|
1371
|
+
var newWidth = convert(width.length).from(width.unit).to("cm");
|
|
1372
|
+
var newDepth = convert(depth.length).from(depth.unit).to("cm");
|
|
1373
|
+
var newHeight = convert(height.length).from(height.unit).to("cm");
|
|
1374
|
+
var newAltitude = element.properties.get("altitude").get("_length");
|
|
1375
|
+
var newUnit = element.properties.get("altitude").get("_unit") || "in";
|
|
1376
1376
|
newAltitude = convert(newAltitude).from(newUnit).to(scene.unit);
|
|
1377
1377
|
|
|
1378
1378
|
//object.scale.set(newWidth, newHeight, newDepth);
|
|
@@ -1419,16 +1419,16 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1419
1419
|
// vertical line - 4 lines around object//////////////////////////
|
|
1420
1420
|
var vLineGeom = new Three.BufferGeometry();
|
|
1421
1421
|
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(
|
|
1422
|
+
vLineGeom.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices), 3));
|
|
1423
1423
|
var vLineGeom1 = new Three.BufferGeometry();
|
|
1424
1424
|
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(
|
|
1425
|
+
vLineGeom1.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices1), 3));
|
|
1426
1426
|
var vLineGeom2 = new Three.BufferGeometry();
|
|
1427
1427
|
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(
|
|
1428
|
+
vLineGeom2.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices2), 3));
|
|
1429
1429
|
var vLineGeom3 = new Three.BufferGeometry();
|
|
1430
1430
|
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(
|
|
1431
|
+
vLineGeom3.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices3), 3));
|
|
1432
1432
|
// ///////////////////////////////////////
|
|
1433
1433
|
|
|
1434
1434
|
// set names of transform object
|
|
@@ -1441,12 +1441,12 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1441
1441
|
color: 0xffffff,
|
|
1442
1442
|
colorWrite: true
|
|
1443
1443
|
}));
|
|
1444
|
-
rotFillObj.name =
|
|
1444
|
+
rotFillObj.name = "rotate";
|
|
1445
1445
|
var upObj = new Three.Mesh(upwardsGeom, new Three.MeshBasicMaterial({
|
|
1446
1446
|
color: 0xffffff,
|
|
1447
1447
|
side: Three.DoubleSide
|
|
1448
1448
|
}));
|
|
1449
|
-
upObj.name =
|
|
1449
|
+
upObj.name = "transUp";
|
|
1450
1450
|
var mBox = new Three.Mesh(moveBox, new Three.MeshBasicMaterial({
|
|
1451
1451
|
color: 0xdd6699,
|
|
1452
1452
|
side: Three.DoubleSide,
|
|
@@ -1488,7 +1488,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1488
1488
|
//rotObj.translateOnAxis(uVec, 1);
|
|
1489
1489
|
upObj.translateOnAxis(uVec, 1);
|
|
1490
1490
|
upObj.translateY(max.y - min.y);
|
|
1491
|
-
mBox.name =
|
|
1491
|
+
mBox.name = "TransformBox";
|
|
1492
1492
|
mBox.translateOnAxis(new Three.Vector3(uVec.x, uVec.y + (max.y - min.y) / 2, uVec.z), 1);
|
|
1493
1493
|
mBox.scale.set(1.01, 1.01, 1.01);
|
|
1494
1494
|
|
|
@@ -1517,7 +1517,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1517
1517
|
asrtObj.add(mBox);
|
|
1518
1518
|
asrtObj.scale.set(1, 1, 1);
|
|
1519
1519
|
//asrtObj.translateY(newAltitude / scalevec.y);
|
|
1520
|
-
asrtObj.name =
|
|
1520
|
+
asrtObj.name = "TransformGizmo";
|
|
1521
1521
|
// add assets Objects Group
|
|
1522
1522
|
object.add(asrtObj);
|
|
1523
1523
|
|
|
@@ -1550,7 +1550,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1550
1550
|
cachedObject[element.type] = objGroup.clone(); //register to cachedObject
|
|
1551
1551
|
return onLoadItem(cachedObject[element.type].clone());
|
|
1552
1552
|
}
|
|
1553
|
-
if (keys[i] ===
|
|
1553
|
+
if (keys[i] === "base") {
|
|
1554
1554
|
// if base Objects
|
|
1555
1555
|
i++;
|
|
1556
1556
|
return _loadGLTFs3(i);
|
|
@@ -1559,13 +1559,13 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1559
1559
|
|
|
1560
1560
|
// load base to start //
|
|
1561
1561
|
// return loadGLTF(dirName + structure["base"])
|
|
1562
|
-
return loadGLTF(structure[
|
|
1562
|
+
return loadGLTF(structure["base"]).then(function (object) {
|
|
1563
1563
|
// let textureURL = `${API_SERVER_URL}/uploads/assets/default/steel.jpg`;
|
|
1564
1564
|
// let texture = loadTexture(textureURL);
|
|
1565
1565
|
// texture.wrapS = Three.MirroredRepeatWrapping;
|
|
1566
1566
|
// texture.wrapT = Three.MirroredRepeatWrapping;
|
|
1567
1567
|
|
|
1568
|
-
object.name =
|
|
1568
|
+
object.name = "MainObject";
|
|
1569
1569
|
var mat2 = new Three.MeshStandardMaterial({
|
|
1570
1570
|
emissive: new Three.Color(0x666666).convertLinearToSRGB(),
|
|
1571
1571
|
metalness: 0.7,
|
|
@@ -1581,7 +1581,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
|
|
|
1581
1581
|
}
|
|
1582
1582
|
objGroup = object;
|
|
1583
1583
|
}, function (reason) {
|
|
1584
|
-
console.log(
|
|
1584
|
+
console.log("loadGLTF failed for reason:", reason);
|
|
1585
1585
|
objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);
|
|
1586
1586
|
}).then(function () {
|
|
1587
1587
|
return _loadGLTFs3(0);
|