UNPKG

kitchen-simulator

Version:

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

59 lines 2.14 kB
import React from 'react'; import { verticesDistance } from "../../../utils/geometry"; import { convert } from "../../../utils/convert-units-lite"; import Layer3D from "./layer3D"; export function compareVertices(v0, v1) { return v0.x === v1.x ? v0.y - v1.y : v0.x - v1.x; } export default 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 = convert(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.createElement("circle", { key: "grid_".concat(i), cx: x, cy: y, r: 2 * viewScale, fill: "#bbb" })); i++; } } } return /*#__PURE__*/React.createElement("g", null, grids, /*#__PURE__*/React.createElement(Layer3D, { 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 })); }