kitchen-simulator 4.0.0-queuedEvents → 4.0.0
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 +141 -288
- package/es/LiteRenderer.js +159 -398
- package/es/actions/items-actions.js +10 -6
- package/es/actions/lines-actions.js +3 -1
- package/es/actions/project-actions.js +15 -5
- package/es/assets/img/svg/bottombar/elevation.svg +12 -5
- package/es/catalog/areas/area/planner-element.js +10 -5
- package/es/catalog/catalog.js +1 -4
- package/es/catalog/factories/area-factory-3d.js +2 -1
- package/es/catalog/factories/wall-factory-3d.js +2 -2
- package/es/catalog/factories/wall-factory.js +8 -8
- package/es/catalog/lines/wall/planner-element.js +18 -9
- package/es/catalog/utils/exporter.js +7 -3
- package/es/catalog/utils/item-loader.js +24 -14
- package/es/catalog/utils/mtl-loader.js +2 -2
- package/es/catalog/utils/obj-loader.js +2 -2
- package/es/class/hole.js +0 -2
- package/es/class/item.js +183 -184
- package/es/class/line.js +11 -3
- package/es/class/project.js +165 -48
- package/es/components/content.js +19 -6
- package/es/components/viewer2d/grids/grid-streak.js +1 -1
- package/es/components/viewer2d/item.js +84 -51
- package/es/components/viewer2d/line.js +315 -243
- package/es/components/viewer2d/ruler.js +20 -38
- package/es/components/viewer2d/rulerDist.js +48 -78
- package/es/components/viewer2d/utils.js +6 -0
- package/es/components/viewer2d/viewer2d.js +298 -220
- package/es/components/viewer3d/front3D.js +3 -2
- package/es/components/viewer3d/libs/mtl-loader.js +2 -2
- package/es/components/viewer3d/libs/obj-loader.js +2 -2
- package/es/components/viewer3d/libs/orbit-controls.js +3 -4
- package/es/components/viewer3d/libs/pointer-lock-controls.js +6 -7
- package/es/components/viewer3d/scene-creator.js +51 -15
- package/es/components/viewer3d/viewer3d.js +121 -82
- package/es/constants.js +111 -3
- package/es/devLiteRenderer.js +688 -31
- package/es/index.js +567 -87
- package/es/models.js +9 -5
- package/es/plugins/SVGLoader.js +7 -5
- package/es/plugins/console-debugger.js +0 -2
- package/es/plugins/keyboard.js +15 -6
- package/es/reducers/items-reducer.js +5 -5
- package/es/reducers/lines-reducer.js +1 -1
- package/es/reducers/project-reducer.js +5 -3
- package/es/shared-style.js +4 -4
- package/es/utils/geometry.js +163 -2
- package/es/utils/get-edges-of-subgraphs.js +1 -1
- package/es/utils/graph-cycles.js +1 -1
- package/es/utils/graph.js +1 -1
- package/es/utils/helper.js +105 -3
- package/es/utils/isolate-event-handler.js +1542 -164
- package/es/utils/molding.js +461 -11
- package/lib/LiteKitchenConfigurator.js +141 -289
- package/lib/LiteRenderer.js +159 -399
- package/lib/actions/items-actions.js +10 -6
- package/lib/actions/lines-actions.js +3 -1
- package/lib/actions/project-actions.js +15 -4
- package/lib/assets/img/svg/bottombar/elevation.svg +12 -5
- package/lib/catalog/areas/area/planner-element.js +11 -5
- package/lib/catalog/catalog.js +1 -4
- package/lib/catalog/factories/area-factory-3d.js +2 -1
- package/lib/catalog/factories/wall-factory-3d.js +2 -2
- package/lib/catalog/factories/wall-factory.js +8 -8
- package/lib/catalog/lines/wall/planner-element.js +19 -9
- package/lib/catalog/utils/exporter.js +7 -3
- package/lib/catalog/utils/item-loader.js +24 -14
- package/lib/catalog/utils/mtl-loader.js +9 -2
- package/lib/catalog/utils/obj-loader.js +10 -2
- package/lib/class/hole.js +0 -2
- package/lib/class/item.js +180 -181
- package/lib/class/line.js +9 -1
- package/lib/class/project.js +164 -47
- package/lib/components/content.js +19 -6
- package/lib/components/viewer2d/grids/grid-streak.js +1 -1
- package/lib/components/viewer2d/item.js +83 -50
- package/lib/components/viewer2d/line.js +315 -242
- package/lib/components/viewer2d/ruler.js +19 -37
- package/lib/components/viewer2d/rulerDist.js +48 -78
- package/lib/components/viewer2d/utils.js +7 -0
- package/lib/components/viewer2d/viewer2d.js +296 -219
- package/lib/components/viewer3d/front3D.js +3 -2
- package/lib/components/viewer3d/libs/mtl-loader.js +9 -2
- package/lib/components/viewer3d/libs/obj-loader.js +9 -2
- package/lib/components/viewer3d/libs/orbit-controls.js +11 -5
- package/lib/components/viewer3d/libs/pointer-lock-controls.js +13 -7
- package/lib/components/viewer3d/scene-creator.js +49 -13
- package/lib/components/viewer3d/viewer3d.js +119 -80
- package/lib/constants.js +116 -7
- package/lib/devLiteRenderer.js +687 -30
- package/lib/index.js +567 -87
- package/lib/models.js +9 -5
- package/lib/plugins/SVGLoader.js +7 -5
- package/lib/plugins/console-debugger.js +0 -2
- package/lib/plugins/keyboard.js +15 -6
- package/lib/reducers/items-reducer.js +5 -5
- package/lib/reducers/lines-reducer.js +1 -1
- package/lib/reducers/project-reducer.js +4 -2
- package/lib/shared-style.js +4 -4
- package/lib/utils/geometry.js +164 -2
- package/lib/utils/get-edges-of-subgraphs.js +6 -1
- package/lib/utils/graph-cycles.js +7 -8
- package/lib/utils/graph.js +6 -1
- package/lib/utils/helper.js +108 -2
- package/lib/utils/isolate-event-handler.js +1538 -159
- package/lib/utils/molding.js +463 -9
- package/package.json +1 -1
- package/es/assets/Window.hdr +0 -2100
- package/es/assets/img/1.jpg +0 -0
- package/lib/assets/Window.hdr +0 -2100
- package/lib/assets/img/1.jpg +0 -0
|
@@ -2,6 +2,7 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
|
2
2
|
import React, { useState, useEffect } from 'react';
|
|
3
3
|
import Viewer3D from "./viewer3d";
|
|
4
4
|
import State3D from "./ruler-utils/state3D";
|
|
5
|
+
import { isEmpty } from "../viewer2d/utils";
|
|
5
6
|
var k = 0;
|
|
6
7
|
export default function Front3D(_ref, _ref2) {
|
|
7
8
|
var width = _ref.width,
|
|
@@ -26,9 +27,9 @@ export default function Front3D(_ref, _ref2) {
|
|
|
26
27
|
setToolbar('');
|
|
27
28
|
};
|
|
28
29
|
useEffect(function () {
|
|
29
|
-
document.getElementById('front').addEventListener('mouseup', mouseUpEvent);
|
|
30
|
+
if (!isEmpty(document.getElementById('front'))) document.getElementById('front').addEventListener('mouseup', mouseUpEvent);
|
|
30
31
|
return function () {
|
|
31
|
-
document.getElementById('front').removeEventListener('mouseup', mouseUpEvent);
|
|
32
|
+
if (!isEmpty(document.getElementById('front'))) document.getElementById('front').removeEventListener('mouseup', mouseUpEvent);
|
|
32
33
|
};
|
|
33
34
|
}, []);
|
|
34
35
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("svg", {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @author angelxuanchang
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import * as THREE from 'three';
|
|
8
8
|
var MTLLoader;
|
|
9
9
|
MTLLoader = function MTLLoader(manager) {
|
|
10
10
|
this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;
|
|
@@ -354,4 +354,4 @@ MTLLoader.MaterialCreator.prototype = {
|
|
|
354
354
|
return texture;
|
|
355
355
|
}
|
|
356
356
|
};
|
|
357
|
-
|
|
357
|
+
export default MTLLoader;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @author mrdoob / http://mrdoob.com/
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
import * as THREE from 'three';
|
|
6
6
|
var OBJLoader;
|
|
7
7
|
OBJLoader = function OBJLoader(manager) {
|
|
8
8
|
this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;
|
|
@@ -459,4 +459,4 @@ OBJLoader.prototype = {
|
|
|
459
459
|
return container;
|
|
460
460
|
}
|
|
461
461
|
};
|
|
462
|
-
|
|
462
|
+
export default OBJLoader;
|
|
@@ -13,9 +13,8 @@
|
|
|
13
13
|
// Zoom - middle mouse, or mousewheel / touch: two finger spread or squish
|
|
14
14
|
// Pan - right mouse, or arrow keys / touch: three finter swipe
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
module.exports = OrbitControls = function OrbitControls(object, domElement) {
|
|
16
|
+
import * as THREE from 'three';
|
|
17
|
+
export default function OrbitControls(object, domElement) {
|
|
19
18
|
this.object = object;
|
|
20
19
|
this.domElement = domElement !== undefined ? domElement : document;
|
|
21
20
|
|
|
@@ -623,7 +622,7 @@ module.exports = OrbitControls = function OrbitControls(object, domElement) {
|
|
|
623
622
|
// force an update at start
|
|
624
623
|
|
|
625
624
|
this.update();
|
|
626
|
-
}
|
|
625
|
+
}
|
|
627
626
|
OrbitControls.prototype = Object.create(THREE.EventDispatcher.prototype);
|
|
628
627
|
OrbitControls.prototype.constructor = OrbitControls;
|
|
629
628
|
Object.defineProperties(OrbitControls.prototype, {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @author mrdoob / http://mrdoob.com/
|
|
3
|
+
* Converted to ESM
|
|
3
4
|
*/
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
module.exports = PointerLockControls = function PointerLockControls(camera) {
|
|
6
|
+
import * as THREE from 'three';
|
|
7
|
+
export default function PointerLockControls(camera) {
|
|
8
8
|
var scope = this;
|
|
9
9
|
camera.rotation.set(0, 0, 0);
|
|
10
10
|
var pitchObject = new THREE.Object3D();
|
|
@@ -15,14 +15,14 @@ module.exports = PointerLockControls = function PointerLockControls(camera) {
|
|
|
15
15
|
yawObject.position.y = 10;
|
|
16
16
|
yawObject.add(pitchObject);
|
|
17
17
|
var PI_2 = Math.PI / 2;
|
|
18
|
-
|
|
18
|
+
function onMouseMove(event) {
|
|
19
19
|
if (scope.enabled === false) return;
|
|
20
20
|
var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
|
|
21
21
|
var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
|
|
22
22
|
yawObject.rotation.y -= movementX * 0.002;
|
|
23
23
|
pitchObject.rotation.x -= movementY * 0.002;
|
|
24
24
|
pitchObject.rotation.x = Math.max(-PI_2, Math.min(PI_2, pitchObject.rotation.x));
|
|
25
|
-
}
|
|
25
|
+
}
|
|
26
26
|
this.dispose = function () {
|
|
27
27
|
document.removeEventListener('mousemove', onMouseMove, false);
|
|
28
28
|
};
|
|
@@ -33,7 +33,6 @@ module.exports = PointerLockControls = function PointerLockControls(camera) {
|
|
|
33
33
|
};
|
|
34
34
|
this.getDirection = function () {
|
|
35
35
|
// assumes the camera itself is not rotated
|
|
36
|
-
|
|
37
36
|
var direction = new THREE.Vector3(0, 0, -1);
|
|
38
37
|
var rotation = new THREE.Euler(0, 0, 0, 'YXZ');
|
|
39
38
|
return function (v) {
|
|
@@ -42,4 +41,4 @@ module.exports = PointerLockControls = function PointerLockControls(camera) {
|
|
|
42
41
|
return v;
|
|
43
42
|
};
|
|
44
43
|
}();
|
|
45
|
-
}
|
|
44
|
+
}
|
|
@@ -9,14 +9,14 @@ import * as Three from 'three';
|
|
|
9
9
|
import { Color, Group } from 'three';
|
|
10
10
|
import createGrid from "./grid-creator";
|
|
11
11
|
import { disposeObject } from "./three-memory-cleaner";
|
|
12
|
-
import { ANIMATE_STEP_MAX, ANIMATE_STEP_MIN, ARRAY_3D_MODES, ARROW_TEXT_BACKCOLOR, ARROW_TEXT_FONTFACE, ARROW_TEXT_FORECOLOR, BASE_CABINET_LAYOUTPOS, BOTTOM_MOLDING_LOCATION, DECIMAL_PLACES_2, DIFFERENT_VALUES_PATH_LENGTH, DISTANCE_EPSILON, EPSILON, MIDDLE_MOLDING_LOCATION, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_ITEM_3D, MODE_IDLE, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, OBJTYPE_MESH, SHADE_DARK_PURPLE_COLOR, TOP_MOLDING_LOCATION, UNIT_CENTIMETER, WALL_CABINET_LAYOUTPOS } from "../../constants";
|
|
12
|
+
import { ANIMATE_STEP_MAX, ANIMATE_STEP_MIN, ARRAY_3D_MODES, ARROW_TEXT_BACKCOLOR, ARROW_TEXT_FONTFACE, ARROW_TEXT_FORECOLOR, BASE_CABINET_LAYOUTPOS, BOTTOM_MOLDING_LOCATION, DECIMAL_PLACES_2, DIFFERENT_VALUES_PATH_LENGTH, DISTANCE_EPSILON, EPSILON, MIDDLE_MOLDING_LOCATION, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_ITEM_3D, MODE_IDLE, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, OBJTYPE_MESH, SHADE_DARK_PURPLE_COLOR, TOP_MOLDING_LOCATION, UNIT_CENTIMETER, UNIT_FOOT, UNIT_INCH, UNIT_METER, WALL_CABINET_LAYOUTPOS } from "../../constants";
|
|
13
13
|
import { GeometryUtils, IDBroker, MoldingUtils } from "../../utils/export";
|
|
14
14
|
import { convert } from "../../utils/convert-units-lite";
|
|
15
15
|
import { verticesDistance } from "../../utils/geometry";
|
|
16
16
|
import * as GeomUtils from "../../catalog/utils/geom-utils";
|
|
17
17
|
import { loadTexture } from "../../catalog/utils/item-loader";
|
|
18
18
|
import { returnReplaceableDeepSearchType } from "../viewer2d/utils";
|
|
19
|
-
import { animateDoor, isElevationView, isEmpty, replaceMeshesWithLineSegments, translateDrawer } from "../../utils/helper";
|
|
19
|
+
import { animateDoor, isElevationView, isEmpty, isImmutable, replaceMeshesWithLineSegments, translateDrawer } from "../../utils/helper";
|
|
20
20
|
import { formatNumber } from "../../utils/math";
|
|
21
21
|
var transformBox;
|
|
22
22
|
export var fVLine = [];
|
|
@@ -187,6 +187,31 @@ export function createWarningObject() {
|
|
|
187
187
|
warningObj.name = 'warningObj';
|
|
188
188
|
return warningObj;
|
|
189
189
|
}
|
|
190
|
+
function swapLengthProperty(diffs) {
|
|
191
|
+
var idx1 = diffs.findIndex(function (v) {
|
|
192
|
+
return v.path[v.path.length - 1] === 'length';
|
|
193
|
+
});
|
|
194
|
+
var idx2 = diffs.findIndex(function (v) {
|
|
195
|
+
return v.path[v.path.length - 1] === '_length';
|
|
196
|
+
});
|
|
197
|
+
if (idx1 < 0 || idx2 < 0) return diffs;
|
|
198
|
+
if (idx1 > idx2) return diffs;
|
|
199
|
+
if (diffs[idx1].op === diffs[idx2].op) {
|
|
200
|
+
var isSwap = true;
|
|
201
|
+
for (var i = 0; i < diffs[idx1].path.length - 2; i++) {
|
|
202
|
+
if (diffs[idx1].path[i] !== diffs[idx2].path[i]) {
|
|
203
|
+
isSwap = false;
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (isSwap) {
|
|
208
|
+
var temp = diffs[idx1];
|
|
209
|
+
diffs[idx1] = diffs[idx2];
|
|
210
|
+
diffs[idx2] = temp;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return diffs;
|
|
214
|
+
}
|
|
190
215
|
export function updateScene(planData, sceneData, oldSceneData, diffArray, actions, catalog) {
|
|
191
216
|
var _draggingItem$toJS, _filteredDiffs, _filteredDiffs2;
|
|
192
217
|
var mode = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
|
|
@@ -204,6 +229,9 @@ export function updateScene(planData, sceneData, oldSceneData, diffArray, action
|
|
|
204
229
|
value: el.value
|
|
205
230
|
};
|
|
206
231
|
});
|
|
232
|
+
|
|
233
|
+
// move "length" to after "_length"
|
|
234
|
+
splitted = swapLengthProperty(splitted);
|
|
207
235
|
var filteredDiffs = filterDiffs(splitted, sceneData, oldSceneData);
|
|
208
236
|
//***testing additional filter***
|
|
209
237
|
filteredDiffs = filteredDiffs.filter(function (_ref) {
|
|
@@ -238,7 +266,7 @@ export function updateScene(planData, sceneData, oldSceneData, diffArray, action
|
|
|
238
266
|
* Every 'doorStyle' change has a 'door_style_id' change.
|
|
239
267
|
* So, if door_style_id changes, it indicates 'doorStyle' change.
|
|
240
268
|
*/
|
|
241
|
-
if (['id'].includes(path[path.length - 1])) isSettingDoorStyle = true;
|
|
269
|
+
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;
|
|
242
270
|
|
|
243
271
|
// If there are any molding change of layer
|
|
244
272
|
if (path[1] === 'layers' && path[3] === 'molding') isUpdateMolding = true;
|
|
@@ -614,10 +642,10 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
|
|
|
614
642
|
vLine3.material.depthTest = false;
|
|
615
643
|
var uVec = new Three.Vector3(-posVec.x / scalevec.x, -posVec.y / scalevec.y, -posVec.z / scalevec.z);
|
|
616
644
|
var blLighting = item.type.includes('Light');
|
|
617
|
-
vLine.translateY(blLighting ? 1.6 : 0.1);
|
|
618
|
-
vLine1.translateY(blLighting ? 1.6 : 0.1);
|
|
619
|
-
vLine2.translateY(blLighting ? 1.6 : 0.1);
|
|
620
|
-
vLine3.translateY(blLighting ? 1.6 : 0.1);
|
|
645
|
+
vLine.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
|
|
646
|
+
vLine1.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
|
|
647
|
+
vLine2.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
|
|
648
|
+
vLine3.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
|
|
621
649
|
upObj.translateOnAxis(uVec, 1);
|
|
622
650
|
upObj.translateY(max.y - min.y);
|
|
623
651
|
_mBox.name = 'TransformBox';
|
|
@@ -923,9 +951,9 @@ function getLineDistance(obj, layer, isCalcWall, index) {
|
|
|
923
951
|
obj.geometry.attributes.position.needsUpdate = true;
|
|
924
952
|
obj.geometry.computeBoundingSphere();
|
|
925
953
|
obj.geometry.computeBoundingBox();
|
|
926
|
-
var dist =
|
|
954
|
+
var dist = convert(intersects[i].distance).from('cm').to('in');
|
|
927
955
|
if (dist > 3) {
|
|
928
|
-
var _canvas =
|
|
956
|
+
var _canvas = getDistanceCanvas(dist, layer);
|
|
929
957
|
var wid = _canvas.width / window.innerWidth * 30;
|
|
930
958
|
var hei = _canvas.height / window.innerHeight * 30;
|
|
931
959
|
var texture = new Three.Texture(_canvas);
|
|
@@ -1047,7 +1075,7 @@ function getLineDistance(obj, layer, isCalcWall, index) {
|
|
|
1047
1075
|
obj.geometry.attributes.position.needsUpdate = true;
|
|
1048
1076
|
var _dist = formatNumber(distance, DECIMAL_PLACES_2);
|
|
1049
1077
|
if (_dist > 3) {
|
|
1050
|
-
var _canvas2 =
|
|
1078
|
+
var _canvas2 = getDistanceCanvas(_dist, layer);
|
|
1051
1079
|
var _wid = _canvas2.width / window.innerWidth * 30;
|
|
1052
1080
|
var _hei = _canvas2.height / window.innerHeight * 30;
|
|
1053
1081
|
var _texture = new Three.Texture(_canvas2);
|
|
@@ -1175,12 +1203,18 @@ export function getIntersectPoint(opX, opY, pX, pY) {
|
|
|
1175
1203
|
function gcd(a, b) {
|
|
1176
1204
|
return a % b ? gcd(b, a % b) : b;
|
|
1177
1205
|
}
|
|
1178
|
-
function
|
|
1179
|
-
var
|
|
1206
|
+
function getDistanceCanvas(distance, layer) {
|
|
1207
|
+
var _layer$unit;
|
|
1208
|
+
var parameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
1180
1209
|
var canvas = document.createElement('canvas');
|
|
1181
1210
|
var ctx = canvas.getContext('2d');
|
|
1211
|
+
var curUnit = (_layer$unit = layer === null || layer === void 0 ? void 0 : layer.unit) !== null && _layer$unit !== void 0 ? _layer$unit : UNIT_INCH;
|
|
1212
|
+
var fixedLength = (layer === null || layer === void 0 ? void 0 : layer.unit) === UNIT_METER || (layer === null || layer === void 0 ? void 0 : layer.unit) === UNIT_FOOT ? 2 : 0;
|
|
1213
|
+
var distText = String((Math.round(convert(distance).from('in').to(curUnit) * 100) / 100).toFixed(fixedLength));
|
|
1182
1214
|
var fontSize = 16;
|
|
1183
|
-
var integral =
|
|
1215
|
+
var integral = distText + curUnit;
|
|
1216
|
+
// let integral = String(distance) + "''";
|
|
1217
|
+
|
|
1184
1218
|
parameters.fontName = parameters.fontName || ARROW_TEXT_FONTFACE;
|
|
1185
1219
|
|
|
1186
1220
|
// Prepare the font to be able to measure
|
|
@@ -3418,9 +3452,11 @@ export function updateMoldingGroupArray(MGArray, selItem, planData, layer) {
|
|
|
3418
3452
|
// refresh mesh of the updating molding groups
|
|
3419
3453
|
new_MGArray.forEach(function (mg, index) {
|
|
3420
3454
|
if (mg.items[0].molding.some(function (mol) {
|
|
3421
|
-
return mol.location_type === mg.location_type;
|
|
3455
|
+
return isImmutable(mol) ? mol.toJS().location_type === mg.location_type : mol.location_type === mg.location_type;
|
|
3422
3456
|
})) {
|
|
3423
|
-
var molding = mg.items[0].molding.filter(function (mol) {
|
|
3457
|
+
var molding = isImmutable(mg.items[0].molding) ? mg.items[0].molding.filter(function (mol) {
|
|
3458
|
+
return mol.toJS().location_type === mg.location_type;
|
|
3459
|
+
}).toJS()[0] : mg.items[0].molding.filter(function (mol) {
|
|
3424
3460
|
return mol.location_type === mg.location_type;
|
|
3425
3461
|
})[0];
|
|
3426
3462
|
if (mg.molding === null || mg.molding.itemID !== mol.itemID || mg.lines === null || mg.points === null) {
|
|
@@ -19,16 +19,16 @@ import { checkCabinetOverlap, createBacksplash, deleteSpecifiedMeshObjects, fVLi
|
|
|
19
19
|
import { disposeObject, disposeScene } from "./three-memory-cleaner";
|
|
20
20
|
import diff from 'immutablediff';
|
|
21
21
|
import * as SharedStyle from "../../shared-style";
|
|
22
|
-
import { BASE_CABINET_LAYOUTPOS, MODE_3D_VIEW, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_HOLE_3D, MODE_DRAWING_ITEM_3D, MODE_ELEVATION_VIEW, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, SECONDARY_PURPLE_COLOR, TALL_CABINET_LAYOUTPOS, UNIT_CENTIMETER, WALL_CABINET_LAYOUTPOS } from "../../constants";
|
|
22
|
+
import { BASE_CABINET_LAYOUTPOS, MODE_3D_VIEW, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_HOLE_3D, MODE_DRAWING_ITEM_3D, MODE_ELEVATION_VIEW, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, SECONDARY_PURPLE_COLOR, TALL_CABINET_LAYOUTPOS, UNIT_CENTIMETER, WALL_CABINET_LAYOUTPOS, INTERNAL_EVENT_SELECT_ELEMENT, INTERNAL_EVENT_DRAG_ELEMENT, INTERNAL_EVENT_DRAW_ELEMENT, INTERNAL_EVENT_ROTATE_ELEMENT, MODE_ROTATING_ITEM, MODE_DRAGGING_HOLE_3D, INTERNAL_EVENT_REPLACE_CABINET } from "../../constants";
|
|
23
23
|
import { isUndefined } from 'util';
|
|
24
24
|
import { verticesDistance } from "../../utils/geometry";
|
|
25
25
|
import { convert } from "../../utils/convert-units-lite";
|
|
26
26
|
import { GeometryUtils } from "../../utils/export";
|
|
27
|
-
import { handleCamRect, isElevationView, isEmpty } from "../../utils/helper";
|
|
27
|
+
import { handleCamRect, isElevationView, isEmpty, updatePayloadOfInternalEvent } from "../../utils/helper";
|
|
28
28
|
import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';
|
|
29
29
|
import CameraControls from 'camera-controls';
|
|
30
|
-
import { returnReplaceableDeepSearchType } from "../viewer2d/utils";
|
|
31
30
|
import { getAllMeshes, vectorIntersectWithMesh } from "../../utils/objects-utils";
|
|
31
|
+
import { returnReplaceableDeepSearchType } from "../viewer2d/utils";
|
|
32
32
|
CameraControls.install({
|
|
33
33
|
THREE: Three
|
|
34
34
|
});
|
|
@@ -231,6 +231,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
231
231
|
});
|
|
232
232
|
self.renderer.domElement.style.display = 'block';
|
|
233
233
|
}, 1500);
|
|
234
|
+
self.planData = planData;
|
|
234
235
|
});
|
|
235
236
|
var area = scene.getIn(['layers', scene.selectedLayer, 'areas']);
|
|
236
237
|
var layer = scene.getIn(['layers', scene.selectedLayer]);
|
|
@@ -669,7 +670,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
669
670
|
layer.lines.forEach(function (line) {
|
|
670
671
|
line.holes.forEach(function (holeID) {
|
|
671
672
|
var hole = layer.holes.get(holeID);
|
|
672
|
-
holes.push(hole);
|
|
673
|
+
if (hole) holes.push(hole);
|
|
673
674
|
});
|
|
674
675
|
});
|
|
675
676
|
var i = 0;
|
|
@@ -1183,6 +1184,18 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1183
1184
|
itemID: selItemId
|
|
1184
1185
|
};
|
|
1185
1186
|
};
|
|
1187
|
+
var sendInternalEvent = function sendInternalEvent(evtType, evtElement) {
|
|
1188
|
+
var pointArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
1189
|
+
if (!isEmpty(evtType) && !isEmpty(evtElement)) {
|
|
1190
|
+
var _state$get, _this2$props$onIntern, _this2$props;
|
|
1191
|
+
var catalog = (_state$get = state.get('catalog')) === null || _state$get === void 0 ? void 0 : _state$get.toJS();
|
|
1192
|
+
var payload = updatePayloadOfInternalEvent(evtElement, layer, catalog, pointArray);
|
|
1193
|
+
(_this2$props$onIntern = (_this2$props = _this2.props).onInternalEvent) === null || _this2$props$onIntern === void 0 || _this2$props$onIntern.call(_this2$props, {
|
|
1194
|
+
type: evtType,
|
|
1195
|
+
value: payload
|
|
1196
|
+
});
|
|
1197
|
+
}
|
|
1198
|
+
};
|
|
1186
1199
|
this.mouseDownEvent = function (event) {
|
|
1187
1200
|
gridPlanOrigin = gridPlane.position;
|
|
1188
1201
|
gridMatrix.copy(gridPlane.matrixWorld).invert();
|
|
@@ -1274,7 +1287,18 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1274
1287
|
}
|
|
1275
1288
|
}
|
|
1276
1289
|
if (selectedObject !== undefined) {
|
|
1277
|
-
|
|
1290
|
+
// get selected object from planData.sceneGraph
|
|
1291
|
+
var selectedItem = null;
|
|
1292
|
+
switch (true) {
|
|
1293
|
+
case 'itemID' in selectedObject:
|
|
1294
|
+
selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1295
|
+
break;
|
|
1296
|
+
case 'holeID' in selectedObject:
|
|
1297
|
+
selectedItem = planData.sceneGraph.layers[selectedObject.layerID].holes[selectedObject.holeID];
|
|
1298
|
+
break;
|
|
1299
|
+
default:
|
|
1300
|
+
break;
|
|
1301
|
+
}
|
|
1278
1302
|
sPoint.set(Point.x, Point.y);
|
|
1279
1303
|
if (transflag == 0) {
|
|
1280
1304
|
scene3D.remove(toolObj);
|
|
@@ -1323,11 +1347,6 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1323
1347
|
if (selectedFlag || toolIntersects.length > 0 && !isElevationView(mode)) {
|
|
1324
1348
|
cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;
|
|
1325
1349
|
selectedFlag = false;
|
|
1326
|
-
} else {
|
|
1327
|
-
isSelected = false;
|
|
1328
|
-
_this2.context.projectActions.unselectAll();
|
|
1329
|
-
scene3D.remove(toolObj);
|
|
1330
|
-
_this2.context.itemsActions.removeReplacingSupport();
|
|
1331
1350
|
}
|
|
1332
1351
|
}
|
|
1333
1352
|
} else {
|
|
@@ -1340,7 +1359,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1340
1359
|
}
|
|
1341
1360
|
};
|
|
1342
1361
|
this.mouseUpEvent = function (event) {
|
|
1343
|
-
var
|
|
1362
|
+
var internalType = ''; // internalEvent type - select/drag/draw
|
|
1363
|
+
var selectedElement; // internalEvent data
|
|
1344
1364
|
firstMove = 0;
|
|
1345
1365
|
var altitude = 0;
|
|
1346
1366
|
if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
|
|
@@ -1377,6 +1397,21 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1377
1397
|
isInitialPhase = true;
|
|
1378
1398
|
return;
|
|
1379
1399
|
}
|
|
1400
|
+
switch (_this2.props.state.mode) {
|
|
1401
|
+
case MODE_DRAGGING_ITEM_3D:
|
|
1402
|
+
case MODE_DRAGGING_HOLE_3D:
|
|
1403
|
+
internalType = INTERNAL_EVENT_DRAG_ELEMENT;
|
|
1404
|
+
break;
|
|
1405
|
+
case MODE_ROTATING_ITEM_3D:
|
|
1406
|
+
internalType = INTERNAL_EVENT_ROTATE_ELEMENT;
|
|
1407
|
+
break;
|
|
1408
|
+
case MODE_DRAWING_HOLE_3D:
|
|
1409
|
+
internalType = INTERNAL_EVENT_DRAW_ELEMENT;
|
|
1410
|
+
break;
|
|
1411
|
+
case MODE_IDLE_3D:
|
|
1412
|
+
internalType = INTERNAL_EVENT_SELECT_ELEMENT;
|
|
1413
|
+
break;
|
|
1414
|
+
}
|
|
1380
1415
|
if (_this2.props.state.mode == MODE_DRAGGING_ITEM_3D) {
|
|
1381
1416
|
_this2.context.itemsActions.endDraggingItem3D();
|
|
1382
1417
|
}
|
|
@@ -1409,7 +1444,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1409
1444
|
});
|
|
1410
1445
|
});
|
|
1411
1446
|
var intersects = raycaster.intersectObjects(meshes, true);
|
|
1412
|
-
var _i10;
|
|
1447
|
+
var _i10; // index of warning object in intersects
|
|
1448
|
+
|
|
1413
1449
|
if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
|
|
1414
1450
|
for (_i10 = 0; _i10 < intersects.length; _i10++) {
|
|
1415
1451
|
if (intersects[_i10].object.name === 'warningObj') break;
|
|
@@ -1425,6 +1461,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1425
1461
|
var replaceInfo = intersects[_i10].object.parent.parent.userData;
|
|
1426
1462
|
_this2.context.itemsActions.selectItem(replaceInfo.layerId, replaceInfo.itemId);
|
|
1427
1463
|
!_this2.props.downloadFlag && _this2.props.replaceCabinet(true);
|
|
1464
|
+
internalType = INTERNAL_EVENT_REPLACE_CABINET;
|
|
1465
|
+
var replaceElement = _this2.props.state.scene.layers.get(replaceInfo.layerId).items.get(replaceInfo.itemId);
|
|
1466
|
+
sendInternalEvent(internalType, replaceElement);
|
|
1428
1467
|
return;
|
|
1429
1468
|
}
|
|
1430
1469
|
}
|
|
@@ -1437,6 +1476,19 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1437
1476
|
}
|
|
1438
1477
|
}
|
|
1439
1478
|
gridMatrix.copy(gridPlane.matrixWorld).invert();
|
|
1479
|
+
var addItemToolObj = function addItemToolObj() {
|
|
1480
|
+
var _planData$sceneGraph, _selectedObject, _intersects$_i;
|
|
1481
|
+
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];
|
|
1482
|
+
if (isUndefined(selectedItem)) return;
|
|
1483
|
+
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1484
|
+
var itemPos = selectedItem.position.clone();
|
|
1485
|
+
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) {
|
|
1486
|
+
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
1487
|
+
} else {
|
|
1488
|
+
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);
|
|
1489
|
+
}
|
|
1490
|
+
scene3D.add(toolObj);
|
|
1491
|
+
};
|
|
1440
1492
|
if (Math.abs(mouse.x - _this2.lastMousePosition.x) <= 0.02 && Math.abs(mouse.y - _this2.lastMousePosition.y) <= 0.02 || bMove) {
|
|
1441
1493
|
if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
|
|
1442
1494
|
if (intersects[_i10] === undefined) {
|
|
@@ -1460,67 +1512,63 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1460
1512
|
isSelected = true;
|
|
1461
1513
|
setTimeout(function () {
|
|
1462
1514
|
getDistances(layer);
|
|
1463
|
-
|
|
1464
|
-
if (isUndefined(selectedItem)) return;
|
|
1465
|
-
var selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1466
|
-
var itemPos = selectedItem.position.clone();
|
|
1467
|
-
if (intersects[_i10].object.parent && intersects[_i10].object.parent.parent.userData.itemId === selectedItem.userData.itemId) {
|
|
1468
|
-
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
1469
|
-
} else {
|
|
1470
|
-
toolObj.position.set(planData.plan.position.x + itemPos.x, selItem.category === 'lighting' ? -planData.plan.position.y - selItem.properties.get('height').get('length') : planData.plan.position.y + selectedItem.children[0].position.y, planData.plan.position.z + itemPos.z);
|
|
1471
|
-
}
|
|
1472
|
-
scene3D.add(toolObj);
|
|
1515
|
+
addItemToolObj();
|
|
1473
1516
|
_this2.setState({
|
|
1474
1517
|
toolObj: toolObj
|
|
1475
1518
|
});
|
|
1476
1519
|
// showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);
|
|
1477
|
-
var pointArray = []
|
|
1478
|
-
|
|
1479
|
-
pointArray.push([fVLine[
|
|
1480
|
-
pointArray.push([fVLine[
|
|
1481
|
-
pointArray.push([fVLine[
|
|
1482
|
-
pointArray.
|
|
1483
|
-
pointArray.forEach(function (pointElement, index) {
|
|
1484
|
-
if (pointElement[0] == undefined) pointArray[index][0] = 0;
|
|
1485
|
-
});
|
|
1486
|
-
pointArray.forEach(function (pointElement) {
|
|
1487
|
-
if (pointElement[0] == 0) cnt++;
|
|
1488
|
-
});
|
|
1489
|
-
if (cnt == 4 || cnt == 3) {
|
|
1490
|
-
pointArray[0][0] = 100;
|
|
1491
|
-
pointArray[1][0] = 100;
|
|
1492
|
-
}
|
|
1520
|
+
var pointArray = [];
|
|
1521
|
+
// pointArray.push([fVLine[0].userData.distance, 90]);
|
|
1522
|
+
// pointArray.push([fVLine[1].userData.distance, -90]);
|
|
1523
|
+
// pointArray.push([fVLine[2].userData.distance, 180]);
|
|
1524
|
+
// pointArray.push([fVLine[3].userData.distance, 0]);
|
|
1525
|
+
pointArray = GeometryUtils.calcDistancesFromItemToWalls(selectedElement, layer).PointArray;
|
|
1493
1526
|
actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
|
|
1527
|
+
internalType = internalType ? internalType : INTERNAL_EVENT_SELECT_ELEMENT;
|
|
1528
|
+
sendInternalEvent(internalType, selectedElement, pointArray);
|
|
1494
1529
|
});
|
|
1495
1530
|
} else {
|
|
1496
1531
|
if (selectedObject) {
|
|
1532
|
+
var elementID = null;
|
|
1533
|
+
var elementPrototype = null;
|
|
1497
1534
|
switch (true) {
|
|
1498
1535
|
case 'holeID' in selectedObject:
|
|
1499
|
-
|
|
1536
|
+
elementID = selectedObject.holeID;
|
|
1537
|
+
elementPrototype = 'holes';
|
|
1538
|
+
if (_this2.props.state.mode === MODE_DRAGGING_HOLE_3D) {
|
|
1500
1539
|
actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
|
|
1501
1540
|
}
|
|
1502
1541
|
break;
|
|
1503
1542
|
case 'lineID' in selectedObject:
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1543
|
+
elementID = selectedObject.lineID;
|
|
1544
|
+
elementPrototype = 'lines';
|
|
1545
|
+
break;
|
|
1546
|
+
case 'areaID' in selectedObject:
|
|
1547
|
+
elementID = selectedObject.areaID;
|
|
1548
|
+
elementPrototype = 'areas';
|
|
1507
1549
|
break;
|
|
1508
1550
|
default:
|
|
1509
1551
|
break;
|
|
1510
1552
|
}
|
|
1553
|
+
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).getIn([elementPrototype, elementID]);
|
|
1511
1554
|
}
|
|
1512
1555
|
isSelected = false;
|
|
1513
1556
|
}
|
|
1514
1557
|
} else {
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1558
|
+
var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1559
|
+
if (bMove && !isEmpty(selectedItem)) {
|
|
1560
|
+
addItemToolObj();
|
|
1561
|
+
} else {
|
|
1562
|
+
isSelected = false;
|
|
1563
|
+
_this2.context.projectActions.unselectAll();
|
|
1564
|
+
switch (true) {
|
|
1565
|
+
case 'holeID' in selectedObject:
|
|
1566
|
+
actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
|
|
1567
|
+
break;
|
|
1568
|
+
default:
|
|
1569
|
+
_this2.context.itemsActions.removeReplacingSupport();
|
|
1570
|
+
break;
|
|
1571
|
+
}
|
|
1524
1572
|
}
|
|
1525
1573
|
}
|
|
1526
1574
|
bMove = false;
|
|
@@ -1531,6 +1579,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1531
1579
|
selectedObj = allItemRect.cur;
|
|
1532
1580
|
}
|
|
1533
1581
|
} else {
|
|
1582
|
+
var _planData$sceneGraph2, _selectedObject2, _selectedObject3;
|
|
1534
1583
|
visibleTransformBox(false);
|
|
1535
1584
|
var alti = 0;
|
|
1536
1585
|
if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
|
|
@@ -1540,18 +1589,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1540
1589
|
alti = convert(alti).from(_unit2).to(_this2.props.state.scene.unit);
|
|
1541
1590
|
}
|
|
1542
1591
|
getPoint(event, alti);
|
|
1592
|
+
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];
|
|
1593
|
+
if (isSelected && !isEmpty(_selectedItem)) addItemToolObj();
|
|
1543
1594
|
if (bRotate) {
|
|
1544
|
-
var _intersects$_i;
|
|
1545
|
-
var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1546
|
-
if (isUndefined(selectedItem)) return;
|
|
1547
|
-
var selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1548
|
-
var itemPos = selectedItem.position.clone();
|
|
1549
|
-
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) {
|
|
1550
|
-
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
1551
|
-
} else {
|
|
1552
|
-
toolObj.position.set(planData.plan.position.x + itemPos.x, selItem.category === 'lighting' ? -planData.plan.position.y - selItem.properties.get('height').get('length') : planData.plan.position.y + selectedItem.children[0].position.y, planData.plan.position.z + itemPos.z);
|
|
1553
|
-
}
|
|
1554
|
-
scene3D.add(toolObj);
|
|
1555
1595
|
_this2.setState({
|
|
1556
1596
|
toolObj: toolObj
|
|
1557
1597
|
});
|
|
@@ -1560,16 +1600,6 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1560
1600
|
}
|
|
1561
1601
|
if (bMove) {
|
|
1562
1602
|
bMove = false;
|
|
1563
|
-
var _selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1564
|
-
if (isUndefined(_selectedItem)) return;
|
|
1565
|
-
var _selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1566
|
-
var _itemPos = _selectedItem.position.clone();
|
|
1567
|
-
if (intersects[_i10].object.parent.parent.userData.itemId === _selectedItem.userData.itemId) {
|
|
1568
|
-
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
1569
|
-
} else {
|
|
1570
|
-
toolObj.position.set(planData.plan.position.x + _itemPos.x, _selItem.category === 'lighting' ? -planData.plan.position.y - _selItem.properties.get('height').get('length') : planData.plan.position.y + _selectedItem.children[0].position.y, planData.plan.position.z + _itemPos.z);
|
|
1571
|
-
}
|
|
1572
|
-
scene3D.add(toolObj);
|
|
1573
1603
|
_this2.setState({
|
|
1574
1604
|
toolObj: toolObj
|
|
1575
1605
|
});
|
|
@@ -1601,6 +1631,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1601
1631
|
selectedObj = allItemRect.cur;
|
|
1602
1632
|
}
|
|
1603
1633
|
}
|
|
1634
|
+
sendInternalEvent(internalType, selectedElement);
|
|
1604
1635
|
};
|
|
1605
1636
|
this.mouseEnterEvent = function (event) {
|
|
1606
1637
|
if (_this2.props.state.mode !== MODE_DRAWING_ITEM_3D) return;
|
|
@@ -2035,7 +2066,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2035
2066
|
if (minDis < snapDelta && !snapFlag) {
|
|
2036
2067
|
_this2.snap(snapObj, layer);
|
|
2037
2068
|
snapFlag = true;
|
|
2038
|
-
getDistances(layer
|
|
2069
|
+
getDistances(layer);
|
|
2039
2070
|
var _i13 = 0;
|
|
2040
2071
|
for (_i13 = 0; _i13 < fVLine.length; _i13++) {
|
|
2041
2072
|
if (fVLine[_i13].userData.distance < snapDelta) {
|
|
@@ -2159,7 +2190,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2159
2190
|
scene3D = new Three.Scene();
|
|
2160
2191
|
if (isElevationView(state.mode)) scene3D.background = new Three.Color(0xffffff);
|
|
2161
2192
|
// change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
|
|
2162
|
-
else scene3D.background = new Three.Color(
|
|
2193
|
+
else scene3D.background = new Three.Color(0xe4ebfe); // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
|
|
2163
2194
|
// scene3D.fog = new Three.Fog(0xC3CADC, 2000, 3500);
|
|
2164
2195
|
window.scene3D = scene3D;
|
|
2165
2196
|
// Camera
|
|
@@ -2485,10 +2516,13 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2485
2516
|
if (nextProps.state.scene !== this.props.state.scene || nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') !== this.props.state.doorStyle.get('name')) {
|
|
2486
2517
|
var changedValues = diff(this.props.state.scene, nextProps.state.scene);
|
|
2487
2518
|
prepareSnapSpec(layer);
|
|
2519
|
+
var isInteractiveMove = nextProps.state.mode === MODE_DRAGGING_ITEM_3D || nextProps.state.mode === MODE_ROTATING_ITEM_3D || nextProps.state.mode === MODE_DRAWING_ITEM_3D || nextProps.state.mode === MODE_DRAGGING_HOLE_3D || nextProps.state.mode === MODE_IDLE_3D;
|
|
2488
2520
|
if (nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') === this.props.state.doorStyle.get('name')) {
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2521
|
+
if (!isInteractiveMove) {
|
|
2522
|
+
self.setState({
|
|
2523
|
+
isLoading: true
|
|
2524
|
+
});
|
|
2525
|
+
}
|
|
2492
2526
|
if (self.props.downloadFlag) {
|
|
2493
2527
|
self.setState({
|
|
2494
2528
|
waitForRender: 0
|
|
@@ -2554,7 +2588,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2554
2588
|
height: '70px',
|
|
2555
2589
|
animation: 'spin 2s linear infinite'
|
|
2556
2590
|
},
|
|
2557
|
-
src: '/assets/img/
|
|
2591
|
+
src: '/assets/img/loading/loading.gif',
|
|
2558
2592
|
alt: "img"
|
|
2559
2593
|
}));
|
|
2560
2594
|
} else {
|
|
@@ -2568,9 +2602,12 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2568
2602
|
}, /*#__PURE__*/React.createElement("img", {
|
|
2569
2603
|
style: {
|
|
2570
2604
|
animation: 'spin 2s linear infinite',
|
|
2571
|
-
|
|
2605
|
+
position: "absolute",
|
|
2606
|
+
top: "50%",
|
|
2607
|
+
width: '70px',
|
|
2608
|
+
height: '70px'
|
|
2572
2609
|
},
|
|
2573
|
-
src: '/assets/img/
|
|
2610
|
+
src: '/assets/img/loading/loading.gif',
|
|
2574
2611
|
alt: "img"
|
|
2575
2612
|
}));
|
|
2576
2613
|
}
|
|
@@ -2587,9 +2624,11 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2587
2624
|
style: {
|
|
2588
2625
|
animation: 'spin 2s linear infinite',
|
|
2589
2626
|
position: "absolute",
|
|
2590
|
-
top: "50%"
|
|
2627
|
+
top: "50%",
|
|
2628
|
+
width: '70px',
|
|
2629
|
+
height: '70px'
|
|
2591
2630
|
},
|
|
2592
|
-
src: '/assets/img/
|
|
2631
|
+
src: '/assets/img/loading/loading.gif',
|
|
2593
2632
|
alt: "img"
|
|
2594
2633
|
}));
|
|
2595
2634
|
} else {
|