kitchen-simulator 1.1.1-test.72 → 1.1.1-test.73
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/@history.js +2 -5
- package/es/AppContext.js +3 -6
- package/es/KitchenConfigurator.js +86 -86
- package/es/KitchenConfiguratorApp.js +134 -128
- package/es/actions/area-actions.js +5 -8
- package/es/actions/export.js +12 -24
- package/es/actions/groups-actions.js +27 -41
- package/es/actions/holes-actions.js +34 -51
- package/es/actions/items-actions.js +94 -141
- package/es/actions/lines-actions.js +21 -32
- package/es/actions/project-actions.js +94 -141
- package/es/actions/scene-actions.js +11 -17
- package/es/actions/vertices-actions.js +7 -11
- package/es/actions/viewer2d-actions.js +21 -32
- package/es/actions/viewer3d-actions.js +9 -14
- package/es/catalog/areas/area/planner-element.js +2 -5
- package/es/catalog/catalog.js +15 -17
- package/es/catalog/factories/area-factory-3d.js +22 -26
- package/es/catalog/factories/area-factory.js +13 -15
- package/es/catalog/factories/export.js +6 -10
- package/es/catalog/factories/wall-factory-3d.js +31 -36
- package/es/catalog/factories/wall-factory.js +21 -26
- package/es/catalog/holes/door-closet/planner-element.js +15 -19
- package/es/catalog/holes/door-double/planner-element.js +15 -19
- package/es/catalog/holes/door-exterior/planner-element.js +16 -20
- package/es/catalog/holes/door-interior/planner-element.js +16 -20
- package/es/catalog/holes/door-panic/planner-element.js +7 -11
- package/es/catalog/holes/door-panic-double/planner-element.js +15 -19
- package/es/catalog/holes/door-sliding/planner-element.js +17 -21
- package/es/catalog/holes/doorway-framed/planner-element.js +11 -15
- package/es/catalog/holes/doorway-frameless/planner-element.js +7 -11
- package/es/catalog/holes/export.js +13 -29
- package/es/catalog/holes/window-clear/planner-element.js +10 -14
- package/es/catalog/holes/window-cross/planner-element.js +10 -14
- package/es/catalog/holes/window-double-hung/planner-element.js +10 -14
- package/es/catalog/holes/window-vertical/planner-element.js +10 -14
- package/es/catalog/lines/wall/planner-element.js +2 -5
- package/es/catalog/molding/molding-dcm/planner-element.js +5 -9
- package/es/catalog/molding/molding-fbm/planner-element.js +5 -9
- package/es/catalog/molding/molding-lrm/planner-element.js +5 -9
- package/es/catalog/properties/export.js +20 -31
- package/es/catalog/properties/property-checkbox.js +28 -29
- package/es/catalog/properties/property-color.js +16 -19
- package/es/catalog/properties/property-enum.js +24 -27
- package/es/catalog/properties/property-hidden.js +9 -12
- package/es/catalog/properties/property-lenght-measure.js +38 -41
- package/es/catalog/properties/property-length-measure.js +36 -39
- package/es/catalog/properties/property-length-measure_hole.js +38 -41
- package/es/catalog/properties/property-number.js +17 -20
- package/es/catalog/properties/property-read-only.js +16 -19
- package/es/catalog/properties/property-string.js +16 -19
- package/es/catalog/properties/property-toggle.js +16 -19
- package/es/catalog/properties/shared-property-style.js +1 -3
- package/es/catalog/utils/FuseUtils.js +12 -13
- package/es/catalog/utils/exporter.js +10 -11
- package/es/catalog/utils/geom-utils.js +13 -24
- package/es/catalog/utils/item-loader.js +86 -92
- package/es/catalog/utils/load-obj.js +20 -24
- package/es/catalog/utils/mtl-loader.js +3 -4
- package/es/catalog/utils/obj-loader.js +3 -4
- package/es/class/FuseUtils.js +12 -13
- package/es/class/area.js +24 -24
- package/es/class/export.js +23 -36
- package/es/class/group.js +53 -55
- package/es/class/guide.js +15 -17
- package/es/class/hole.js +83 -85
- package/es/class/item.js +155 -155
- package/es/class/layer.js +59 -61
- package/es/class/line.js +135 -138
- package/es/class/project.js +93 -94
- package/es/class/vertex.js +29 -31
- package/es/components/content.js +19 -23
- package/es/components/disclaimer/disclaimer.js +10 -13
- package/es/components/export.js +8 -13
- package/es/components/style/button.js +25 -25
- package/es/components/style/cancel-button.js +7 -10
- package/es/components/style/content-container.js +11 -12
- package/es/components/style/content-title.js +13 -15
- package/es/components/style/delete-button.js +8 -12
- package/es/components/style/export.js +30 -46
- package/es/components/style/form-block.js +10 -11
- package/es/components/style/form-color-input.js +7 -10
- package/es/components/style/form-label.js +10 -11
- package/es/components/style/form-number-input.js +45 -43
- package/es/components/style/form-number-input_2.js +41 -39
- package/es/components/style/form-select.js +19 -20
- package/es/components/style/form-slider.js +10 -13
- package/es/components/style/form-submit-button.js +8 -12
- package/es/components/style/form-text-input.js +30 -28
- package/es/components/viewer2d/area.js +17 -20
- package/es/components/viewer2d/export.js +30 -46
- package/es/components/viewer2d/grids/grid-horizontal-streak.js +10 -13
- package/es/components/viewer2d/grids/grid-streak.js +10 -13
- package/es/components/viewer2d/grids/grid-vertical-streak.js +10 -13
- package/es/components/viewer2d/grids/grids.js +10 -14
- package/es/components/viewer2d/group.js +15 -19
- package/es/components/viewer2d/item.js +61 -65
- package/es/components/viewer2d/layer.js +23 -26
- package/es/components/viewer2d/line.js +101 -106
- package/es/components/viewer2d/ruler.js +22 -25
- package/es/components/viewer2d/rulerDist.js +21 -24
- package/es/components/viewer2d/rulerX.js +46 -44
- package/es/components/viewer2d/rulerY.js +44 -42
- package/es/components/viewer2d/scene.js +34 -34
- package/es/components/viewer2d/snap.js +13 -17
- package/es/components/viewer2d/state.js +18 -22
- package/es/components/viewer2d/utils.js +24 -33
- package/es/components/viewer2d/vertex.js +8 -12
- package/es/components/viewer2d/viewer2d.js +156 -159
- package/es/components/viewer3d/camera-controls-module/camera-controls.module.js +21 -19
- package/es/components/viewer3d/dcm.js +1 -3
- package/es/components/viewer3d/fbm.js +1 -3
- package/es/components/viewer3d/front3D.js +12 -16
- package/es/components/viewer3d/grid-creator.js +8 -12
- package/es/components/viewer3d/grids/grid-horizontal-streak.js +6 -9
- package/es/components/viewer3d/grids/grid-streak.js +5 -8
- package/es/components/viewer3d/grids/grid-vertical-streak.js +6 -9
- package/es/components/viewer3d/libs/first-person-controls.js +2 -5
- package/es/components/viewer3d/libs/helvetiker_regular.typeface.js +1 -3
- package/es/components/viewer3d/libs/mtl-loader.js +1 -3
- package/es/components/viewer3d/libs/obj-loader.js +1 -3
- package/es/components/viewer3d/libs/orbit-controls.js +2 -4
- package/es/components/viewer3d/libs/pointer-lock-controls.js +2 -4
- package/es/components/viewer3d/lrm.js +1 -3
- package/es/components/viewer3d/model.js +1 -3
- package/es/components/viewer3d/pointer-lock-navigation.js +3 -6
- package/es/components/viewer3d/ruler-utils/itemRect.js +18 -21
- package/es/components/viewer3d/ruler-utils/layer3D.js +59 -62
- package/es/components/viewer3d/ruler-utils/ruler3D.js +42 -43
- package/es/components/viewer3d/ruler-utils/scene3D.js +9 -13
- package/es/components/viewer3d/ruler-utils/state3D.js +4 -7
- package/es/components/viewer3d/scene-creator.js +197 -223
- package/es/components/viewer3d/three-memory-cleaner.js +3 -7
- package/es/components/viewer3d/viewer3d-first-person.js +42 -42
- package/es/components/viewer3d/viewer3d.js +200 -198
- package/es/constants.js +349 -354
- package/es/index.js +7 -11
- package/es/models.js +193 -191
- package/es/plugins/SVGLoader.js +48 -49
- package/es/plugins/autosave.js +3 -5
- package/es/plugins/console-debugger.js +6 -7
- package/es/plugins/export.js +8 -13
- package/es/plugins/keyboard.js +29 -31
- package/es/reducers/areas-reducer.js +7 -9
- package/es/reducers/export.js +24 -37
- package/es/reducers/groups-reducer.js +31 -33
- package/es/reducers/holes-reducer.js +43 -45
- package/es/reducers/items-reducer.js +106 -108
- package/es/reducers/lines-reducer.js +28 -30
- package/es/reducers/project-reducer.js +105 -107
- package/es/reducers/reducer.js +16 -19
- package/es/reducers/scene-reducer.js +15 -17
- package/es/reducers/user-reducer.js +5 -7
- package/es/reducers/vertices-reducer.js +11 -13
- package/es/reducers/viewer2d-reducer.js +18 -20
- package/es/reducers/viewer3d-reducer.js +16 -18
- package/es/shared-style.js +10 -12
- package/es/styles/export.js +3 -6
- package/es/translator/en.js +1 -3
- package/es/translator/it.js +1 -3
- package/es/translator/ru.js +1 -3
- package/es/translator/translator.js +13 -15
- package/es/utils/browser.js +2 -5
- package/es/utils/convert-units-lite.js +1 -3
- package/es/utils/email-validator.js +1 -3
- package/es/utils/export.js +15 -29
- package/es/utils/geometry.js +190 -280
- package/es/utils/get-edges-of-subgraphs.js +2 -5
- package/es/utils/graph-cycles.js +8 -7
- package/es/utils/graph-inner-cycles.js +10 -14
- package/es/utils/graph.js +9 -13
- package/es/utils/helper.js +41 -58
- package/es/utils/history.js +8 -11
- package/es/utils/id-broker.js +8 -11
- package/es/utils/logger.js +1 -3
- package/es/utils/math.js +5 -8
- package/es/utils/molding.js +130 -146
- package/es/utils/name-generator.js +7 -9
- package/es/utils/objects-utils.js +7 -14
- package/es/utils/phone-validator.js +1 -3
- package/es/utils/process-black-list.js +5 -6
- package/es/utils/react-if.js +7 -9
- package/es/utils/snap-scene.js +27 -30
- package/es/utils/snap.js +53 -57
- package/es/utils/summarizeCart.js +1 -3
- package/es/utils/threeCSG.es6.js +13 -17
- package/es/version.js +1 -3
- package/package.json +1 -1
|
@@ -1,40 +1,41 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
3
|
+
import _readOnlyError from "@babel/runtime/helpers/esm/readOnlyError";
|
|
4
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
5
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
6
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
7
|
+
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
8
|
+
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
9
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
10
|
+
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; }
|
|
11
|
+
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; }
|
|
12
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
13
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
14
|
+
import React from 'react';
|
|
15
|
+
import PropTypes from 'prop-types';
|
|
16
|
+
import ReactDOM from 'react-dom';
|
|
17
|
+
import * as Three from 'three';
|
|
18
|
+
import { checkCabinetOverlap, createBacksplash, deleteSpecifiedMeshObjects, fVLine, getDistances, parseData, updateScene, visibleTransformBox } from "./scene-creator";
|
|
19
|
+
import { disposeObject, disposeScene } from "./three-memory-cleaner";
|
|
20
|
+
import diff from 'immutablediff';
|
|
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";
|
|
23
|
+
import { verticesDistance } from "../../utils/geometry";
|
|
24
|
+
import { convert } from "../../utils/convert-units-lite";
|
|
25
|
+
import { GeometryUtils } from "../../utils/export";
|
|
26
|
+
import { handleCamRect, isElevationView, isEmpty } from "../../utils/helper";
|
|
27
|
+
import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';
|
|
28
|
+
import CameraControls from 'camera-controls';
|
|
29
|
+
import { returnReplaceableDeepSearchType } from "../viewer2d/utils";
|
|
30
|
+
import { getAllMeshes, vectorIntersectWithMesh } from "../../utils/objects-utils";
|
|
31
|
+
CameraControls.install({
|
|
31
32
|
THREE: Three
|
|
32
33
|
});
|
|
33
|
-
var Scene3DViewer =
|
|
34
|
+
var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
34
35
|
function Scene3DViewer(props) {
|
|
35
36
|
var _this;
|
|
36
|
-
(
|
|
37
|
-
_this = (
|
|
37
|
+
_classCallCheck(this, Scene3DViewer);
|
|
38
|
+
_this = _callSuper(this, Scene3DViewer, [props]);
|
|
38
39
|
_this.state = {
|
|
39
40
|
isLoading: false,
|
|
40
41
|
showflag: true,
|
|
@@ -53,14 +54,14 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
53
54
|
window.__elevationRendererDownload = {};
|
|
54
55
|
}
|
|
55
56
|
switch (mode) {
|
|
56
|
-
case
|
|
57
|
+
case MODE_IDLE_3D:
|
|
57
58
|
_this.renderer = window.__threeRenderer || new Three.WebGLRenderer({
|
|
58
59
|
preserveDrawingBuffer: true,
|
|
59
60
|
alpha: true,
|
|
60
61
|
antialias: true
|
|
61
62
|
});
|
|
62
63
|
break;
|
|
63
|
-
case
|
|
64
|
+
case MODE_3D_VIEW:
|
|
64
65
|
_this.renderer = window.__threeRendererDownload || new Three.WebGLRenderer({
|
|
65
66
|
preserveDrawingBuffer: true,
|
|
66
67
|
alpha: true,
|
|
@@ -95,8 +96,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
95
96
|
_this.renderer.domElement.style.display = 'none';
|
|
96
97
|
return _this;
|
|
97
98
|
}
|
|
98
|
-
(
|
|
99
|
-
return (
|
|
99
|
+
_inherits(Scene3DViewer, _React$Component);
|
|
100
|
+
return _createClass(Scene3DViewer, [{
|
|
100
101
|
key: "componentDidMount",
|
|
101
102
|
value: function componentDidMount(nextProps) {
|
|
102
103
|
var _this2 = this;
|
|
@@ -116,7 +117,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
116
117
|
var mode = state.mode,
|
|
117
118
|
scene = state.scene;
|
|
118
119
|
function setupLight(scene, inbBox) {
|
|
119
|
-
if (
|
|
120
|
+
if (isElevationView(mode)) {
|
|
120
121
|
var ambilight = new Three.AmbientLight('0xffffff', 3);
|
|
121
122
|
scene.add(ambilight);
|
|
122
123
|
} else {
|
|
@@ -175,10 +176,10 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
175
176
|
var spotlightDis = 1.5 * Math.abs(inbBox.min.y - inbBox.max.y);
|
|
176
177
|
|
|
177
178
|
// check if spotlight is inside the room
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
179
|
+
vectorIntersectWithMesh(spot1, scene3D.getObjectByName('floor')) && addSpotLight('0xffffff', 0.8, spot1, spot1, spotlightDis);
|
|
180
|
+
vectorIntersectWithMesh(spot2, scene3D.getObjectByName('floor')) && addSpotLight('0xffffff', 0.8, spot2, spot2, spotlightDis);
|
|
181
|
+
vectorIntersectWithMesh(spot3, scene3D.getObjectByName('floor')) && addSpotLight('0xffffff', 0.8, spot3, spot3, spotlightDis);
|
|
182
|
+
vectorIntersectWithMesh(spot4, scene3D.getObjectByName('floor')) && addSpotLight('0xffffff', 0.8, spot4, spot4, spotlightDis);
|
|
182
183
|
}
|
|
183
184
|
}
|
|
184
185
|
}
|
|
@@ -194,15 +195,15 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
194
195
|
|
|
195
196
|
// set loading bar
|
|
196
197
|
switch (self.props.state.mode) {
|
|
197
|
-
case
|
|
198
|
+
case MODE_ELEVATION_VIEW:
|
|
198
199
|
self.props.setIsLoadingElevation('front', true);
|
|
199
200
|
break;
|
|
200
|
-
case
|
|
201
|
+
case MODE_3D_VIEW:
|
|
201
202
|
self.props.setIsLoading3D(true);
|
|
202
203
|
break;
|
|
203
204
|
}
|
|
204
205
|
}
|
|
205
|
-
var _parseData =
|
|
206
|
+
var _parseData = parseData(scene, actions, this.context.catalog, camera, this.renderer, state.mode),
|
|
206
207
|
promise = _parseData.promise,
|
|
207
208
|
planData = _parseData.planData;
|
|
208
209
|
promise.then(function () {
|
|
@@ -216,7 +217,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
216
217
|
obj.removeFromParent();
|
|
217
218
|
});
|
|
218
219
|
var bbox = new Three.Box3().setFromObject(planData.plan);
|
|
219
|
-
if (!
|
|
220
|
+
if (!isElevationView(state.mode)) {
|
|
220
221
|
cameraControls.fitToBox(bbox);
|
|
221
222
|
}
|
|
222
223
|
setupLight(scene3D, planData.boundingBox);
|
|
@@ -275,7 +276,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
275
276
|
realVec.push(vec);
|
|
276
277
|
});
|
|
277
278
|
if (aVertices.includes(realVec[0]) && aVertices.includes(realVec[1])) {
|
|
278
|
-
height =
|
|
279
|
+
height = convert(layer.ceilHeight).from(layer.unit).to(UNIT_CENTIMETER);
|
|
279
280
|
// height = data.properties.getIn(['height', 'length']);
|
|
280
281
|
return 1; // break
|
|
281
282
|
}
|
|
@@ -373,11 +374,11 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
373
374
|
|
|
374
375
|
// end snap function variable///////////////////////
|
|
375
376
|
var backsplashVisible = false;
|
|
376
|
-
var holeItems =
|
|
377
|
+
var holeItems = GeometryUtils.getHoleItems(layer);
|
|
377
378
|
var removeSnapBox = function removeSnapBox() {
|
|
378
379
|
if (snapBox != null) {
|
|
379
380
|
planData.plan.remove(snapBox);
|
|
380
|
-
|
|
381
|
+
disposeObject(snapBox);
|
|
381
382
|
snapBox = null;
|
|
382
383
|
targetObj = null;
|
|
383
384
|
snapFlag = false;
|
|
@@ -448,7 +449,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
448
449
|
x: shape2[j + 1].x,
|
|
449
450
|
y: shape2[j + 1].y
|
|
450
451
|
};
|
|
451
|
-
var flag =
|
|
452
|
+
var flag = GeometryUtils.getLineInterSect(sl1.x, sl1.y, sl2.x, sl2.y, el1.x, el1.y, el2.x, el2.y);
|
|
452
453
|
if (flag) {
|
|
453
454
|
count++;
|
|
454
455
|
if (count > 1) return true;
|
|
@@ -495,20 +496,20 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
495
496
|
return vertices;
|
|
496
497
|
};
|
|
497
498
|
var prepareSnap = function prepareSnap(layer) {
|
|
498
|
-
allLines =
|
|
499
|
-
allLineRects =
|
|
500
|
-
allItemRect =
|
|
501
|
-
allItemSnap =
|
|
502
|
-
allLineSnap =
|
|
499
|
+
allLines = GeometryUtils.getAllLines(layer);
|
|
500
|
+
allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);
|
|
501
|
+
allItemRect = GeometryUtils.getAllItems(_this2.props.state.scene, actions.catalog, allLineRects);
|
|
502
|
+
allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);
|
|
503
|
+
allLineSnap = GeometryUtils.getAllLineSnap(allLineRects, allItemRect.cur);
|
|
503
504
|
allRect = allItemRect.others.concat(allLineRects);
|
|
504
|
-
allItemSnap =
|
|
505
|
-
allLineSnap =
|
|
506
|
-
allArea =
|
|
505
|
+
allItemSnap = GeometryUtils.validateSnaps(allItemSnap, allRect);
|
|
506
|
+
allLineSnap = GeometryUtils.validateSnaps(allLineSnap, allRect);
|
|
507
|
+
allArea = GeometryUtils.getAllArea(layer);
|
|
507
508
|
};
|
|
508
509
|
var prepareSnapSpec = function prepareSnapSpec(layer) {
|
|
509
|
-
allLines =
|
|
510
|
-
allLineRects =
|
|
511
|
-
allItemRect =
|
|
510
|
+
allLines = GeometryUtils.getAllLines(layer);
|
|
511
|
+
allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);
|
|
512
|
+
allItemRect = GeometryUtils.getAllItemSpecified(_this2.props.state.scene, actions.catalog, WALL_CABINET_LAYOUTPOS);
|
|
512
513
|
// allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);
|
|
513
514
|
};
|
|
514
515
|
|
|
@@ -561,7 +562,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
561
562
|
var ocatid = _item.type;
|
|
562
563
|
var ocat = catalog.elements[ocatid];
|
|
563
564
|
var olayoutpos = ocat.info.layoutpos;
|
|
564
|
-
if (!(layoutpos ===
|
|
565
|
+
if (!(layoutpos === BASE_CABINET_LAYOUTPOS && olayoutpos === WALL_CABINET_LAYOUTPOS || layoutpos === WALL_CABINET_LAYOUTPOS && olayoutpos === BASE_CABINET_LAYOUTPOS)) {
|
|
565
566
|
var tRot = _item.rotation;
|
|
566
567
|
var tPos = new Three.Vector2(_item.x, _item.y);
|
|
567
568
|
var tBounding = target.children[0].userData;
|
|
@@ -643,13 +644,13 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
643
644
|
var _item2 = layer.items.getIn([data.id]);
|
|
644
645
|
var ocatid = _item2.type;
|
|
645
646
|
var ocat = catalog.elements[ocatid];
|
|
646
|
-
if (!ocat) ocat = catalog.elements[
|
|
647
|
+
if (!ocat) ocat = catalog.elements[returnReplaceableDeepSearchType(ocatid)];
|
|
647
648
|
var otherItem = {
|
|
648
649
|
item: _item2,
|
|
649
650
|
cat: ocat
|
|
650
651
|
};
|
|
651
652
|
console.log('currentItem =>', currentItem);
|
|
652
|
-
if (
|
|
653
|
+
if (GeometryUtils.needSnap(currentItem, otherItem) && otherItem.cat.type != 'cabinet') {
|
|
653
654
|
var tRot = _item2.rotation;
|
|
654
655
|
var tPos = new Three.Vector2(_item2.x, _item2.y);
|
|
655
656
|
var tBounding = target.children[0].userData;
|
|
@@ -703,7 +704,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
703
704
|
// sort from distance
|
|
704
705
|
for (var _i5 = 0; _i5 < items.length - 1; _i5++) {
|
|
705
706
|
for (var j = _i5 + 1; j < items.length; j++) {
|
|
706
|
-
if (
|
|
707
|
+
if (verticesDistance(oPos, new Three.Vector2(items[_i5].x, items[_i5].y)) > verticesDistance(oPos, new Three.Vector2(items[j].x, items[j].y))) {
|
|
707
708
|
var exchange = items[j];
|
|
708
709
|
items[j] = items[_i5];
|
|
709
710
|
items[_i5] = exchange;
|
|
@@ -821,7 +822,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
821
822
|
var tRot = layer.getIn(['items', target.userData.itemId]) ? layer.getIn(['items', target.userData.itemId]).rotation : 0;
|
|
822
823
|
var item = layer.getIn(['items', source.userData.itemId]);
|
|
823
824
|
var layoutType = item.layoutpos;
|
|
824
|
-
var altitudeLength =
|
|
825
|
+
var altitudeLength = convert(item.properties.getIn(['altitude', '_length'])).from('in').to('cm');
|
|
825
826
|
var sBounding = source.children[0].userData;
|
|
826
827
|
var tBounding = target.children[0].userData;
|
|
827
828
|
var tPos = target.position.clone();
|
|
@@ -838,7 +839,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
838
839
|
var removeSnapBoxObj = function removeSnapBoxObj() {
|
|
839
840
|
if (snapBoxObj) {
|
|
840
841
|
planData.plan.remove(snapBoxObj);
|
|
841
|
-
|
|
842
|
+
disposeObject(snapBoxObj);
|
|
842
843
|
}
|
|
843
844
|
snapFlag = false;
|
|
844
845
|
};
|
|
@@ -847,7 +848,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
847
848
|
box.material.depthTest = false;
|
|
848
849
|
box.renderOrder = 200;
|
|
849
850
|
snapBoxObj.add(box);
|
|
850
|
-
snapBoxObj.position.set(source.position.x, layoutType ===
|
|
851
|
+
snapBoxObj.position.set(source.position.x, layoutType === WALL_CABINET_LAYOUTPOS ? altitudeLength + source.position.y + height / 2 : source.position.y + height / 2, source.position.z);
|
|
851
852
|
snapBoxObj.rotation.set(source.rotation.x, source.rotation.y, source.rotation.z);
|
|
852
853
|
snapBoxObj.name = 'TransformBox';
|
|
853
854
|
planData.plan.add(snapBoxObj);
|
|
@@ -922,7 +923,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
922
923
|
return;
|
|
923
924
|
} else {
|
|
924
925
|
var _layoutType = _item3.layoutpos;
|
|
925
|
-
var _altitudeLength =
|
|
926
|
+
var _altitudeLength = convert(_item3.properties.getIn(['altitude', '_length'])).from('in').to('cm');
|
|
926
927
|
var _sBounding = source.children[0].userData;
|
|
927
928
|
var _width = _sBounding.max.x - _sBounding.min.x;
|
|
928
929
|
var _height = _sBounding.max.y - _sBounding.min.y;
|
|
@@ -937,7 +938,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
937
938
|
var _removeSnapBoxObj = function _removeSnapBoxObj() {
|
|
938
939
|
if (_snapBoxObj) {
|
|
939
940
|
planData.plan.remove(_snapBoxObj);
|
|
940
|
-
|
|
941
|
+
disposeObject(_snapBoxObj);
|
|
941
942
|
}
|
|
942
943
|
snapFlag = false;
|
|
943
944
|
};
|
|
@@ -946,7 +947,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
946
947
|
_box.material.depthTest = false;
|
|
947
948
|
_box.renderOrder = 100;
|
|
948
949
|
_snapBoxObj.add(_box);
|
|
949
|
-
_snapBoxObj.position.set(source.position.x, _layoutType ===
|
|
950
|
+
_snapBoxObj.position.set(source.position.x, _layoutType === WALL_CABINET_LAYOUTPOS ? _altitudeLength + source.position.y + _height / 2 : source.position.y + _height / 2, source.position.z);
|
|
950
951
|
_snapBoxObj.rotation.set(source.rotation.x, source.rotation.y, source.rotation.z);
|
|
951
952
|
_snapBoxObj.name = 'TransformBox';
|
|
952
953
|
planData.plan.add(_snapBoxObj);
|
|
@@ -1083,7 +1084,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1083
1084
|
ctx.beginPath();
|
|
1084
1085
|
ctx.arc(50, 50, 45, 0, 2 * Math.PI);
|
|
1085
1086
|
ctx.stroke();
|
|
1086
|
-
ctx.strokeStyle =
|
|
1087
|
+
ctx.strokeStyle = SECONDARY_PURPLE_COLOR;
|
|
1087
1088
|
ctx.lineWidth = 6;
|
|
1088
1089
|
ctx.beginPath();
|
|
1089
1090
|
if (lastAngle < 15 && lastAngle > -15) {
|
|
@@ -1187,7 +1188,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1187
1188
|
var properties = allItemRect.cur.itemInfo.properties;
|
|
1188
1189
|
altitude = properties.getIn(['altitude', '_length']);
|
|
1189
1190
|
var unit = properties.getIn(['altitude', '_unit']) || 'in';
|
|
1190
|
-
altitude =
|
|
1191
|
+
altitude = convert(altitude).from(unit).to(_this2.props.state.scene.unit);
|
|
1191
1192
|
}
|
|
1192
1193
|
getPoint(event, altitude);
|
|
1193
1194
|
var state = _this2.props.state;
|
|
@@ -1252,7 +1253,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1252
1253
|
console.log('intersects[i] is undefined in viewer3d/viewer3d.js');
|
|
1253
1254
|
}
|
|
1254
1255
|
}
|
|
1255
|
-
if (_this2.props.state.mode ==
|
|
1256
|
+
if (_this2.props.state.mode == MODE_DRAWING_ITEM_3D) return;
|
|
1256
1257
|
if (isSelected) {
|
|
1257
1258
|
!_this2.props.downloadFlag && _this2.props.setToolbar('');
|
|
1258
1259
|
if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
|
|
@@ -1279,7 +1280,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1279
1280
|
var _properties = allItemRect.cur.itemInfo.properties;
|
|
1280
1281
|
alti = _properties.getIn(['altitude', '_length']);
|
|
1281
1282
|
var _unit = _properties.getIn(['altitude', '_unit']) || 'in';
|
|
1282
|
-
alti =
|
|
1283
|
+
alti = convert(alti).from(_unit).to(_this2.props.state.scene.unit);
|
|
1283
1284
|
}
|
|
1284
1285
|
getPoint({
|
|
1285
1286
|
offsetX: event.offsetX - 50,
|
|
@@ -1316,8 +1317,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1316
1317
|
for (_i1 = 0; _i1 < intersects.length; _i1++) {
|
|
1317
1318
|
if (selectedItem != undefined && intersects[_i1].object.parent && intersects[_i1].object.parent.parent.userData.itemId === selectedItem.userData.itemId) selectedFlag = true;
|
|
1318
1319
|
}
|
|
1319
|
-
if (selectedFlag || toolIntersects.length > 0 && !
|
|
1320
|
-
cameraControls.mouseButtons.left =
|
|
1320
|
+
if (selectedFlag || toolIntersects.length > 0 && !isElevationView(mode)) {
|
|
1321
|
+
cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;
|
|
1321
1322
|
selectedFlag = false;
|
|
1322
1323
|
} else {
|
|
1323
1324
|
isSelected = false;
|
|
@@ -1343,7 +1344,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1343
1344
|
var properties = allItemRect.cur.itemInfo.properties;
|
|
1344
1345
|
altitude = properties.getIn(['altitude', '_length']);
|
|
1345
1346
|
var unit = properties.getIn(['altitude', '_unit']) || 'in';
|
|
1346
|
-
altitude =
|
|
1347
|
+
altitude = convert(altitude).from(unit).to(_this2.props.state.scene.unit);
|
|
1347
1348
|
}
|
|
1348
1349
|
scene3D.remove(angleObj);
|
|
1349
1350
|
scene3D.remove(toolObj);
|
|
@@ -1351,7 +1352,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1351
1352
|
_this2.props.setToolbar('');
|
|
1352
1353
|
}
|
|
1353
1354
|
getPoint(event, altitude);
|
|
1354
|
-
if (_this2.props.state.mode ==
|
|
1355
|
+
if (_this2.props.state.mode == MODE_DRAWING_ITEM_3D) {
|
|
1355
1356
|
if (Point.x > _this2.props.state.scene.width) Point.x = _this2.props.state.width;
|
|
1356
1357
|
if (Point.y > _this2.props.state.scene.height) Point.y = _this2.props.state.height;
|
|
1357
1358
|
if (Point.x < 0) Point.x = 0;
|
|
@@ -1362,7 +1363,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1362
1363
|
removeSnapBox();
|
|
1363
1364
|
var polygon = lineRect(layer);
|
|
1364
1365
|
// if cursor is outside of room
|
|
1365
|
-
if (!
|
|
1366
|
+
if (!GeometryUtils.ContainsPoint(polygon, Point.x, Point.y)) {
|
|
1366
1367
|
actions.itemsActions.endDrawingItem(_this2.props.state.scene.selectedLayer, sPoint.x, sPoint.y);
|
|
1367
1368
|
} else {
|
|
1368
1369
|
actions.itemsActions.updateDraggingItemChanged(targetPoint.x, -targetPoint.z, selectedObject.layerID, selectedObject.itemID);
|
|
@@ -1373,13 +1374,13 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1373
1374
|
bMove = false;
|
|
1374
1375
|
return;
|
|
1375
1376
|
}
|
|
1376
|
-
if (_this2.props.state.mode ==
|
|
1377
|
+
if (_this2.props.state.mode == MODE_DRAGGING_ITEM_3D) {
|
|
1377
1378
|
_this2.context.itemsActions.endDraggingItem3D();
|
|
1378
1379
|
}
|
|
1379
|
-
if (_this2.props.state.mode ==
|
|
1380
|
+
if (_this2.props.state.mode == MODE_ROTATING_ITEM_3D) {
|
|
1380
1381
|
_this2.context.itemsActions.endRotatingItem3D(sPoint.x, sPoint.y);
|
|
1381
1382
|
}
|
|
1382
|
-
if (_this2.props.state.mode ==
|
|
1383
|
+
if (_this2.props.state.mode == MODE_DRAWING_HOLE_3D) {
|
|
1383
1384
|
gridPlanOrigin = gridPlane.position;
|
|
1384
1385
|
gridMatrix.copy(gridPlane.matrixWorld).invert();
|
|
1385
1386
|
camPos = camera.position;
|
|
@@ -1390,7 +1391,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1390
1391
|
}
|
|
1391
1392
|
event.preventDefault();
|
|
1392
1393
|
if (event.button === 0) {
|
|
1393
|
-
cameraControls.mouseButtons.left =
|
|
1394
|
+
cameraControls.mouseButtons.left = CameraControls.ACTION.ROTATE;
|
|
1394
1395
|
mouse.x = event.offsetX / _this2.width * 2 - 1;
|
|
1395
1396
|
mouse.y = -(event.offsetY / _this2.height) * 2 + 1;
|
|
1396
1397
|
raycaster.setFromCamera(mouse, camera);
|
|
@@ -1454,7 +1455,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1454
1455
|
}
|
|
1455
1456
|
isSelected = true;
|
|
1456
1457
|
setTimeout(function () {
|
|
1457
|
-
|
|
1458
|
+
getDistances(layer);
|
|
1458
1459
|
var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1459
1460
|
if (!selectedItem) return;
|
|
1460
1461
|
var selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
@@ -1471,10 +1472,10 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1471
1472
|
// showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);
|
|
1472
1473
|
var pointArray = [],
|
|
1473
1474
|
cnt = 0;
|
|
1474
|
-
pointArray.push([
|
|
1475
|
-
pointArray.push([
|
|
1476
|
-
pointArray.push([
|
|
1477
|
-
pointArray.push([
|
|
1475
|
+
pointArray.push([fVLine[0].userData.distance, 90]);
|
|
1476
|
+
pointArray.push([fVLine[1].userData.distance, -90]);
|
|
1477
|
+
pointArray.push([fVLine[2].userData.distance, 180]);
|
|
1478
|
+
pointArray.push([fVLine[3].userData.distance, 0]);
|
|
1478
1479
|
pointArray.forEach(function (pointElement, index) {
|
|
1479
1480
|
if (pointElement[0] == undefined) pointArray[index][0] = 0;
|
|
1480
1481
|
});
|
|
@@ -1526,13 +1527,13 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1526
1527
|
selectedObj = allItemRect.cur;
|
|
1527
1528
|
}
|
|
1528
1529
|
} else {
|
|
1529
|
-
|
|
1530
|
+
visibleTransformBox(false);
|
|
1530
1531
|
var alti = 0;
|
|
1531
1532
|
if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
|
|
1532
1533
|
var _properties2 = allItemRect.cur.itemInfo.properties;
|
|
1533
1534
|
alti = _properties2.getIn(['altitude', '_length']);
|
|
1534
1535
|
var _unit2 = _properties2.getIn(['altitude', '_unit']) || 'in';
|
|
1535
|
-
alti =
|
|
1536
|
+
alti = convert(alti).from(_unit2).to(_this2.props.state.scene.unit);
|
|
1536
1537
|
}
|
|
1537
1538
|
getPoint(event, alti);
|
|
1538
1539
|
if (bRotate) {
|
|
@@ -1605,9 +1606,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1605
1606
|
var properties = allItemRect.cur.itemInfo.properties;
|
|
1606
1607
|
altitude = properties.getIn(['altitude', '_length']);
|
|
1607
1608
|
var unit = properties.getIn(['altitude', '_unit']) || 'in';
|
|
1608
|
-
altitude =
|
|
1609
|
+
altitude = convert(altitude).from(unit).to(_this2.props.state.scene.unit);
|
|
1609
1610
|
}
|
|
1610
|
-
if (_this2.props.state.mode ===
|
|
1611
|
+
if (_this2.props.state.mode === MODE_DRAWING_HOLE_3D) {
|
|
1611
1612
|
gridPlanOrigin = gridPlane.position;
|
|
1612
1613
|
gridMatrix.copy(gridPlane.matrixWorld).invert();
|
|
1613
1614
|
camPos = camera.position;
|
|
@@ -1619,7 +1620,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1619
1620
|
} else {
|
|
1620
1621
|
var layerID = _this2.props.state.scene.selectedLayer;
|
|
1621
1622
|
var holeID = _this2.props.state.drawingSupport.get('currentID');
|
|
1622
|
-
|
|
1623
|
+
deleteSpecifiedMeshObjects('WarningBox' + holeID);
|
|
1623
1624
|
prepareSnap(layer);
|
|
1624
1625
|
|
|
1625
1626
|
// let {nx, ny, rot} = GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, Point.x, Point.y, allArea);
|
|
@@ -1629,7 +1630,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1629
1630
|
sPoint.set(nx, ny);
|
|
1630
1631
|
}
|
|
1631
1632
|
}
|
|
1632
|
-
if (_this2.props.state.mode ===
|
|
1633
|
+
if (_this2.props.state.mode === MODE_DRAWING_ITEM_3D) {
|
|
1633
1634
|
// We need to set cam position since when MODE_DRAWING_ITEM_3D mouse down event
|
|
1634
1635
|
// is not emited so cam position is not valid
|
|
1635
1636
|
gridPlanOrigin = gridPlane.position;
|
|
@@ -1643,7 +1644,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1643
1644
|
};
|
|
1644
1645
|
var _layer = _this2.props.state.scene.getIn(['layers', selectedObject.layerID]);
|
|
1645
1646
|
var polygon = lineRect(_layer);
|
|
1646
|
-
var isCursorInArea =
|
|
1647
|
+
var isCursorInArea = GeometryUtils.ContainsPoint(polygon, Point.x, Point.y);
|
|
1647
1648
|
var _drawingSupport = _this2.props.state.drawingSupport;
|
|
1648
1649
|
if (!_drawingSupport.has('currentID')) {
|
|
1649
1650
|
var initialX = Point.x,
|
|
@@ -1662,7 +1663,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1662
1663
|
point = [];
|
|
1663
1664
|
}
|
|
1664
1665
|
});
|
|
1665
|
-
var centroid =
|
|
1666
|
+
var centroid = GeometryUtils.getCentroidOfPolygon(points);
|
|
1666
1667
|
initialX = centroid[0];
|
|
1667
1668
|
initialY = centroid[1];
|
|
1668
1669
|
}
|
|
@@ -1674,8 +1675,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1674
1675
|
var mX = Point.x - sPoint.x;
|
|
1675
1676
|
var mY = Point.y - sPoint.y;
|
|
1676
1677
|
var item3D = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1677
|
-
|
|
1678
|
-
|
|
1678
|
+
deleteSpecifiedMeshObjects('TransformBox');
|
|
1679
|
+
deleteSpecifiedMeshObjects('WarningBox' + itemID);
|
|
1679
1680
|
var item = _layer.items.getIn([selectedObject.itemID]);
|
|
1680
1681
|
if (item.counterTop.uri == '') item.counterTop.uri = _layer.counterTop.uri;
|
|
1681
1682
|
var sRot = item.rotation;
|
|
@@ -1687,7 +1688,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1687
1688
|
var sdepth = sBounding.max.z - sBounding.min.z;
|
|
1688
1689
|
var sVertices = _this2.getRectPoints(swidth, sdepth, tPos.clone(), sRot % 360 / 180 * Math.PI);
|
|
1689
1690
|
prepareSnap(_layer);
|
|
1690
|
-
var _GeometryUtils$calcSn =
|
|
1691
|
+
var _GeometryUtils$calcSn = GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, Point.x, Point.y, allArea),
|
|
1691
1692
|
_nx = _GeometryUtils$calcSn.nx,
|
|
1692
1693
|
_ny = _GeometryUtils$calcSn.ny,
|
|
1693
1694
|
rot = _GeometryUtils$calcSn.rot;
|
|
@@ -1701,9 +1702,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1701
1702
|
//return;
|
|
1702
1703
|
}
|
|
1703
1704
|
if (polygon.length > 0) {
|
|
1704
|
-
var PolygonSect =
|
|
1705
|
+
var PolygonSect = GeometryUtils.ContainsPoint(polygon, _nx, _ny);
|
|
1705
1706
|
if (!PolygonSect) {
|
|
1706
|
-
var _GeometryUtils$calcCr =
|
|
1707
|
+
var _GeometryUtils$calcCr = GeometryUtils.calcCreateSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, Point.x, Point.y, polygon),
|
|
1707
1708
|
cx = _GeometryUtils$calcCr.cx,
|
|
1708
1709
|
cy = _GeometryUtils$calcCr.cy,
|
|
1709
1710
|
crot = _GeometryUtils$calcCr.crot;
|
|
@@ -1713,19 +1714,19 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1713
1714
|
}
|
|
1714
1715
|
}
|
|
1715
1716
|
if (polygon.length > 0) {
|
|
1716
|
-
var isSnapInArea =
|
|
1717
|
+
var isSnapInArea = GeometryUtils.ContainsPoint(polygon, _nx, _ny);
|
|
1717
1718
|
if (!isSnapInArea) return;
|
|
1718
1719
|
}
|
|
1719
1720
|
actions.itemsActions.updateDraggingItemChanged(_nx, _ny, selectedObject.layerID, selectedObject.itemID);
|
|
1720
1721
|
actions.itemsActions.updateRotatingItemChanged(rot, selectedObject.layerID, selectedObject.itemID);
|
|
1721
1722
|
sPoint.set(_nx, _ny);
|
|
1722
|
-
|
|
1723
|
+
getDistances(_layer);
|
|
1723
1724
|
var pointArray = [],
|
|
1724
1725
|
cnt = 0;
|
|
1725
|
-
pointArray.push([
|
|
1726
|
-
pointArray.push([
|
|
1727
|
-
pointArray.push([
|
|
1728
|
-
pointArray.push([
|
|
1726
|
+
pointArray.push([fVLine[0].userData.distance, 90]);
|
|
1727
|
+
pointArray.push([fVLine[1].userData.distance, -90]);
|
|
1728
|
+
pointArray.push([fVLine[2].userData.distance, 180]);
|
|
1729
|
+
pointArray.push([fVLine[3].userData.distance, 0]);
|
|
1729
1730
|
pointArray.forEach(function (pointElement, index) {
|
|
1730
1731
|
if (pointElement[0] == undefined) pointArray[index][0] = 0;
|
|
1731
1732
|
});
|
|
@@ -1737,8 +1738,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1737
1738
|
pointArray[1][0] = 100;
|
|
1738
1739
|
}
|
|
1739
1740
|
actions.itemsActions.storeDistArray(_layer.id, item.id, pointArray);
|
|
1740
|
-
var minDis =
|
|
1741
|
-
var snapObj =
|
|
1741
|
+
var minDis = fVLine[0].userData.distance;
|
|
1742
|
+
var snapObj = fVLine[0];
|
|
1742
1743
|
var iPos = item3D.position.clone();
|
|
1743
1744
|
var snapDis = Math.sqrt((iPos.x - targetPoint.x) * (iPos.x - targetPoint.x) + (iPos.z - targetPoint.z) * (iPos.z - targetPoint.z));
|
|
1744
1745
|
if (snapDis >= 100 && snapObj != null) {
|
|
@@ -1746,10 +1747,10 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1746
1747
|
backsplashVisible = false;
|
|
1747
1748
|
//console.log('1 snap no');
|
|
1748
1749
|
}
|
|
1749
|
-
for (var _i11 = 1; _i11 <
|
|
1750
|
-
if (minDis >
|
|
1751
|
-
minDis =
|
|
1752
|
-
snapObj =
|
|
1750
|
+
for (var _i11 = 1; _i11 < fVLine.length; _i11++) {
|
|
1751
|
+
if (minDis > fVLine[_i11].userData.distance) {
|
|
1752
|
+
minDis = fVLine[_i11].userData.distance;
|
|
1753
|
+
snapObj = fVLine[_i11];
|
|
1753
1754
|
}
|
|
1754
1755
|
}
|
|
1755
1756
|
if (snapBox == null) {
|
|
@@ -1760,14 +1761,14 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1760
1761
|
_this2.snap(snapObj, _layer);
|
|
1761
1762
|
snapFlag = true;
|
|
1762
1763
|
//console.log('1 snap Yes')
|
|
1763
|
-
|
|
1764
|
+
getDistances(_layer, true);
|
|
1764
1765
|
var _i12 = 0;
|
|
1765
|
-
for (_i12 = 0; _i12 <
|
|
1766
|
-
if (
|
|
1766
|
+
for (_i12 = 0; _i12 < fVLine.length; _i12++) {
|
|
1767
|
+
if (fVLine[_i12].userData.distance < snapDelta) {
|
|
1767
1768
|
break;
|
|
1768
1769
|
}
|
|
1769
1770
|
}
|
|
1770
|
-
if (_i12 ===
|
|
1771
|
+
if (_i12 === fVLine.length) backsplashVisible = false;else backsplashVisible = true;
|
|
1771
1772
|
}
|
|
1772
1773
|
actions.itemsActions.setBacksplashVisible(selectedObject.itemID, backsplashVisible);
|
|
1773
1774
|
}
|
|
@@ -1780,8 +1781,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1780
1781
|
var orginRot = _this2.props.state.rotatingSupport.get('originRotation');
|
|
1781
1782
|
angleTexture.image = createAngleObject((orginRot < 0 ? 360 - orginRot : orginRot) - _item4.rotation);
|
|
1782
1783
|
angleTexture.needsUpdate = true;
|
|
1783
|
-
|
|
1784
|
-
|
|
1784
|
+
deleteSpecifiedMeshObjects('WarningBox' + selectedObject.itemID);
|
|
1785
|
+
deleteSpecifiedMeshObjects('backsplash' + selectedObject.itemID);
|
|
1785
1786
|
actions.sceneActions.updateMovingState(false);
|
|
1786
1787
|
}
|
|
1787
1788
|
if (bMoveUP) {
|
|
@@ -1799,7 +1800,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1799
1800
|
sPoint.set(Point.x, Point.y);
|
|
1800
1801
|
} else {
|
|
1801
1802
|
var _holeID = _this2.props.state.draggingSupport.get('currentID');
|
|
1802
|
-
|
|
1803
|
+
deleteSpecifiedMeshObjects('WarningBox' + _holeID);
|
|
1803
1804
|
var _nx2 = Point.x;
|
|
1804
1805
|
var _ny2 = Point.y;
|
|
1805
1806
|
actions.holesActions.updateDraggingHole(_nx2, _ny2);
|
|
@@ -1814,8 +1815,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1814
1815
|
var _sRot2 = _item5.rotation;
|
|
1815
1816
|
var _mX = Point.x - sPoint.x;
|
|
1816
1817
|
var _mY = Point.y - sPoint.y;
|
|
1817
|
-
|
|
1818
|
-
|
|
1818
|
+
deleteSpecifiedMeshObjects('WarningBox' + selectedObject.itemID);
|
|
1819
|
+
deleteSpecifiedMeshObjects('backsplash' + selectedObject.itemID);
|
|
1819
1820
|
prepareSnap(_layer3);
|
|
1820
1821
|
getPoint(event, altitude);
|
|
1821
1822
|
var _originPos = _item3D2.position.clone();
|
|
@@ -1824,7 +1825,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1824
1825
|
var _swidth = _sBounding2.max.x - _sBounding2.min.x;
|
|
1825
1826
|
var _sdepth = _sBounding2.max.z - _sBounding2.min.z;
|
|
1826
1827
|
var _sVertices = _this2.getRectPoints(_swidth, _sdepth, _tPos4.clone(), _sRot2 % 360 / 180 * Math.PI);
|
|
1827
|
-
var _GeometryUtils$calcSn2 =
|
|
1828
|
+
var _GeometryUtils$calcSn2 = GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, Point.x, Point.y, allArea),
|
|
1828
1829
|
_nx3 = _GeometryUtils$calcSn2.nx,
|
|
1829
1830
|
_ny3 = _GeometryUtils$calcSn2.ny,
|
|
1830
1831
|
_rot = _GeometryUtils$calcSn2.rot;
|
|
@@ -1839,9 +1840,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1839
1840
|
}
|
|
1840
1841
|
var polygonPoint = lineRect(_layer3);
|
|
1841
1842
|
if (polygonPoint.length > 0) {
|
|
1842
|
-
var _PolygonSect =
|
|
1843
|
+
var _PolygonSect = GeometryUtils.ContainsPoint(polygonPoint, _nx3, _ny3);
|
|
1843
1844
|
if (!_PolygonSect) {
|
|
1844
|
-
var _GeometryUtils$calcCr2 =
|
|
1845
|
+
var _GeometryUtils$calcCr2 = GeometryUtils.calcCreateSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, Point.x, Point.y, polygonPoint),
|
|
1845
1846
|
_cx3 = _GeometryUtils$calcCr2.cx,
|
|
1846
1847
|
_cy = _GeometryUtils$calcCr2.cy,
|
|
1847
1848
|
_crot = _GeometryUtils$calcCr2.crot;
|
|
@@ -1852,19 +1853,19 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1852
1853
|
}
|
|
1853
1854
|
var _polygon = lineRect(_layer3);
|
|
1854
1855
|
if (_polygon.length > 0) {
|
|
1855
|
-
var Sect =
|
|
1856
|
+
var Sect = GeometryUtils.ContainsPoint(_polygon, _nx3, _ny3);
|
|
1856
1857
|
if (!Sect) return;
|
|
1857
1858
|
}
|
|
1858
1859
|
actions.itemsActions.updateDraggingItemChanged(_nx3, _ny3, selectedObject.layerID, selectedObject.itemID);
|
|
1859
1860
|
actions.itemsActions.updateRotatingItemChanged(_rot, selectedObject.layerID, selectedObject.itemID);
|
|
1860
1861
|
sPoint.set(_nx3, _ny3);
|
|
1861
|
-
|
|
1862
|
+
getDistances(_layer3);
|
|
1862
1863
|
var _pointArray = [],
|
|
1863
1864
|
_cnt = 0;
|
|
1864
|
-
_pointArray.push([
|
|
1865
|
-
_pointArray.push([
|
|
1866
|
-
_pointArray.push([
|
|
1867
|
-
_pointArray.push([
|
|
1865
|
+
_pointArray.push([fVLine[0].userData.distance, 90]);
|
|
1866
|
+
_pointArray.push([fVLine[1].userData.distance, -90]);
|
|
1867
|
+
_pointArray.push([fVLine[2].userData.distance, 180]);
|
|
1868
|
+
_pointArray.push([fVLine[3].userData.distance, 0]);
|
|
1868
1869
|
_pointArray.forEach(function (pointElement, index) {
|
|
1869
1870
|
if (pointElement[0] == undefined) _pointArray[index][0] = 0;
|
|
1870
1871
|
});
|
|
@@ -1876,8 +1877,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1876
1877
|
_pointArray[1][0] = 100;
|
|
1877
1878
|
}
|
|
1878
1879
|
actions.itemsActions.storeDistArray(_layer3.id, _item5.id, _pointArray);
|
|
1879
|
-
var _minDis =
|
|
1880
|
-
var _snapObj =
|
|
1880
|
+
var _minDis = fVLine[0].userData.distance;
|
|
1881
|
+
var _snapObj = fVLine[0];
|
|
1881
1882
|
var _iPos = _item3D2.position.clone();
|
|
1882
1883
|
var _snapDis = Math.sqrt((_iPos.x - targetPoint.x) * (_iPos.x - targetPoint.x) + (_iPos.z - targetPoint.z) * (_iPos.z - targetPoint.z));
|
|
1883
1884
|
if (_snapDis >= 100 && _snapObj != null) {
|
|
@@ -1885,10 +1886,10 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1885
1886
|
backsplashVisible = false;
|
|
1886
1887
|
//console.log('1 snap no');
|
|
1887
1888
|
}
|
|
1888
|
-
for (var _i13 = 1; _i13 <
|
|
1889
|
-
if (_minDis >
|
|
1890
|
-
_minDis =
|
|
1891
|
-
_snapObj =
|
|
1889
|
+
for (var _i13 = 1; _i13 < fVLine.length; _i13++) {
|
|
1890
|
+
if (_minDis > fVLine[_i13].userData.distance) {
|
|
1891
|
+
_minDis = fVLine[_i13].userData.distance;
|
|
1892
|
+
_snapObj = fVLine[_i13];
|
|
1892
1893
|
}
|
|
1893
1894
|
}
|
|
1894
1895
|
if (snapBox == null) {
|
|
@@ -1899,14 +1900,14 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1899
1900
|
_this2.snap(_snapObj, _layer3);
|
|
1900
1901
|
snapFlag = true;
|
|
1901
1902
|
//console.log('1 snap Yes')
|
|
1902
|
-
|
|
1903
|
+
getDistances(_layer3, true);
|
|
1903
1904
|
var _i14 = 0;
|
|
1904
|
-
for (_i14 = 0; _i14 <
|
|
1905
|
-
if (
|
|
1905
|
+
for (_i14 = 0; _i14 < fVLine.length; _i14++) {
|
|
1906
|
+
if (fVLine[_i14].userData.distance < snapDelta) {
|
|
1906
1907
|
break;
|
|
1907
1908
|
}
|
|
1908
1909
|
}
|
|
1909
|
-
if (_i14 ===
|
|
1910
|
+
if (_i14 === fVLine.length) backsplashVisible = false;else backsplashVisible = true;
|
|
1910
1911
|
}
|
|
1911
1912
|
actions.itemsActions.setBacksplashVisible(selectedObject.itemID, backsplashVisible);
|
|
1912
1913
|
}
|
|
@@ -1919,7 +1920,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1919
1920
|
raycaster.setFromCamera(curPos, camera);
|
|
1920
1921
|
rayDirection = raycaster.ray.direction;
|
|
1921
1922
|
rayDirection = rayDirection.normalize();
|
|
1922
|
-
var meshes =
|
|
1923
|
+
var meshes = getAllMeshes(toIntersect);
|
|
1923
1924
|
var intersects = raycaster.intersectObjects(meshes, true);
|
|
1924
1925
|
var _i15;
|
|
1925
1926
|
if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
|
|
@@ -1954,7 +1955,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1954
1955
|
document.getElementById('warning_box_2d').style.display = 'none';
|
|
1955
1956
|
};
|
|
1956
1957
|
this.onkeydown = function (event) {
|
|
1957
|
-
if (_this2.props.keyDownEnable && !
|
|
1958
|
+
if (_this2.props.keyDownEnable && !isElevationView(state.mode)) {
|
|
1958
1959
|
switch (event.keyCode) {
|
|
1959
1960
|
case 27:
|
|
1960
1961
|
// escape key
|
|
@@ -2023,7 +2024,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2023
2024
|
}
|
|
2024
2025
|
|
|
2025
2026
|
// Add the output of the renderer to the html element
|
|
2026
|
-
var canvasWrapper =
|
|
2027
|
+
var canvasWrapper = ReactDOM.findDOMNode(this.refs.canvasWrapper);
|
|
2027
2028
|
canvasWrapper && canvasWrapper.appendChild(this.renderer.domElement);
|
|
2028
2029
|
|
|
2029
2030
|
//
|
|
@@ -2055,17 +2056,17 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2055
2056
|
function init() {
|
|
2056
2057
|
clock = new Three.Clock();
|
|
2057
2058
|
scene3D = new Three.Scene();
|
|
2058
|
-
if (
|
|
2059
|
+
if (isElevationView(state.mode)) scene3D.background = new Three.Color(0xffffff);
|
|
2059
2060
|
// change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
|
|
2060
2061
|
else scene3D.background = new Three.Color(0xc3cadc); // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
|
|
2061
2062
|
// scene3D.fog = new Three.Fog(0xC3CADC, 2000, 3500);
|
|
2062
2063
|
window.scene3D = scene3D;
|
|
2063
2064
|
// Camera
|
|
2064
|
-
if (
|
|
2065
|
+
if (isElevationView(state.mode)) {
|
|
2065
2066
|
// In elevation view, set Orthographic camera's position, angle and rotation about selected line
|
|
2066
2067
|
var layers = scene.layers;
|
|
2067
2068
|
var selectedLayer = layers.get(scene.selectedLayer);
|
|
2068
|
-
var ceilHeight =
|
|
2069
|
+
var ceilHeight = convert(selectedLayer.ceilHeight).from(selectedLayer.unit).to(scene.unit);
|
|
2069
2070
|
var lines = [];
|
|
2070
2071
|
var selectedLine = selectedLayer.lines.get(selectedLayer.selected.lines.toJS()[0]);
|
|
2071
2072
|
var vertex0 = selectedLayer.vertices.get(selectedLine.vertices.get(0));
|
|
@@ -2074,7 +2075,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2074
2075
|
y1 = vertex0.y;
|
|
2075
2076
|
var x2 = vertex1.x,
|
|
2076
2077
|
y2 = vertex1.y;
|
|
2077
|
-
if (
|
|
2078
|
+
if (GeometryUtils.compareVertices(vertex0, vertex1) >= 0 && vertex0.x !== vertex1.x) {
|
|
2078
2079
|
x1 = vertex1.x;
|
|
2079
2080
|
y1 = vertex1.y;
|
|
2080
2081
|
x2 = vertex0.x;
|
|
@@ -2083,7 +2084,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2083
2084
|
selectedLayer.lines.toArray().forEach(function (line) {
|
|
2084
2085
|
if (line.id === selectedLine) {
|
|
2085
2086
|
var data = line.toJS();
|
|
2086
|
-
data = (
|
|
2087
|
+
data = _objectSpread(_objectSpread({}, data), {}, {
|
|
2087
2088
|
l0: {
|
|
2088
2089
|
x: x1,
|
|
2089
2090
|
y: y1
|
|
@@ -2096,11 +2097,11 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2096
2097
|
lines.push(data);
|
|
2097
2098
|
}
|
|
2098
2099
|
});
|
|
2099
|
-
var lineLength =
|
|
2100
|
+
var lineLength = GeometryUtils.pointsDistance(x1, y1, x2, y2);
|
|
2100
2101
|
self.setState({
|
|
2101
2102
|
lineLength: lineLength
|
|
2102
2103
|
});
|
|
2103
|
-
var cameraRect =
|
|
2104
|
+
var cameraRect = handleCamRect(self.width, self.height, ceilHeight, lineLength);
|
|
2104
2105
|
camera = new Three.OrthographicCamera(-cameraRect.width / 2, cameraRect.width / 2, cameraRect.height / 2, -cameraRect.height / 2, 1, 1000);
|
|
2105
2106
|
var angle = Math.atan((y1 - y2) / (x1 - x2));
|
|
2106
2107
|
var r = 300;
|
|
@@ -2121,15 +2122,15 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2121
2122
|
}
|
|
2122
2123
|
camera.layers.enable(1);
|
|
2123
2124
|
function loadENV() {
|
|
2124
|
-
new
|
|
2125
|
+
new RGBELoader().load('/assets/brown_photostudio_02_1k.hdr', function (texture) {
|
|
2125
2126
|
texture.mapping = Three.EquirectangularReflectionMapping;
|
|
2126
2127
|
scene3D.environment = texture;
|
|
2127
2128
|
texture.dispose();
|
|
2128
2129
|
});
|
|
2129
2130
|
}
|
|
2130
2131
|
// Camera Controls
|
|
2131
|
-
if (!
|
|
2132
|
-
cameraControls = new
|
|
2132
|
+
if (!isElevationView(state.mode)) {
|
|
2133
|
+
cameraControls = new CameraControls(camera, self.renderer.domElement);
|
|
2133
2134
|
cameraControls.dollyToCursor = true;
|
|
2134
2135
|
cameraControls.infinityDolly = true;
|
|
2135
2136
|
cameraControls.minDistance = 50;
|
|
@@ -2140,7 +2141,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2140
2141
|
scene3D.add(planData.plan);
|
|
2141
2142
|
scene3D.add(planData.grid);
|
|
2142
2143
|
scene3D.add(camera);
|
|
2143
|
-
if (
|
|
2144
|
+
if (isElevationView(state.mode)) {
|
|
2144
2145
|
planData.cam.add(camera);
|
|
2145
2146
|
scene3D.add(planData.cam);
|
|
2146
2147
|
} else {
|
|
@@ -2155,7 +2156,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2155
2156
|
}
|
|
2156
2157
|
function render() {
|
|
2157
2158
|
var delta = clock.getDelta(); // Get time delta for smooth updates
|
|
2158
|
-
if (!
|
|
2159
|
+
if (!isElevationView(state.mode)) cameraControls.update(delta);
|
|
2159
2160
|
for (var _i16 = 0; _i16 < lights.length; _i16++) {
|
|
2160
2161
|
lights[_i16].light.position.set(planData.plan.position.x + lights[_i16].x, planData.plan.position.y + lights[_i16].height - 10, planData.plan.position.z - lights[_i16].y);
|
|
2161
2162
|
lights[_i16].target.position.set(planData.plan.position.x + lights[_i16].x, planData.plan.position.y, planData.plan.position.z - lights[_i16].y);
|
|
@@ -2202,7 +2203,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2202
2203
|
var indexAttribute = line.geometry.getIndex();
|
|
2203
2204
|
var firstFaceIndices = undefined;
|
|
2204
2205
|
if (indexAttribute && indexAttribute.length > 0) {
|
|
2205
|
-
[indexAttribute.getX(0), indexAttribute.getX(1), indexAttribute.getX(2)], (
|
|
2206
|
+
[indexAttribute.getX(0), indexAttribute.getX(1), indexAttribute.getX(2)], _readOnlyError("firstFaceIndices");
|
|
2206
2207
|
}
|
|
2207
2208
|
if (firstFaceIndices == undefined) return;
|
|
2208
2209
|
// normal vector of the line
|
|
@@ -2251,7 +2252,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2251
2252
|
isLoading: false,
|
|
2252
2253
|
waitForRender: 0
|
|
2253
2254
|
});
|
|
2254
|
-
if (
|
|
2255
|
+
if (isElevationView(self.props.state.mode)) {
|
|
2255
2256
|
setTimeout(function () {
|
|
2256
2257
|
self.props.setIsLoadingElevation('front', false);
|
|
2257
2258
|
}, 100);
|
|
@@ -2275,14 +2276,14 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2275
2276
|
key: "componentWillUnmount",
|
|
2276
2277
|
value: function componentWillUnmount() {
|
|
2277
2278
|
cancelAnimationFrame(this.renderingID);
|
|
2278
|
-
if (!
|
|
2279
|
+
if (!isElevationView(this.props.state.mode)) {
|
|
2279
2280
|
if (this.cameraControls !== undefined) this.cameraControls.dispose();
|
|
2280
2281
|
}
|
|
2281
2282
|
if (!this.props.downloadFlag) {
|
|
2282
2283
|
this.renderer.domElement.removeEventListener('mousedown', this.mouseDownEvent);
|
|
2283
2284
|
this.renderer.domElement.removeEventListener('mouseup', this.mouseUpEvent);
|
|
2284
2285
|
}
|
|
2285
|
-
|
|
2286
|
+
disposeScene(this.scene3D);
|
|
2286
2287
|
this.scene3D.remove(this.planData.plan);
|
|
2287
2288
|
this.scene3D.remove(this.planData.grid);
|
|
2288
2289
|
this.scene3D = null;
|
|
@@ -2295,11 +2296,11 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2295
2296
|
key: "componentWillReceiveProps",
|
|
2296
2297
|
value: function componentWillReceiveProps(nextProps) {
|
|
2297
2298
|
var _this4 = this;
|
|
2298
|
-
if (this.props.downloadFlag && (
|
|
2299
|
+
if (this.props.downloadFlag && diff(this.props.state, nextProps.state).toJS().length == 0 || isEmpty(nextProps.state.scene)) return;
|
|
2299
2300
|
var width = nextProps.width,
|
|
2300
2301
|
height = nextProps.height;
|
|
2301
2302
|
var selectedLayer = nextProps.state.getIn(['scene', 'layers', nextProps.state.scene.selectedLayer]);
|
|
2302
|
-
var ceilHeight =
|
|
2303
|
+
var ceilHeight = convert(selectedLayer.ceilHeight).from(selectedLayer.unit).to(nextProps.state.scene.unit);
|
|
2303
2304
|
var actions = {
|
|
2304
2305
|
areaActions: this.context.areaActions,
|
|
2305
2306
|
holesActions: this.context.holesActions,
|
|
@@ -2321,9 +2322,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2321
2322
|
|
|
2322
2323
|
// handle camera setting
|
|
2323
2324
|
switch (this.props.state.mode) {
|
|
2324
|
-
case
|
|
2325
|
+
case MODE_ELEVATION_VIEW:
|
|
2325
2326
|
// when Elevation mode (camera: Orthographic)
|
|
2326
|
-
var cameraRect =
|
|
2327
|
+
var cameraRect = handleCamRect(width, height, ceilHeight, this.state.lineLength);
|
|
2327
2328
|
// camera size
|
|
2328
2329
|
this.camera.left = -cameraRect.width / 2;
|
|
2329
2330
|
this.camera.right = cameraRect.width / 2;
|
|
@@ -2332,7 +2333,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2332
2333
|
//camera position
|
|
2333
2334
|
this.camera.position.y = ceilHeight / 2;
|
|
2334
2335
|
break;
|
|
2335
|
-
case
|
|
2336
|
+
case MODE_3D_VIEW:
|
|
2336
2337
|
// when 3D mode (camera: Perspective)
|
|
2337
2338
|
this.camera.aspect = width / height;
|
|
2338
2339
|
break;
|
|
@@ -2342,34 +2343,34 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2342
2343
|
var layer = data.getIn(['layers', data.selectedLayer]);
|
|
2343
2344
|
var self = this;
|
|
2344
2345
|
function implementBacksplash() {
|
|
2345
|
-
if (
|
|
2346
|
-
var allItems =
|
|
2346
|
+
if (isElevationView(self.props.state.mode)) return; // apply backsplash when just 3D_mode, not elevation_mode
|
|
2347
|
+
var allItems = GeometryUtils.getAllItemSpecified(nextProps.state.scene, actions.catalog, BASE_CABINET_LAYOUTPOS);
|
|
2347
2348
|
var i,
|
|
2348
2349
|
items = [];
|
|
2349
2350
|
for (i = 0; i < allItems.others.length; i++) items.push(allItems.others[i]);
|
|
2350
2351
|
if (allItems.cur) items.push(allItems.cur);
|
|
2351
2352
|
for (i = 0; i < items.length; i++) {
|
|
2352
|
-
var calcRect =
|
|
2353
|
-
var visible =
|
|
2353
|
+
var calcRect = GeometryUtils.getCalcRectFromItem3D(items[i]);
|
|
2354
|
+
var visible = GeometryUtils.isSnappedLine(calcRect, allLineRects);
|
|
2354
2355
|
actions.itemsActions.setBacksplashVisible(items[i].itemInfo.id, visible);
|
|
2355
|
-
|
|
2356
|
+
createBacksplash(items[i], nextProps.state.scene.getIn(['layers', nextProps.state.scene.selectedLayer]), planData, nextProps.state.scene);
|
|
2356
2357
|
}
|
|
2357
2358
|
}
|
|
2358
2359
|
function implementWarningBox() {
|
|
2359
|
-
var holeItems =
|
|
2360
|
+
var holeItems = GeometryUtils.getHoleItems(layer);
|
|
2360
2361
|
var i,
|
|
2361
2362
|
items = [];
|
|
2362
2363
|
for (i = 0; i < allItemRect.others.length; i++) items.push(allItemRect.others[i]);
|
|
2363
2364
|
if (allItemRect.cur) items.push(allItemRect.cur);
|
|
2364
|
-
for (i = 0; i < items.length; i++)
|
|
2365
|
+
for (i = 0; i < items.length; i++) checkCabinetOverlap({
|
|
2365
2366
|
x: items[i].pos.x,
|
|
2366
2367
|
y: items[i].pos.y
|
|
2367
2368
|
}, items[i], holeItems, planData);
|
|
2368
2369
|
}
|
|
2369
2370
|
var prepareSnapSpec = function prepareSnapSpec(layer) {
|
|
2370
|
-
allLines =
|
|
2371
|
-
allLineRects =
|
|
2372
|
-
allItemRect =
|
|
2371
|
+
allLines = GeometryUtils.getAllLines(layer);
|
|
2372
|
+
allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);
|
|
2373
|
+
allItemRect = GeometryUtils.getAllItemSpecified(_this4.props.state.scene, actions.catalog, [WALL_CABINET_LAYOUTPOS, TALL_CABINET_LAYOUTPOS]);
|
|
2373
2374
|
};
|
|
2374
2375
|
var layer1 = this.props.state.scene.getIn(['layers', data.selectedLayer]);
|
|
2375
2376
|
if (this.state.showflag) {
|
|
@@ -2381,7 +2382,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2381
2382
|
});
|
|
2382
2383
|
}
|
|
2383
2384
|
if (nextProps.state.scene !== this.props.state.scene || nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') !== this.props.state.doorStyle.get('name')) {
|
|
2384
|
-
var changedValues = (
|
|
2385
|
+
var changedValues = diff(this.props.state.scene, nextProps.state.scene);
|
|
2385
2386
|
prepareSnapSpec(layer);
|
|
2386
2387
|
if (nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') === this.props.state.doorStyle.get('name')) {
|
|
2387
2388
|
self.setState({
|
|
@@ -2392,10 +2393,10 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2392
2393
|
waitForRender: 0
|
|
2393
2394
|
});
|
|
2394
2395
|
switch (self.props.state.mode) {
|
|
2395
|
-
case
|
|
2396
|
+
case MODE_ELEVATION_VIEW:
|
|
2396
2397
|
self.props.setIsLoadingElevation('front', true);
|
|
2397
2398
|
break;
|
|
2398
|
-
case
|
|
2399
|
+
case MODE_3D_VIEW:
|
|
2399
2400
|
self.props.setIsLoading3D(true);
|
|
2400
2401
|
break;
|
|
2401
2402
|
}
|
|
@@ -2406,12 +2407,12 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2406
2407
|
implementBacksplash();
|
|
2407
2408
|
implementWarningBox();
|
|
2408
2409
|
} else {
|
|
2409
|
-
|
|
2410
|
+
deleteSpecifiedMeshObjects('TransformBox');
|
|
2410
2411
|
}
|
|
2411
2412
|
var _this$state = this.state,
|
|
2412
2413
|
toolObj = _this$state.toolObj,
|
|
2413
2414
|
angleObj = _this$state.angleObj;
|
|
2414
|
-
var _updateScene =
|
|
2415
|
+
var _updateScene = updateScene(this.planData, nextProps.state.scene, this.props.state.scene, changedValues.toJS(), actions, this.context.catalog, nextProps.state.mode, toolObj, angleObj, nextProps.state.draggingSupport),
|
|
2415
2416
|
promise = _updateScene.promise;
|
|
2416
2417
|
self.setState();
|
|
2417
2418
|
promise.then(function (p1Value) {
|
|
@@ -2438,7 +2439,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2438
2439
|
if (isLoading) {
|
|
2439
2440
|
if (this.props.downloadFlag) {
|
|
2440
2441
|
this.renderer.domElement.style.display = 'none';
|
|
2441
|
-
return /*#__PURE__*/
|
|
2442
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2442
2443
|
style: {
|
|
2443
2444
|
alignItems: ' center',
|
|
2444
2445
|
width: this.props.width,
|
|
@@ -2446,7 +2447,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2446
2447
|
display: 'inline-flex',
|
|
2447
2448
|
justifyContent: 'center'
|
|
2448
2449
|
}
|
|
2449
|
-
}, /*#__PURE__*/
|
|
2450
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
2450
2451
|
style: {
|
|
2451
2452
|
width: '70px',
|
|
2452
2453
|
height: '70px',
|
|
@@ -2459,12 +2460,12 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2459
2460
|
document.getElementById('front') && (document.getElementById('front').style.display = 'none');
|
|
2460
2461
|
document.getElementById('error').style.display = 'none';
|
|
2461
2462
|
this.renderer.domElement.style.display = 'none';
|
|
2462
|
-
return /*#__PURE__*/
|
|
2463
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2463
2464
|
style: {
|
|
2464
2465
|
textAlign: 'center',
|
|
2465
2466
|
width: '100%'
|
|
2466
2467
|
}
|
|
2467
|
-
}, /*#__PURE__*/
|
|
2468
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
2468
2469
|
style: {
|
|
2469
2470
|
animation: 'spin 2s linear infinite',
|
|
2470
2471
|
marginTop: "22%"
|
|
@@ -2477,12 +2478,12 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2477
2478
|
this.renderer.domElement.style.pointerEvents = 'none';
|
|
2478
2479
|
document.getElementById('front') && (document.getElementById('front').style.display = 'none');
|
|
2479
2480
|
this.renderer.domElement.style.opacity = '0.4';
|
|
2480
|
-
return /*#__PURE__*/
|
|
2481
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2481
2482
|
style: {
|
|
2482
2483
|
textAlign: 'center',
|
|
2483
2484
|
width: '100%'
|
|
2484
2485
|
}
|
|
2485
|
-
}, /*#__PURE__*/
|
|
2486
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
2486
2487
|
style: {
|
|
2487
2488
|
animation: 'spin 2s linear infinite',
|
|
2488
2489
|
position: "absolute",
|
|
@@ -2496,25 +2497,26 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2496
2497
|
this.renderer.domElement.style.pointerEvents = 'auto';
|
|
2497
2498
|
this.renderer.domElement.style.opacity = '1';
|
|
2498
2499
|
!this.props.downloadFlag && document.getElementById('front') && (document.getElementById('front').style.display = 'block');
|
|
2499
|
-
return /*#__PURE__*/
|
|
2500
|
+
return /*#__PURE__*/React.createElement('div', {
|
|
2500
2501
|
ref: 'canvasWrapper'
|
|
2501
2502
|
});
|
|
2502
2503
|
}
|
|
2503
2504
|
}
|
|
2504
2505
|
}]);
|
|
2505
|
-
}(
|
|
2506
|
+
}(React.Component);
|
|
2507
|
+
export { Scene3DViewer as default };
|
|
2506
2508
|
Scene3DViewer.propTypes = {
|
|
2507
|
-
state:
|
|
2508
|
-
width:
|
|
2509
|
-
height:
|
|
2510
|
-
replaceCabinet:
|
|
2509
|
+
state: PropTypes.object.isRequired,
|
|
2510
|
+
width: PropTypes.number.isRequired,
|
|
2511
|
+
height: PropTypes.number.isRequired,
|
|
2512
|
+
replaceCabinet: PropTypes.func.isRequired
|
|
2511
2513
|
};
|
|
2512
2514
|
Scene3DViewer.contextTypes = {
|
|
2513
|
-
areaActions:
|
|
2514
|
-
holesActions:
|
|
2515
|
-
itemsActions:
|
|
2516
|
-
linesActions:
|
|
2517
|
-
sceneActions:
|
|
2518
|
-
projectActions:
|
|
2519
|
-
catalog:
|
|
2515
|
+
areaActions: PropTypes.object.isRequired,
|
|
2516
|
+
holesActions: PropTypes.object.isRequired,
|
|
2517
|
+
itemsActions: PropTypes.object.isRequired,
|
|
2518
|
+
linesActions: PropTypes.object.isRequired,
|
|
2519
|
+
sceneActions: PropTypes.object.isRequired,
|
|
2520
|
+
projectActions: PropTypes.object.isRequired,
|
|
2521
|
+
catalog: PropTypes.object
|
|
2520
2522
|
};
|