kitchen-simulator 4.0.7-react-18 → 4.0.7
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 -107
- package/es/LiteRenderer.js +162 -137
- package/es/actions/export.js +25 -12
- package/es/assets/gltf/door_sliding.bin +0 -0
- package/es/assets/img/png/helper/video_preview_start.png +0 -0
- package/es/assets/img/svg/bottombar/elevation.svg +12 -5
- package/es/catalog/catalog.js +21 -5
- 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 +1 -0
- package/es/catalog/utils/item-loader.js +35 -26
- package/es/class/hole.js +0 -2
- package/es/class/item.js +96 -70
- package/es/class/line.js +4 -8
- package/es/class/project.js +93 -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 +17 -47
- package/es/components/viewer2d/ruler.js +5 -3
- package/es/components/viewer2d/rulerDist.js +8 -7
- 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 +51 -87
- package/es/components/viewer3d/ruler-utils/scene3D.js +1 -1
- package/es/components/viewer3d/scene-creator.js +59 -18
- package/es/components/viewer3d/viewer3d-first-person.js +24 -26
- package/es/components/viewer3d/viewer3d.js +100 -112
- package/es/constants.js +6 -2
- package/es/devLiteRenderer.js +491 -150
- package/es/index.js +590 -21
- package/es/models.js +3 -2
- 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/styles/export.js +5 -0
- package/es/styles/tabs.css +40 -0
- package/es/utils/geometry.js +72 -114
- package/es/utils/helper.js +38 -1
- package/es/utils/isolate-event-handler.js +826 -606
- package/es/utils/molding.js +457 -11
- package/lib/AppContext.js +1 -1
- package/lib/LiteKitchenConfigurator.js +161 -107
- package/lib/LiteRenderer.js +161 -137
- package/lib/actions/export.js +35 -39
- package/lib/assets/gltf/door_sliding.bin +0 -0
- package/lib/assets/img/png/helper/video_preview_start.png +0 -0
- package/lib/assets/img/svg/bottombar/elevation.svg +12 -5
- package/lib/catalog/catalog.js +20 -4
- 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 +1 -0
- package/lib/catalog/utils/item-loader.js +35 -26
- package/lib/class/hole.js +0 -2
- package/lib/class/item.js +94 -68
- package/lib/class/line.js +3 -7
- package/lib/class/project.js +93 -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 +17 -47
- package/lib/components/viewer2d/ruler.js +4 -2
- package/lib/components/viewer2d/rulerDist.js +8 -7
- 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 +49 -84
- package/lib/components/viewer3d/ruler-utils/scene3D.js +1 -1
- package/lib/components/viewer3d/scene-creator.js +57 -16
- package/lib/components/viewer3d/viewer3d-first-person.js +24 -26
- package/lib/components/viewer3d/viewer3d.js +97 -108
- package/lib/constants.js +11 -7
- package/lib/devLiteRenderer.js +489 -148
- package/lib/index.js +592 -21
- package/lib/models.js +3 -2
- 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/styles/export.js +13 -0
- package/lib/styles/tabs.css +40 -0
- package/lib/utils/geometry.js +72 -114
- package/lib/utils/helper.js +40 -1
- package/lib/utils/isolate-event-handler.js +826 -605
- package/lib/utils/molding.js +458 -9
- package/package.json +21 -20
- package/es/mocks/appliancePayload.json +0 -27
- package/es/mocks/cabinetPayload.json +0 -1914
- package/es/mocks/cabinetPayload2.json +0 -76
- package/es/mocks/dataBundle2.json +0 -4
- package/es/mocks/distancePayload.json +0 -6
- package/es/mocks/doorStylePayload2.json +0 -84
- package/es/mocks/furnishingPayload.json +0 -23
- package/es/mocks/itemCDSPayload.json +0 -27
- package/es/mocks/lightingPayload.json +0 -23
- package/es/mocks/mockProps.json +0 -43
- package/es/mocks/mockProps2.json +0 -9
- package/es/mocks/moldingPayload.json +0 -19
- package/es/mocks/projectItemsCatalog.json +0 -133
- package/es/mocks/rectangleShape.json +0 -238
- package/es/mocks/replaceCabinetPayload.json +0 -81
- package/es/mocks/roomShapePayload.json +0 -5
- package/es/useAppContext.js +0 -8
- package/lib/mocks/appliancePayload.json +0 -27
- package/lib/mocks/cabinetPayload.json +0 -1914
- package/lib/mocks/cabinetPayload2.json +0 -76
- package/lib/mocks/dataBundle2.json +0 -4
- package/lib/mocks/distancePayload.json +0 -6
- package/lib/mocks/doorStylePayload2.json +0 -84
- package/lib/mocks/furnishingPayload.json +0 -23
- package/lib/mocks/itemCDSPayload.json +0 -27
- package/lib/mocks/lightingPayload.json +0 -23
- package/lib/mocks/mockProps.json +0 -43
- package/lib/mocks/mockProps2.json +0 -9
- package/lib/mocks/moldingPayload.json +0 -19
- package/lib/mocks/projectItemsCatalog.json +0 -133
- package/lib/mocks/rectangleShape.json +0 -238
- package/lib/mocks/replaceCabinetPayload.json +0 -81
- package/lib/mocks/roomShapePayload.json +0 -5
- package/lib/useAppContext.js +0 -16
|
@@ -22,7 +22,7 @@ function Scene3D(_ref) {
|
|
|
22
22
|
downloadFlag = _ref.downloadFlag;
|
|
23
23
|
var layers = scene.layers;
|
|
24
24
|
var selectedLayer = layers.get(scene.selectedLayer);
|
|
25
|
-
var ceilHeight = selectedLayer.ceilHeight;
|
|
25
|
+
var ceilHeight = Number(selectedLayer.ceilHeight);
|
|
26
26
|
var selectedLine = selectedLayer.lines.get(selectedLayer.selected.lines.toJS()[0]);
|
|
27
27
|
var vertex0 = selectedLayer.vertices.get(selectedLine.vertices.get(0));
|
|
28
28
|
var vertex1 = selectedLayer.vertices.get(selectedLine.vertices.get(1));
|
|
@@ -222,6 +222,31 @@ function createWarningObject() {
|
|
|
222
222
|
warningObj.name = 'warningObj';
|
|
223
223
|
return warningObj;
|
|
224
224
|
}
|
|
225
|
+
function swapLengthProperty(diffs) {
|
|
226
|
+
var idx1 = diffs.findIndex(function (v) {
|
|
227
|
+
return v.path[v.path.length - 1] === 'length';
|
|
228
|
+
});
|
|
229
|
+
var idx2 = diffs.findIndex(function (v) {
|
|
230
|
+
return v.path[v.path.length - 1] === '_length';
|
|
231
|
+
});
|
|
232
|
+
if (idx1 < 0 || idx2 < 0) return diffs;
|
|
233
|
+
if (idx1 > idx2) return diffs;
|
|
234
|
+
if (diffs[idx1].op === diffs[idx2].op) {
|
|
235
|
+
var isSwap = true;
|
|
236
|
+
for (var i = 0; i < diffs[idx1].path.length - 2; i++) {
|
|
237
|
+
if (diffs[idx1].path[i] !== diffs[idx2].path[i]) {
|
|
238
|
+
isSwap = false;
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
if (isSwap) {
|
|
243
|
+
var temp = diffs[idx1];
|
|
244
|
+
diffs[idx1] = diffs[idx2];
|
|
245
|
+
diffs[idx2] = temp;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return diffs;
|
|
249
|
+
}
|
|
225
250
|
function updateScene(planData, sceneData, oldSceneData, diffArray, actions, catalog) {
|
|
226
251
|
var _draggingItem$toJS, _filteredDiffs, _filteredDiffs2;
|
|
227
252
|
var mode = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
|
|
@@ -239,6 +264,9 @@ function updateScene(planData, sceneData, oldSceneData, diffArray, actions, cata
|
|
|
239
264
|
value: el.value
|
|
240
265
|
};
|
|
241
266
|
});
|
|
267
|
+
|
|
268
|
+
// move "length" to after "_length"
|
|
269
|
+
splitted = swapLengthProperty(splitted);
|
|
242
270
|
var filteredDiffs = filterDiffs(splitted, sceneData, oldSceneData);
|
|
243
271
|
//***testing additional filter***
|
|
244
272
|
filteredDiffs = filteredDiffs.filter(function (_ref) {
|
|
@@ -273,7 +301,7 @@ function updateScene(planData, sceneData, oldSceneData, diffArray, actions, cata
|
|
|
273
301
|
* Every 'doorStyle' change has a 'door_style_id' change.
|
|
274
302
|
* So, if door_style_id changes, it indicates 'doorStyle' change.
|
|
275
303
|
*/
|
|
276
|
-
if (['id'].includes(path[path.length - 1])) isSettingDoorStyle = true;
|
|
304
|
+
if (path[1] === 'layers' && path[3] === 'molding' || path[path.length - 2] === 'doorStyle' && path[path.length - 1] === 'id' || ['id'].includes(path[path.length - 1])) isSettingDoorStyle = true;
|
|
277
305
|
|
|
278
306
|
// If there are any molding change of layer
|
|
279
307
|
if (path[1] === 'layers' && path[3] === 'molding') isUpdateMolding = true;
|
|
@@ -649,10 +677,10 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
|
|
|
649
677
|
vLine3.material.depthTest = false;
|
|
650
678
|
var uVec = new Three.Vector3(-posVec.x / scalevec.x, -posVec.y / scalevec.y, -posVec.z / scalevec.z);
|
|
651
679
|
var blLighting = item.type.includes('Light');
|
|
652
|
-
vLine.translateY(blLighting ? 1.6 : 0.1);
|
|
653
|
-
vLine1.translateY(blLighting ? 1.6 : 0.1);
|
|
654
|
-
vLine2.translateY(blLighting ? 1.6 : 0.1);
|
|
655
|
-
vLine3.translateY(blLighting ? 1.6 : 0.1);
|
|
680
|
+
vLine.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
|
|
681
|
+
vLine1.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
|
|
682
|
+
vLine2.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
|
|
683
|
+
vLine3.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
|
|
656
684
|
upObj.translateOnAxis(uVec, 1);
|
|
657
685
|
upObj.translateY(max.y - min.y);
|
|
658
686
|
_mBox.name = 'TransformBox';
|
|
@@ -958,9 +986,9 @@ function getLineDistance(obj, layer, isCalcWall, index) {
|
|
|
958
986
|
obj.geometry.attributes.position.needsUpdate = true;
|
|
959
987
|
obj.geometry.computeBoundingSphere();
|
|
960
988
|
obj.geometry.computeBoundingBox();
|
|
961
|
-
var dist = (0,
|
|
989
|
+
var dist = (0, _convertUnitsLite.convert)(intersects[i].distance).from('cm').to('in');
|
|
962
990
|
if (dist > 3) {
|
|
963
|
-
var _canvas =
|
|
991
|
+
var _canvas = getDistanceCanvas(dist, layer);
|
|
964
992
|
var wid = _canvas.width / window.innerWidth * 30;
|
|
965
993
|
var hei = _canvas.height / window.innerHeight * 30;
|
|
966
994
|
var texture = new Three.Texture(_canvas);
|
|
@@ -1082,7 +1110,7 @@ function getLineDistance(obj, layer, isCalcWall, index) {
|
|
|
1082
1110
|
obj.geometry.attributes.position.needsUpdate = true;
|
|
1083
1111
|
var _dist = (0, _math.formatNumber)(distance, _constants.DECIMAL_PLACES_2);
|
|
1084
1112
|
if (_dist > 3) {
|
|
1085
|
-
var _canvas2 =
|
|
1113
|
+
var _canvas2 = getDistanceCanvas(_dist, layer);
|
|
1086
1114
|
var _wid = _canvas2.width / window.innerWidth * 30;
|
|
1087
1115
|
var _hei = _canvas2.height / window.innerHeight * 30;
|
|
1088
1116
|
var _texture = new Three.Texture(_canvas2);
|
|
@@ -1210,12 +1238,18 @@ function getIntersectPoint(opX, opY, pX, pY) {
|
|
|
1210
1238
|
function gcd(a, b) {
|
|
1211
1239
|
return a % b ? gcd(b, a % b) : b;
|
|
1212
1240
|
}
|
|
1213
|
-
function
|
|
1214
|
-
var
|
|
1241
|
+
function getDistanceCanvas(distance, layer) {
|
|
1242
|
+
var _layer$unit;
|
|
1243
|
+
var parameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
1215
1244
|
var canvas = document.createElement('canvas');
|
|
1216
1245
|
var ctx = canvas.getContext('2d');
|
|
1246
|
+
var curUnit = (_layer$unit = layer === null || layer === void 0 ? void 0 : layer.unit) !== null && _layer$unit !== void 0 ? _layer$unit : _constants.UNIT_INCH;
|
|
1247
|
+
var fixedLength = (layer === null || layer === void 0 ? void 0 : layer.unit) === _constants.UNIT_METER || (layer === null || layer === void 0 ? void 0 : layer.unit) === _constants.UNIT_FOOT ? 2 : 0;
|
|
1248
|
+
var distText = String((Math.round((0, _convertUnitsLite.convert)(distance).from('in').to(curUnit) * 100) / 100).toFixed(fixedLength));
|
|
1217
1249
|
var fontSize = 16;
|
|
1218
|
-
var integral =
|
|
1250
|
+
var integral = distText + curUnit;
|
|
1251
|
+
// let integral = String(distance) + "''";
|
|
1252
|
+
|
|
1219
1253
|
parameters.fontName = parameters.fontName || _constants.ARROW_TEXT_FONTFACE;
|
|
1220
1254
|
|
|
1221
1255
|
// Prepare the font to be able to measure
|
|
@@ -3452,14 +3486,21 @@ function updateMoldingGroupArray(MGArray, selItem, planData, layer) {
|
|
|
3452
3486
|
if (changeMoldings.length === 0 && isEnableMolding) {
|
|
3453
3487
|
// refresh mesh of the updating molding groups
|
|
3454
3488
|
new_MGArray.forEach(function (mg, index) {
|
|
3455
|
-
|
|
3456
|
-
|
|
3489
|
+
var _mg$items$;
|
|
3490
|
+
if ((_mg$items$ = mg.items[0]) !== null && _mg$items$ !== void 0 && (_mg$items$ = _mg$items$.molding) !== null && _mg$items$ !== void 0 && _mg$items$.some(function (mol) {
|
|
3491
|
+
var _mol$toJS;
|
|
3492
|
+
return (0, _helper.isImmutable)(mol) ? (mol === null || mol === void 0 || (_mol$toJS = mol.toJS()) === null || _mol$toJS === void 0 ? void 0 : _mol$toJS.location_type) === mg.location_type : (mol === null || mol === void 0 ? void 0 : mol.location_type) === mg.location_type;
|
|
3457
3493
|
})) {
|
|
3458
|
-
var
|
|
3459
|
-
|
|
3494
|
+
var _mg$items$2, _mg$items$3, _mg$items$4;
|
|
3495
|
+
var molding = (0, _helper.isImmutable)((_mg$items$2 = mg.items[0]) === null || _mg$items$2 === void 0 ? void 0 : _mg$items$2.molding) ? (_mg$items$3 = mg.items[0]) === null || _mg$items$3 === void 0 || (_mg$items$3 = _mg$items$3.molding) === null || _mg$items$3 === void 0 ? void 0 : _mg$items$3.filter(function (mol) {
|
|
3496
|
+
var _mol$toJS2;
|
|
3497
|
+
return (mol === null || mol === void 0 || (_mol$toJS2 = mol.toJS()) === null || _mol$toJS2 === void 0 ? void 0 : _mol$toJS2.location_type) === mg.location_type;
|
|
3498
|
+
}).toJS()[0] : (_mg$items$4 = mg.items[0]) === null || _mg$items$4 === void 0 || (_mg$items$4 = _mg$items$4.molding) === null || _mg$items$4 === void 0 ? void 0 : _mg$items$4.filter(function (mol) {
|
|
3499
|
+
return (mol === null || mol === void 0 ? void 0 : mol.location_type) === mg.location_type;
|
|
3460
3500
|
})[0];
|
|
3461
3501
|
if (mg.molding === null || mg.molding.itemID !== mol.itemID || mg.lines === null || mg.points === null) {
|
|
3462
|
-
|
|
3502
|
+
var _mg$molding;
|
|
3503
|
+
if (mg.molding !== null && ((_mg$molding = mg.molding) === null || _mg$molding === void 0 ? void 0 : _mg$molding.itemID) !== molding.itemID) {
|
|
3463
3504
|
deleteMGMesh(mg, planData, mode);
|
|
3464
3505
|
}
|
|
3465
3506
|
mg = _export.MoldingUtils.createMonldingGroup(mg, layer, molding, planData.catalog);
|
|
@@ -261,12 +261,10 @@ var Viewer3DFirstPerson = exports["default"] = /*#__PURE__*/function (_React$Com
|
|
|
261
261
|
this.renderer.renderLists.dispose();
|
|
262
262
|
}
|
|
263
263
|
}, {
|
|
264
|
-
key: "
|
|
265
|
-
value: function
|
|
266
|
-
var
|
|
267
|
-
|
|
268
|
-
height = _this$props.height,
|
|
269
|
-
state = _this$props.state;
|
|
264
|
+
key: "componentWillReceiveProps",
|
|
265
|
+
value: function componentWillReceiveProps(nextProps) {
|
|
266
|
+
var width = nextProps.width,
|
|
267
|
+
height = nextProps.height;
|
|
270
268
|
var camera = this.camera,
|
|
271
269
|
renderer = this.renderer,
|
|
272
270
|
scene3D = this.scene3D,
|
|
@@ -279,27 +277,19 @@ var Viewer3DFirstPerson = exports["default"] = /*#__PURE__*/function (_React$Com
|
|
|
279
277
|
linesActions: this.context.linesActions,
|
|
280
278
|
projectActions: this.context.projectActions
|
|
281
279
|
};
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
renderer.setSize(width, height);
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
// Handle scene changes
|
|
293
|
-
if (state.scene !== prevProps.state.scene) {
|
|
294
|
-
var changedValues = (0, _immutablediff["default"])(prevProps.state.scene, state.scene);
|
|
295
|
-
(0, _sceneCreator.updateScene)(planData, state.scene, prevProps.state.scene, changedValues.toJS(), actions, this.context.catalog);
|
|
280
|
+
this.width = width;
|
|
281
|
+
this.height = height;
|
|
282
|
+
camera.aspect = width / height;
|
|
283
|
+
camera.updateProjectionMatrix();
|
|
284
|
+
if (nextProps.scene !== this.props.state.scene) {
|
|
285
|
+
var changedValues = (0, _immutablediff["default"])(this.props.state.scene, nextProps.state.scene);
|
|
286
|
+
(0, _sceneCreator.updateScene)(planData, nextProps.state.scene, this.props.state.scene, changedValues.toJS(), actions, this.context.catalog);
|
|
296
287
|
}
|
|
297
|
-
|
|
298
|
-
//
|
|
299
|
-
renderer.
|
|
300
|
-
renderer.
|
|
301
|
-
renderer.
|
|
302
|
-
renderer.render(sceneOnTop, camera);
|
|
288
|
+
renderer.setSize(width, height);
|
|
289
|
+
renderer.clear(); // clear buffers
|
|
290
|
+
renderer.render(scene3D, camera); // render scene 1
|
|
291
|
+
renderer.clearDepth(); // clear depth buffer
|
|
292
|
+
renderer.render(sceneOnTop, camera); // render scene 2
|
|
303
293
|
}
|
|
304
294
|
}, {
|
|
305
295
|
key: "render",
|
|
@@ -315,4 +305,12 @@ Viewer3DFirstPerson.propTypes = {
|
|
|
315
305
|
width: _propTypes["default"].number.isRequired,
|
|
316
306
|
height: _propTypes["default"].number.isRequired
|
|
317
307
|
};
|
|
308
|
+
Viewer3DFirstPerson.contextTypes = {
|
|
309
|
+
areaActions: _propTypes["default"].object.isRequired,
|
|
310
|
+
holesActions: _propTypes["default"].object.isRequired,
|
|
311
|
+
itemsActions: _propTypes["default"].object.isRequired,
|
|
312
|
+
linesActions: _propTypes["default"].object.isRequired,
|
|
313
|
+
projectActions: _propTypes["default"].object.isRequired,
|
|
314
|
+
catalog: _propTypes["default"].object
|
|
315
|
+
};
|
|
318
316
|
module.exports = exports.default;
|
|
@@ -238,6 +238,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
238
238
|
});
|
|
239
239
|
self.renderer.domElement.style.display = 'block';
|
|
240
240
|
}, 1500);
|
|
241
|
+
self.planData = planData;
|
|
241
242
|
});
|
|
242
243
|
var area = scene.getIn(['layers', scene.selectedLayer, 'areas']);
|
|
243
244
|
var layer = scene.getIn(['layers', scene.selectedLayer]);
|
|
@@ -676,7 +677,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
676
677
|
layer.lines.forEach(function (line) {
|
|
677
678
|
line.holes.forEach(function (holeID) {
|
|
678
679
|
var hole = layer.holes.get(holeID);
|
|
679
|
-
holes.push(hole);
|
|
680
|
+
if (hole) holes.push(hole);
|
|
680
681
|
});
|
|
681
682
|
});
|
|
682
683
|
var i = 0;
|
|
@@ -1192,18 +1193,10 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1192
1193
|
};
|
|
1193
1194
|
var sendInternalEvent = function sendInternalEvent(evtType, evtElement) {
|
|
1194
1195
|
var pointArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
1195
|
-
if (!(0, _helper.isEmpty)(evtType)) {
|
|
1196
|
-
var _this2$props$onIntern, _this2$props;
|
|
1197
|
-
var
|
|
1198
|
-
|
|
1199
|
-
// check this cabinet has warning box
|
|
1200
|
-
payload.isWarning = (0, _utils.isWarningItem)(evtElement);
|
|
1201
|
-
// check this item is available molding
|
|
1202
|
-
payload.isMoldingAvailable = _export.MoldingUtils.isEnableItemForMolding(layer, evtElement); // check this item is snapped to wall
|
|
1203
|
-
payload.isAttachedWall = _export.MoldingUtils.isAttachedWall(layer, evtElement);
|
|
1204
|
-
// update distArray
|
|
1205
|
-
if (pointArray) payload.distArray = pointArray;
|
|
1206
|
-
}
|
|
1196
|
+
if (!(0, _helper.isEmpty)(evtType) && !(0, _helper.isEmpty)(evtElement)) {
|
|
1197
|
+
var _state$get, _this2$props$onIntern, _this2$props;
|
|
1198
|
+
var catalog = (_state$get = state.get('catalog')) === null || _state$get === void 0 ? void 0 : _state$get.toJS();
|
|
1199
|
+
var payload = (0, _helper.updatePayloadOfInternalEvent)(evtElement, layer, catalog, pointArray);
|
|
1207
1200
|
(_this2$props$onIntern = (_this2$props = _this2.props).onInternalEvent) === null || _this2$props$onIntern === void 0 || _this2$props$onIntern.call(_this2$props, {
|
|
1208
1201
|
type: evtType,
|
|
1209
1202
|
value: payload
|
|
@@ -1361,11 +1354,6 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1361
1354
|
if (selectedFlag || toolIntersects.length > 0 && !(0, _helper.isElevationView)(mode)) {
|
|
1362
1355
|
cameraControls.mouseButtons.left = _cameraControls["default"].ACTION.NONE;
|
|
1363
1356
|
selectedFlag = false;
|
|
1364
|
-
} else {
|
|
1365
|
-
isSelected = false;
|
|
1366
|
-
_this2.context.projectActions.unselectAll();
|
|
1367
|
-
scene3D.remove(toolObj);
|
|
1368
|
-
_this2.context.itemsActions.removeReplacingSupport();
|
|
1369
1357
|
}
|
|
1370
1358
|
}
|
|
1371
1359
|
} else {
|
|
@@ -1418,11 +1406,18 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1418
1406
|
}
|
|
1419
1407
|
switch (_this2.props.state.mode) {
|
|
1420
1408
|
case _constants.MODE_DRAGGING_ITEM_3D:
|
|
1409
|
+
case _constants.MODE_DRAGGING_HOLE_3D:
|
|
1421
1410
|
internalType = _constants.INTERNAL_EVENT_DRAG_ELEMENT;
|
|
1422
1411
|
break;
|
|
1423
1412
|
case _constants.MODE_ROTATING_ITEM_3D:
|
|
1424
1413
|
internalType = _constants.INTERNAL_EVENT_ROTATE_ELEMENT;
|
|
1425
1414
|
break;
|
|
1415
|
+
case _constants.MODE_DRAWING_HOLE_3D:
|
|
1416
|
+
internalType = _constants.INTERNAL_EVENT_DRAW_ELEMENT;
|
|
1417
|
+
break;
|
|
1418
|
+
case _constants.MODE_IDLE_3D:
|
|
1419
|
+
internalType = _constants.INTERNAL_EVENT_SELECT_ELEMENT;
|
|
1420
|
+
break;
|
|
1426
1421
|
}
|
|
1427
1422
|
if (_this2.props.state.mode == _constants.MODE_DRAGGING_ITEM_3D) {
|
|
1428
1423
|
_this2.context.itemsActions.endDraggingItem3D();
|
|
@@ -1456,7 +1451,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1456
1451
|
});
|
|
1457
1452
|
});
|
|
1458
1453
|
var intersects = raycaster.intersectObjects(meshes, true);
|
|
1459
|
-
var _i10;
|
|
1454
|
+
var _i10; // index of warning object in intersects
|
|
1455
|
+
|
|
1460
1456
|
if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
|
|
1461
1457
|
for (_i10 = 0; _i10 < intersects.length; _i10++) {
|
|
1462
1458
|
if (intersects[_i10].object.name === 'warningObj') break;
|
|
@@ -1472,6 +1468,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1472
1468
|
var replaceInfo = intersects[_i10].object.parent.parent.userData;
|
|
1473
1469
|
_this2.context.itemsActions.selectItem(replaceInfo.layerId, replaceInfo.itemId);
|
|
1474
1470
|
!_this2.props.downloadFlag && _this2.props.replaceCabinet(true);
|
|
1471
|
+
internalType = _constants.INTERNAL_EVENT_REPLACE_CABINET;
|
|
1472
|
+
var replaceElement = _this2.props.state.scene.layers.get(replaceInfo.layerId).items.get(replaceInfo.itemId);
|
|
1473
|
+
sendInternalEvent(internalType, replaceElement);
|
|
1475
1474
|
return;
|
|
1476
1475
|
}
|
|
1477
1476
|
}
|
|
@@ -1484,6 +1483,19 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1484
1483
|
}
|
|
1485
1484
|
}
|
|
1486
1485
|
gridMatrix.copy(gridPlane.matrixWorld).invert();
|
|
1486
|
+
var addItemToolObj = function addItemToolObj() {
|
|
1487
|
+
var _planData$sceneGraph, _selectedObject, _intersects$_i;
|
|
1488
|
+
var selectedItem = (_planData$sceneGraph = planData.sceneGraph) === null || _planData$sceneGraph === void 0 || (_planData$sceneGraph = _planData$sceneGraph.layers[selectedObject.layerID]) === null || _planData$sceneGraph === void 0 ? void 0 : _planData$sceneGraph.items[(_selectedObject = selectedObject) === null || _selectedObject === void 0 ? void 0 : _selectedObject.itemID];
|
|
1489
|
+
if ((0, _util.isUndefined)(selectedItem)) return;
|
|
1490
|
+
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1491
|
+
var itemPos = selectedItem.position.clone();
|
|
1492
|
+
if (((_intersects$_i = intersects[_i10]) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.object) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.userData) === null || _intersects$_i === void 0 ? void 0 : _intersects$_i.itemId) === selectedItem.userData.itemId) {
|
|
1493
|
+
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
1494
|
+
} else {
|
|
1495
|
+
toolObj.position.set(planData.plan.position.x + itemPos.x, selectedElement.category === 'lighting' ? -planData.plan.position.y - selectedElement.properties.get('height').get('length') : planData.plan.position.y + selectedItem.children[0].position.y, planData.plan.position.z + itemPos.z);
|
|
1496
|
+
}
|
|
1497
|
+
scene3D.add(toolObj);
|
|
1498
|
+
};
|
|
1487
1499
|
if (Math.abs(mouse.x - _this2.lastMousePosition.x) <= 0.02 && Math.abs(mouse.y - _this2.lastMousePosition.y) <= 0.02 || bMove) {
|
|
1488
1500
|
if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
|
|
1489
1501
|
if (intersects[_i10] === undefined) {
|
|
@@ -1507,36 +1519,17 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1507
1519
|
isSelected = true;
|
|
1508
1520
|
setTimeout(function () {
|
|
1509
1521
|
(0, _sceneCreator.getDistances)(layer);
|
|
1510
|
-
|
|
1511
|
-
if ((0, _util.isUndefined)(selectedItem)) return;
|
|
1512
|
-
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1513
|
-
var itemPos = selectedItem.position.clone();
|
|
1514
|
-
if (intersects[_i10].object.parent && intersects[_i10].object.parent.parent.userData.itemId === selectedItem.userData.itemId) {
|
|
1515
|
-
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
1516
|
-
} else {
|
|
1517
|
-
toolObj.position.set(planData.plan.position.x + itemPos.x, selectedElement.category === 'lighting' ? -planData.plan.position.y - selectedElement.properties.get('height').get('length') : planData.plan.position.y + selectedItem.children[0].position.y, planData.plan.position.z + itemPos.z);
|
|
1518
|
-
}
|
|
1519
|
-
scene3D.add(toolObj);
|
|
1522
|
+
addItemToolObj();
|
|
1520
1523
|
_this2.setState({
|
|
1521
1524
|
toolObj: toolObj
|
|
1522
1525
|
});
|
|
1523
1526
|
// showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);
|
|
1524
|
-
var pointArray = []
|
|
1525
|
-
|
|
1526
|
-
pointArray.push([
|
|
1527
|
-
pointArray.push([
|
|
1528
|
-
pointArray.push([
|
|
1529
|
-
pointArray.
|
|
1530
|
-
pointArray.forEach(function (pointElement, index) {
|
|
1531
|
-
if (pointElement[0] == undefined) pointArray[index][0] = 0;
|
|
1532
|
-
});
|
|
1533
|
-
pointArray.forEach(function (pointElement) {
|
|
1534
|
-
if (pointElement[0] == 0) cnt++;
|
|
1535
|
-
});
|
|
1536
|
-
if (cnt == 4 || cnt == 3) {
|
|
1537
|
-
pointArray[0][0] = 100;
|
|
1538
|
-
pointArray[1][0] = 100;
|
|
1539
|
-
}
|
|
1527
|
+
var pointArray = [];
|
|
1528
|
+
// pointArray.push([fVLine[0].userData.distance, 90]);
|
|
1529
|
+
// pointArray.push([fVLine[1].userData.distance, -90]);
|
|
1530
|
+
// pointArray.push([fVLine[2].userData.distance, 180]);
|
|
1531
|
+
// pointArray.push([fVLine[3].userData.distance, 0]);
|
|
1532
|
+
pointArray = _export.GeometryUtils.calcDistancesFromItemToWalls(selectedElement, layer).PointArray;
|
|
1540
1533
|
actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
|
|
1541
1534
|
internalType = internalType ? internalType : _constants.INTERNAL_EVENT_SELECT_ELEMENT;
|
|
1542
1535
|
sendInternalEvent(internalType, selectedElement, pointArray);
|
|
@@ -1547,16 +1540,17 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1547
1540
|
var elementPrototype = null;
|
|
1548
1541
|
switch (true) {
|
|
1549
1542
|
case 'holeID' in selectedObject:
|
|
1550
|
-
|
|
1543
|
+
elementID = selectedObject.holeID;
|
|
1544
|
+
elementPrototype = 'holes';
|
|
1551
1545
|
if (_this2.props.state.mode === _constants.MODE_DRAGGING_HOLE_3D) {
|
|
1552
1546
|
actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
|
|
1553
|
-
internalType = _constants.INTERNAL_EVENT_SELECT_ELEMENT;
|
|
1554
|
-
elementID = selectedObject.holeID;
|
|
1555
|
-
elementPrototype = 'holes';
|
|
1556
1547
|
}
|
|
1557
1548
|
break;
|
|
1549
|
+
case 'lineID' in selectedObject:
|
|
1550
|
+
elementID = selectedObject.lineID;
|
|
1551
|
+
elementPrototype = 'lines';
|
|
1552
|
+
break;
|
|
1558
1553
|
case 'areaID' in selectedObject:
|
|
1559
|
-
internalType = _constants.INTERNAL_EVENT_SELECT_ELEMENT;
|
|
1560
1554
|
elementID = selectedObject.areaID;
|
|
1561
1555
|
elementPrototype = 'areas';
|
|
1562
1556
|
break;
|
|
@@ -1568,15 +1562,20 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1568
1562
|
isSelected = false;
|
|
1569
1563
|
}
|
|
1570
1564
|
} else {
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1565
|
+
var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1566
|
+
if (bMove && !(0, _helper.isEmpty)(selectedItem)) {
|
|
1567
|
+
addItemToolObj();
|
|
1568
|
+
} else {
|
|
1569
|
+
isSelected = false;
|
|
1570
|
+
_this2.context.projectActions.unselectAll();
|
|
1571
|
+
switch (true) {
|
|
1572
|
+
case 'holeID' in selectedObject:
|
|
1573
|
+
actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
|
|
1574
|
+
break;
|
|
1575
|
+
default:
|
|
1576
|
+
_this2.context.itemsActions.removeReplacingSupport();
|
|
1577
|
+
break;
|
|
1578
|
+
}
|
|
1580
1579
|
}
|
|
1581
1580
|
}
|
|
1582
1581
|
bMove = false;
|
|
@@ -1587,6 +1586,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1587
1586
|
selectedObj = allItemRect.cur;
|
|
1588
1587
|
}
|
|
1589
1588
|
} else {
|
|
1589
|
+
var _planData$sceneGraph2, _selectedObject2, _selectedObject3;
|
|
1590
1590
|
(0, _sceneCreator.visibleTransformBox)(false);
|
|
1591
1591
|
var alti = 0;
|
|
1592
1592
|
if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
|
|
@@ -1596,18 +1596,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1596
1596
|
alti = (0, _convertUnitsLite.convert)(alti).from(_unit2).to(_this2.props.state.scene.unit);
|
|
1597
1597
|
}
|
|
1598
1598
|
getPoint(event, alti);
|
|
1599
|
+
var _selectedItem = planData === null || planData === void 0 || (_planData$sceneGraph2 = planData.sceneGraph) === null || _planData$sceneGraph2 === void 0 || (_planData$sceneGraph2 = _planData$sceneGraph2.layers[(_selectedObject2 = selectedObject) === null || _selectedObject2 === void 0 ? void 0 : _selectedObject2.layerID]) === null || _planData$sceneGraph2 === void 0 ? void 0 : _planData$sceneGraph2.items[(_selectedObject3 = selectedObject) === null || _selectedObject3 === void 0 ? void 0 : _selectedObject3.itemID];
|
|
1600
|
+
if (isSelected && !(0, _helper.isEmpty)(_selectedItem)) addItemToolObj();
|
|
1599
1601
|
if (bRotate) {
|
|
1600
|
-
var _intersects$_i;
|
|
1601
|
-
var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1602
|
-
if ((0, _util.isUndefined)(selectedItem)) return;
|
|
1603
|
-
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1604
|
-
var itemPos = selectedItem.position.clone();
|
|
1605
|
-
if (((_intersects$_i = intersects[_i10]) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.object) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.userData) === null || _intersects$_i === void 0 ? void 0 : _intersects$_i.itemId) === selectedItem.userData.itemId) {
|
|
1606
|
-
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
1607
|
-
} else {
|
|
1608
|
-
toolObj.position.set(planData.plan.position.x + itemPos.x, selectedElement.category === 'lighting' ? -planData.plan.position.y - selectedElement.properties.get('height').get('length') : planData.plan.position.y + selectedItem.children[0].position.y, planData.plan.position.z + itemPos.z);
|
|
1609
|
-
}
|
|
1610
|
-
scene3D.add(toolObj);
|
|
1611
1602
|
_this2.setState({
|
|
1612
1603
|
toolObj: toolObj
|
|
1613
1604
|
});
|
|
@@ -1616,16 +1607,6 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1616
1607
|
}
|
|
1617
1608
|
if (bMove) {
|
|
1618
1609
|
bMove = false;
|
|
1619
|
-
var _selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1620
|
-
if ((0, _util.isUndefined)(_selectedItem)) return;
|
|
1621
|
-
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1622
|
-
var _itemPos = _selectedItem.position.clone();
|
|
1623
|
-
if (intersects[_i10].object.parent.parent.userData.itemId === _selectedItem.userData.itemId) {
|
|
1624
|
-
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
1625
|
-
} else {
|
|
1626
|
-
toolObj.position.set(planData.plan.position.x + _itemPos.x, selectedElement.category === 'lighting' ? -planData.plan.position.y - selectedElement.properties.get('height').get('length') : planData.plan.position.y + _selectedItem.children[0].position.y, planData.plan.position.z + _itemPos.z);
|
|
1627
|
-
}
|
|
1628
|
-
scene3D.add(toolObj);
|
|
1629
1610
|
_this2.setState({
|
|
1630
1611
|
toolObj: toolObj
|
|
1631
1612
|
});
|
|
@@ -2092,7 +2073,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2092
2073
|
if (minDis < snapDelta && !snapFlag) {
|
|
2093
2074
|
_this2.snap(snapObj, layer);
|
|
2094
2075
|
snapFlag = true;
|
|
2095
|
-
(0, _sceneCreator.getDistances)(layer
|
|
2076
|
+
(0, _sceneCreator.getDistances)(layer);
|
|
2096
2077
|
var _i13 = 0;
|
|
2097
2078
|
for (_i13 = 0; _i13 < _sceneCreator.fVLine.length; _i13++) {
|
|
2098
2079
|
if (_sceneCreator.fVLine[_i13].userData.distance < snapDelta) {
|
|
@@ -2451,18 +2432,14 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2451
2432
|
this.renderer.renderLists.dispose();
|
|
2452
2433
|
}
|
|
2453
2434
|
}, {
|
|
2454
|
-
key: "
|
|
2455
|
-
value: function
|
|
2435
|
+
key: "componentWillReceiveProps",
|
|
2436
|
+
value: function componentWillReceiveProps(nextProps) {
|
|
2456
2437
|
var _this4 = this;
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
var
|
|
2462
|
-
width = _this$props.width,
|
|
2463
|
-
height = _this$props.height;
|
|
2464
|
-
var selectedLayer = this.props.state.getIn(['scene', 'layers', this.props.state.scene.selectedLayer]);
|
|
2465
|
-
var ceilHeight = (0, _convertUnitsLite.convert)(selectedLayer.ceilHeight).from(selectedLayer.unit).to(this.props.state.scene.unit);
|
|
2438
|
+
if (this.props.downloadFlag && (0, _immutablediff["default"])(this.props.state, nextProps.state).toJS().length == 0 || (0, _helper.isEmpty)(nextProps.state.scene)) return;
|
|
2439
|
+
var width = nextProps.width,
|
|
2440
|
+
height = nextProps.height;
|
|
2441
|
+
var selectedLayer = nextProps.state.getIn(['scene', 'layers', nextProps.state.scene.selectedLayer]);
|
|
2442
|
+
var ceilHeight = (0, _convertUnitsLite.convert)(selectedLayer.ceilHeight).from(selectedLayer.unit).to(nextProps.state.scene.unit);
|
|
2466
2443
|
var actions = {
|
|
2467
2444
|
areaActions: this.context.areaActions,
|
|
2468
2445
|
holesActions: this.context.holesActions,
|
|
@@ -2472,7 +2449,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2472
2449
|
projectActions: this.context.projectActions,
|
|
2473
2450
|
catalog: this.context.catalog
|
|
2474
2451
|
};
|
|
2475
|
-
var isLoadingCabinet =
|
|
2452
|
+
var isLoadingCabinet = nextProps.state.scene.isLoadingCabinet;
|
|
2476
2453
|
if (this.state.isLoadingCabinet !== isLoadingCabinet) this.setState({
|
|
2477
2454
|
isLoadingCabinet: isLoadingCabinet
|
|
2478
2455
|
});
|
|
@@ -2483,7 +2460,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2483
2460
|
var allItemRect;
|
|
2484
2461
|
|
|
2485
2462
|
// handle camera setting
|
|
2486
|
-
switch (
|
|
2463
|
+
switch (this.props.state.mode) {
|
|
2487
2464
|
case _constants.MODE_ELEVATION_VIEW:
|
|
2488
2465
|
// when Elevation mode (camera: Orthographic)
|
|
2489
2466
|
var cameraRect = (0, _helper.handleCamRect)(width, height, ceilHeight, this.state.lineLength);
|
|
@@ -2501,12 +2478,12 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2501
2478
|
break;
|
|
2502
2479
|
}
|
|
2503
2480
|
this.camera.updateProjectionMatrix();
|
|
2504
|
-
var data =
|
|
2481
|
+
var data = nextProps.state.scene;
|
|
2505
2482
|
var layer = data.getIn(['layers', data.selectedLayer]);
|
|
2506
2483
|
var self = this;
|
|
2507
2484
|
function implementBacksplash() {
|
|
2508
|
-
if ((0, _helper.isElevationView)(self.props.state.mode)) return;
|
|
2509
|
-
var allItems = _export.GeometryUtils.getAllItemSpecified(
|
|
2485
|
+
if ((0, _helper.isElevationView)(self.props.state.mode)) return; // apply backsplash when just 3D_mode, not elevation_mode
|
|
2486
|
+
var allItems = _export.GeometryUtils.getAllItemSpecified(nextProps.state.scene, actions.catalog, _constants.BASE_CABINET_LAYOUTPOS);
|
|
2510
2487
|
var i,
|
|
2511
2488
|
items = [];
|
|
2512
2489
|
for (i = 0; i < allItems.others.length; i++) items.push(allItems.others[i]);
|
|
@@ -2515,7 +2492,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2515
2492
|
var calcRect = _export.GeometryUtils.getCalcRectFromItem3D(items[i]);
|
|
2516
2493
|
var visible = _export.GeometryUtils.isSnappedLine(calcRect, allLineRects);
|
|
2517
2494
|
actions.itemsActions.setBacksplashVisible(items[i].itemInfo.id, visible);
|
|
2518
|
-
(0, _sceneCreator.createBacksplash)(items[i],
|
|
2495
|
+
(0, _sceneCreator.createBacksplash)(items[i], nextProps.state.scene.getIn(['layers', nextProps.state.scene.selectedLayer]), planData, nextProps.state.scene);
|
|
2519
2496
|
}
|
|
2520
2497
|
}
|
|
2521
2498
|
function implementWarningBox() {
|
|
@@ -2543,13 +2520,16 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2543
2520
|
showflag: false
|
|
2544
2521
|
});
|
|
2545
2522
|
}
|
|
2546
|
-
if (
|
|
2547
|
-
var changedValues = (0, _immutablediff["default"])(
|
|
2523
|
+
if (nextProps.state.scene !== this.props.state.scene || nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') !== this.props.state.doorStyle.get('name')) {
|
|
2524
|
+
var changedValues = (0, _immutablediff["default"])(this.props.state.scene, nextProps.state.scene);
|
|
2548
2525
|
prepareSnapSpec(layer);
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2526
|
+
var isInteractiveMove = nextProps.state.mode === _constants.MODE_DRAGGING_ITEM_3D || nextProps.state.mode === _constants.MODE_ROTATING_ITEM_3D || nextProps.state.mode === _constants.MODE_DRAWING_ITEM_3D || nextProps.state.mode === _constants.MODE_DRAGGING_HOLE_3D || nextProps.state.mode === _constants.MODE_IDLE_3D;
|
|
2527
|
+
if (nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') === this.props.state.doorStyle.get('name')) {
|
|
2528
|
+
if (!isInteractiveMove) {
|
|
2529
|
+
self.setState({
|
|
2530
|
+
isLoading: true
|
|
2531
|
+
});
|
|
2532
|
+
}
|
|
2553
2533
|
if (self.props.downloadFlag) {
|
|
2554
2534
|
self.setState({
|
|
2555
2535
|
waitForRender: 0
|
|
@@ -2565,7 +2545,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2565
2545
|
}
|
|
2566
2546
|
self.renderer.domElement.style.display = 'none';
|
|
2567
2547
|
}
|
|
2568
|
-
if (
|
|
2548
|
+
if (nextProps.state.scene.showfg == true) {
|
|
2569
2549
|
implementBacksplash();
|
|
2570
2550
|
implementWarningBox();
|
|
2571
2551
|
} else {
|
|
@@ -2574,7 +2554,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2574
2554
|
var _this$state = this.state,
|
|
2575
2555
|
toolObj = _this$state.toolObj,
|
|
2576
2556
|
angleObj = _this$state.angleObj;
|
|
2577
|
-
var _updateScene = (0, _sceneCreator.updateScene)(this.planData,
|
|
2557
|
+
var _updateScene = (0, _sceneCreator.updateScene)(this.planData, nextProps.state.scene, this.props.state.scene, changedValues.toJS(), actions, this.context.catalog, nextProps.state.mode, toolObj, angleObj, nextProps.state.draggingSupport),
|
|
2578
2558
|
promise = _updateScene.promise;
|
|
2579
2559
|
self.setState();
|
|
2580
2560
|
promise.then(function (p1Value) {
|
|
@@ -2586,8 +2566,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2586
2566
|
});
|
|
2587
2567
|
self.renderer.domElement.style.display = 'block';
|
|
2588
2568
|
});
|
|
2589
|
-
if (
|
|
2590
|
-
|
|
2569
|
+
if (nextProps.state.getIn(['scene', 'isEndDragging'])) {
|
|
2570
|
+
nextProps.state.setIn(['scene', 'isEndDragging'], false);
|
|
2591
2571
|
}
|
|
2592
2572
|
}
|
|
2593
2573
|
this.renderer.setSize(width, height);
|
|
@@ -2675,4 +2655,13 @@ Scene3DViewer.propTypes = {
|
|
|
2675
2655
|
height: _propTypes["default"].number.isRequired,
|
|
2676
2656
|
replaceCabinet: _propTypes["default"].func.isRequired
|
|
2677
2657
|
};
|
|
2658
|
+
Scene3DViewer.contextTypes = {
|
|
2659
|
+
areaActions: _propTypes["default"].object.isRequired,
|
|
2660
|
+
holesActions: _propTypes["default"].object.isRequired,
|
|
2661
|
+
itemsActions: _propTypes["default"].object.isRequired,
|
|
2662
|
+
linesActions: _propTypes["default"].object.isRequired,
|
|
2663
|
+
sceneActions: _propTypes["default"].object.isRequired,
|
|
2664
|
+
projectActions: _propTypes["default"].object.isRequired,
|
|
2665
|
+
catalog: _propTypes["default"].object
|
|
2666
|
+
};
|
|
2678
2667
|
module.exports = exports.default;
|