UNPKG

kitchen-simulator

Version:

It is a kitchen simulator (self-contained micro-frontend).

67 lines (66 loc) 2.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.compareVertices = compareVertices; exports["default"] = Scene3D; var _react = _interopRequireDefault(require("react")); var _geometry = require("../../../utils/geometry"); var _convertUnitsLite = require("../../../utils/convert-units-lite"); var _layer3D = _interopRequireDefault(require("./layer3D")); function compareVertices(v0, v1) { return v0.x === v1.x ? v0.y - v1.y : v0.x - v1.x; } function Scene3D(_ref) { var scene = _ref.scene, catalog = _ref.catalog, width = _ref.width, height = _ref.height, mode = _ref.mode, downloadFlag = _ref.downloadFlag; var layers = scene.layers; var selectedLayer = layers.get(scene.selectedLayer); var ceilHeight = selectedLayer.ceilHeight; var selectedLine = selectedLayer.lines.get(selectedLayer.selected.lines.toJS()[0]); var vertex0 = selectedLayer.vertices.get(selectedLine.vertices.get(0)); var vertex1 = selectedLayer.vertices.get(selectedLine.vertices.get(1)); var lineLength = (0, _convertUnitsLite.convert)((0, _geometry.verticesDistance)(vertex0, vertex1)).from(scene.unit).to(selectedLayer.unit); var multi = downloadFlag ? 0.85 : 0.6; var scale = Math.min(width * multi / lineLength, height * multi / ceilHeight); var frontRect = { width: lineLength * scale, height: ceilHeight * scale }; var i = 0, grids = []; var viewScale = Math.min(width / window.innerWidth, height / window.innerHeight); for (var x = -width / 2; x <= width / 2; x = x + 30 * viewScale) { for (var y = -height / 2; y <= height / 2; y = y + 30 * viewScale) { if (Math.abs(x) > frontRect.width / 2 || Math.abs(y) > frontRect.height / 2) { grids.push(/*#__PURE__*/_react["default"].createElement("circle", { key: "grid_".concat(i), cx: x, cy: y, r: 2 * viewScale, fill: "#bbb" })); i++; } } } return /*#__PURE__*/_react["default"].createElement("g", null, grids, /*#__PURE__*/_react["default"].createElement(_layer3D["default"], { key: selectedLayer.id, layer: selectedLayer, frontRect: frontRect, lineLength: lineLength, ceilHeight: ceilHeight.toFixed(0), catalog: catalog, scene: scene, scale: scale, mode: mode, line: selectedLine, viewScale: viewScale, downloadFlag: downloadFlag })); }