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