kitchen-simulator 1.1.1-test.70 → 1.1.1-test.71
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 -8
- package/es/AppContext.js +3 -8
- package/es/KitchenConfigurator.js +70 -77
- package/es/KitchenConfiguratorApp.js +98 -105
- package/es/actions/area-actions.js +5 -10
- package/es/actions/export.js +12 -27
- package/es/actions/groups-actions.js +27 -43
- package/es/actions/holes-actions.js +34 -53
- package/es/actions/items-actions.js +94 -143
- package/es/actions/lines-actions.js +21 -34
- package/es/actions/project-actions.js +94 -143
- package/es/actions/scene-actions.js +11 -19
- package/es/actions/vertices-actions.js +7 -13
- package/es/actions/viewer2d-actions.js +21 -34
- package/es/actions/viewer3d-actions.js +9 -16
- package/es/catalog/areas/area/planner-element.js +2 -7
- package/es/catalog/catalog.js +15 -19
- package/es/catalog/factories/area-factory-3d.js +22 -29
- package/es/catalog/factories/area-factory.js +11 -18
- package/es/catalog/factories/export.js +6 -12
- package/es/catalog/factories/wall-factory-3d.js +31 -39
- package/es/catalog/factories/wall-factory.js +21 -29
- package/es/catalog/holes/door-closet/planner-element.js +15 -22
- package/es/catalog/holes/door-double/planner-element.js +15 -22
- package/es/catalog/holes/door-exterior/planner-element.js +16 -23
- package/es/catalog/holes/door-interior/planner-element.js +16 -23
- package/es/catalog/holes/door-panic/planner-element.js +7 -14
- package/es/catalog/holes/door-panic-double/planner-element.js +15 -22
- package/es/catalog/holes/door-sliding/planner-element.js +16 -23
- package/es/catalog/holes/doorway-framed/planner-element.js +11 -18
- package/es/catalog/holes/doorway-frameless/planner-element.js +7 -14
- package/es/catalog/holes/export.js +13 -31
- package/es/catalog/holes/window-clear/planner-element.js +10 -17
- package/es/catalog/holes/window-cross/planner-element.js +10 -17
- package/es/catalog/holes/window-double-hung/planner-element.js +10 -17
- package/es/catalog/holes/window-vertical/planner-element.js +10 -17
- package/es/catalog/lines/wall/planner-element.js +2 -7
- package/es/catalog/molding/molding-dcm/planner-element.js +5 -12
- package/es/catalog/molding/molding-fbm/planner-element.js +5 -12
- package/es/catalog/molding/molding-lrm/planner-element.js +5 -12
- package/es/catalog/properties/export.js +20 -33
- package/es/catalog/properties/property-checkbox.js +24 -29
- package/es/catalog/properties/property-color.js +16 -21
- package/es/catalog/properties/property-enum.js +24 -29
- package/es/catalog/properties/property-hidden.js +9 -14
- package/es/catalog/properties/property-lenght-measure.js +38 -43
- package/es/catalog/properties/property-length-measure.js +36 -41
- package/es/catalog/properties/property-length-measure_hole.js +38 -43
- package/es/catalog/properties/property-number.js +17 -22
- package/es/catalog/properties/property-read-only.js +16 -21
- package/es/catalog/properties/property-string.js +16 -21
- package/es/catalog/properties/property-toggle.js +16 -21
- package/es/catalog/properties/shared-property-style.js +1 -5
- package/es/catalog/utils/FuseUtils.js +8 -13
- package/es/catalog/utils/exporter.js +8 -13
- package/es/catalog/utils/geom-utils.js +13 -27
- package/es/catalog/utils/item-loader.js +84 -95
- package/es/catalog/utils/load-obj.js +20 -26
- package/es/catalog/utils/mtl-loader.js +3 -6
- package/es/catalog/utils/obj-loader.js +3 -6
- package/es/class/FuseUtils.js +8 -13
- package/es/class/area.js +22 -26
- package/es/class/export.js +23 -38
- package/es/class/group.js +53 -57
- package/es/class/guide.js +15 -19
- package/es/class/hole.js +83 -87
- package/es/class/item.js +141 -145
- package/es/class/layer.js +59 -63
- package/es/class/line.js +135 -141
- package/es/class/project.js +90 -96
- package/es/class/vertex.js +29 -33
- package/es/components/content.js +19 -26
- package/es/components/disclaimer/disclaimer.js +10 -16
- package/es/components/export.js +8 -15
- package/es/components/style/button.js +23 -29
- package/es/components/style/cancel-button.js +7 -12
- package/es/components/style/content-container.js +9 -14
- package/es/components/style/content-title.js +11 -18
- package/es/components/style/delete-button.js +8 -15
- package/es/components/style/export.js +30 -48
- package/es/components/style/form-block.js +8 -13
- package/es/components/style/form-color-input.js +7 -12
- package/es/components/style/form-label.js +8 -13
- package/es/components/style/form-number-input.js +41 -47
- package/es/components/style/form-number-input_2.js +36 -42
- package/es/components/style/form-select.js +17 -22
- package/es/components/style/form-slider.js +10 -15
- package/es/components/style/form-submit-button.js +8 -15
- package/es/components/style/form-text-input.js +26 -32
- package/es/components/viewer2d/area.js +17 -22
- package/es/components/viewer2d/export.js +30 -48
- package/es/components/viewer2d/grids/grid-horizontal-streak.js +10 -15
- package/es/components/viewer2d/grids/grid-streak.js +10 -15
- package/es/components/viewer2d/grids/grid-vertical-streak.js +10 -15
- package/es/components/viewer2d/grids/grids.js +10 -17
- package/es/components/viewer2d/group.js +15 -22
- package/es/components/viewer2d/item.js +61 -68
- package/es/components/viewer2d/layer.js +23 -28
- package/es/components/viewer2d/line.js +101 -109
- package/es/components/viewer2d/ruler.js +22 -27
- package/es/components/viewer2d/rulerDist.js +21 -26
- package/es/components/viewer2d/rulerX.js +39 -45
- package/es/components/viewer2d/rulerY.js +37 -43
- package/es/components/viewer2d/scene.js +30 -36
- package/es/components/viewer2d/snap.js +13 -20
- package/es/components/viewer2d/state.js +18 -25
- package/es/components/viewer2d/utils.js +24 -35
- package/es/components/viewer2d/vertex.js +8 -15
- package/es/components/viewer2d/viewer2d.js +153 -161
- package/es/components/viewer3d/camera-controls-module/camera-controls.module.js +17 -21
- package/es/components/viewer3d/dcm.js +1 -5
- package/es/components/viewer3d/fbm.js +1 -5
- package/es/components/viewer3d/front3D.js +12 -19
- package/es/components/viewer3d/grid-creator.js +8 -15
- package/es/components/viewer3d/grids/grid-horizontal-streak.js +6 -12
- package/es/components/viewer3d/grids/grid-streak.js +5 -11
- package/es/components/viewer3d/grids/grid-vertical-streak.js +6 -12
- package/es/components/viewer3d/libs/first-person-controls.js +2 -7
- package/es/components/viewer3d/libs/helvetiker_regular.typeface.js +1 -5
- package/es/components/viewer3d/libs/mtl-loader.js +1 -5
- package/es/components/viewer3d/libs/obj-loader.js +1 -5
- package/es/components/viewer3d/libs/orbit-controls.js +2 -6
- package/es/components/viewer3d/libs/pointer-lock-controls.js +2 -6
- package/es/components/viewer3d/lrm.js +1 -5
- package/es/components/viewer3d/model.js +1 -5
- package/es/components/viewer3d/pointer-lock-navigation.js +3 -8
- package/es/components/viewer3d/ruler-utils/itemRect.js +18 -23
- package/es/components/viewer3d/ruler-utils/layer3D.js +59 -64
- package/es/components/viewer3d/ruler-utils/ruler3D.js +39 -44
- package/es/components/viewer3d/ruler-utils/scene3D.js +9 -15
- package/es/components/viewer3d/ruler-utils/state3D.js +4 -9
- package/es/components/viewer3d/scene-creator.js +191 -224
- package/es/components/viewer3d/three-memory-cleaner.js +3 -10
- package/es/components/viewer3d/viewer3d-first-person.js +40 -44
- package/es/components/viewer3d/viewer3d.js +196 -200
- package/es/constants.js +349 -356
- package/es/index.js +7 -13
- package/es/models.js +177 -182
- package/es/plugins/SVGLoader.js +48 -51
- package/es/plugins/autosave.js +3 -7
- package/es/plugins/console-debugger.js +5 -10
- package/es/plugins/export.js +8 -15
- package/es/plugins/keyboard.js +29 -33
- package/es/reducers/areas-reducer.js +7 -11
- package/es/reducers/export.js +24 -39
- package/es/reducers/groups-reducer.js +31 -35
- package/es/reducers/holes-reducer.js +43 -47
- package/es/reducers/items-reducer.js +106 -110
- package/es/reducers/lines-reducer.js +28 -32
- package/es/reducers/project-reducer.js +105 -109
- package/es/reducers/reducer.js +16 -21
- package/es/reducers/scene-reducer.js +15 -19
- package/es/reducers/user-reducer.js +5 -9
- package/es/reducers/vertices-reducer.js +11 -15
- package/es/reducers/viewer2d-reducer.js +18 -22
- package/es/reducers/viewer3d-reducer.js +16 -20
- package/es/shared-style.js +10 -14
- package/es/styles/export.js +3 -9
- package/es/translator/en.js +1 -5
- package/es/translator/it.js +1 -5
- package/es/translator/ru.js +1 -5
- package/es/translator/translator.js +13 -17
- package/es/utils/browser.js +2 -7
- package/es/utils/convert-units-lite.js +1 -5
- package/es/utils/email-validator.js +1 -5
- package/es/utils/export.js +15 -32
- package/es/utils/geometry.js +181 -276
- package/es/utils/get-edges-of-subgraphs.js +2 -7
- package/es/utils/graph-cycles.js +8 -9
- package/es/utils/graph-inner-cycles.js +10 -16
- package/es/utils/graph.js +9 -15
- package/es/utils/helper.js +39 -61
- package/es/utils/history.js +8 -13
- package/es/utils/id-broker.js +8 -13
- package/es/utils/logger.js +1 -5
- package/es/utils/math.js +5 -10
- package/es/utils/molding.js +119 -142
- package/es/utils/name-generator.js +7 -11
- package/es/utils/objects-utils.js +7 -17
- package/es/utils/phone-validator.js +1 -5
- package/es/utils/process-black-list.js +3 -8
- package/es/utils/react-if.js +6 -10
- package/es/utils/snap-scene.js +27 -32
- package/es/utils/snap.js +45 -57
- package/es/utils/summarizeCart.js +1 -5
- package/es/utils/threeCSG.es6.js +13 -20
- package/es/version.js +1 -5
- package/package.json +1 -1
|
@@ -1,45 +1,40 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createClass"));
|
|
11
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/possibleConstructorReturn"));
|
|
12
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/getPrototypeOf"));
|
|
13
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/inherits"));
|
|
14
|
-
var _react = _interopRequireDefault(require("react"));
|
|
15
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
16
|
-
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
17
|
-
var Three = _interopRequireWildcard(require("three"));
|
|
18
|
-
var _sceneCreator = require("./scene-creator");
|
|
19
|
-
var _threeMemoryCleaner = require("./three-memory-cleaner");
|
|
20
|
-
var _immutablediff = _interopRequireDefault(require("immutablediff"));
|
|
21
|
-
var SharedStyle = _interopRequireWildcard(require("../../shared-style"));
|
|
22
|
-
var _constants = require("../../constants");
|
|
23
|
-
var _geometry = require("../../utils/geometry");
|
|
24
|
-
var _convertUnitsLite = require("../../utils/convert-units-lite");
|
|
25
|
-
var _export = require("../../utils/export");
|
|
26
|
-
var _helper = require("../../utils/helper");
|
|
27
|
-
var _RGBELoader = require("three/examples/jsm/loaders/RGBELoader");
|
|
28
|
-
var _cameraControls = _interopRequireDefault(require("camera-controls"));
|
|
29
|
-
var _utils = require("../viewer2d/utils");
|
|
30
|
-
var _objectsUtils = require("../../utils/objects-utils");
|
|
31
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
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";
|
|
32
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; }
|
|
33
|
-
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) { (
|
|
34
|
-
function _callSuper(t, o, e) { return o = (
|
|
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)); }
|
|
35
13
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
36
|
-
|
|
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({
|
|
37
32
|
THREE: Three
|
|
38
33
|
});
|
|
39
|
-
var Scene3DViewer =
|
|
34
|
+
var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
40
35
|
function Scene3DViewer(props) {
|
|
41
36
|
var _this;
|
|
42
|
-
(
|
|
37
|
+
_classCallCheck(this, Scene3DViewer);
|
|
43
38
|
_this = _callSuper(this, Scene3DViewer, [props]);
|
|
44
39
|
_this.state = {
|
|
45
40
|
isLoading: false,
|
|
@@ -59,14 +54,14 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
59
54
|
window.__elevationRendererDownload = {};
|
|
60
55
|
}
|
|
61
56
|
switch (mode) {
|
|
62
|
-
case
|
|
57
|
+
case MODE_IDLE_3D:
|
|
63
58
|
_this.renderer = window.__threeRenderer || new Three.WebGLRenderer({
|
|
64
59
|
preserveDrawingBuffer: true,
|
|
65
60
|
alpha: true,
|
|
66
61
|
antialias: true
|
|
67
62
|
});
|
|
68
63
|
break;
|
|
69
|
-
case
|
|
64
|
+
case MODE_3D_VIEW:
|
|
70
65
|
_this.renderer = window.__threeRendererDownload || new Three.WebGLRenderer({
|
|
71
66
|
preserveDrawingBuffer: true,
|
|
72
67
|
alpha: true,
|
|
@@ -101,8 +96,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
101
96
|
_this.renderer.domElement.style.display = 'none';
|
|
102
97
|
return _this;
|
|
103
98
|
}
|
|
104
|
-
(
|
|
105
|
-
return (
|
|
99
|
+
_inherits(Scene3DViewer, _React$Component);
|
|
100
|
+
return _createClass(Scene3DViewer, [{
|
|
106
101
|
key: "componentDidMount",
|
|
107
102
|
value: function componentDidMount(nextProps) {
|
|
108
103
|
var _this2 = this;
|
|
@@ -122,7 +117,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
122
117
|
var mode = state.mode,
|
|
123
118
|
scene = state.scene;
|
|
124
119
|
function setupLight(scene, inbBox) {
|
|
125
|
-
if (
|
|
120
|
+
if (isElevationView(mode)) {
|
|
126
121
|
var ambilight = new Three.AmbientLight('0xffffff', 3);
|
|
127
122
|
scene.add(ambilight);
|
|
128
123
|
} else {
|
|
@@ -181,10 +176,10 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
181
176
|
var spotlightDis = 1.5 * Math.abs(inbBox.min.y - inbBox.max.y);
|
|
182
177
|
|
|
183
178
|
// check if spotlight is inside the room
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
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);
|
|
188
183
|
}
|
|
189
184
|
}
|
|
190
185
|
}
|
|
@@ -200,15 +195,15 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
200
195
|
|
|
201
196
|
// set loading bar
|
|
202
197
|
switch (self.props.state.mode) {
|
|
203
|
-
case
|
|
198
|
+
case MODE_ELEVATION_VIEW:
|
|
204
199
|
self.props.setIsLoadingElevation('front', true);
|
|
205
200
|
break;
|
|
206
|
-
case
|
|
201
|
+
case MODE_3D_VIEW:
|
|
207
202
|
self.props.setIsLoading3D(true);
|
|
208
203
|
break;
|
|
209
204
|
}
|
|
210
205
|
}
|
|
211
|
-
var _parseData =
|
|
206
|
+
var _parseData = parseData(scene, actions, this.context.catalog, camera, this.renderer, state.mode),
|
|
212
207
|
promise = _parseData.promise,
|
|
213
208
|
planData = _parseData.planData;
|
|
214
209
|
promise.then(function () {
|
|
@@ -222,7 +217,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
222
217
|
obj.removeFromParent();
|
|
223
218
|
});
|
|
224
219
|
var bbox = new Three.Box3().setFromObject(planData.plan);
|
|
225
|
-
if (!
|
|
220
|
+
if (!isElevationView(state.mode)) {
|
|
226
221
|
cameraControls.fitToBox(bbox);
|
|
227
222
|
}
|
|
228
223
|
setupLight(scene3D, planData.boundingBox);
|
|
@@ -281,7 +276,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
281
276
|
realVec.push(vec);
|
|
282
277
|
});
|
|
283
278
|
if (aVertices.includes(realVec[0]) && aVertices.includes(realVec[1])) {
|
|
284
|
-
height =
|
|
279
|
+
height = convert(layer.ceilHeight).from(layer.unit).to(UNIT_CENTIMETER);
|
|
285
280
|
// height = data.properties.getIn(['height', 'length']);
|
|
286
281
|
return 1; // break
|
|
287
282
|
}
|
|
@@ -379,11 +374,11 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
379
374
|
|
|
380
375
|
// end snap function variable///////////////////////
|
|
381
376
|
var backsplashVisible = false;
|
|
382
|
-
var holeItems =
|
|
377
|
+
var holeItems = GeometryUtils.getHoleItems(layer);
|
|
383
378
|
var removeSnapBox = function removeSnapBox() {
|
|
384
379
|
if (snapBox != null) {
|
|
385
380
|
planData.plan.remove(snapBox);
|
|
386
|
-
|
|
381
|
+
disposeObject(snapBox);
|
|
387
382
|
snapBox = null;
|
|
388
383
|
targetObj = null;
|
|
389
384
|
snapFlag = false;
|
|
@@ -454,7 +449,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
454
449
|
x: shape2[j + 1].x,
|
|
455
450
|
y: shape2[j + 1].y
|
|
456
451
|
};
|
|
457
|
-
var flag =
|
|
452
|
+
var flag = GeometryUtils.getLineInterSect(sl1.x, sl1.y, sl2.x, sl2.y, el1.x, el1.y, el2.x, el2.y);
|
|
458
453
|
if (flag) {
|
|
459
454
|
count++;
|
|
460
455
|
if (count > 1) return true;
|
|
@@ -501,20 +496,20 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
501
496
|
return vertices;
|
|
502
497
|
};
|
|
503
498
|
var prepareSnap = function prepareSnap(layer) {
|
|
504
|
-
allLines =
|
|
505
|
-
allLineRects =
|
|
506
|
-
allItemRect =
|
|
507
|
-
allItemSnap =
|
|
508
|
-
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);
|
|
509
504
|
allRect = allItemRect.others.concat(allLineRects);
|
|
510
|
-
allItemSnap =
|
|
511
|
-
allLineSnap =
|
|
512
|
-
allArea =
|
|
505
|
+
allItemSnap = GeometryUtils.validateSnaps(allItemSnap, allRect);
|
|
506
|
+
allLineSnap = GeometryUtils.validateSnaps(allLineSnap, allRect);
|
|
507
|
+
allArea = GeometryUtils.getAllArea(layer);
|
|
513
508
|
};
|
|
514
509
|
var prepareSnapSpec = function prepareSnapSpec(layer) {
|
|
515
|
-
allLines =
|
|
516
|
-
allLineRects =
|
|
517
|
-
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);
|
|
518
513
|
// allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);
|
|
519
514
|
};
|
|
520
515
|
|
|
@@ -567,7 +562,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
567
562
|
var ocatid = _item.type;
|
|
568
563
|
var ocat = catalog.elements[ocatid];
|
|
569
564
|
var olayoutpos = ocat.info.layoutpos;
|
|
570
|
-
if (!(layoutpos ===
|
|
565
|
+
if (!(layoutpos === BASE_CABINET_LAYOUTPOS && olayoutpos === WALL_CABINET_LAYOUTPOS || layoutpos === WALL_CABINET_LAYOUTPOS && olayoutpos === BASE_CABINET_LAYOUTPOS)) {
|
|
571
566
|
var tRot = _item.rotation;
|
|
572
567
|
var tPos = new Three.Vector2(_item.x, _item.y);
|
|
573
568
|
var tBounding = target.children[0].userData;
|
|
@@ -649,13 +644,13 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
649
644
|
var _item2 = layer.items.getIn([data.id]);
|
|
650
645
|
var ocatid = _item2.type;
|
|
651
646
|
var ocat = catalog.elements[ocatid];
|
|
652
|
-
if (!ocat) ocat = catalog.elements[
|
|
647
|
+
if (!ocat) ocat = catalog.elements[returnReplaceableDeepSearchType(ocatid)];
|
|
653
648
|
var otherItem = {
|
|
654
649
|
item: _item2,
|
|
655
650
|
cat: ocat
|
|
656
651
|
};
|
|
657
652
|
console.log('currentItem =>', currentItem);
|
|
658
|
-
if (
|
|
653
|
+
if (GeometryUtils.needSnap(currentItem, otherItem) && otherItem.cat.type != 'cabinet') {
|
|
659
654
|
var tRot = _item2.rotation;
|
|
660
655
|
var tPos = new Three.Vector2(_item2.x, _item2.y);
|
|
661
656
|
var tBounding = target.children[0].userData;
|
|
@@ -709,7 +704,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
709
704
|
// sort from distance
|
|
710
705
|
for (var _i5 = 0; _i5 < items.length - 1; _i5++) {
|
|
711
706
|
for (var j = _i5 + 1; j < items.length; j++) {
|
|
712
|
-
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))) {
|
|
713
708
|
var exchange = items[j];
|
|
714
709
|
items[j] = items[_i5];
|
|
715
710
|
items[_i5] = exchange;
|
|
@@ -827,7 +822,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
827
822
|
var tRot = layer.getIn(['items', target.userData.itemId]) ? layer.getIn(['items', target.userData.itemId]).rotation : 0;
|
|
828
823
|
var item = layer.getIn(['items', source.userData.itemId]);
|
|
829
824
|
var layoutType = item.layoutpos;
|
|
830
|
-
var altitudeLength =
|
|
825
|
+
var altitudeLength = convert(item.properties.getIn(['altitude', '_length'])).from('in').to('cm');
|
|
831
826
|
var sBounding = source.children[0].userData;
|
|
832
827
|
var tBounding = target.children[0].userData;
|
|
833
828
|
var tPos = target.position.clone();
|
|
@@ -844,7 +839,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
844
839
|
var removeSnapBoxObj = function removeSnapBoxObj() {
|
|
845
840
|
if (snapBoxObj) {
|
|
846
841
|
planData.plan.remove(snapBoxObj);
|
|
847
|
-
|
|
842
|
+
disposeObject(snapBoxObj);
|
|
848
843
|
}
|
|
849
844
|
snapFlag = false;
|
|
850
845
|
};
|
|
@@ -853,7 +848,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
853
848
|
box.material.depthTest = false;
|
|
854
849
|
box.renderOrder = 200;
|
|
855
850
|
snapBoxObj.add(box);
|
|
856
|
-
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);
|
|
857
852
|
snapBoxObj.rotation.set(source.rotation.x, source.rotation.y, source.rotation.z);
|
|
858
853
|
snapBoxObj.name = 'TransformBox';
|
|
859
854
|
planData.plan.add(snapBoxObj);
|
|
@@ -928,7 +923,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
928
923
|
return;
|
|
929
924
|
} else {
|
|
930
925
|
var _layoutType = _item3.layoutpos;
|
|
931
|
-
var _altitudeLength =
|
|
926
|
+
var _altitudeLength = convert(_item3.properties.getIn(['altitude', '_length'])).from('in').to('cm');
|
|
932
927
|
var _sBounding = source.children[0].userData;
|
|
933
928
|
var _width = _sBounding.max.x - _sBounding.min.x;
|
|
934
929
|
var _height = _sBounding.max.y - _sBounding.min.y;
|
|
@@ -943,7 +938,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
943
938
|
var _removeSnapBoxObj = function _removeSnapBoxObj() {
|
|
944
939
|
if (_snapBoxObj) {
|
|
945
940
|
planData.plan.remove(_snapBoxObj);
|
|
946
|
-
|
|
941
|
+
disposeObject(_snapBoxObj);
|
|
947
942
|
}
|
|
948
943
|
snapFlag = false;
|
|
949
944
|
};
|
|
@@ -952,7 +947,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
952
947
|
_box.material.depthTest = false;
|
|
953
948
|
_box.renderOrder = 100;
|
|
954
949
|
_snapBoxObj.add(_box);
|
|
955
|
-
_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);
|
|
956
951
|
_snapBoxObj.rotation.set(source.rotation.x, source.rotation.y, source.rotation.z);
|
|
957
952
|
_snapBoxObj.name = 'TransformBox';
|
|
958
953
|
planData.plan.add(_snapBoxObj);
|
|
@@ -1089,7 +1084,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1089
1084
|
ctx.beginPath();
|
|
1090
1085
|
ctx.arc(50, 50, 45, 0, 2 * Math.PI);
|
|
1091
1086
|
ctx.stroke();
|
|
1092
|
-
ctx.strokeStyle =
|
|
1087
|
+
ctx.strokeStyle = SECONDARY_PURPLE_COLOR;
|
|
1093
1088
|
ctx.lineWidth = 6;
|
|
1094
1089
|
ctx.beginPath();
|
|
1095
1090
|
if (lastAngle < 15 && lastAngle > -15) {
|
|
@@ -1193,7 +1188,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1193
1188
|
var properties = allItemRect.cur.itemInfo.properties;
|
|
1194
1189
|
altitude = properties.getIn(['altitude', '_length']);
|
|
1195
1190
|
var unit = properties.getIn(['altitude', '_unit']) || 'in';
|
|
1196
|
-
altitude =
|
|
1191
|
+
altitude = convert(altitude).from(unit).to(_this2.props.state.scene.unit);
|
|
1197
1192
|
}
|
|
1198
1193
|
getPoint(event, altitude);
|
|
1199
1194
|
var state = _this2.props.state;
|
|
@@ -1258,7 +1253,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1258
1253
|
console.log('intersects[i] is undefined in viewer3d/viewer3d.js');
|
|
1259
1254
|
}
|
|
1260
1255
|
}
|
|
1261
|
-
if (_this2.props.state.mode ==
|
|
1256
|
+
if (_this2.props.state.mode == MODE_DRAWING_ITEM_3D) return;
|
|
1262
1257
|
if (isSelected) {
|
|
1263
1258
|
!_this2.props.downloadFlag && _this2.props.setToolbar('');
|
|
1264
1259
|
if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
|
|
@@ -1285,7 +1280,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1285
1280
|
var _properties = allItemRect.cur.itemInfo.properties;
|
|
1286
1281
|
alti = _properties.getIn(['altitude', '_length']);
|
|
1287
1282
|
var _unit = _properties.getIn(['altitude', '_unit']) || 'in';
|
|
1288
|
-
alti =
|
|
1283
|
+
alti = convert(alti).from(_unit).to(_this2.props.state.scene.unit);
|
|
1289
1284
|
}
|
|
1290
1285
|
getPoint({
|
|
1291
1286
|
offsetX: event.offsetX - 50,
|
|
@@ -1322,8 +1317,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1322
1317
|
for (_i1 = 0; _i1 < intersects.length; _i1++) {
|
|
1323
1318
|
if (selectedItem != undefined && intersects[_i1].object.parent && intersects[_i1].object.parent.parent.userData.itemId === selectedItem.userData.itemId) selectedFlag = true;
|
|
1324
1319
|
}
|
|
1325
|
-
if (selectedFlag || toolIntersects.length > 0 && !
|
|
1326
|
-
cameraControls.mouseButtons.left =
|
|
1320
|
+
if (selectedFlag || toolIntersects.length > 0 && !isElevationView(mode)) {
|
|
1321
|
+
cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;
|
|
1327
1322
|
selectedFlag = false;
|
|
1328
1323
|
} else {
|
|
1329
1324
|
isSelected = false;
|
|
@@ -1349,7 +1344,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1349
1344
|
var properties = allItemRect.cur.itemInfo.properties;
|
|
1350
1345
|
altitude = properties.getIn(['altitude', '_length']);
|
|
1351
1346
|
var unit = properties.getIn(['altitude', '_unit']) || 'in';
|
|
1352
|
-
altitude =
|
|
1347
|
+
altitude = convert(altitude).from(unit).to(_this2.props.state.scene.unit);
|
|
1353
1348
|
}
|
|
1354
1349
|
scene3D.remove(angleObj);
|
|
1355
1350
|
scene3D.remove(toolObj);
|
|
@@ -1357,7 +1352,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1357
1352
|
_this2.props.setToolbar('');
|
|
1358
1353
|
}
|
|
1359
1354
|
getPoint(event, altitude);
|
|
1360
|
-
if (_this2.props.state.mode ==
|
|
1355
|
+
if (_this2.props.state.mode == MODE_DRAWING_ITEM_3D) {
|
|
1361
1356
|
if (Point.x > _this2.props.state.scene.width) Point.x = _this2.props.state.width;
|
|
1362
1357
|
if (Point.y > _this2.props.state.scene.height) Point.y = _this2.props.state.height;
|
|
1363
1358
|
if (Point.x < 0) Point.x = 0;
|
|
@@ -1368,7 +1363,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1368
1363
|
removeSnapBox();
|
|
1369
1364
|
var polygon = lineRect(layer);
|
|
1370
1365
|
// if cursor is outside of room
|
|
1371
|
-
if (!
|
|
1366
|
+
if (!GeometryUtils.ContainsPoint(polygon, Point.x, Point.y)) {
|
|
1372
1367
|
actions.itemsActions.endDrawingItem(_this2.props.state.scene.selectedLayer, sPoint.x, sPoint.y);
|
|
1373
1368
|
} else {
|
|
1374
1369
|
actions.itemsActions.updateDraggingItemChanged(targetPoint.x, -targetPoint.z, selectedObject.layerID, selectedObject.itemID);
|
|
@@ -1379,13 +1374,13 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1379
1374
|
bMove = false;
|
|
1380
1375
|
return;
|
|
1381
1376
|
}
|
|
1382
|
-
if (_this2.props.state.mode ==
|
|
1377
|
+
if (_this2.props.state.mode == MODE_DRAGGING_ITEM_3D) {
|
|
1383
1378
|
_this2.context.itemsActions.endDraggingItem3D();
|
|
1384
1379
|
}
|
|
1385
|
-
if (_this2.props.state.mode ==
|
|
1380
|
+
if (_this2.props.state.mode == MODE_ROTATING_ITEM_3D) {
|
|
1386
1381
|
_this2.context.itemsActions.endRotatingItem3D(sPoint.x, sPoint.y);
|
|
1387
1382
|
}
|
|
1388
|
-
if (_this2.props.state.mode ==
|
|
1383
|
+
if (_this2.props.state.mode == MODE_DRAWING_HOLE_3D) {
|
|
1389
1384
|
gridPlanOrigin = gridPlane.position;
|
|
1390
1385
|
gridMatrix.copy(gridPlane.matrixWorld).invert();
|
|
1391
1386
|
camPos = camera.position;
|
|
@@ -1396,7 +1391,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1396
1391
|
}
|
|
1397
1392
|
event.preventDefault();
|
|
1398
1393
|
if (event.button === 0) {
|
|
1399
|
-
cameraControls.mouseButtons.left =
|
|
1394
|
+
cameraControls.mouseButtons.left = CameraControls.ACTION.ROTATE;
|
|
1400
1395
|
mouse.x = event.offsetX / _this2.width * 2 - 1;
|
|
1401
1396
|
mouse.y = -(event.offsetY / _this2.height) * 2 + 1;
|
|
1402
1397
|
raycaster.setFromCamera(mouse, camera);
|
|
@@ -1460,7 +1455,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1460
1455
|
}
|
|
1461
1456
|
isSelected = true;
|
|
1462
1457
|
setTimeout(function () {
|
|
1463
|
-
|
|
1458
|
+
getDistances(layer);
|
|
1464
1459
|
var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1465
1460
|
if (!selectedItem) return;
|
|
1466
1461
|
var selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
@@ -1477,10 +1472,10 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1477
1472
|
// showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);
|
|
1478
1473
|
var pointArray = [],
|
|
1479
1474
|
cnt = 0;
|
|
1480
|
-
pointArray.push([
|
|
1481
|
-
pointArray.push([
|
|
1482
|
-
pointArray.push([
|
|
1483
|
-
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]);
|
|
1484
1479
|
pointArray.forEach(function (pointElement, index) {
|
|
1485
1480
|
if (pointElement[0] == undefined) pointArray[index][0] = 0;
|
|
1486
1481
|
});
|
|
@@ -1532,13 +1527,13 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1532
1527
|
selectedObj = allItemRect.cur;
|
|
1533
1528
|
}
|
|
1534
1529
|
} else {
|
|
1535
|
-
|
|
1530
|
+
visibleTransformBox(false);
|
|
1536
1531
|
var alti = 0;
|
|
1537
1532
|
if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
|
|
1538
1533
|
var _properties2 = allItemRect.cur.itemInfo.properties;
|
|
1539
1534
|
alti = _properties2.getIn(['altitude', '_length']);
|
|
1540
1535
|
var _unit2 = _properties2.getIn(['altitude', '_unit']) || 'in';
|
|
1541
|
-
alti =
|
|
1536
|
+
alti = convert(alti).from(_unit2).to(_this2.props.state.scene.unit);
|
|
1542
1537
|
}
|
|
1543
1538
|
getPoint(event, alti);
|
|
1544
1539
|
if (bRotate) {
|
|
@@ -1611,9 +1606,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1611
1606
|
var properties = allItemRect.cur.itemInfo.properties;
|
|
1612
1607
|
altitude = properties.getIn(['altitude', '_length']);
|
|
1613
1608
|
var unit = properties.getIn(['altitude', '_unit']) || 'in';
|
|
1614
|
-
altitude =
|
|
1609
|
+
altitude = convert(altitude).from(unit).to(_this2.props.state.scene.unit);
|
|
1615
1610
|
}
|
|
1616
|
-
if (_this2.props.state.mode ===
|
|
1611
|
+
if (_this2.props.state.mode === MODE_DRAWING_HOLE_3D) {
|
|
1617
1612
|
gridPlanOrigin = gridPlane.position;
|
|
1618
1613
|
gridMatrix.copy(gridPlane.matrixWorld).invert();
|
|
1619
1614
|
camPos = camera.position;
|
|
@@ -1625,7 +1620,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1625
1620
|
} else {
|
|
1626
1621
|
var layerID = _this2.props.state.scene.selectedLayer;
|
|
1627
1622
|
var holeID = _this2.props.state.drawingSupport.get('currentID');
|
|
1628
|
-
|
|
1623
|
+
deleteSpecifiedMeshObjects('WarningBox' + holeID);
|
|
1629
1624
|
prepareSnap(layer);
|
|
1630
1625
|
|
|
1631
1626
|
// let {nx, ny, rot} = GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, Point.x, Point.y, allArea);
|
|
@@ -1635,7 +1630,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1635
1630
|
sPoint.set(nx, ny);
|
|
1636
1631
|
}
|
|
1637
1632
|
}
|
|
1638
|
-
if (_this2.props.state.mode ===
|
|
1633
|
+
if (_this2.props.state.mode === MODE_DRAWING_ITEM_3D) {
|
|
1639
1634
|
// We need to set cam position since when MODE_DRAWING_ITEM_3D mouse down event
|
|
1640
1635
|
// is not emited so cam position is not valid
|
|
1641
1636
|
gridPlanOrigin = gridPlane.position;
|
|
@@ -1649,7 +1644,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1649
1644
|
};
|
|
1650
1645
|
var _layer = _this2.props.state.scene.getIn(['layers', selectedObject.layerID]);
|
|
1651
1646
|
var polygon = lineRect(_layer);
|
|
1652
|
-
var isCursorInArea =
|
|
1647
|
+
var isCursorInArea = GeometryUtils.ContainsPoint(polygon, Point.x, Point.y);
|
|
1653
1648
|
var _drawingSupport = _this2.props.state.drawingSupport;
|
|
1654
1649
|
if (!_drawingSupport.has('currentID')) {
|
|
1655
1650
|
var initialX = Point.x,
|
|
@@ -1668,7 +1663,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1668
1663
|
point = [];
|
|
1669
1664
|
}
|
|
1670
1665
|
});
|
|
1671
|
-
var centroid =
|
|
1666
|
+
var centroid = GeometryUtils.getCentroidOfPolygon(points);
|
|
1672
1667
|
initialX = centroid[0];
|
|
1673
1668
|
initialY = centroid[1];
|
|
1674
1669
|
}
|
|
@@ -1680,8 +1675,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1680
1675
|
var mX = Point.x - sPoint.x;
|
|
1681
1676
|
var mY = Point.y - sPoint.y;
|
|
1682
1677
|
var item3D = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1683
|
-
|
|
1684
|
-
|
|
1678
|
+
deleteSpecifiedMeshObjects('TransformBox');
|
|
1679
|
+
deleteSpecifiedMeshObjects('WarningBox' + itemID);
|
|
1685
1680
|
var item = _layer.items.getIn([selectedObject.itemID]);
|
|
1686
1681
|
if (item.counterTop.uri == '') item.counterTop.uri = _layer.counterTop.uri;
|
|
1687
1682
|
var sRot = item.rotation;
|
|
@@ -1693,7 +1688,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1693
1688
|
var sdepth = sBounding.max.z - sBounding.min.z;
|
|
1694
1689
|
var sVertices = _this2.getRectPoints(swidth, sdepth, tPos.clone(), sRot % 360 / 180 * Math.PI);
|
|
1695
1690
|
prepareSnap(_layer);
|
|
1696
|
-
var _GeometryUtils$calcSn =
|
|
1691
|
+
var _GeometryUtils$calcSn = GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, Point.x, Point.y, allArea),
|
|
1697
1692
|
_nx = _GeometryUtils$calcSn.nx,
|
|
1698
1693
|
_ny = _GeometryUtils$calcSn.ny,
|
|
1699
1694
|
rot = _GeometryUtils$calcSn.rot;
|
|
@@ -1707,9 +1702,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1707
1702
|
//return;
|
|
1708
1703
|
}
|
|
1709
1704
|
if (polygon.length > 0) {
|
|
1710
|
-
var PolygonSect =
|
|
1705
|
+
var PolygonSect = GeometryUtils.ContainsPoint(polygon, _nx, _ny);
|
|
1711
1706
|
if (!PolygonSect) {
|
|
1712
|
-
var _GeometryUtils$calcCr =
|
|
1707
|
+
var _GeometryUtils$calcCr = GeometryUtils.calcCreateSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, Point.x, Point.y, polygon),
|
|
1713
1708
|
cx = _GeometryUtils$calcCr.cx,
|
|
1714
1709
|
cy = _GeometryUtils$calcCr.cy,
|
|
1715
1710
|
crot = _GeometryUtils$calcCr.crot;
|
|
@@ -1719,19 +1714,19 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1719
1714
|
}
|
|
1720
1715
|
}
|
|
1721
1716
|
if (polygon.length > 0) {
|
|
1722
|
-
var isSnapInArea =
|
|
1717
|
+
var isSnapInArea = GeometryUtils.ContainsPoint(polygon, _nx, _ny);
|
|
1723
1718
|
if (!isSnapInArea) return;
|
|
1724
1719
|
}
|
|
1725
1720
|
actions.itemsActions.updateDraggingItemChanged(_nx, _ny, selectedObject.layerID, selectedObject.itemID);
|
|
1726
1721
|
actions.itemsActions.updateRotatingItemChanged(rot, selectedObject.layerID, selectedObject.itemID);
|
|
1727
1722
|
sPoint.set(_nx, _ny);
|
|
1728
|
-
|
|
1723
|
+
getDistances(_layer);
|
|
1729
1724
|
var pointArray = [],
|
|
1730
1725
|
cnt = 0;
|
|
1731
|
-
pointArray.push([
|
|
1732
|
-
pointArray.push([
|
|
1733
|
-
pointArray.push([
|
|
1734
|
-
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]);
|
|
1735
1730
|
pointArray.forEach(function (pointElement, index) {
|
|
1736
1731
|
if (pointElement[0] == undefined) pointArray[index][0] = 0;
|
|
1737
1732
|
});
|
|
@@ -1743,8 +1738,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1743
1738
|
pointArray[1][0] = 100;
|
|
1744
1739
|
}
|
|
1745
1740
|
actions.itemsActions.storeDistArray(_layer.id, item.id, pointArray);
|
|
1746
|
-
var minDis =
|
|
1747
|
-
var snapObj =
|
|
1741
|
+
var minDis = fVLine[0].userData.distance;
|
|
1742
|
+
var snapObj = fVLine[0];
|
|
1748
1743
|
var iPos = item3D.position.clone();
|
|
1749
1744
|
var snapDis = Math.sqrt((iPos.x - targetPoint.x) * (iPos.x - targetPoint.x) + (iPos.z - targetPoint.z) * (iPos.z - targetPoint.z));
|
|
1750
1745
|
if (snapDis >= 100 && snapObj != null) {
|
|
@@ -1752,10 +1747,10 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1752
1747
|
backsplashVisible = false;
|
|
1753
1748
|
//console.log('1 snap no');
|
|
1754
1749
|
}
|
|
1755
|
-
for (var _i11 = 1; _i11 <
|
|
1756
|
-
if (minDis >
|
|
1757
|
-
minDis =
|
|
1758
|
-
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];
|
|
1759
1754
|
}
|
|
1760
1755
|
}
|
|
1761
1756
|
if (snapBox == null) {
|
|
@@ -1766,14 +1761,14 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1766
1761
|
_this2.snap(snapObj, _layer);
|
|
1767
1762
|
snapFlag = true;
|
|
1768
1763
|
//console.log('1 snap Yes')
|
|
1769
|
-
|
|
1764
|
+
getDistances(_layer, true);
|
|
1770
1765
|
var _i12 = 0;
|
|
1771
|
-
for (_i12 = 0; _i12 <
|
|
1772
|
-
if (
|
|
1766
|
+
for (_i12 = 0; _i12 < fVLine.length; _i12++) {
|
|
1767
|
+
if (fVLine[_i12].userData.distance < snapDelta) {
|
|
1773
1768
|
break;
|
|
1774
1769
|
}
|
|
1775
1770
|
}
|
|
1776
|
-
if (_i12 ===
|
|
1771
|
+
if (_i12 === fVLine.length) backsplashVisible = false;else backsplashVisible = true;
|
|
1777
1772
|
}
|
|
1778
1773
|
actions.itemsActions.setBacksplashVisible(selectedObject.itemID, backsplashVisible);
|
|
1779
1774
|
}
|
|
@@ -1786,8 +1781,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1786
1781
|
var orginRot = _this2.props.state.rotatingSupport.get('originRotation');
|
|
1787
1782
|
angleTexture.image = createAngleObject((orginRot < 0 ? 360 - orginRot : orginRot) - _item4.rotation);
|
|
1788
1783
|
angleTexture.needsUpdate = true;
|
|
1789
|
-
|
|
1790
|
-
|
|
1784
|
+
deleteSpecifiedMeshObjects('WarningBox' + selectedObject.itemID);
|
|
1785
|
+
deleteSpecifiedMeshObjects('backsplash' + selectedObject.itemID);
|
|
1791
1786
|
actions.sceneActions.updateMovingState(false);
|
|
1792
1787
|
}
|
|
1793
1788
|
if (bMoveUP) {
|
|
@@ -1805,7 +1800,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1805
1800
|
sPoint.set(Point.x, Point.y);
|
|
1806
1801
|
} else {
|
|
1807
1802
|
var _holeID = _this2.props.state.draggingSupport.get('currentID');
|
|
1808
|
-
|
|
1803
|
+
deleteSpecifiedMeshObjects('WarningBox' + _holeID);
|
|
1809
1804
|
var _nx2 = Point.x;
|
|
1810
1805
|
var _ny2 = Point.y;
|
|
1811
1806
|
actions.holesActions.updateDraggingHole(_nx2, _ny2);
|
|
@@ -1820,8 +1815,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1820
1815
|
var _sRot2 = _item5.rotation;
|
|
1821
1816
|
var _mX = Point.x - sPoint.x;
|
|
1822
1817
|
var _mY = Point.y - sPoint.y;
|
|
1823
|
-
|
|
1824
|
-
|
|
1818
|
+
deleteSpecifiedMeshObjects('WarningBox' + selectedObject.itemID);
|
|
1819
|
+
deleteSpecifiedMeshObjects('backsplash' + selectedObject.itemID);
|
|
1825
1820
|
prepareSnap(_layer3);
|
|
1826
1821
|
getPoint(event, altitude);
|
|
1827
1822
|
var _originPos = _item3D2.position.clone();
|
|
@@ -1830,7 +1825,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1830
1825
|
var _swidth = _sBounding2.max.x - _sBounding2.min.x;
|
|
1831
1826
|
var _sdepth = _sBounding2.max.z - _sBounding2.min.z;
|
|
1832
1827
|
var _sVertices = _this2.getRectPoints(_swidth, _sdepth, _tPos4.clone(), _sRot2 % 360 / 180 * Math.PI);
|
|
1833
|
-
var _GeometryUtils$calcSn2 =
|
|
1828
|
+
var _GeometryUtils$calcSn2 = GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, Point.x, Point.y, allArea),
|
|
1834
1829
|
_nx3 = _GeometryUtils$calcSn2.nx,
|
|
1835
1830
|
_ny3 = _GeometryUtils$calcSn2.ny,
|
|
1836
1831
|
_rot = _GeometryUtils$calcSn2.rot;
|
|
@@ -1845,9 +1840,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1845
1840
|
}
|
|
1846
1841
|
var polygonPoint = lineRect(_layer3);
|
|
1847
1842
|
if (polygonPoint.length > 0) {
|
|
1848
|
-
var _PolygonSect =
|
|
1843
|
+
var _PolygonSect = GeometryUtils.ContainsPoint(polygonPoint, _nx3, _ny3);
|
|
1849
1844
|
if (!_PolygonSect) {
|
|
1850
|
-
var _GeometryUtils$calcCr2 =
|
|
1845
|
+
var _GeometryUtils$calcCr2 = GeometryUtils.calcCreateSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, Point.x, Point.y, polygonPoint),
|
|
1851
1846
|
_cx3 = _GeometryUtils$calcCr2.cx,
|
|
1852
1847
|
_cy = _GeometryUtils$calcCr2.cy,
|
|
1853
1848
|
_crot = _GeometryUtils$calcCr2.crot;
|
|
@@ -1858,19 +1853,19 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1858
1853
|
}
|
|
1859
1854
|
var _polygon = lineRect(_layer3);
|
|
1860
1855
|
if (_polygon.length > 0) {
|
|
1861
|
-
var Sect =
|
|
1856
|
+
var Sect = GeometryUtils.ContainsPoint(_polygon, _nx3, _ny3);
|
|
1862
1857
|
if (!Sect) return;
|
|
1863
1858
|
}
|
|
1864
1859
|
actions.itemsActions.updateDraggingItemChanged(_nx3, _ny3, selectedObject.layerID, selectedObject.itemID);
|
|
1865
1860
|
actions.itemsActions.updateRotatingItemChanged(_rot, selectedObject.layerID, selectedObject.itemID);
|
|
1866
1861
|
sPoint.set(_nx3, _ny3);
|
|
1867
|
-
|
|
1862
|
+
getDistances(_layer3);
|
|
1868
1863
|
var _pointArray = [],
|
|
1869
1864
|
_cnt = 0;
|
|
1870
|
-
_pointArray.push([
|
|
1871
|
-
_pointArray.push([
|
|
1872
|
-
_pointArray.push([
|
|
1873
|
-
_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]);
|
|
1874
1869
|
_pointArray.forEach(function (pointElement, index) {
|
|
1875
1870
|
if (pointElement[0] == undefined) _pointArray[index][0] = 0;
|
|
1876
1871
|
});
|
|
@@ -1882,8 +1877,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1882
1877
|
_pointArray[1][0] = 100;
|
|
1883
1878
|
}
|
|
1884
1879
|
actions.itemsActions.storeDistArray(_layer3.id, _item5.id, _pointArray);
|
|
1885
|
-
var _minDis =
|
|
1886
|
-
var _snapObj =
|
|
1880
|
+
var _minDis = fVLine[0].userData.distance;
|
|
1881
|
+
var _snapObj = fVLine[0];
|
|
1887
1882
|
var _iPos = _item3D2.position.clone();
|
|
1888
1883
|
var _snapDis = Math.sqrt((_iPos.x - targetPoint.x) * (_iPos.x - targetPoint.x) + (_iPos.z - targetPoint.z) * (_iPos.z - targetPoint.z));
|
|
1889
1884
|
if (_snapDis >= 100 && _snapObj != null) {
|
|
@@ -1891,10 +1886,10 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1891
1886
|
backsplashVisible = false;
|
|
1892
1887
|
//console.log('1 snap no');
|
|
1893
1888
|
}
|
|
1894
|
-
for (var _i13 = 1; _i13 <
|
|
1895
|
-
if (_minDis >
|
|
1896
|
-
_minDis =
|
|
1897
|
-
_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];
|
|
1898
1893
|
}
|
|
1899
1894
|
}
|
|
1900
1895
|
if (snapBox == null) {
|
|
@@ -1905,14 +1900,14 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1905
1900
|
_this2.snap(_snapObj, _layer3);
|
|
1906
1901
|
snapFlag = true;
|
|
1907
1902
|
//console.log('1 snap Yes')
|
|
1908
|
-
|
|
1903
|
+
getDistances(_layer3, true);
|
|
1909
1904
|
var _i14 = 0;
|
|
1910
|
-
for (_i14 = 0; _i14 <
|
|
1911
|
-
if (
|
|
1905
|
+
for (_i14 = 0; _i14 < fVLine.length; _i14++) {
|
|
1906
|
+
if (fVLine[_i14].userData.distance < snapDelta) {
|
|
1912
1907
|
break;
|
|
1913
1908
|
}
|
|
1914
1909
|
}
|
|
1915
|
-
if (_i14 ===
|
|
1910
|
+
if (_i14 === fVLine.length) backsplashVisible = false;else backsplashVisible = true;
|
|
1916
1911
|
}
|
|
1917
1912
|
actions.itemsActions.setBacksplashVisible(selectedObject.itemID, backsplashVisible);
|
|
1918
1913
|
}
|
|
@@ -1925,7 +1920,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1925
1920
|
raycaster.setFromCamera(curPos, camera);
|
|
1926
1921
|
rayDirection = raycaster.ray.direction;
|
|
1927
1922
|
rayDirection = rayDirection.normalize();
|
|
1928
|
-
var meshes =
|
|
1923
|
+
var meshes = getAllMeshes(toIntersect);
|
|
1929
1924
|
var intersects = raycaster.intersectObjects(meshes, true);
|
|
1930
1925
|
var _i15;
|
|
1931
1926
|
if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
|
|
@@ -1960,7 +1955,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1960
1955
|
document.getElementById('warning_box_2d').style.display = 'none';
|
|
1961
1956
|
};
|
|
1962
1957
|
this.onkeydown = function (event) {
|
|
1963
|
-
if (_this2.props.keyDownEnable && !
|
|
1958
|
+
if (_this2.props.keyDownEnable && !isElevationView(state.mode)) {
|
|
1964
1959
|
switch (event.keyCode) {
|
|
1965
1960
|
case 27:
|
|
1966
1961
|
// escape key
|
|
@@ -2029,7 +2024,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2029
2024
|
}
|
|
2030
2025
|
|
|
2031
2026
|
// Add the output of the renderer to the html element
|
|
2032
|
-
var canvasWrapper =
|
|
2027
|
+
var canvasWrapper = ReactDOM.findDOMNode(this.refs.canvasWrapper);
|
|
2033
2028
|
canvasWrapper && canvasWrapper.appendChild(this.renderer.domElement);
|
|
2034
2029
|
|
|
2035
2030
|
//
|
|
@@ -2061,17 +2056,17 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2061
2056
|
function init() {
|
|
2062
2057
|
clock = new Three.Clock();
|
|
2063
2058
|
scene3D = new Three.Scene();
|
|
2064
|
-
if (
|
|
2059
|
+
if (isElevationView(state.mode)) scene3D.background = new Three.Color(0xffffff);
|
|
2065
2060
|
// change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
|
|
2066
2061
|
else scene3D.background = new Three.Color(0xc3cadc); // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
|
|
2067
2062
|
// scene3D.fog = new Three.Fog(0xC3CADC, 2000, 3500);
|
|
2068
2063
|
window.scene3D = scene3D;
|
|
2069
2064
|
// Camera
|
|
2070
|
-
if (
|
|
2065
|
+
if (isElevationView(state.mode)) {
|
|
2071
2066
|
// In elevation view, set Orthographic camera's position, angle and rotation about selected line
|
|
2072
2067
|
var layers = scene.layers;
|
|
2073
2068
|
var selectedLayer = layers.get(scene.selectedLayer);
|
|
2074
|
-
var ceilHeight =
|
|
2069
|
+
var ceilHeight = convert(selectedLayer.ceilHeight).from(selectedLayer.unit).to(scene.unit);
|
|
2075
2070
|
var lines = [];
|
|
2076
2071
|
var selectedLine = selectedLayer.lines.get(selectedLayer.selected.lines.toJS()[0]);
|
|
2077
2072
|
var vertex0 = selectedLayer.vertices.get(selectedLine.vertices.get(0));
|
|
@@ -2080,7 +2075,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2080
2075
|
y1 = vertex0.y;
|
|
2081
2076
|
var x2 = vertex1.x,
|
|
2082
2077
|
y2 = vertex1.y;
|
|
2083
|
-
if (
|
|
2078
|
+
if (GeometryUtils.compareVertices(vertex0, vertex1) >= 0 && vertex0.x !== vertex1.x) {
|
|
2084
2079
|
x1 = vertex1.x;
|
|
2085
2080
|
y1 = vertex1.y;
|
|
2086
2081
|
x2 = vertex0.x;
|
|
@@ -2102,11 +2097,11 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2102
2097
|
lines.push(data);
|
|
2103
2098
|
}
|
|
2104
2099
|
});
|
|
2105
|
-
var lineLength =
|
|
2100
|
+
var lineLength = GeometryUtils.pointsDistance(x1, y1, x2, y2);
|
|
2106
2101
|
self.setState({
|
|
2107
2102
|
lineLength: lineLength
|
|
2108
2103
|
});
|
|
2109
|
-
var cameraRect =
|
|
2104
|
+
var cameraRect = handleCamRect(self.width, self.height, ceilHeight, lineLength);
|
|
2110
2105
|
camera = new Three.OrthographicCamera(-cameraRect.width / 2, cameraRect.width / 2, cameraRect.height / 2, -cameraRect.height / 2, 1, 1000);
|
|
2111
2106
|
var angle = Math.atan((y1 - y2) / (x1 - x2));
|
|
2112
2107
|
var r = 300;
|
|
@@ -2127,15 +2122,15 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2127
2122
|
}
|
|
2128
2123
|
camera.layers.enable(1);
|
|
2129
2124
|
function loadENV() {
|
|
2130
|
-
new
|
|
2125
|
+
new RGBELoader().load('/assets/brown_photostudio_02_1k.hdr', function (texture) {
|
|
2131
2126
|
texture.mapping = Three.EquirectangularReflectionMapping;
|
|
2132
2127
|
scene3D.environment = texture;
|
|
2133
2128
|
texture.dispose();
|
|
2134
2129
|
});
|
|
2135
2130
|
}
|
|
2136
2131
|
// Camera Controls
|
|
2137
|
-
if (!
|
|
2138
|
-
cameraControls = new
|
|
2132
|
+
if (!isElevationView(state.mode)) {
|
|
2133
|
+
cameraControls = new CameraControls(camera, self.renderer.domElement);
|
|
2139
2134
|
cameraControls.dollyToCursor = true;
|
|
2140
2135
|
cameraControls.infinityDolly = true;
|
|
2141
2136
|
cameraControls.minDistance = 50;
|
|
@@ -2146,7 +2141,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2146
2141
|
scene3D.add(planData.plan);
|
|
2147
2142
|
scene3D.add(planData.grid);
|
|
2148
2143
|
scene3D.add(camera);
|
|
2149
|
-
if (
|
|
2144
|
+
if (isElevationView(state.mode)) {
|
|
2150
2145
|
planData.cam.add(camera);
|
|
2151
2146
|
scene3D.add(planData.cam);
|
|
2152
2147
|
} else {
|
|
@@ -2161,7 +2156,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2161
2156
|
}
|
|
2162
2157
|
function render() {
|
|
2163
2158
|
var delta = clock.getDelta(); // Get time delta for smooth updates
|
|
2164
|
-
if (!
|
|
2159
|
+
if (!isElevationView(state.mode)) cameraControls.update(delta);
|
|
2165
2160
|
for (var _i16 = 0; _i16 < lights.length; _i16++) {
|
|
2166
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);
|
|
2167
2162
|
lights[_i16].target.position.set(planData.plan.position.x + lights[_i16].x, planData.plan.position.y, planData.plan.position.z - lights[_i16].y);
|
|
@@ -2208,7 +2203,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2208
2203
|
var indexAttribute = line.geometry.getIndex();
|
|
2209
2204
|
var firstFaceIndices = undefined;
|
|
2210
2205
|
if (indexAttribute && indexAttribute.length > 0) {
|
|
2211
|
-
[indexAttribute.getX(0), indexAttribute.getX(1), indexAttribute.getX(2)], (
|
|
2206
|
+
[indexAttribute.getX(0), indexAttribute.getX(1), indexAttribute.getX(2)], _readOnlyError("firstFaceIndices");
|
|
2212
2207
|
}
|
|
2213
2208
|
if (firstFaceIndices == undefined) return;
|
|
2214
2209
|
// normal vector of the line
|
|
@@ -2257,7 +2252,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2257
2252
|
isLoading: false,
|
|
2258
2253
|
waitForRender: 0
|
|
2259
2254
|
});
|
|
2260
|
-
if (
|
|
2255
|
+
if (isElevationView(self.props.state.mode)) {
|
|
2261
2256
|
setTimeout(function () {
|
|
2262
2257
|
self.props.setIsLoadingElevation('front', false);
|
|
2263
2258
|
}, 100);
|
|
@@ -2281,14 +2276,14 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2281
2276
|
key: "componentWillUnmount",
|
|
2282
2277
|
value: function componentWillUnmount() {
|
|
2283
2278
|
cancelAnimationFrame(this.renderingID);
|
|
2284
|
-
if (!
|
|
2279
|
+
if (!isElevationView(this.props.state.mode)) {
|
|
2285
2280
|
if (this.cameraControls !== undefined) this.cameraControls.dispose();
|
|
2286
2281
|
}
|
|
2287
2282
|
if (!this.props.downloadFlag) {
|
|
2288
2283
|
this.renderer.domElement.removeEventListener('mousedown', this.mouseDownEvent);
|
|
2289
2284
|
this.renderer.domElement.removeEventListener('mouseup', this.mouseUpEvent);
|
|
2290
2285
|
}
|
|
2291
|
-
|
|
2286
|
+
disposeScene(this.scene3D);
|
|
2292
2287
|
this.scene3D.remove(this.planData.plan);
|
|
2293
2288
|
this.scene3D.remove(this.planData.grid);
|
|
2294
2289
|
this.scene3D = null;
|
|
@@ -2301,11 +2296,11 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2301
2296
|
key: "componentWillReceiveProps",
|
|
2302
2297
|
value: function componentWillReceiveProps(nextProps) {
|
|
2303
2298
|
var _this4 = this;
|
|
2304
|
-
if (this.props.downloadFlag && (
|
|
2299
|
+
if (this.props.downloadFlag && diff(this.props.state, nextProps.state).toJS().length == 0 || isEmpty(nextProps.state.scene)) return;
|
|
2305
2300
|
var width = nextProps.width,
|
|
2306
2301
|
height = nextProps.height;
|
|
2307
2302
|
var selectedLayer = nextProps.state.getIn(['scene', 'layers', nextProps.state.scene.selectedLayer]);
|
|
2308
|
-
var ceilHeight =
|
|
2303
|
+
var ceilHeight = convert(selectedLayer.ceilHeight).from(selectedLayer.unit).to(nextProps.state.scene.unit);
|
|
2309
2304
|
var actions = {
|
|
2310
2305
|
areaActions: this.context.areaActions,
|
|
2311
2306
|
holesActions: this.context.holesActions,
|
|
@@ -2327,9 +2322,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2327
2322
|
|
|
2328
2323
|
// handle camera setting
|
|
2329
2324
|
switch (this.props.state.mode) {
|
|
2330
|
-
case
|
|
2325
|
+
case MODE_ELEVATION_VIEW:
|
|
2331
2326
|
// when Elevation mode (camera: Orthographic)
|
|
2332
|
-
var cameraRect =
|
|
2327
|
+
var cameraRect = handleCamRect(width, height, ceilHeight, this.state.lineLength);
|
|
2333
2328
|
// camera size
|
|
2334
2329
|
this.camera.left = -cameraRect.width / 2;
|
|
2335
2330
|
this.camera.right = cameraRect.width / 2;
|
|
@@ -2338,7 +2333,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2338
2333
|
//camera position
|
|
2339
2334
|
this.camera.position.y = ceilHeight / 2;
|
|
2340
2335
|
break;
|
|
2341
|
-
case
|
|
2336
|
+
case MODE_3D_VIEW:
|
|
2342
2337
|
// when 3D mode (camera: Perspective)
|
|
2343
2338
|
this.camera.aspect = width / height;
|
|
2344
2339
|
break;
|
|
@@ -2348,34 +2343,34 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2348
2343
|
var layer = data.getIn(['layers', data.selectedLayer]);
|
|
2349
2344
|
var self = this;
|
|
2350
2345
|
function implementBacksplash() {
|
|
2351
|
-
if (
|
|
2352
|
-
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);
|
|
2353
2348
|
var i,
|
|
2354
2349
|
items = [];
|
|
2355
2350
|
for (i = 0; i < allItems.others.length; i++) items.push(allItems.others[i]);
|
|
2356
2351
|
if (allItems.cur) items.push(allItems.cur);
|
|
2357
2352
|
for (i = 0; i < items.length; i++) {
|
|
2358
|
-
var calcRect =
|
|
2359
|
-
var visible =
|
|
2353
|
+
var calcRect = GeometryUtils.getCalcRectFromItem3D(items[i]);
|
|
2354
|
+
var visible = GeometryUtils.isSnappedLine(calcRect, allLineRects);
|
|
2360
2355
|
actions.itemsActions.setBacksplashVisible(items[i].itemInfo.id, visible);
|
|
2361
|
-
|
|
2356
|
+
createBacksplash(items[i], nextProps.state.scene.getIn(['layers', nextProps.state.scene.selectedLayer]), planData, nextProps.state.scene);
|
|
2362
2357
|
}
|
|
2363
2358
|
}
|
|
2364
2359
|
function implementWarningBox() {
|
|
2365
|
-
var holeItems =
|
|
2360
|
+
var holeItems = GeometryUtils.getHoleItems(layer);
|
|
2366
2361
|
var i,
|
|
2367
2362
|
items = [];
|
|
2368
2363
|
for (i = 0; i < allItemRect.others.length; i++) items.push(allItemRect.others[i]);
|
|
2369
2364
|
if (allItemRect.cur) items.push(allItemRect.cur);
|
|
2370
|
-
for (i = 0; i < items.length; i++)
|
|
2365
|
+
for (i = 0; i < items.length; i++) checkCabinetOverlap({
|
|
2371
2366
|
x: items[i].pos.x,
|
|
2372
2367
|
y: items[i].pos.y
|
|
2373
2368
|
}, items[i], holeItems, planData);
|
|
2374
2369
|
}
|
|
2375
2370
|
var prepareSnapSpec = function prepareSnapSpec(layer) {
|
|
2376
|
-
allLines =
|
|
2377
|
-
allLineRects =
|
|
2378
|
-
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]);
|
|
2379
2374
|
};
|
|
2380
2375
|
var layer1 = this.props.state.scene.getIn(['layers', data.selectedLayer]);
|
|
2381
2376
|
if (this.state.showflag) {
|
|
@@ -2387,7 +2382,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2387
2382
|
});
|
|
2388
2383
|
}
|
|
2389
2384
|
if (nextProps.state.scene !== this.props.state.scene || nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') !== this.props.state.doorStyle.get('name')) {
|
|
2390
|
-
var changedValues = (
|
|
2385
|
+
var changedValues = diff(this.props.state.scene, nextProps.state.scene);
|
|
2391
2386
|
prepareSnapSpec(layer);
|
|
2392
2387
|
if (nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') === this.props.state.doorStyle.get('name')) {
|
|
2393
2388
|
self.setState({
|
|
@@ -2398,10 +2393,10 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2398
2393
|
waitForRender: 0
|
|
2399
2394
|
});
|
|
2400
2395
|
switch (self.props.state.mode) {
|
|
2401
|
-
case
|
|
2396
|
+
case MODE_ELEVATION_VIEW:
|
|
2402
2397
|
self.props.setIsLoadingElevation('front', true);
|
|
2403
2398
|
break;
|
|
2404
|
-
case
|
|
2399
|
+
case MODE_3D_VIEW:
|
|
2405
2400
|
self.props.setIsLoading3D(true);
|
|
2406
2401
|
break;
|
|
2407
2402
|
}
|
|
@@ -2412,12 +2407,12 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2412
2407
|
implementBacksplash();
|
|
2413
2408
|
implementWarningBox();
|
|
2414
2409
|
} else {
|
|
2415
|
-
|
|
2410
|
+
deleteSpecifiedMeshObjects('TransformBox');
|
|
2416
2411
|
}
|
|
2417
2412
|
var _this$state = this.state,
|
|
2418
2413
|
toolObj = _this$state.toolObj,
|
|
2419
2414
|
angleObj = _this$state.angleObj;
|
|
2420
|
-
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),
|
|
2421
2416
|
promise = _updateScene.promise;
|
|
2422
2417
|
self.setState();
|
|
2423
2418
|
promise.then(function (p1Value) {
|
|
@@ -2444,7 +2439,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2444
2439
|
if (isLoading) {
|
|
2445
2440
|
if (this.props.downloadFlag) {
|
|
2446
2441
|
this.renderer.domElement.style.display = 'none';
|
|
2447
|
-
return /*#__PURE__*/
|
|
2442
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2448
2443
|
style: {
|
|
2449
2444
|
alignItems: ' center',
|
|
2450
2445
|
width: this.props.width,
|
|
@@ -2452,7 +2447,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2452
2447
|
display: 'inline-flex',
|
|
2453
2448
|
justifyContent: 'center'
|
|
2454
2449
|
}
|
|
2455
|
-
}, /*#__PURE__*/
|
|
2450
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
2456
2451
|
style: {
|
|
2457
2452
|
width: '70px',
|
|
2458
2453
|
height: '70px',
|
|
@@ -2465,12 +2460,12 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2465
2460
|
document.getElementById('front') && (document.getElementById('front').style.display = 'none');
|
|
2466
2461
|
document.getElementById('error').style.display = 'none';
|
|
2467
2462
|
this.renderer.domElement.style.display = 'none';
|
|
2468
|
-
return /*#__PURE__*/
|
|
2463
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2469
2464
|
style: {
|
|
2470
2465
|
textAlign: 'center',
|
|
2471
2466
|
width: '100%'
|
|
2472
2467
|
}
|
|
2473
|
-
}, /*#__PURE__*/
|
|
2468
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
2474
2469
|
style: {
|
|
2475
2470
|
animation: 'spin 2s linear infinite',
|
|
2476
2471
|
marginTop: "22%"
|
|
@@ -2483,12 +2478,12 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2483
2478
|
this.renderer.domElement.style.pointerEvents = 'none';
|
|
2484
2479
|
document.getElementById('front') && (document.getElementById('front').style.display = 'none');
|
|
2485
2480
|
this.renderer.domElement.style.opacity = '0.4';
|
|
2486
|
-
return /*#__PURE__*/
|
|
2481
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2487
2482
|
style: {
|
|
2488
2483
|
textAlign: 'center',
|
|
2489
2484
|
width: '100%'
|
|
2490
2485
|
}
|
|
2491
|
-
}, /*#__PURE__*/
|
|
2486
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
2492
2487
|
style: {
|
|
2493
2488
|
animation: 'spin 2s linear infinite',
|
|
2494
2489
|
position: "absolute",
|
|
@@ -2502,25 +2497,26 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2502
2497
|
this.renderer.domElement.style.pointerEvents = 'auto';
|
|
2503
2498
|
this.renderer.domElement.style.opacity = '1';
|
|
2504
2499
|
!this.props.downloadFlag && document.getElementById('front') && (document.getElementById('front').style.display = 'block');
|
|
2505
|
-
return /*#__PURE__*/
|
|
2500
|
+
return /*#__PURE__*/React.createElement('div', {
|
|
2506
2501
|
ref: 'canvasWrapper'
|
|
2507
2502
|
});
|
|
2508
2503
|
}
|
|
2509
2504
|
}
|
|
2510
2505
|
}]);
|
|
2511
|
-
}(
|
|
2506
|
+
}(React.Component);
|
|
2507
|
+
export { Scene3DViewer as default };
|
|
2512
2508
|
Scene3DViewer.propTypes = {
|
|
2513
|
-
state:
|
|
2514
|
-
width:
|
|
2515
|
-
height:
|
|
2516
|
-
replaceCabinet:
|
|
2509
|
+
state: PropTypes.object.isRequired,
|
|
2510
|
+
width: PropTypes.number.isRequired,
|
|
2511
|
+
height: PropTypes.number.isRequired,
|
|
2512
|
+
replaceCabinet: PropTypes.func.isRequired
|
|
2517
2513
|
};
|
|
2518
2514
|
Scene3DViewer.contextTypes = {
|
|
2519
|
-
areaActions:
|
|
2520
|
-
holesActions:
|
|
2521
|
-
itemsActions:
|
|
2522
|
-
linesActions:
|
|
2523
|
-
sceneActions:
|
|
2524
|
-
projectActions:
|
|
2525
|
-
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
|
|
2526
2522
|
};
|